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

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

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

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

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

Начну сначала.
У меня стоит радиационная зона на скриптах перенесенная в мод( с добавлением агента и лечением) собственно при нахождении в зоне накапливаются агенты(логично,да) и есть от этих агентов лечение, тоже добавленное на основе витаминок сделанное которое при использовании убирает N кол-во агентов. Их в пачке 10 штук. 
Суть темы в том, что при использовании этой самой таблетки остальные таблетки становятся зараженными сальмонеллой. Откуда она берется я так и не смог выяснить вообще. 

Скрытый текст

Прилагаю настройки самой болезни :
Собственно сам агент 
 


class RadAgentSSS extends AgentBase
{
	override void Init()
	{
		m_Type 					= RadAgentsSSS.RADIATIONSSS;
		m_Invasibility 			= 0;//increase the agent count by this number per second if potent enough to grow
		m_TransferabilityIn		= 0;//to the player
		m_TransferabilityOut	= 0;//from the player
		m_AntibioticsResistance = 1;//[0..1], 0 means antibiotics have full effect, 1 means no effect
		m_MaxCount 				= 500;
		m_Potency 				= EStatLevels.GREAT;//grow when player's immune system is at this level or lower
		m_DieOffSpeed 			= 1;//how fast the agent dies off when not potent enough to grow(per sec)
	}
}

Модификатор 
 


class RadiationSSSMdfr: ModifierBase
{
	static const int RAD_AGENTSSS_THRESHOLD_ACTIVATE = 100;
	static const int RAD_AGENTSSS_THRESHOLD_DEACTIVATE = 0;
	// float chanceVomit = 0.1;
	// float chanceCough = 0.2;
	// bool m_IsVomiting;
	// bool m_IsCoughing;

	override void Init()
	{
		m_TrackActivatedTime 	= false;
		m_ID 					= RadModifiersSSS.MDF_RADIATIONSSS;
		m_TickIntervalInactive 	= DEFAULT_TICK_TIME_INACTIVE;
		m_TickIntervalActive 	= DEFAULT_TICK_TIME_ACTIVE;
	}

	override protected bool ActivateCondition(PlayerBase player)
	{
		if(player.GetSingleAgentCount(RadAgentsSSS.RADIATIONSSS) > RAD_AGENTSSS_THRESHOLD_ACTIVATE)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
 
	override protected void OnActivate(PlayerBase player)
	{
		// m_IsVomiting = false;
		// m_IsCoughing = false;
		//if( player.m_NotifiersManager ) player.m_NotifiersManager.AttachByType(eNotifiers.NTF_SICK);
		//player.DZ_SetRadSick(true);
		player.IncreaseDiseaseCount();
	}

	override protected void OnDeactivate(PlayerBase player)
	{
		//player.DZ_SetRadSick(false);
		player.DecreaseDiseaseCount();
	}

	override protected bool DeactivateCondition(PlayerBase player)
	{
		if(player.GetSingleAgentCount(RadAgentsSSS.RADIATIONSSS) <= RAD_AGENTSSS_THRESHOLD_DEACTIVATE)
		{
			return true;
		}
		else
		{
			return false;
		}
	}

	override protected void OnTick(PlayerBase player, float deltaT)
	{
		float currenthealth = player.GetHealth("GlobalHealth", "Health");
		player.SetHealth("GlobalHealth", "Health" ,  currenthealth - 0.4 );
		// if(!m_IsCoughing && chanceCough > Math.RandomFloatInclusive(0,1))
		// {
			// SymptomBase symptom1 = player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_COUGH);
			// m_IsCoughing = true;
		// }
		// if(!m_IsVomiting && chanceVomit > Math.RandomFloatInclusive(0,1))
		// {
			// SymptomBase symptom2 = player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_VOMIT);
			// m_IsVomiting = true;
		// }
	}
};

Лекарство 
 


class AntiRad: Edible_Base
{
	override void OnConsume(float amount, PlayerBase consumer)
	{
		float currenthealth = consumer.GetHealth("GlobalHealth", "Health");
		consumer.SetHealth("GlobalHealth", "Health" ,  currenthealth - 7 );
		consumer.m_AgentPool.AddAgent(RadAgentsSSS.RADIATIONSSS, -50);
	}
	
	override void SetActions()
	{
		super.SetActions();
		
		AddAction(ActionForceConsumeSingle);
		AddAction(ActionConsumeSingle);
	}
}

 

Если нужна еще какая то информация - пишите, дополню. 
 

 

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


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

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

  • 0

еще актуально..

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


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





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

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

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

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

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

Войти

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

Войти сейчас

  • Похожие публикации

    • Автор: BorizzK
      Ситуация такая
      В функцию надо передать 27 разнашерстных параметров
      если указывать больше 19 при запуске сервер крашит без крашлога и тп
      Передавать через массивы? вариант, но хотелось бы сделать красиво-красиво
       
      Взялся за класс Param
      прикинул - Param'сы бывают от 1 до 5 параметровые
      Значит можно передать 5 шт Param5 и 1 Param2
       
      Взялся тестить
      void FormingAreas() { private ref Param5<string, int, vector, float, int> MainParams; MainParams = new Param5<string, int, vector, float, int>("", 0, vector.Zero, 0.0, 0); MainParams.param1 = "AREA 1"; MainParams.param2 = 1; MainParams.param3 = vector.Zero; MainParams.param4 = 1.1; MainParams.param5 = 2; AddAreaParams(MainParams); }  
      Собственно ошибка возникает тут
       
      void AddAreaParams(Param p) { ref Areas Area = new ref Areas; //AreaMainParams Param AreaMainParams = Param.Cast(p); Area.name = AreaMainParams.param1; //318 строка Area.id = AreaMainParams.param2; Area.center = AreaMainParams.param3; Area.center[1] = GetGame().SurfaceY(Area.center[0], Area.center[2]); Area.radius = AreaMainParams.param4; Area.maxplayers = AreaMainParams.param5; Тут про компиляции ошибочка
      $CurrentDir://mpmissions//dayzOffline.chernarusplus//_MOD//StrikeAreas//StrikeAreasClass.c(318): Can't find variable 'param1'
       
      Можно конечно определить MainParams в классе и передавать через него вызывая AddAreaParams без параметров
       
      Но хотелось бы разобраться именно с таким вариантом
       
      Спасибо!
    • Автор: anap
      Доброго времени суток! Вопрос в следующем, как убрать меню передачи денег у ботов?
      if (_isMan and _isAlive and !_isZombie and !_isAnimal and !(_traderType in serverTraders)) then { if (s_givemoney_dialog < 0) then { s_givemoney_dialog = player addAction [format["Передать деньги %1", (name _cursorTarget)], "ZSC\actions\give_player_dialog.sqf",_cursorTarget, 3, true, true, "", ""]; }; } else { player removeAction s_givemoney_dialog; s_givemoney_dialog = -1; };
    • Автор: almalk454
      Здравствуйте, в общем появилась необходимость передать данные на сервер, чтобы тот записал их в лог файл. Начал копать и наткнулся на PublicVariable, и PublicVariableServer. На сайте багемии говорится:
      Send the variable value to the server
      Т.е. послать переменную на сервер. В общем в необходимом файле я сделал так: 
       
      LOG_ = format["Testing: Player(%1)", (name player)]; publicVariableServer LOG_; А как отловить изменение или передачу этой переменной со стороны сервера?
       
       
       
  • Наш выбор

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

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

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