Jump to content
  • 0

Zombies and demons


XMortX

Question

Hey guys, how would i go about adding the zombies and demons mod to my dedibox for multiplayer? I tried using the script that was for exile but it doesnt seem to work. Someone else said something about using modules, but iv not got a clue what that entails, mission editing maybe, not sure. Any help would be appreciated!

Regards

XMortX

Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0

Here's how I made this mod work for my Taviana map.

zombies/start.sqf contains all coordinates for city locations and places triggers in each one of those

 

InfAllLocations = [
	//["Baltic Sea",[4699.25,3524.91,0.01]],
	["Mitrovice",[3795.29,7222.12,0.01]],
	["Branibor",[7682.46,4312.29,0.01]],
	["Bled",[7955.22,5404.22,0.01]],
	["Shtangrad",[3323.68,7552.9,0.01]],
	["Treshnyоvo",[8192.9,4999.26,0.01]],
	["Primorsk",[4647.02,8168.15,0.01]],
	["Novi Dvor",[7925.88,6725.89,0.01]],
	["Stari Dvor",[8234.42,6092.46,0.01]],
	//["Knin",[3429.83,2164.9,0.01]],
	["Polyanka",[8490.77,5606.31,0.01]],
	//["Lake Bled",[8593.25,4557.06,0.01]],
	//["Krasnoznamen'sk Airport",[7169.38,8050.25,0.01]],
	//["Stara Luka",[8674.96,5519.58,0.01]],
	["Borska Pole",[6394.68,8607.36,0.01]],
	["Bilgrad Na Moru",[5452.96,8827.01,0.01]],
	["Racetrack",[2065.14,7288.99,0.01]],
	["Zhabinka",[8213.12,2987.59,0.01]],
	//["Ash",[6048.94,1410.87,0.01]],
	//["Lake Slyepac",[8480.45,7067.79,0.01]],
	//["Sobor Khrista Spasitelya",[8579.25,6941.41,0.01]],
	["Kryvoe",[9114.96,5402.52,0.01]],
	//["Stare Boriste",[5666.27,9374.34,0.01]],
	//["Bashka Luka",[9437.74,5439.89,0.01]],
	["NPP Treblyanka",[9437.92,4457.95,0.01]],
	["Repkov",[9559.96,5712.55,0.01]],
	["Topolka",[8881.93,2308.74,0.01]],
	["Chernovar",[5827.36,9879.22,0.01]],
	["Vedich",[6705.53,9868.36,0.01]],
	["Krasnoznamen'sk",[9176.12,8060.1,0.01]],
	//["Borovka",[5943.5,10527.1,0.01]],
	["Kosovo",[9623.59,1767.75,0.01]],
	["Komarovo",[10591.6,6565.65,0.01]],
	["Krkav",[11008.4,6677.76,0.01]],
	["Isle Myet",[9881.26,9021.67,0.01]],
	["Marina",[10009.6,1377.64,0.01]],
	//["Baltic Sea",[2263.3,10929.5,0.01]],
	["Oko",[8472.17,11418.2,0.01]],
	["Plashki",[7836.5,11796,0.01]],
	["Baranovka",[10516.6,9955.95,0.01]],
	["Seven",[10985.4,759.202,0.01]],
	//["Olga",[10822.9,9695.06,0.01]],
	["Romanov",[11626.9,9063.69,0.01]],
	["Stare Plashki",[8203.81,12117.6,0.01]],
	["Vodice",[11817.5,1418.28,0.01]],
	["Bashka Luka",[11444.9,9512.22,0.01]],
	["Vishka",[9163.74,11719.2,0.01]],
	["Sedoy",[8466.01,12156.8,0.01]],
	["Karelski Channel",[12581.8,7401.8,0.01]],
	//["Svir",[11462.4,9835.3,0.01]],
	["Varna",[11026.6,10397.9,0.01]],
	// ["Blato",[11787.8,747.01,0.01]],
	["Zagorye",[11492.1,10033.7,0.01]],
	//["Olga",[10577.7,11081.2,0.01]],
	["Nagornoye",[9653.81,11844.3,0.01]],
	//["Isle Krk",[6552.09,13113.6,0.01]],
	["Slavyansk",[8939.58,12564,0.01]],
	//["Olga",[9698.88,12177.7,0.01]],
	//["Olga",[8652.61,12762.1,0.01]],
	//["Baltic Sea",[13583.8,5618.82,0.01]],
	//["Otok",[13605.7,3643.98,0.01]],
	//["Klish",[13624.7,3596.88,0.01]],
	//["Chertova Styena",[13044.6,8575.23,0.01]],
	//["Island Hvar",[8592.5,13142.5,0.01]],
	["Antonovka",[9660.5,12620,0.01]],
	["Luzhin nad Olgoy",[11164.5,11617,0.01]],
	["Gostivar",[4206.99,14062.7,0.01]],
	["Tlen",[8530.9,13546.5,0.01]],
	//["Olga",[8987,13348.4,0.01]],
	["Mala Luka",[9501.79,13178.4,0.01]],
	["Vufelki",[9219.33,13399,0.01]],
	["Оvisoy",[9614.09,13456.1,0.01]],
	//["Island Pinsk",[7917.94,14247.3,0.01]],
	["Grushnoye",[5451.26,14741.8,0.01]],
	//["Kres",[1202.7,13916.7,0.01]],
	["Velika Luka",[9630.61,13902.4,0.01]],
	["Apshironsk",[9179.1,14136.6,0.01]],
	["Etanovsk",[12664.7,11921,0.01]],
	["Norilsk",[8677.97,14808.7,0.01]],
	//["Island Pskov",[9548.47,14485.5,0.01]],
	["Boye",[15201,7886.56,0.01]],
	//["Izh",[6329.81,15521.2,0.01]],
	["Norilsk Military Base",[9152.02,14794.3,0.01]],
	["Podgorica",[14631.4,9723.67,0.01]],
	["Zatok",[14804,9510.57,0.01]],
	["Church of St. Mikolay",[8681.32,15142.5,0.01]],
	["Center",[14592.7,10252.1,0.01]],
	//["South Tarakansk",[8925.29,15235.8,0.01]],
	//["Sabina",[15022.2,9693.54,0.01]],
	["Postoyna",[15501.5,8512.26,0.01]],
	["Slovany",[15250.3,9386.37,0.01]],
	["Gord",[5657.46,16112.1,0.01]],
	//["Lyubolsky Zaliv",[9973.7,14999.9,0.01]],
	//["Tarakansk Oil Storage",[8857.9,15544.6,0.01]],
	["Center",[15140.5,9836.14,0.01]],
	["Sokoli Gnyazdo",[12464.1,13415.9,0.01]],
	["Uyezd",[15193.1,10128.3,0.01]],
	["Dyelnica",[15471,9560.89,0.01]],
	["Novy Bor",[14507.3,11346.6,0.01]],
	["Prilep",[14159.2,11912.4,0.01]],
	//["North Tarakansk",[8642.89,15896.9,0.01]],
	["Doriyanov",[12487.2,13740.8,0.01]],
	["Krushevich",[16244.2,7406.14,0.01]],
	//["Solibor",[13999.6,12240.2,0.01]],
	["Vratnica",[2385.34,16339.5,0.01]],
	["Biysk",[5530.9,16761.7,0.01]],
	//["Tarakansk Oil Fields 2",[8489.29,16311.8,0.01]],
	//["Bolshaya Plan'",[2432.09,16521.5,0.01]],
	["Bori",[11581.8,14986.2,0.01]],
	["Bohdanyuvka",[2770.5,16711.4,0.01]],
	["Kopech",[16500.9,8339.07,0.01]],
	["Stare Pole",[16912.3,6213.9,0.01]],
	["Nekhay",[14873.3,11913.6,0.01]],
	["Stari Grad",[11187,15350.8,0.01]],
	["Vinograd",[13585.4,13478.3,0.01]],
	//["Swamp",[13220.1,13930,0.01]],
	//["Stadium",[11555.2,15308.7,0.01]],
	["Chrveni Gradok",[12713.8,14482.6,0.01]],
	//["Tarakansk Oil Fields 1",[8473.03,16721.1,0.01]],
	//["Swamp",[16274.8,9866.61,0.01]],
	["Swallow's Nest",[3777.34,17173.7,0.01]],
	["Novi Boch",[16873.2,8158.5,0.01]],
	//["Lake Umag",[15451.4,11600.5,0.01]],
	//["Lyepestok",[11608.1,15476.1,0.01]],
	["Yuzhny Sad",[5396.69,17431.4,0.01]],
	["Zabyela",[13090.5,14523.9,0.01]],
	["Boleslava",[2796.64,17274,0.01]],
	["Ilya",[5878.21,17480.9,0.01]],
	["Dubravka",[11802.8,15590.1,0.01]],
	["Byelov",[17319.5,7487.96,0.01]],
	["Vladimir",[1942.44,17177,0.01]],
	//["Vishkov",[11387.3,15908,0.01]],
	["Zelenogorod",[12229.4,15392.9,0.01]],
	["Stari Sad",[17555.4,6343.25,0.01]],
	//["Nina",[12663.6,15112.6,0.01]],
	["Works",[17305.3,8104.2,0.01]],
	["Cement",[17305.4,8142.75,0.01]],
	["Alexander",[4973.97,17701.7,0.01]],
	//["Train depot",[11538.7,15985.9,0.01]],
	["Nizhina",[17751.4,5737.78,0.01]],
	["Kustik",[12958.3,15053.7,0.01]],
	["Kryvozhopol",[3885.24,17724,0.01]],
	//["Rybnik",[3253.58,17652.3,0.01]],
	["Airport Dubovo",[16442.4,10940.6,0.01]],
	["Chertovo Oko",[17925.8,5039.47,0.01]],
	//["Lyubol'",[10405.1,16832,0.01]],
	["Dubovo",[16222.5,11600.2,0.01]],
	["Silo",[2453.91,17703.5,0.01]],
	["Krakov",[10425.3,17003,0.01]],
	//["Bulbanya",[5529.52,18210.6,0.01]],
	["Brdo",[15511.6,13207,0.01]],
	["Skalka",[18311.1,6596.5,0.01]],
	["Zeleny Kilim",[2263.38,18200.3,0.01]],
	["Church of St Ivan",[15680.6,13423.1,0.01]],
	["Dolina",[15315.8,14254.1,0.01]],
	["Myelkij",[15174.9,14512.1,0.01]],
	["Baltskaya Guba",[4942.01,18884.4,0.01]],
	["Martin",[16136.3,13632.5,0.01]],
	//["Jaroslavski Airport",[10134.8,18157.9,0.01]],
	["Gorka",[15122.4,14882.2,0.01]],
	["Molotovsk",[16957.7,12694.3,0.01]],
	["Duge Selo",[11289.8,17814.5,0.01]],
	//["Train depot",[16373.7,13718,0.01]],
	//["Taviana Zoo",[19140.7,2957.32,0.01]],
	//["Baltic Sea",[3689.7,19269.7,0.01]],
	["Mill",[16068.6,14248.2,0.01]],
	["Molotovski Zlaiv",[17353.1,12723.8,0.01]],
	["Bronka",[5466.52,19677.8,0.01]],
	["Radynya",[16852.1,14114.7,0.01]],
	//["Train depot",[10842.7,18754.7,0.01]],
	["Kameni",[8850.92,19436.6,0.01]],
	["Yaroslav",[10164,19080.4,0.01]],
	["Ekaterinburg",[11020.4,18790.6,0.01]],
	//["Niva Bay",[11416.9,18831.2,0.01]],
	//["Train depot",[15251.6,16302.5,0.01]],
	["Sevastopol'",[15464.8,16269.3,0.01]],
	["Channel Loket",[11567.9,20146.5,0.01]],
	["Dalnogorsk",[15007.9,18182.2,0.01]],
	["Helfenburg",[8160.54,21286,0.01]],
	["Khotanovsk",[13468,19387.3,0.01]],
	//["Baltic Sea",[22327.6,5360.23,0.01]],
	//["Isle Shibenik",[11970,20993.4,0.01]],
	//["Baltic Sea",[22252.5,13237.4,0.01]],
	//["Baltic Sea",[17730,20080,0.01]],
	["Castle Georgiev",[24405.9,1367.89,0.01]]
];




if (isServer) then
{ 

civilian setFriend [resistance , 0];
civilian setFriend [east , 0];

resistance setFriend [civilian , 0];
resistance setFriend [east , 0];
	
	_ztriggers = [];

		{
			private ["_markName","_markPos","_mPosX","_mPosY","_mkrY","_mkrX","_detectorName","_x"];
			_location=_x;
			_locationName = _location select 0;
			_locationPos= _location select 1;
			//_locationPos = [(_locationPos select 0),(_locationPos select 1),0.01];
			_trigger=createTrigger["EmptyDetector",_locationPos];
			_size = 100;
			if (_locationName in ["Krasnoznamen'sk","Sevastopol'","Airport Dubovo","Lyepestok","Ekaterinburg","Sabina","Branibor"]) then
			{
				_size = 500;
			} else {
				_size = 300;
			};
			_trigger setTriggerActivation ["EAST", "PRESENT", true];
			
			_trigger setTriggerArea[_size,_size,0,false];			
			call compile format ["_trigger setTriggerStatements ['this','[thisTrigger,[%1,true,false]] exec ""\q\addons\custom_server\zombies\spawn.sqf"";',''];", str _size];
			
			_ztriggers pushBack [_trigger,_size];
			sleep 0.1;
		} forEach InfAllLocations;
		
		diag_log format["ZOMBIES: All locations are marked with triggers. Sending _ztriggers=%1",_ztriggers];

};

 

 

zombies/spawn.sqf runs when the trigger is activated by the player

~0.5

#first
_logic = _this select 0
_paramsArray = _this select 1

_spawnRadius = _paramsArray select 0
_spawnRegular = _paramsArray select 1
_spawnDemons = _paramsArray select 2

diag_log format["Z Spawner: _paramsArray=%1",_paramsArray]

if (isnil "ryanzombiesstart") then {ryanzombiesstart = 5}
if (isnil "ryanzombiesdelay") then {ryanzombiesdelay = 0.5}
if (isnil "ryanzombiescurrentamount") then {ryanzombiescurrentamount = 0}
ryanzombiesamount = 14
ryanzombiestotalamount = 1000
if (isnil "ryanzombiesfrequency") then {ryanzombiesfrequency = 180}
if (isnil "ryanzombiesactivation") then {ryanzombiesactivation = 0.9}
if (isnil "ryanzombieshordesize") then {ryanzombieshordesize = 14}

if (isnil "ryanzombiesdeletion") then {ryanzombiesdeletion = 1}
if (isnil "Ryanzombieslogicroam") then {Ryanzombieslogicroam = 1}

ryanzombiesdeletion = 1
Ryanzombieslogicroam = 1

Ryanzombiesjump = 1
Ryanzombiescanthrow = 1
Ryanzombiescanthrowtank = 0
Ryanzombiescanthrowdistance = 30
ryanzombiescanthrowtankdistance = 0

Ryanzombiesdamagecar = 0.005
Ryanzombiesdamageair = 0.005
Ryanzombiesdamagetank = 0

Ryanzombiesdamagetankstrenth = 0


_slowZs = ["RyanZombieC_man_1slow", "RyanZombieC_man_polo_1_Fslow", "RyanZombieC_man_polo_2_Fslow", "RyanZombieC_man_polo_4_Fslow", "RyanZombieC_man_polo_5_Fslow", "RyanZombieC_man_polo_6_Fslow", "RyanZombieC_man_p_fugitive_Fslow", "RyanZombieC_man_w_worker_Fslow", "RyanZombieC_scientist_Fslow", "RyanZombieC_man_hunter_1_Fslow", "RyanZombieC_man_pilot_Fslow", "RyanZombieC_journalist_Fslow", "RyanZombieC_Orestesslow", "RyanZombieC_Nikosslow", "RyanZombieB_Soldier_02_fslow", "RyanZombieB_Soldier_02_f_1slow", "RyanZombieB_Soldier_02_f_1_1slow", "RyanZombieB_Soldier_03_fslow", "RyanZombieB_Soldier_03_f_1slow", "RyanZombieB_Soldier_03_f_1_1slow", "RyanZombieB_Soldier_04_fslow", "RyanZombieB_Soldier_04_f_1slow", "RyanZombieB_Soldier_04_f_1_1slow", "RyanZombieB_Soldier_lite_Fslow", "RyanZombieB_Soldier_lite_F_1slow"]
_mediumZs = ["RyanZombieC_man_1medium", "RyanZombieC_man_polo_1_Fmedium", "RyanZombieC_man_polo_2_Fmedium", "RyanZombieC_man_polo_4_Fmedium", "RyanZombieC_man_polo_5_Fmedium", "RyanZombieC_man_polo_6_Fmedium", "RyanZombieC_man_p_fugitive_Fmedium", "RyanZombieC_man_w_worker_Fmedium", "RyanZombieC_scientist_Fmedium", "RyanZombieC_man_hunter_1_Fmedium", "RyanZombieC_man_pilot_Fmedium", "RyanZombieC_journalist_Fmedium", "RyanZombieC_Orestesmedium", "RyanZombieC_Nikosmedium", "RyanZombieB_Soldier_02_fmedium", "RyanZombieB_Soldier_02_f_1medium", "RyanZombieB_Soldier_02_f_1_1medium", "RyanZombieB_Soldier_03_fmedium", "RyanZombieB_Soldier_03_f_1medium", "RyanZombieB_Soldier_03_f_1_1medium", "RyanZombieB_Soldier_04_fmedium", "RyanZombieB_Soldier_04_f_1medium", "RyanZombieB_Soldier_04_f_1_1medium", "RyanZombieB_Soldier_lite_Fmedium", "RyanZombieB_Soldier_lite_F_1medium"]
_fastZs = ["RyanZombieC_man_1", "RyanZombieC_man_polo_1_F", "RyanZombieC_man_polo_2_F", "RyanZombieC_man_polo_4_F", "RyanZombieC_man_polo_5_F", "RyanZombieC_man_polo_6_F", "RyanZombieC_man_p_fugitive_F", "RyanZombieC_man_w_worker_F", "RyanZombieC_scientist_F", "RyanZombieC_man_hunter_1_F", "RyanZombieC_man_pilot_F", "RyanZombieC_journalist_F", "RyanZombieC_Orestes", "RyanZombieC_Nikos", "RyanZombieB_Soldier_02_f", "RyanZombieB_Soldier_02_f_1", "RyanZombieB_Soldier_02_f_1_1", "RyanZombieB_Soldier_03_f", "RyanZombieB_Soldier_03_f_1","RyanZombieB_Soldier_03_f_1_1","RyanZombieB_Soldier_04_f","RyanZombieB_Soldier_04_f_1","RyanZombieB_Soldier_04_f_1_1","RyanZombieB_Soldier_lite_F","RyanZombieB_Soldier_lite_F_1"]
_spiderZs = ["RyanZombieSpider1", "RyanZombieSpider2", "RyanZombieSpider3", "RyanZombieSpider4", "RyanZombieSpider5", "RyanZombieSpider6", "RyanZombieSpider7", "RyanZombieSpider8", "RyanZombieSpider9", "RyanZombieSpider10", "RyanZombieSpider11", "RyanZombieSpider12", "RyanZombieSpider13", "RyanZombieSpider14"]
_demonZs = ["RyanZombieboss1","RyanZombieboss2","RyanZombieboss3","RyanZombieboss4","RyanZombieboss5","RyanZombieboss6","RyanZombieboss7","RyanZombieboss8","RyanZombieboss9","RyanZombieboss10","RyanZombieboss11","RyanZombieboss12","RyanZombieboss13","RyanZombieboss14"]


ryanzombiescurrentamount = missionNamespace getVariable [format ["%1_ZsInThisZone", _logic], 0]
if (ryanzombiescurrentamount < 0) then {ryanzombiescurrentamount=0}

diag_log format["Z Spawner: _ZsInThisZone=%1",ryanzombiescurrentamount]

if (ryanzombiescurrentamount > ryanzombiesamount) then  {goto "end"}

_grp = createGroup west
_x = ryanzombiescurrentamount
_randChance = floor(random(100))
_numSpawnMultiplier = 1
if (_spawnRadius > 300) then {_numSpawnMultiplier = 2}
_numToSpawn = floor(random(ryanzombieshordesize)) MAX (5 * _numSpawnMultiplier)

#loop

_zombieTypes = []

if (_spawnRegular) then {_zombieTypes = [[_slowZs,100],[_mediumZs,50],[_fastZs,15],[_spiderZs,30]]}
if (_spawnDemons) then {_zombieTypes pushback [_demonZs,3]}
_arraySelect = _zombieTypes call BIS_fnc_selectRandom
	if ((_arraySelect select 1) > _randChance) then {
		_x = _x + 1
		_array = _arraySelect select 0
		_random = _array select floor random count _array
		if (ryanzombiescurrentamount > ryanzombiestotalamount) then {goto "end"}
		if (ryanzombiescurrentamount < ryanzombiesamount) then {format ["%1",_random] createunit [position _logic, _grp, format ["this switchmove 'AmovPercMstpSnonWnonDnon_SaluteOut';this setpos [(getpos this select 0) + random %1 - random %2, (getpos this select 1) + random %3 - random %4]; [this] exec '\ryanzombies\count.sqf'",_spawnRadius,_spawnRadius,_spawnRadius,_spawnRadius]] }
		if (ryanzombiescurrentamount < ryanzombiesamount) then {ryanzombiescurrentamount = ryanzombiescurrentamount + 1}
		if (ryanzombiescurrentamount < ryanzombiesamount) then {missionNamespace setVariable [format ["%1_ZsInThisZone", _logic], ryanzombiescurrentamount] }
		if (ryanzombiescurrentamount < ryanzombiesamount) then {diag_log format["Z Spawner: Adding a Z : ryanzombiescurrentamount=%1",ryanzombiescurrentamount] }
		~ryanzombiesdelay
	}
//{_x addRating -10000} forEach units _grp

{ [_x] exec "\q\addons\custom_server\zombies\checkzone.sqf" } forEach units _grp
{ [_x] exec "\q\addons\custom_server\zombies\fillpockets.sqf" } forEach units _grp

if (_x < _numToSpawn) then {goto "loop"}
deletegroup _grp
~ryanzombiesfrequency
goto "loop"


#end

 

Link to comment
Share on other sites

  • 0

Here's how I made this mod work for my Taviana map.

zombies/start.sqf contains all coordinates for city locations and places triggers in each one of those

InfAllLocations = [
	//["Baltic Sea",[4699.25,3524.91,0.01]],
	["Mitrovice",[3795.29,7222.12,0.01]],
	["Branibor",[7682.46,4312.29,0.01]],
	["Bled",[7955.22,5404.22,0.01]],
	["Shtangrad",[3323.68,7552.9,0.01]],
	["Treshnyоvo",[8192.9,4999.26,0.01]],
	["Primorsk",[4647.02,8168.15,0.01]],
	["Novi Dvor",[7925.88,6725.89,0.01]],
	["Stari Dvor",[8234.42,6092.46,0.01]],
	//["Knin",[3429.83,2164.9,0.01]],
	["Polyanka",[8490.77,5606.31,0.01]],
	//["Lake Bled",[8593.25,4557.06,0.01]],
	//["Krasnoznamen'sk Airport",[7169.38,8050.25,0.01]],
	//["Stara Luka",[8674.96,5519.58,0.01]],
	["Borska Pole",[6394.68,8607.36,0.01]],
	["Bilgrad Na Moru",[5452.96,8827.01,0.01]],
	["Racetrack",[2065.14,7288.99,0.01]],
	["Zhabinka",[8213.12,2987.59,0.01]],
	//["Ash",[6048.94,1410.87,0.01]],
	//["Lake Slyepac",[8480.45,7067.79,0.01]],
	//["Sobor Khrista Spasitelya",[8579.25,6941.41,0.01]],
	["Kryvoe",[9114.96,5402.52,0.01]],
	//["Stare Boriste",[5666.27,9374.34,0.01]],
	//["Bashka Luka",[9437.74,5439.89,0.01]],
	["NPP Treblyanka",[9437.92,4457.95,0.01]],
	["Repkov",[9559.96,5712.55,0.01]],
	["Topolka",[8881.93,2308.74,0.01]],
	["Chernovar",[5827.36,9879.22,0.01]],
	["Vedich",[6705.53,9868.36,0.01]],
	["Krasnoznamen'sk",[9176.12,8060.1,0.01]],
	//["Borovka",[5943.5,10527.1,0.01]],
	["Kosovo",[9623.59,1767.75,0.01]],
	["Komarovo",[10591.6,6565.65,0.01]],
	["Krkav",[11008.4,6677.76,0.01]],
	["Isle Myet",[9881.26,9021.67,0.01]],
	["Marina",[10009.6,1377.64,0.01]],
	//["Baltic Sea",[2263.3,10929.5,0.01]],
	["Oko",[8472.17,11418.2,0.01]],
	["Plashki",[7836.5,11796,0.01]],
	["Baranovka",[10516.6,9955.95,0.01]],
	["Seven",[10985.4,759.202,0.01]],
	//["Olga",[10822.9,9695.06,0.01]],
	["Romanov",[11626.9,9063.69,0.01]],
	["Stare Plashki",[8203.81,12117.6,0.01]],
	["Vodice",[11817.5,1418.28,0.01]],
	["Bashka Luka",[11444.9,9512.22,0.01]],
	["Vishka",[9163.74,11719.2,0.01]],
	["Sedoy",[8466.01,12156.8,0.01]],
	["Karelski Channel",[12581.8,7401.8,0.01]],
	//["Svir",[11462.4,9835.3,0.01]],
	["Varna",[11026.6,10397.9,0.01]],
	// ["Blato",[11787.8,747.01,0.01]],
	["Zagorye",[11492.1,10033.7,0.01]],
	//["Olga",[10577.7,11081.2,0.01]],
	["Nagornoye",[9653.81,11844.3,0.01]],
	//["Isle Krk",[6552.09,13113.6,0.01]],
	["Slavyansk",[8939.58,12564,0.01]],
	//["Olga",[9698.88,12177.7,0.01]],
	//["Olga",[8652.61,12762.1,0.01]],
	//["Baltic Sea",[13583.8,5618.82,0.01]],
	//["Otok",[13605.7,3643.98,0.01]],
	//["Klish",[13624.7,3596.88,0.01]],
	//["Chertova Styena",[13044.6,8575.23,0.01]],
	//["Island Hvar",[8592.5,13142.5,0.01]],
	["Antonovka",[9660.5,12620,0.01]],
	["Luzhin nad Olgoy",[11164.5,11617,0.01]],
	["Gostivar",[4206.99,14062.7,0.01]],
	["Tlen",[8530.9,13546.5,0.01]],
	//["Olga",[8987,13348.4,0.01]],
	["Mala Luka",[9501.79,13178.4,0.01]],
	["Vufelki",[9219.33,13399,0.01]],
	["Оvisoy",[9614.09,13456.1,0.01]],
	//["Island Pinsk",[7917.94,14247.3,0.01]],
	["Grushnoye",[5451.26,14741.8,0.01]],
	//["Kres",[1202.7,13916.7,0.01]],
	["Velika Luka",[9630.61,13902.4,0.01]],
	["Apshironsk",[9179.1,14136.6,0.01]],
	["Etanovsk",[12664.7,11921,0.01]],
	["Norilsk",[8677.97,14808.7,0.01]],
	//["Island Pskov",[9548.47,14485.5,0.01]],
	["Boye",[15201,7886.56,0.01]],
	//["Izh",[6329.81,15521.2,0.01]],
	["Norilsk Military Base",[9152.02,14794.3,0.01]],
	["Podgorica",[14631.4,9723.67,0.01]],
	["Zatok",[14804,9510.57,0.01]],
	["Church of St. Mikolay",[8681.32,15142.5,0.01]],
	["Center",[14592.7,10252.1,0.01]],
	//["South Tarakansk",[8925.29,15235.8,0.01]],
	//["Sabina",[15022.2,9693.54,0.01]],
	["Postoyna",[15501.5,8512.26,0.01]],
	["Slovany",[15250.3,9386.37,0.01]],
	["Gord",[5657.46,16112.1,0.01]],
	//["Lyubolsky Zaliv",[9973.7,14999.9,0.01]],
	//["Tarakansk Oil Storage",[8857.9,15544.6,0.01]],
	["Center",[15140.5,9836.14,0.01]],
	["Sokoli Gnyazdo",[12464.1,13415.9,0.01]],
	["Uyezd",[15193.1,10128.3,0.01]],
	["Dyelnica",[15471,9560.89,0.01]],
	["Novy Bor",[14507.3,11346.6,0.01]],
	["Prilep",[14159.2,11912.4,0.01]],
	//["North Tarakansk",[8642.89,15896.9,0.01]],
	["Doriyanov",[12487.2,13740.8,0.01]],
	["Krushevich",[16244.2,7406.14,0.01]],
	//["Solibor",[13999.6,12240.2,0.01]],
	["Vratnica",[2385.34,16339.5,0.01]],
	["Biysk",[5530.9,16761.7,0.01]],
	//["Tarakansk Oil Fields 2",[8489.29,16311.8,0.01]],
	//["Bolshaya Plan'",[2432.09,16521.5,0.01]],
	["Bori",[11581.8,14986.2,0.01]],
	["Bohdanyuvka",[2770.5,16711.4,0.01]],
	["Kopech",[16500.9,8339.07,0.01]],
	["Stare Pole",[16912.3,6213.9,0.01]],
	["Nekhay",[14873.3,11913.6,0.01]],
	["Stari Grad",[11187,15350.8,0.01]],
	["Vinograd",[13585.4,13478.3,0.01]],
	//["Swamp",[13220.1,13930,0.01]],
	//["Stadium",[11555.2,15308.7,0.01]],
	["Chrveni Gradok",[12713.8,14482.6,0.01]],
	//["Tarakansk Oil Fields 1",[8473.03,16721.1,0.01]],
	//["Swamp",[16274.8,9866.61,0.01]],
	["Swallow's Nest",[3777.34,17173.7,0.01]],
	["Novi Boch",[16873.2,8158.5,0.01]],
	//["Lake Umag",[15451.4,11600.5,0.01]],
	//["Lyepestok",[11608.1,15476.1,0.01]],
	["Yuzhny Sad",[5396.69,17431.4,0.01]],
	["Zabyela",[13090.5,14523.9,0.01]],
	["Boleslava",[2796.64,17274,0.01]],
	["Ilya",[5878.21,17480.9,0.01]],
	["Dubravka",[11802.8,15590.1,0.01]],
	["Byelov",[17319.5,7487.96,0.01]],
	["Vladimir",[1942.44,17177,0.01]],
	//["Vishkov",[11387.3,15908,0.01]],
	["Zelenogorod",[12229.4,15392.9,0.01]],
	["Stari Sad",[17555.4,6343.25,0.01]],
	//["Nina",[12663.6,15112.6,0.01]],
	["Works",[17305.3,8104.2,0.01]],
	["Cement",[17305.4,8142.75,0.01]],
	["Alexander",[4973.97,17701.7,0.01]],
	//["Train depot",[11538.7,15985.9,0.01]],
	["Nizhina",[17751.4,5737.78,0.01]],
	["Kustik",[12958.3,15053.7,0.01]],
	["Kryvozhopol",[3885.24,17724,0.01]],
	//["Rybnik",[3253.58,17652.3,0.01]],
	["Airport Dubovo",[16442.4,10940.6,0.01]],
	["Chertovo Oko",[17925.8,5039.47,0.01]],
	//["Lyubol'",[10405.1,16832,0.01]],
	["Dubovo",[16222.5,11600.2,0.01]],
	["Silo",[2453.91,17703.5,0.01]],
	["Krakov",[10425.3,17003,0.01]],
	//["Bulbanya",[5529.52,18210.6,0.01]],
	["Brdo",[15511.6,13207,0.01]],
	["Skalka",[18311.1,6596.5,0.01]],
	["Zeleny Kilim",[2263.38,18200.3,0.01]],
	["Church of St Ivan",[15680.6,13423.1,0.01]],
	["Dolina",[15315.8,14254.1,0.01]],
	["Myelkij",[15174.9,14512.1,0.01]],
	["Baltskaya Guba",[4942.01,18884.4,0.01]],
	["Martin",[16136.3,13632.5,0.01]],
	//["Jaroslavski Airport",[10134.8,18157.9,0.01]],
	["Gorka",[15122.4,14882.2,0.01]],
	["Molotovsk",[16957.7,12694.3,0.01]],
	["Duge Selo",[11289.8,17814.5,0.01]],
	//["Train depot",[16373.7,13718,0.01]],
	//["Taviana Zoo",[19140.7,2957.32,0.01]],
	//["Baltic Sea",[3689.7,19269.7,0.01]],
	["Mill",[16068.6,14248.2,0.01]],
	["Molotovski Zlaiv",[17353.1,12723.8,0.01]],
	["Bronka",[5466.52,19677.8,0.01]],
	["Radynya",[16852.1,14114.7,0.01]],
	//["Train depot",[10842.7,18754.7,0.01]],
	["Kameni",[8850.92,19436.6,0.01]],
	["Yaroslav",[10164,19080.4,0.01]],
	["Ekaterinburg",[11020.4,18790.6,0.01]],
	//["Niva Bay",[11416.9,18831.2,0.01]],
	//["Train depot",[15251.6,16302.5,0.01]],
	["Sevastopol'",[15464.8,16269.3,0.01]],
	["Channel Loket",[11567.9,20146.5,0.01]],
	["Dalnogorsk",[15007.9,18182.2,0.01]],
	["Helfenburg",[8160.54,21286,0.01]],
	["Khotanovsk",[13468,19387.3,0.01]],
	//["Baltic Sea",[22327.6,5360.23,0.01]],
	//["Isle Shibenik",[11970,20993.4,0.01]],
	//["Baltic Sea",[22252.5,13237.4,0.01]],
	//["Baltic Sea",[17730,20080,0.01]],
	["Castle Georgiev",[24405.9,1367.89,0.01]]
];




if (isServer) then
{ 

civilian setFriend [resistance , 0];
civilian setFriend [east , 0];

resistance setFriend [civilian , 0];
resistance setFriend [east , 0];
	
	_ztriggers = [];

		{
			private ["_markName","_markPos","_mPosX","_mPosY","_mkrY","_mkrX","_detectorName","_x"];
			_location=_x;
			_locationName = _location select 0;
			_locationPos= _location select 1;
			//_locationPos = [(_locationPos select 0),(_locationPos select 1),0.01];
			_trigger=createTrigger["EmptyDetector",_locationPos];
			_size = 100;
			if (_locationName in ["Krasnoznamen'sk","Sevastopol'","Airport Dubovo","Lyepestok","Ekaterinburg","Sabina","Branibor"]) then
			{
				_size = 500;
			} else {
				_size = 300;
			};
			_trigger setTriggerActivation ["EAST", "PRESENT", true];
			
			_trigger setTriggerArea[_size,_size,0,false];			
			call compile format ["_trigger setTriggerStatements ['this','[thisTrigger,[%1,true,false]] exec ""\q\addons\custom_server\zombies\spawn.sqf"";',''];", str _size];
			
			_ztriggers pushBack [_trigger,_size];
			sleep 0.1;
		} forEach InfAllLocations;
		
		diag_log format["ZOMBIES: All locations are marked with triggers. Sending _ztriggers=%1",_ztriggers];

};

 

 

zombies/spawn.sqf runs when the trigger is activated by the player

~0.5

#first
_logic = _this select 0
_paramsArray = _this select 1

_spawnRadius = _paramsArray select 0
_spawnRegular = _paramsArray select 1
_spawnDemons = _paramsArray select 2

diag_log format["Z Spawner: _paramsArray=%1",_paramsArray]

if (isnil "ryanzombiesstart") then {ryanzombiesstart = 5}
if (isnil "ryanzombiesdelay") then {ryanzombiesdelay = 0.5}
if (isnil "ryanzombiescurrentamount") then {ryanzombiescurrentamount = 0}
ryanzombiesamount = 14
ryanzombiestotalamount = 1000
if (isnil "ryanzombiesfrequency") then {ryanzombiesfrequency = 180}
if (isnil "ryanzombiesactivation") then {ryanzombiesactivation = 0.9}
if (isnil "ryanzombieshordesize") then {ryanzombieshordesize = 14}

if (isnil "ryanzombiesdeletion") then {ryanzombiesdeletion = 1}
if (isnil "Ryanzombieslogicroam") then {Ryanzombieslogicroam = 1}

ryanzombiesdeletion = 1
Ryanzombieslogicroam = 1

Ryanzombiesjump = 1
Ryanzombiescanthrow = 1
Ryanzombiescanthrowtank = 0
Ryanzombiescanthrowdistance = 30
ryanzombiescanthrowtankdistance = 0

Ryanzombiesdamagecar = 0.005
Ryanzombiesdamageair = 0.005
Ryanzombiesdamagetank = 0

Ryanzombiesdamagetankstrenth = 0


_slowZs = ["RyanZombieC_man_1slow", "RyanZombieC_man_polo_1_Fslow", "RyanZombieC_man_polo_2_Fslow", "RyanZombieC_man_polo_4_Fslow", "RyanZombieC_man_polo_5_Fslow", "RyanZombieC_man_polo_6_Fslow", "RyanZombieC_man_p_fugitive_Fslow", "RyanZombieC_man_w_worker_Fslow", "RyanZombieC_scientist_Fslow", "RyanZombieC_man_hunter_1_Fslow", "RyanZombieC_man_pilot_Fslow", "RyanZombieC_journalist_Fslow", "RyanZombieC_Orestesslow", "RyanZombieC_Nikosslow", "RyanZombieB_Soldier_02_fslow", "RyanZombieB_Soldier_02_f_1slow", "RyanZombieB_Soldier_02_f_1_1slow", "RyanZombieB_Soldier_03_fslow", "RyanZombieB_Soldier_03_f_1slow", "RyanZombieB_Soldier_03_f_1_1slow", "RyanZombieB_Soldier_04_fslow", "RyanZombieB_Soldier_04_f_1slow", "RyanZombieB_Soldier_04_f_1_1slow", "RyanZombieB_Soldier_lite_Fslow", "RyanZombieB_Soldier_lite_F_1slow"]
_mediumZs = ["RyanZombieC_man_1medium", "RyanZombieC_man_polo_1_Fmedium", "RyanZombieC_man_polo_2_Fmedium", "RyanZombieC_man_polo_4_Fmedium", "RyanZombieC_man_polo_5_Fmedium", "RyanZombieC_man_polo_6_Fmedium", "RyanZombieC_man_p_fugitive_Fmedium", "RyanZombieC_man_w_worker_Fmedium", "RyanZombieC_scientist_Fmedium", "RyanZombieC_man_hunter_1_Fmedium", "RyanZombieC_man_pilot_Fmedium", "RyanZombieC_journalist_Fmedium", "RyanZombieC_Orestesmedium", "RyanZombieC_Nikosmedium", "RyanZombieB_Soldier_02_fmedium", "RyanZombieB_Soldier_02_f_1medium", "RyanZombieB_Soldier_02_f_1_1medium", "RyanZombieB_Soldier_03_fmedium", "RyanZombieB_Soldier_03_f_1medium", "RyanZombieB_Soldier_03_f_1_1medium", "RyanZombieB_Soldier_04_fmedium", "RyanZombieB_Soldier_04_f_1medium", "RyanZombieB_Soldier_04_f_1_1medium", "RyanZombieB_Soldier_lite_Fmedium", "RyanZombieB_Soldier_lite_F_1medium"]
_fastZs = ["RyanZombieC_man_1", "RyanZombieC_man_polo_1_F", "RyanZombieC_man_polo_2_F", "RyanZombieC_man_polo_4_F", "RyanZombieC_man_polo_5_F", "RyanZombieC_man_polo_6_F", "RyanZombieC_man_p_fugitive_F", "RyanZombieC_man_w_worker_F", "RyanZombieC_scientist_F", "RyanZombieC_man_hunter_1_F", "RyanZombieC_man_pilot_F", "RyanZombieC_journalist_F", "RyanZombieC_Orestes", "RyanZombieC_Nikos", "RyanZombieB_Soldier_02_f", "RyanZombieB_Soldier_02_f_1", "RyanZombieB_Soldier_02_f_1_1", "RyanZombieB_Soldier_03_f", "RyanZombieB_Soldier_03_f_1","RyanZombieB_Soldier_03_f_1_1","RyanZombieB_Soldier_04_f","RyanZombieB_Soldier_04_f_1","RyanZombieB_Soldier_04_f_1_1","RyanZombieB_Soldier_lite_F","RyanZombieB_Soldier_lite_F_1"]
_spiderZs = ["RyanZombieSpider1", "RyanZombieSpider2", "RyanZombieSpider3", "RyanZombieSpider4", "RyanZombieSpider5", "RyanZombieSpider6", "RyanZombieSpider7", "RyanZombieSpider8", "RyanZombieSpider9", "RyanZombieSpider10", "RyanZombieSpider11", "RyanZombieSpider12", "RyanZombieSpider13", "RyanZombieSpider14"]
_demonZs = ["RyanZombieboss1","RyanZombieboss2","RyanZombieboss3","RyanZombieboss4","RyanZombieboss5","RyanZombieboss6","RyanZombieboss7","RyanZombieboss8","RyanZombieboss9","RyanZombieboss10","RyanZombieboss11","RyanZombieboss12","RyanZombieboss13","RyanZombieboss14"]


ryanzombiescurrentamount = missionNamespace getVariable [format ["%1_ZsInThisZone", _logic], 0]
if (ryanzombiescurrentamount < 0) then {ryanzombiescurrentamount=0}

diag_log format["Z Spawner: _ZsInThisZone=%1",ryanzombiescurrentamount]

if (ryanzombiescurrentamount > ryanzombiesamount) then  {goto "end"}

_grp = createGroup west
_x = ryanzombiescurrentamount
_randChance = floor(random(100))
_numSpawnMultiplier = 1
if (_spawnRadius > 300) then {_numSpawnMultiplier = 2}
_numToSpawn = floor(random(ryanzombieshordesize)) MAX (5 * _numSpawnMultiplier)

#loop

_zombieTypes = []

if (_spawnRegular) then {_zombieTypes = [[_slowZs,100],[_mediumZs,50],[_fastZs,15],[_spiderZs,30]]}
if (_spawnDemons) then {_zombieTypes pushback [_demonZs,3]}
_arraySelect = _zombieTypes call BIS_fnc_selectRandom
	if ((_arraySelect select 1) > _randChance) then {
		_x = _x + 1
		_array = _arraySelect select 0
		_random = _array select floor random count _array
		if (ryanzombiescurrentamount > ryanzombiestotalamount) then {goto "end"}
		if (ryanzombiescurrentamount < ryanzombiesamount) then {format ["%1",_random] createunit [position _logic, _grp, format ["this switchmove 'AmovPercMstpSnonWnonDnon_SaluteOut';this setpos [(getpos this select 0) + random %1 - random %2, (getpos this select 1) + random %3 - random %4]; [this] exec '\ryanzombies\count.sqf'",_spawnRadius,_spawnRadius,_spawnRadius,_spawnRadius]] }
		if (ryanzombiescurrentamount < ryanzombiesamount) then {ryanzombiescurrentamount = ryanzombiescurrentamount + 1}
		if (ryanzombiescurrentamount < ryanzombiesamount) then {missionNamespace setVariable [format ["%1_ZsInThisZone", _logic], ryanzombiescurrentamount] }
		if (ryanzombiescurrentamount < ryanzombiesamount) then {diag_log format["Z Spawner: Adding a Z : ryanzombiescurrentamount=%1",ryanzombiescurrentamount] }
		~ryanzombiesdelay
	}
//{_x addRating -10000} forEach units _grp

{ [_x] exec "\q\addons\custom_server\zombies\checkzone.sqf" } forEach units _grp
{ [_x] exec "\q\addons\custom_server\zombies\fillpockets.sqf" } forEach units _grp

if (_x < _numToSpawn) then {goto "loop"}
deletegroup _grp
~ryanzombiesfrequency
goto "loop"


#end

So zombies/spawn.sqf i run from my sensor class in mission.sqm

From where i must to run zombies/start.sqf ?  init.sqf?

 

Link to comment
Share on other sites

  • 0

So zombies/spawn.sqf i run from my sensor class in mission.sqm

From where i must to run zombies/start.sqf ?  init.sqf?

 

If you run your trigger/sensor from the mission file, you should look at how Ryan built his missions and follow his examples.

My examples refer to running zombies from the server-side AI addon, like WAI or others without using mission.sqm

I have a custom addon @EpochHive\Addons\custom_server.pbo that I use for initiating AI and zombie triggers as well.

Link to comment
Share on other sites

  • 0

If you run your trigger/sensor from the mission file, you should look at how Ryan built his missions and follow his examples.

My examples refer to running zombies from the server-side AI addon, like WAI or others without using mission.sqm

I have a custom addon @EpochHive\Addons\custom_server.pbo that I use for initiating AI and zombie triggers as well.

Then looks like i dont make it work for my altis epoch server, dont know how to run it from server side etc.

Maybe you can share some step by step guide how you make it. 

Not so much info around about how run this mod for epoch server.

Link to comment
Share on other sites

  • 0

I do like this mod, if only there were a way to support so many agents on a multiplayer server ;)

axeman, is there a way to make BIS_fnc_MP blocking optional in Epoch? I mean I understand it's a security hole and all but it would be nice if you could leave that decision to the server admins. Without this function there is no attack animation for the Zombies. All of server-client interaction in this mod is built on BIS_fnc_MP...

I think there are plenty of other mods that use this function but won't work with Epoch. I think BIS_fnc_MP is whitelisted in Exile mod.

Thanks for your consideration!

Link to comment
Share on other sites

  • 0

any way to change the timer on how they spawn to a different function?

 

instead of "if player is alive > 30 minutes or more"

 

can i have some help changing it to if the player is IN COMBAT MODE?

 

to use combat mode as the trigger to spawn a pestering zombie close by that player?

Link to comment
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
  • Advertisement
  • Discord

×
×
  • Create New...