Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • 0
FreddyCruger

Оптимизация кода

Прошу помощи, так как только только начал осваивать колдунство скриптов, и что-то намутил с этим кодом, После запуска сервера, при онлайне 20+ с большим количеством модов, сервер выдает приемлемые 2000 фпс, но спустя минут 30-40, он падает до 60. Явно, в этом коде дело, потому что ничего другого не делал в принципе.
 

modded class ActionEatBig: ActionConsume
{
	override void OnEndServer( ActionData action_data )
	{	
		super.OnEndServer(action_data);
		
		if ( action_data.m_Player.HasBloodyHandsEx() == eBloodyHandsTypes.SALMONELA)
		{
			action_data.m_Player.InsertAgent(RageAgents.RAGEVIRUS,200);
		}
	}
};

modded class ActionForceFeed: ActionForceConsume
{
	override void OnEndServer( ActionData action_data )
	{	
		super.OnEndServer(action_data);
		if ( action_data.m_Player.HasBloodyHands())
		{
			Object targetPlayer = action_data.m_Target.GetObject();
			PlayerBase target = PlayerBase.Cast( targetPlayer );
			if ( target )
			{
				action_data.m_Player.InsertAgent(RageAgents.RAGEVIRUS,200);
			}
		}
	}
	
};

modded class ActionDrinkPondContinuous: ActionContinuousBase
{
	override void OnEndAnimationLoopServer( ActionData action_data )
	{
		//Print("OnEndAnimationLoopServer");
		if ( action_data.m_Player.HasBloodyHands())
		{
			action_data.m_Player.InsertAgent(RageAgents.RAGEVIRUS,200);
		}
	}
};

modded class ActionDrinkWellContinuous: ActionContinuousBase
{	
	override void OnFinishProgressServer( ActionData action_data )
	{
		//Print("OnFinishProgressServer");
		Param1<float> nacdata = Param1<float>.Cast( action_data.m_ActionComponent.GetACData() );
		if(nacdata)
		{
			float amount = UAQuantityConsumed.DRINK;
			action_data.m_Player.Consume(NULL,amount, EConsumeType.ENVIRO_WELL);
		}
		
		if ( action_data.m_Player.HasBloodyHands())
		{
			action_data.m_Player.InsertAgent(RageAgents.RAGEVIRUS,200);
		}
	}
};

modded class ActionConsumeSingle: ActionSingleUseBase
{
	override void OnEndServer( ActionData action_data )
	{
		if ( action_data.m_MainItem && ( action_data.m_MainItem.GetQuantity() <= 0 ) )
		{
			action_data.m_MainItem.SetQuantity( 0 );
		}
		
		if ( action_data.m_Player.HasBloodyHandsEx() == eBloodyHandsTypes.SALMONELA)
		{
			action_data.m_Player.InsertAgent(RageAgents.RAGEVIRUS,200);
		}
	}
};

modded class ActionForceConsumeSingle: ActionSingleUseBase
{
	override void OnEndServer( ActionData action_data )
	{
		if ( action_data.m_MainItem && action_data.m_MainItem.GetQuantity() <= 0 ) 
		{
			action_data.m_MainItem.SetQuantity(0);
		}
		
		if ( action_data.m_Player.HasBloodyHands())
		{
			Object targetPlayer = action_data.m_Target.GetObject();
			PlayerBase target = PlayerBase.Cast( targetPlayer );
			if ( target )
			{
				action_data.m_Player.InsertAgent(RageAgents.RAGEVIRUS,200);
			}
		}
	}
};
modded class ActionDrink: ActionConsume
{
	override void OnEndServer( ActionData action_data )
	{	
		super.OnEndServer(action_data);
		
		if ( action_data.m_Player.HasBloodyHandsEx() == eBloodyHandsTypes.SALMONELA)
		{
			action_data.m_Player.InsertAgent(RageAgents.RAGEVIRUS,200);
		}
	}
};

modded class ActionBandageBase: ActionContinuousBase
{	
	override void OnEndServer( ActionData action_data )
	{	
		super.OnEndServer(action_data);
		
		if ( action_data.m_Player.HasBloodyHandsEx() == eBloodyHandsTypes.SALMONELA)
		{
			action_data.m_Player.InsertAgent(RageAgents.RAGEVIRUS,200);
		}
	}
	
};

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендованные сообщения

  • 0

Странно, что вы вообще указываете InsertAgent(RageAgents.RAGEVIRUS, 200); 200 штук агентов? агент один же может быть добавлен?

 

Тем более в PlayerBase есть такая функция как BloodyHandsPenallty

 

Можно было бы ее один раз оверрайдить и все

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах



  • 0
10 часов назад, SharkAttack сказал:

Можно было бы ее один раз оверрайдить и все

вот, это и надо, 200 агентов надо потому что критическое состояние наступает когда их 500, и растут они по 0.5 в секунду, по сути у игрока есть 10 минут. В PlayerBase эта функция просто означает кровавые руки, а я хотел бы чтобы агенты заносились при бинтовании и еде\питье с кровавыми руками

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.