123new

[DayZ 0.60, 0.61, 0.62] Скрипт на спавн хеликрашей с очисткой

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

В данной теме напишу простенький гайд о том, как самому на своем собственном сервере DayZ установить костомный (мой) скрипт на спавн, респавн и чистку хеликрашей.

 

Гайд пригодится тем, кто сам делает свою сборку сервера, либо по каким-то причинам пользуется не моей сборкой сервера (где это уже сделано), а чьей-либо еще. Обращаю ваше внимание на тот факт, что часть файлов, описанных в гайде, у вас могут уже быть вынесены в другое место или названы несколько иначе (это зависит от сборки сервера, которую вы используете, например, в сборке dankdayz вся mpmissions вынесена в отдельный файл в addons сервера), гайд основывается на чистых серверных файлах игры и отталкивается от них.
Гайд сделан для версий игры с серверной частью 0.60-0.62, но может быть совместим и с другими версиями игры, если файлы серверной части игры не поменяли своего текущего месторасположения и содержания. Гайд составлен по версии серверных файлов игры 0.62 чистой "девственной" и не правленой никем версии игры.

Напоминаю заранее, в моих серверных файлах версий 0.60, 0.61 и 0.62 из моих гайдов на данном форуме это уже сделано и делать это не нужно!!!

Нам понадобятся:

1. Notepad++ https://notepad-plus-plus.org/download/

2. Ваши серверные файлы игры

 

И так, приступим.

1. Первое, что нам понадобится - создать сам скрипт. Создаем по пути: "MPMissions\dayz_Auto.ChernarusPlus\"  папку "scripts" , в ней папку "custom"  , и в ней файл с именем "Helicarsh.sqf" . Если такие папки у вас уже имеются, просто не создавайте их, а перейдите в них. Если файл с там именем уже имеется у вас, задайте ему другое имя.

2. Вписываем в созданный файл код следующего содержания (либо скачайте его):

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

diag_log format [" SpawnHeliCrashes: Reading Settings ..."];
/*
	Car Spawner for DayZ Standalone v 0.60.133.913 and high versions
	author: 123new
	
	Install:
	.\mpmissions\init.sqf
	Add in end file:
	init_spawn_cars = compile preprocessFileLineNumbers "scripts\custom\SpawnCars.sqf";
	Call init_spawn_cars; 	
	and place this script file in:
	.\mpmissions\{your mission name}\scripts\custom\Helicarsh.sqf
	
	Settings:
	first massives: [count loot,type loot]
	end massive: [type car(classname), point car, selected first massive name]
*/

_zombs_heli_one = 15;  // Maximum count zeds in one Heli
_loot_heli_one = 15;  // Maximum count loot in one Heli
_max_distance_spawn_zeds = 25; // Maximum distance spawn zeds in one Heli
_max_distance_spawn_loot = 10; // Maximum distance spawn loot in one Heli

// Types HeliCrashes
_HeliTypes = [          
    "Land_UH1Y_Wreck"
];

// SpawnPoints HeliCrashes
_HeliPointsArray = [
    [5738.4302,7605.0298],
    [6242.1201,8368.71],
    [4015.1001,7971.5698],
    [2320.3101,10217.8],
    [4506.8398,12748.3],
    [7121.3701,9646.6699],
    [1667.61,5293.3398],
    [1700.0699,2338.8501],
    [3563.6899,7537.1001],
    [4328.02,8489.7002],
    [5211.0698,7763.5498],
    [7455.7798,11574.3],
    [6119.3101,6631.1099],
    [5941.0601,6645.27],
    [5016.4302,6257.9199],
    [4781.8999,6270.2598],
    [4455.9302,6181.7202],
    [4074.98,6222.1802],
    [3622.3,6415.96],
    [3254.45,6682.6499],
    [2848.0601,6815.6401],
    [2572.1799,6781.1499],
    [2298.23,6513.3999],
    [2313.9299,6151.0498],
    [2461.02,5794.4102],
    [2028.4399,5166.5601],
    [1596.27,5234.5698],
    [3031.3401,10225.8],
    [3475.28,9765],
    [2863.99,9639.5195],
    [2067.3401,9272.2002],
    [1603.08,9231.04],
    [640.487,9119.4697],
    [4996.7798,9156.46],
    [5314.1802,9310.79],
    [5124.4502,9496.6504],
    [4847.1099,9867.2598],
    [4603.77,10245],
    [4454.6001,10666.2],
    [4696.3501,10736.4],
    [4174.2002,10879.6],
    [3904.0601,11112.5],
    [3453.49,10866.1],
    [2627.26,10443.4],
    [2243.21,10726.9],
    [1853.38,11309.6],
    [1949.3101,11759.8],
    [4832.6699,4767.9502],
    [3838.1101,4944.77],
    [3142.3401,4426.1899],
    [1263.8101,4081.76],
    [1371.08,4505.2598],
    [4712.8701,5869.5498],
    [5405.4502,5638.77],
    [3235.1799,8824.7598],
    [5928.0698,10975.5],
    [4661.25,11954.4]

    ];

// Classnames Loot HeliCrashes
_arrayItemsHeli= [
["food_canpeaches"],
["food_cansardines"],
["ghilliehood"],
["ghilliehoodtan"],
["ghilliehoodmossy"],
["ghilliehoodwoodland"],
["ghilliebushragwoodland"],
["ghilliebushragmossy"],
["ghillietoptan"],
["ghilliesuittan"],
["ghilliesuitmossy"],
["ghillietopwoodland"],
["ghilliebushragtan"],
["ttsko_pants_beige"],
["TTsKO_Jacket_Camo"],
["Ssh68Helmet"],
["tentmedium_packed"],
["tentlarge_backpack"],
["tentcar_packed"],
["Cultivation_CannabisSeeds"],
["Cultivation_CannabisSeedsPack"],
["BagAlice_Green"],
["BagAlice_Black"],
["BagAlice_Camo"],
["Fruit_Cannabis"],
["M249"],
["M_M249Box_200Rnd"],
["Ammo_556"],
["Saiga-12K"],
["Ammo_12ga_Pellets"],
["Ammo_12ga_Slug"],
["M_Saiga_5Rn"],
["M_Saiga_8Rnd"],
["M_SaigaDrum_20Rnd"],
["AKM"],
["M4A1"],
["Ammo_556_20Rnd"],
["Ammo_357_20Rnd"],
["ammo_762x39_20rnd"],
["ammo_762x39_20rnd"],
["CLIP_762_5Rnd"],
["Ammo_12ga_Pellets"],
["M_CMAG_10Rnd"],
["clip_762x39_10rnd"],
["Optics_Binoculars"],
["Optics_Rangefinder"],
["M_STANAG_30Rnd_COUPLED"],
["M_ak101_30Rnd"],
["M_Saiga_5Rnd"],
["M_ak74_30Rnd"],
["M_Vss_10Rnd"],
["M_svd_10Rnd"],
["Winchester70_Black"],
["M_Fal_20Rnd"],
["SKS"],
["b95"],
["AK101"],
["Att_Suppressor_AK"],
["Att_Optic_PSO1"],
["Att_Handguard_AK74_Camo"],
["Att_Buttstock_AK_Wood_Camo"],
["att_bayonet_ak"],
["ammobox_556_20rnd"],
["AmmoBox_9x39_20Rnd"],
["AmmoBox_308Win_20Rnd"],
["FAL"],
["Att_Optic_PUScope"],
["AmmoBox_762_20Rnd"],
["SVD"],
["Mosin9130_Green_Black"],
["CLIP_762_5Rnd"],
["magnum"],
["m_357_speedloader"],
["fnx45"],
["m_cz75_15rnd"],
["Att_Suppressor_Pistol"],
["1911_engraved"],
["cz75"],
["Att_Optic_FNP45_MRD"],
["m_fnx45_15rnd"],
["Glock19"],
["M_Glock_15Rnd"],
["MP5K"],
["Att_Optic_Reflex"],
["Att_Optic_ACOG"],
["Att_Optic_M4T3NRDS"],
["Att_Handguard_MP5_Rail"],
["Att_Buttstock_MP5_Stock"],
["M_MP5_30Rnd"],
["UMP45"],
["shotgunmp133"],
["Ammo_12ga_Pellets"],
["Ammo_556_20Rnd"],
["Ammo_357_20Rnd"],
["CLIP_762_5Rnd"],
["clip_762x39_10rnd"],
["M_STANAG_30Rnd_COUPLED"],
["vss"],
["m_ak74_30rnd_black"],
["M_Vss_10Rnd"],
["ak74"],
["m_ak74_30rnd_black"],
["m_ak74_30rnd_black"],
["m_ak74_30rnd_black"],
["m_ak74_30rnd_black"],
["M_Vss_10Rnd"],
["M_svd_10Rnd"],
["Winchester70_Black"],
["M_Fal_20Rnd"],
["SKS"],
["b95"],
["Att_Suppressor_AK"],
["Att_Handguard_AK74"],
["Att_Buttstock_AK_Wood"],
["ammobox_556_20rnd"],
["AmmoBox_9x39_20Rnd"],
["AmmoBox_308Win_20Rnd"],
["FAL"],
["Att_Optic_PUScope"],
["AmmoBox_762_20Rnd"],
["SVD"],
["Mosin9130_Black"],
["CLIP_762_5Rnd"],
["magnum"],
["m_357_speedloader"],
["b95_black"],
["sks_black"],
["ammo_762x39_20rnd"],
["m65_jacket_black"],
["att_optic_hunting"],
["m_cmag_30rnd"],
["m_cmag_40rnd"],
["m_cmag_40rnd"],
["m_cmag_40rnd"],
["attachment_optic_acog"],
["attachment_buttstock_m4oe"],
["attachment_handguard_m4ris"],
["attachment_bayonet_m9a1"],
["attachment_optic_m4t3nrds"],
["M_UMP_25Rnd"]


];

// Zombies HeliCrashes
_arrayZedHeli= [
        ["ZmbM_PatrolNormal_PautRev"],
        ["ZmbM_PatrolNormal_Autumn"],
        ["ZmbM_PatrolNormal_Flat"],
        ["ZmbM_PatrolNormal_Summer"],
        ["ZmbM_SoldierNormal"]
];

_Heli = DZ_COUNT_HELICRASHES;
diag_log format [" SpawnHeliCrashes: Readed Settings! Start work script!"];

diag_log format [" SpawnHeliCrashes: Cleaning old HeliCrash!"];
_tmp_count_del_heli = 0;
{
	if ((typeOf _x) in _HeliTypes) then
	{
		deleteVehicle _x;
		_tmp_count_del_heli = _tmp_count_del_heli + 1;
	};
} forEach (allMissionObjects "");
diag_log format [" SpawnHeliCrashes: Detected and deleted %1 HeliCrash",_tmp_count_del_heli];

diag_log format [" SpawnHeliCrashes: Start spawn new HeliCrash!"];
fnc_spawnHeli = 
    {
        for "ii" from 1 to _Heli do
        {
            _thisHeli = _HeliPointsArray select floor(random(count _HeliPointsArray));
			_thisTypeHeli = _HeliTypes select floor(random(count _HeliTypes));
			_HeliCrach = NULL; 
            _HeliCrach = createvehicle [_thisTypeHeli, _thisHeli, [], 0, "CAN_COLLIDE"];
			if !(isNull _HeliCrach) then 
			{
				_selected_name_heli = (typeOf _HeliCrach);
				_map_pos_heli = mapGridPosition _HeliCrach;
			//	_HeliCrach setDir floor(random 360);
				_originalPos = getPosATL _HeliCrach;
				_Damage = random 0.7;
				
				_count_spawned_loot_heli = 0;
				_count_spawned_zed_heli = 0;
				
				for [{_j = 0}, {_j< _loot_heli_one}, {_j = _j + 1}] do
				{
					_loot_heli = NULL;
					_radius_heli_loot = random _max_distance_spawn_loot;
					_loot_heli = createvehicle [(_arrayItemsHeli select floor(random(count _arrayItemsHeli))) select 0, _originalPos, [], _radius_heli_loot, "CAN_COLLIDE"];
					if !(isNull _loot_heli) then 
					{
						if ((floor(random 4)) >= 2) then
						{
							_Damage_loot = random 0.7;
							_loot_heli setDamage _Damage_loot; 
						};
						_count_spawned_loot_heli = _count_spawned_loot_heli + 1;
					};
				};
				
				for [{_k = 0}, {_k < _zombs_heli_one}, {_k = _k + 1}] do
				{
					_Zomb_heli = NULL;
					_radius = random _max_distance_spawn_zeds;
					 _Zomb_heli = createAgent [(_arrayZedHeli select floor(random(count _arrayZedHeli))) select 0, _originalPos, [], _radius, "CAN_COLLIDE"];
					 if !(isNull _Zomb_heli) then 
					 {
					//	_Zomb_heli setDir floor(random 360);
						_count_spawned_zed_heli = _count_spawned_zed_heli + 1;
					 };
				};
				diag_log format [" SpawnHeliCrashes: Spawned %1 in %2 with %3 loot around Heli and %4 Zeds around Heli!",_selected_name_heli,_map_pos_heli,_count_spawned_loot_heli,_count_spawned_zed_heli];
			};
        };
    };

if (_Heli > 0) then
{
    call fnc_spawnHeli;
};

3. Создаем по пути: "MPMissions\dayz_Auto.ChernarusPlus\"  папку "scripts" , и в ней файл с именем "compiles.sqf" . Если такая папка у вас уже имеются, просто не создавайте ее,  а перейдите в нее. Если файл с там именем уже имеется у вас, то не создавайте его, а допишите информацию со следующего пункта инструкции в конец файла!
4. Вставляем в файл следующую строку:

init_spawn_Helicarshes = compile preprocessFileLineNumbers "scripts\custom\Helicarsh.sqf";

5. Открываем по указанному далее пути файл в "Notepad++": "MPMissions\dayz_Auto.ChernarusPlus\init.sqf". Находим в файле строки с

call compile preprocessFileLineNumbers

5. Вставляем после всех "call compile preprocessFileLineNumbers" следующее:

call compile preprocessFileLineNumbers "scripts\compiles.sqf";
_Enable_SPAWNER_HELICRASHES = true; // Кастомный скрипт спавна хеликрашей (true - включить, false - выключить)
DZ_COUNT_HELICRASHES = 12;	// Максимальное кол-во хеликрашей при включенном кастомном скрипте их спавна

6. В этом же файле находим строки:

simulWeatherSync;
dbInitEconomy [true];
setTimeForScripts 0.03;

7. Добавляем после них:

if (_Enable_SPAWNER_HELICRASHES) then {
	Call init_spawn_Helicarshes;
};

Вот и все.

 

ВАЖНО:

Перед активацией скрипта отключите официальный спавнер хеликрашей сервера из официальной системы сервера игры. Инструкция есть тут:

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

_Enable_SPAWNER_HELICRASHES = true; // Кастомный скрипт спавна хеликрашей (true - включить, false - выключить)
DZ_COUNT_HELICRASHES = 12;	// Максимальное кол-во хеликрашей при включенном кастомном скрипте их спавна

Все настройки по спавну хеликрашей есть в самом файле скрипта, который в п. 2 инструкции вы и создавали. Надеюсь, сложности с его настройкой не возникнет, пояснения там имеются.

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


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


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

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

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

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


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

Войти

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


Войти сейчас

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

    • Автор: BorizzK
      Накатал по быстрому для себя и своих ребят от нефиг делать, тк в командировке и дейзить возможности нет, только удаленно ковырять сервер
      Внутри настройки через переменные
      путь к базе сервера и инстанс ид берет из конфига сервера (нужно настроить имя файла и путь в файле)
      Мониторит сервер по названию окна, сохранив pid
      При вылете в 90% случаев корректно убивает процесс
      При перезапуске так же
      При каждом старте с 0 и при перезапусках делает бэкапы баз/настроек/логов в папку !Backup в корне сервера
      Можно настроть кол-во хранимых бэкпов для базы сервера и логов

      Вобщем заглянете внутрь и все поймете
       
      Вдруг кому пригодится
       
      Закрепляю тут краний боевой вариант
      Что к чему - прочтите всю тему и все станет ясно
       
      Сцыл на стрницу темы с крайней версией заточенной на использование с версией 1.04 и параметром -servermod
       
      Крайняя версия
       
    • Автор: NoNameUltima
      Автор: Я.
      Модификация банка, для DayZ Standalone для мода торговли(Trader)
       
      Мод позволяет:
      Снимать деньги со счета. Вносить деньги на счет. Переводить средства из банка, в банк другого игрока, даже если он не в сети( по UID )  
      Настройки серверной части:
      Точки в которых доступен банк. Радиус в котором доступен банк(от центра точки - см. выше). Горячая клавиша вызывающая на клиентской стороне меню банкомата. Папку профиля для хранения данных о банковских балансах игроков.  
      *Мод автоматически производит обмен валюты по номиналу, при внесении, или изъятии денежных средств.
      *Клиентскую часть можно скачать в STEAM.
      *Для подключения серверной части, - достаточно закинуть ее в папку сервера, и указать папку для хранения баланса.
       
      Цена: 1500
       
      Контакты:
      Skype: hf-trade  
      STEAM: https://steamcommunity.com/sharedfiles/filedetails/?id=1714035636
      Видео работы:
       
       
      Серверная часть, подключается как -serverMod=
    • Автор: NoNameUltima
      Автор:
      Я. Версия админки:
      v.0.0.2  
      Описание:
      Админка поставляется с ключами, и подписями. Админка разделена на 2 части - клиентская, и серверная. Так же работает в оффлайн режиме.  
      Для установки админки, необходимо:
      На сервере подключить серверный мод. На сервере подключить клиентский мод. На сервере скопировать ключ из клиентского мода, и поместить в папку keys сервера. На клиенте добавить клиентский мод. В конфигурационный файл администрации прописать UID(ы) администраторов и модераторов.  
      Рабочие пункты админки:
       
      Отображение в 3D(ESP до 100м)
      Игроки. Зомби. Техника. Постройки. Объекты. Отображение на карте(в радиусе игрока до 100м):
      Игроки. Зомби. Техника. Постройки. Объекты. НПЦ. Сервер:
      Установка времени на сервере. Установка погоды на сервере(В бете). Собственные:
      Телепорт по векторам(4 - по направлению взгляда. 5 - вверх). Телепорт по карте. Неуязвимость. Бесконечный БК. Невидимость. Защита от зомби. Игроки:
      Телепорт игрока к администратору. Телепорт администратора к игроку. Телепорт в заданные координаты. Лечение. Очистка инвентаря. Выдача БК к текущему оружию(в руках). Заблокировать. Разблокировать. Убить. Отсоединить. Забанить(свой файл банов по UID) Создание объектов:.
      Фильтр при выборе раздела создания предметов(поиск по имени класса).  
      Другое:
      Админская карта. Дебаг монитор. Информационный виджет. Удаление объектов.(только при включенном дебаге - отображающем объект в прицеле).  
      Горячие клавиши:
      [        -     Вызов панели администратора. HOME     -     Вкл\Выкл отображения полосы отладки. DELETE    -    Удаление объекта в прицеле. 4        -    Телепорт по направлению взгляда. 5        -    Телепорт вверх.  
      Сообщения:
      Вывод сообщений игрокам, о действиях модератора(если в админке UID указан, как UID модератора).  
      Журналы:
      Действия администрации.  
      Стоимость:
      3500  
      Видео:( ВНИМАНИЕ! В ВИДЕО, ВНУТРИ ПАНЕЛИ АДМИНИСТРАТОРА, РАБОТАЮТ ТОЛЬКО ТЕ ПУНКТЫ КОТОРЫЕ УКАЗАНЫ ВЫШЕ! ОСТАЛЬНЫЕ ПУНКТЫ ДОБАВЛЕНЫ НА БУДУЩЕЕ, И МОГУТ БЫТЬ ИЗМЕНЕНЫ)
      P.S. Обновления платные - 25% от стоимости админки.
      Скайп: hf-trade
    • Автор: NoNameUltima
      Автор: NoNameUltima
      v. 0.1.7
      Стоимость: 2500
       
      Мод предоставляется в двух частях:
      Клиентский мод(для игроков). Ключи и подписи, присутствуют(При необходимости изменения содержимого - ключ и подписи можно переделать). Серверный мод(только для сервера). *Моды связанны между собой.
       
      Что присутствует:
       
      Дебаг монитор *Есть настройка в конфигурации - отображать, или нет монитор при заходе на сервер.
      **Кнопка вкл\выкл настраивается в конфигурации
      За убийство зомби, повышается счетчик убийств зомби. За убийство зомби, начисляются наличные(кол-во настраивается в конфигурации). При смерти игрока, наличные остаются в трупе.(Забрать можно). За убийство игрока, повышается счетчик убийств людей. Метки на карте с указанием торговых зон. Стартовое приветствие игроков. ПНВ работающий от батарейки. Панель игрока Зараженные зоны. Стартовый инвентарь для игроков(по UID'ам, и общий). Стартовые позиции для игроков(по UID'ам, и случайные для тех кого нет в списке). Статичные постройки на карте(загрузка из класса). Создание коробок с содержимым. Команды чата:  
      Доп. статичные функции:  
      skype: hf-trade
       
      P.S. Обновления платные(для тех кто приобретал мод ранее: 25% от общей стоимости, до актуальной версии).
      P.S.P.S. Весь функционал является БЕТА-ВЕРСИЕЙ!
    • Автор: 123new
      Нам понадобится:
      1. Сервер DayZ Standalone (см. тему вот эту)
      2. Notepad++: бесплатно на оф. сайте
      3. Немного времени и настойчивости (обычно бывает в комплекте и так)
       
      И так, начинаем:
      1. Открываем блокнотом mpmissions\dayzOffline.chernarusplus\init.c
      P.S. Имя папки dayzOffline.chernarusplus у вас может отличаться, будьте внимательны
      2. В начале файла добавляем:
      static int time_repeat_info_players = 10; //in seconds static string file_name_info_players = "$profile:PlayersLogFile.txt"; static void WriteFile(string file_name, string text) { private FileHandle fhandle; if ( !FileExist(file_name) ) { fhandle = OpenFile(file_name, FileMode.WRITE); } else { fhandle = OpenFile(file_name, FileMode.APPEND); } if ( fhandle == 0 ) { Print("[#Запись_в_файл]: Не удалось открыть файл для записи: " + file_name); Print("[#Запись_в_файл]: [Запись]: " + text); return; } FPrintln(fhandle, text); CloseFile(fhandle); } static void WritePlayersInfo() { array<Man> players = new array<Man>; Man player; Man player_test; GetGame().GetPlayers( players ); if (players.Count() > 0) { if ( FileExist(file_name_info_players) ) { DeleteFile(file_name_info_players); } for ( int i = 0; i < players.Count(); ++i ) { player_test = players.Get(i); if( player_test ) { PlayerIdentity p_identity = player_test.GetIdentity(); private string coord_pl = player_test.GetPosition().ToString(); private string Name_P = p_identity.GetName(); private string UID_P = p_identity.GetPlainId(); WriteFile(file_name_info_players, "User name: " + Name_P + " UID: " + UID_P + " Coords: " + coord_pl); } } } else { if ( FileExist(file_name_info_players) ) { DeleteFile(file_name_info_players); } } } Где 'PlayersLogFile.txt' меняем на нужное вам имя файла, а в 'time_repeat_info_players' настраиваем время повтора проверки списка игроков для перезаписи файла
      3. Находим в файле блок 'void main()' и в его конце перед закрывающей '}', поумолчанию это строка
      weather.SetWindFunctionParams(0.1, 0.3, 50); добавляем ниже строку:
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(WritePlayersInfo, (time_repeat_info_players * 1000), true); 4. Готово, если не допустили ошибок, при наличии хотя бы 1 игрока на сервере ваш файл с данными по игрокам будет присутствовать и заполняться информацией, а в случае их отсутствия удаляться.