Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Нужна помощь?

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

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

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок
  • Загляните на торговую площадку

    Там вы можете купить
    Всё что касается игровых серверов
123new

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

Recommended Posts

Автор скрипта: 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!

Share this post


Link to post
Share on other sites



Не надо это в 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

Share this post


Link to post
Share on other sites
В 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

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

Share this post


Link to post
Share on other sites

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

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

 

Share this post


Link to post
Share on other sites

т.е. в в 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
	}

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

Share this post


Link to post
Share on other sites

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

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

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

Edited by 123new (see edit history)

Share this post


Link to post
Share on other sites
5 часов назад, 123new сказал:

PJIIOxa да

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

Share this post


Link to post
Share on other sites
6 часов назад, 123new сказал:

PJIIOxa да

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

Share this post


Link to post
Share on other sites
1 час назад, PJIIOxa сказал:

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

так проще?

 

Share this post


Link to post
Share on other sites
4 часа назад, 123new сказал:

так проще?

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
21.01.2019 в 06:08, PJIIOxa сказал:

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

у меня все работает , уже год этот скрипт стоит 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By 123new
      Здравствуйте, дорогие друзья и посетители сайта. В данной теме я распишу как создать свой "чистый" сервер на основе первых официальных серверных файлов игры, доступных каждому в steam для тех, кто приобрел эту замечательную игру. Для тех, кто не приобретал ее, не расстраивайтесь, добавлю зеркала на файлы.
      И так, приступим.
       
      Системные требования игры:
      https://s-platoon.ru/topic/7014-polnaya-dokumentaciya-servernyh-faylov-dayz-standalone-dayz-server-files-documentation/?do=findComment&comment=61219
       
      Нам понадобятся:
      1. Notepad++ https://notepad-plus-plus.org/download
      2. Официальные серверные файлы игры со steam. Скачать  их можно:
      В Steam из раздела 'инструменты' , выбрав DayZ Server и нажав 'установить' Вручную через утилиту SteamCMD:
      3. Официальный клиент игры из steam: https://store.steampowered.com/app/221100/DayZ/
      4. "Настроенная конфигурация серверной части игры" и батник для старта сервера:
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      И так, приступим.
      Копируем папку со скачанными серверными файлами игры (папку DayZServer ) в отдельную папку. В пути и имени папки не должно быть пробелов и русских символов. Саму новую папку можно назвать как хотите, я же назову ее MyServer. Распаковываем архив с "Настроенной конфигурацией серверной части игры" в папку с серверными файлами (папка MyServer). Получим что-то типа такого: Далее мы работаем уже только внутри папки MyServer Открываем в Notepad++ файл server.cfg в папке Instance_1.  Настраиваем его, комментарии к настройке на русском в файле имеются.
      При особой необходимости вы можете свериться с serverDZ.cfg в корневой папке сервера, это оригинальный файл конфигурации, предоставленный разработчиками. Также, можете прочитать информацию из официальной документации с переводом в теме вот этой(смотрите во 2 сообщении указанной темы). Плюсом есть пояснения в конце гайда! Открываем в Notepad++ файлы BEServer.cfg  и BEServer_x64.cfg в папке Instance_1\Battleye в папке сервера. Настраиваем параметры, содержимое обоих файлов должно быть идентичным.
      Параметры:
      RConPassword - Устанавливает пароль для подключения RCon инструментов  (инструмент удаленного администрирования, таких как BEC/Dart).
      RestrictRCon - Включает\отключает RCon-функции (кик\бан\ограничение подключения) (0 для отключения органичений)
      MaxPing - устанавливает ограничение на сервере по пингу
      В примере, уже имеющемся у вас, 12345678 - rcon-пароль сервера, 500 - максимальный пинг, разрешенный battleye для игры на сервере, RestrictRCon 0 - разрешить подключение с RCon-клиентов с правами кика и бана (0 - разрешено все, 1 - запрещен кик и бан, только отправка в чат). Запускаем !!!Start_server.bat и наш сервер запустится. Запускаем клиент игры со steam, находим наш сервер вручную по ip и порту, либо имени сервера.
      Если сервер запущен на том же компьютере, где и игра, и на стандартном порту 2302, то поумолчанию поиск выполняется по 127.0.0.1:2302
      Если сервер запущен на другом компьютере, то вместо 127.0.0.1 будет ip адрес компьютера, где запущен сервер, или его доменное имя. Например, myserver.com:2302 или 178.123.22.12:2302
      ВАЖНО: если сервер запущен на другом компьютере, отличном от компьютера где запущена игра, то для доступа на сервер игроков необходимо иметь "внешний" выделенный ip-адрес и открытый порт сервера!
      Сменить порт сервера можно в !!!Start_server.bat (Notepad++ для редактирования),  параметр запуска сервера -port= Более подробно по параметрам запуска читайте ниже. Для выключения сервера рекоммендуется пользоваться !!!Server_kill.bat файлом, созданным в соответствии с рекоммендациями разработчиков игры и официальной документацией.  
      Разъяснения по параметрам запуска сервера игры (для !!!Start_server.bat ):
      Разъяснения по конфигурационному файлу сервера игры (для serverDZ.cfg ):
       
      Crack SmartSteamEmu v. 1.4.3 данной версии клиента игры и сервера:
      Скачать с Zippyshare.com: https://www64.zippyshare.com/v/mHmPweqg/file.html
      Скачать с Mega.nz: https://mega.nz/#!rnZBXK4b!KRrJm6obcJjUlzMpEPNQ3R8sy2z0pP-0Myb_ao4TVhg
      Скачать с yandex.disk: https://yadi.sk/d/4xSF1dSt6XN41g
      Инструкция по установке есть в архиве, дублирую:
       
      Дополнительно:
      Для работы с Battleye, кика и бана игроков используйте ip-адрес и порт сервера, и любой rcon-клиент с паролем из BEServer_x64.cfg
      Для работы BEC файл BEServer.cfg должен быть идентичным по содержанию BEServer_x64.cfg иначе программа не будет работать!
      База данных (storage) теперь хранится по пути: mpmissions\dayzOffline.chernarusplus\storage_{номер instance с cfg сервера}
      В базе данных также хранится файл с сохранениями игроков на сервере с именем players.db
      Если вы не находите свой сервер в списке серверов игры во вкладке Community, проверьте на доступность и открытость извне игровой порт, а также порты steam и steamquery (см. cfg файл сервера). Сервера с crack не отобразятся там.
       
      Вот и все, приятной игры на сервере!
       
       
    • By DrTauren
      Как всем известно, сегодня, 19 сентября разработчики DayZ Standalone официально опубликовали документацию серверов Dayz, а также предоставили возможность скачать файлы для запуска сервера DayZ. Ниже прилагается перевод официальной документации этих самых файлов с форума DayZ, а также документация касательно других файлов, которых нет в официальной документации. Пользуйтесь на здоровье 
       
      Скачать серверные файлы через Steam: steam://rungameid/223350
      На данный момент присутствует ошибка с невозможностью скачать файлы сервера, если на вашем аккаунте Steam отсутствует купленная DayZ.
       
      P.S. Если у вас есть чем заполнить эту статью, обязательно пишите мне в лс 
×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.