123new

DayZ Standalone 0.63 Триггеры с газом[перезалив]

13 сообщений в этой теме

Автор скрипта: http://s-platoon.ru/profile/48-nonameultima/

Все благодарности за этот скрипт непосредственно автору скрипта, не мне!

 

В данной теме, расскажу как сделать зараженные газом области на карте.

Автор: NoNameUltima

1. Открываем на сервере файл: missionServer.c

2. После строки:

GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(this.UpdatePlayersStats, 30000, true);

Добавляем:

GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(this.GAS_ZONE_TRIGGER, 10000, true);

*10000 - Время в мс(10 секунд). С такой частотой будет наноситься урон в данной области.

После строки:

GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).Remove(this.UpdatePlayersStats);

Добавляем:

GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).Remove(this.GAS_ZONE_TRIGGER);

Ищем строку:

void UpdatePlayersStats()

Вставляем ВЫШЕ нее, следующий код:

void GAS_ZONE_TRIGGER()
	{
		/*
			GAS_ZONE_TRIGGER
			Автор: NoNameUltima
			skype: hf-trade
		*/
		//	Зараженные зоны
		TVectorArray	gas_points		=	{"13249 0 3962", "6389 0 2683", "6612 0 2561"};
		//	Массив намордников
		TStringArray	gas_masks		=	{"GasMask", "GP5GasMask"};
		//	Радиус зон
		int 			radius			=	350;
		//	Наносимый урон
		float 			damage_value	=	10;

		ref array<Man> players 			=	new array<Man>;
		GetGame().GetPlayers( players );		
		PlayerBase	player;
		vector		position_player;		
		int			x;
		bool		isGasMask;
		int			attCount;
		int			attIdx;
		EntityAI	attachment;
		ItemBase	item;
		string		className;
		float		damage_player;
		
		for (int i = 0; i < players.Count(); i++)
			{
				Class.CastTo(player, players.Get(i));
				position_player	=	player.GetPosition();
				for (x	=	0; x < gas_points.Count(); x++)
					{
						if ( (vector.Distance(position_player, gas_points.Get(x))) < radius )
							{
								isGasMask	=	false;	
								attCount	=	player.GetInventory().AttachmentCount();								
								for (attIdx	=	0; attIdx < attCount; attIdx++)
									{
										attachment	=	player.GetInventory().GetAttachmentFromIndex(attIdx);
										if ( attachment.IsItemBase() )
											{
												item		=	Class.Cast(attachment);
												className	=	item.GetType();									
												if ( gas_masks.Find(className) >= 0 )
													{
														//Print ("Намордник найден!");
														isGasMask	=	true;
														break;
													}												
											}
									}
								if (isGasMask == false)
									{
										//Print ("Намордник не найден!");
										damage_player	=	player.GetHealth("GlobalHealth", "Health");
										player.SetHealth("GlobalHealth", "Health", damage_player - damage_value);
									}
							}
					}
			}
	}

P.S.

1. Так же можно изменить формат массива, и сделать зоны с разным радиусом

2. Можно при желании добавить вывод оповещения, в зараженных зонах.

*Скрипт предоставлен мной, в обрезанном виде намерено - остальное на Ваш вкус и цвет

Изменено 4 октября пользователем NoNameUltima

 

Добавлено от 123new:

Файл missionServer.c располагается в {папка сервера}\scripts\5_Mission\MissionServer\missionServer.c
Если у вас нет папки scripts в папке с сервером игры, откройте папку dta, распакуйте папку scripts из pbo-файла scripts.pbo и переместите в папку с сервером.

Чтобы папка считывалась сервером, необходимо добавить параметр запуска сервера '-FilePatching'.

P.S. Гайд не проверялся на актуальной версии серверной части игры со steam!

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


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


Не надо это в missionServer.c

 

Делаем просто в Init.c

 

В классе class CustomMission : MissionServer

 

Вставляем саму функцию

Да где угодно

 

В конце класса

 

	void CustomMission()
	{
		GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(this.GAS_ZONE_TRIGGER, 10000, true); //ADD GASZONE TRIGGER
	}

	void ~CustomMission()
	{
		GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).Remove(this.GAS_ZONE_TRIGGER); //REMOVE GASZONE TRIGGER
	}

И не надо лазить в scripts.pbo

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


Ссылка на сообщение
Поделиться на других сайтах
В 16.11.2018 в 14:12, BorizzK сказал:

Не надо это в missionServer.c

 

Делаем просто в Init.c

 

В классе class CustomMission : MissionServer

 

Вставляем саму функцию

Да где угодно

 

В конце класса

 

	void CustomMission()
	{
		GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(this.GAS_ZONE_TRIGGER, 10000, true); //ADD GASZONE TRIGGER
	}

	void ~CustomMission()
	{
		GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).Remove(this.GAS_ZONE_TRIGGER); //REMOVE GASZONE TRIGGER
	}

И не надо лазить в scripts.pbo

 это рэндомная зона будет ? или на все карту ?

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


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

Snecky Внимательно посмотрите скрипт что выполняет функцию зоны

//	Зараженные зоны
TVectorArray	gas_points		=	{"13249 0 3962", "6389 0 2683", "6612 0 2561"};

 

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


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

т.е. в в init.c  классе class CustomMission : MissionServer вставляем 

void GAS_ZONE_TRIGGER()
	{
		/*
			GAS_ZONE_TRIGGER
			Автор: NoNameUltima
			skype: hf-trade
		*/
		//	Зараженные зоны
		TVectorArray	gas_points		=	{"13249 0 3962", "6389 0 2683", "6612 0 2561"};
		//	Массив намордников
		TStringArray	gas_masks		=	{"GasMask", "GP5GasMask"};
		//	Радиус зон
		int 			radius			=	350;
		//	Наносимый урон
		float 			damage_value	=	10;

		ref array<Man> players 			=	new array<Man>;
		GetGame().GetPlayers( players );		
		PlayerBase	player;
		vector		position_player;		
		int			x;
		bool		isGasMask;
		int			attCount;
		int			attIdx;
		EntityAI	attachment;
		ItemBase	item;
		string		className;
		float		damage_player;
		
		for (int i = 0; i < players.Count(); i++)
			{
				Class.CastTo(player, players.Get(i));
				position_player	=	player.GetPosition();
				for (x	=	0; x < gas_points.Count(); x++)
					{
						if ( (vector.Distance(position_player, gas_points.Get(x))) < radius )
							{
								isGasMask	=	false;	
								attCount	=	player.GetInventory().AttachmentCount();								
								for (attIdx	=	0; attIdx < attCount; attIdx++)
									{
										attachment	=	player.GetInventory().GetAttachmentFromIndex(attIdx);
										if ( attachment.IsItemBase() )
											{
												item		=	Class.Cast(attachment);
												className	=	item.GetType();									
												if ( gas_masks.Find(className) >= 0 )
													{
														//Print ("Намордник найден!");
														isGasMask	=	true;
														break;
													}												
											}
									}
								if (isGasMask == false)
									{
										//Print ("Намордник не найден!");
										damage_player	=	player.GetHealth("GlobalHealth", "Health");
										player.SetHealth("GlobalHealth", "Health", damage_player - damage_value);
									}
							}
					}
			}
	}

а в конце класса 

void CustomMission()
	{
		GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(this.GAS_ZONE_TRIGGER, 10000, true); //ADD GASZONE TRIGGER
	}

	void ~CustomMission()
	{
		GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).Remove(this.GAS_ZONE_TRIGGER); //REMOVE GASZONE TRIGGER
	}

помогите плиз )))

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


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

Snecky в ините вставляешь то что ты написал 1-м выше
а далее в классе же том же 'class CustomMission: MissionServer' добавляешь

void OnInit () 
{
	GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(GAS_ZONE_TRIGGER, 10000, true); //ADD GASZONE TRIGGER
}

где 10000 - частота повтора выполнения скрипта (1000 = 1 сек.)

Изменено пользователем 123new (история изменений)

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


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

Всем привет, вопрос такой актуален этот гайд для версии 1.0...?

Изменено пользователем PJIIOxa (история изменений)

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


Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, 123new сказал:

PJIIOxa да

ясно спасибо, значит это я тугодум сообразить не могу как сделать

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


Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, 123new сказал:

PJIIOxa да

Можете подсказать как сделать а то чет я вообще не понимаю, сделал все как написано в шапке прибегаю на свои координаты которые указал ничего не происходит

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, PJIIOxa сказал:

Можете подсказать как сделать а то чет я вообще не понимаю, сделал все как написано в шапке прибегаю на свои координаты которые указал ничего не происходит

так проще?

 

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


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, 123new сказал:

так проще?

 

спс но чет у мена вообще ничерта не работает даже по гайду что скинули на версию 1.0

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


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

PJIIOxa ну значит проверяем, правильно ли все прописали) может мод какой накладку вносит или имя папки миссии сервера активной отключается, или мод стоит какой-нить, который чтение миссии сервера напрочь отрубается, насмотрелся разных ужастей. На чистом сервере проверьте.

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


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

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

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

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

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


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

Войти

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


Войти сейчас

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

    • Автор: DAP
      [Server Manager] DayZ Standalone (Arma-ArmaII-ArmaIII,Miscreated)

      Server Manager :
      Дата выпуска: 2014
      Разработчик, издатель: -=scorpions=-
      Платформа: Windows server 2012 / Windows server 2016 / Windows 7 / Windows server 2008 /Windows 10
      Версия программы: 07.02.2019 [Stable]
      Язык интерфейса: RU / EN
      Доступность: платная
      Требование : Microsoft .NET Framework 4.5.2 и выше
      Официальная группа : VK
      Оплата : 1000 RUB, 300 UAH, 13 USD (подписка на год)
       
      Описание :
      Программа для управления сервером и его контролем,
      многофункциональность,позволяет гибко настраивать дополнительные функции к работе сервера.Для установки данного приложение,
      требуется хост с виндовс не менее Windows server 2008,сервер и панель (Server Manager), должны быть на одном ПК!.
       
      Функции и их описание:
       

      Так как Лаунчер работает только совместно с Server Manager,будет описание лаунчера так же в этой теме:

      LAUNCHER :
      Дата выпуска: Определяется заказчиком
      Разработчик, издатель: -=scorpions=-
      Платформа: Windows 7 / Windows 10
      Версия программы: Определяется заказчиком
      Язык интерфейса: RU / EN
      Доступность: платная (от : 3000 RUB, 1100 UAH, 35 USD в зависимости от заказа)
      Требование : Microsoft .NET Framework 4.7.2 и выше
       
      Описание :
      Данная программа создана для удобства и контроля игроков на честную игру.При заказе данного продукта Вы получаете Server Manager бесплатно (подписка на год + установка)
       
      Функции и их описание:
       

       
    • Автор: lishuping
      Купи новый сервер DAYZ SA,Оставьте сообщение.
    • Автор: NoNameUltima
      Автор:
      Я. Версия админки:
      v.R2  
      Описание:
      Админка поставляется с ключами, и подписями. Админка разделена на 2 части - клиентская, и серверная. Так же работает в оффлайн режиме.  
      Для установки админки, необходимо:
      На сервере подключить серверный мод. На сервере подключить клиентский мод. На сервере скопировать ключ из клиентского мода, и поместить в папку keys сервера. На клиенте добавить клиентский мод. В конфигурационный файл администрации прописать UID(ы) администраторов и модераторов.  
      Рабочие пункты админки:
       
      Отображение в 3D(ESP от 0 до 1000м)
      Настройки радиуса отображения Игроки. Зомби. Техника. Постройки. Объекты. Отображение на карте(в радиусе игрока от 0 до 1000м):
      Настройки радиуса отображения Игроки. Зомби. Техника. Постройки. Объекты. НПЦ. Сервер:
      Установка времени на сервере. Установка погоды на сервере(В бете). Собственные:
      Телепорт по векторам(4 - по направлению взгляда. 5 - вверх). Телепорт по карте. Неуязвимость. Бесконечный БК. Невидимость. Защита от зомби. Игроки:
      Телепорт игрока к администратору. Телепорт администратора к игроку. Телепорт в заданные координаты. Лечение. Очистка инвентаря. Выдача БК к текущему оружию(в руках). Заблокировать. Разблокировать. Убить. Отсоединить. Забанить(свой файл банов по UID) Создание объектов:.
      Фильтр при выборе раздела создания предметов(поиск по имени класса).  
      Другое:
      Админская карта. Дебаг монитор. Информационный виджет. Удаление объектов.(только при включенном дебаге - отображающем объект в прицеле).  
      Горячие клавиши:
      [        -     Вызов панели администратора. HOME     -     Вкл\Выкл отображения полосы отладки. DELETE   -    Удаление объекта в прицеле. 4  -    Телепорт по направлению взгляда. 5  -    Телепорт вверх. SHIFT+M - Карта администратора. F11 - Дебаг администратора.  
      Сообщения:
      Вывод сообщений игрокам, о действиях модератора(если в админке UID указан, как UID модератора).  
      Журналы:
      Действия администрации.  
      Стоимость:
      3500  
      Видео:( ВНИМАНИЕ! В ВИДЕО, ВНУТРИ ПАНЕЛИ АДМИНИСТРАТОРА, РАБОТАЮТ ТОЛЬКО ТЕ ПУНКТЫ КОТОРЫЕ УКАЗАНЫ ВЫШЕ! ОСТАЛЬНЫЕ ПУНКТЫ ДОБАВЛЕНЫ НА БУДУЩЕЕ, И МОГУТ БЫТЬ ИЗМЕНЕНЫ)
      P.S. Обновления платные - 25% от стоимости админки.
      Скайп: hf-trade