From 151a6b7478c9daa7d703587a4a07ec8f85b03d6a Mon Sep 17 00:00:00 2001 From: icomrade Date: Wed, 9 Jul 2014 17:36:17 -0400 Subject: [PATCH] Hopfully improve on issue in #1403 Should run a little quicker, added some (). --- SQF/dayz_code/compile/player_animalCheck.sqf | 72 +++++++++----------- 1 file changed, 33 insertions(+), 39 deletions(-) diff --git a/SQF/dayz_code/compile/player_animalCheck.sqf b/SQF/dayz_code/compile/player_animalCheck.sqf index 66e26fedc..29819ab18 100644 --- a/SQF/dayz_code/compile/player_animalCheck.sqf +++ b/SQF/dayz_code/compile/player_animalCheck.sqf @@ -1,51 +1,45 @@ - -private ["_list","_animalssupported","_type","_root","_favouritezones","_randrefpoint","_PosList","_PosSelect","_Pos","_agent","_id"]; -_list = getposATL player nearEntities [["CAAnimalBase"],dayz_animalDistance]; - -if (count _list < dayz_maxAnimals) then { - //Find where animal likes +private ["_animalssupported","_type","_agent","_favouritezones","_randrefpoint","_PosList","_PosSelect","_Pos","_list"]; +_list = (getposATL player) nearEntities [["CAAnimalBase"],dayz_animalDistance]; +if ((count _list) < dayz_maxAnimals) then { _animalssupported = ["Chicken","Cow","Sheep","WildBoar","WildBoar","WildBoar","Goat","Rabbit","Rabbit","Dog"]; - - _type = (_animalssupported select floor(random(count _animalssupported))); - if (_type == "Cow") then { - _animalssupported = ["Cow01","Cow02","Cow03","Cow04","Cow01_EP1"]; - _type = (_animalssupported select floor(random(count _animalssupported))); + _type = (_animalssupported select (floor(random(count _animalssupported)))); + Switch (_type) do { + case "Cow" : { + _animalssupported = ["Cow01","Cow02","Cow03","Cow04","Cow01_EP1"]; + _type = (_animalssupported select (floor(random(count _animalssupported)))); + }; + case "Goat" : { + _animalssupported = ["Goat01_EP1","Goat02_EP1","Goat"]; + _type = (_animalssupported select (floor(random(count _animalssupported)))); + }; + case "Sheep" : { + _animalssupported = ["Sheep","Sheep02_EP1","Sheep01_EP1"]; + _type = (_animalssupported select (floor(random(count _animalssupported)))); + }; + case "Chicken" : { + _animalssupported = ["Hen","Cock"]; + _type = (_animalssupported select (floor(random(count _animalssupported)))); + }; + case "Dog" : { + _animalssupported = ["DZ_Fin","DZ_Pastor"]; + _type = (_animalssupported select (floor(random(count _animalssupported)))); + }; }; - if (_type == "Goat") then { - _animalssupported = ["Goat01_EP1","Goat02_EP1","Goat"]; - _type = (_animalssupported select floor(random(count _animalssupported))); - }; - if (_type == "Sheep") then { - _animalssupported = ["Sheep","Sheep02_EP1","Sheep01_EP1"]; - _type = (_animalssupported select floor(random(count _animalssupported))); - }; - if (_type == "Chicken") then { - _animalssupported = ["Hen","Cock"]; - _type = (_animalssupported select floor(random(count _animalssupported))); - }; - if (_type == "Dog") then { - _animalssupported = ["DZ_Fin","DZ_Pastor"]; - _type = (_animalssupported select floor(random(count _animalssupported))); - }; - - _root = configFile >> "CfgVehicles" >> _type; - _favouritezones = getText ( _root >> "favouritezones"); - //_randrefpoint = [position player, 10, dayz_animalDistance, 1, 0, 50, 0] call BIS_fnc_findSafePos; + _favouritezones = getText (configFile >> "CfgVehicles" >> _type >> "favouritezones"); _randrefpoint = getposATL player; - _PosList = selectbestplaces [_randrefpoint,dayz_animalDistance,_favouritezones,10,5]; - _PosSelect = _PosList select (floor random (count _PosList)); + _PosList = selectBestPlaces [_randrefpoint,dayz_animalDistance,_favouritezones,10,5]; + _PosSelect = _PosList select (floor(random(count _PosList))); _Pos = _PosSelect select 0; _list = _Pos nearEntities [["CAAnimalBase","Man"],50]; - if (player distance _Pos < dayz_animalDistance && NOT surfaceIsWater _Pos && (count _list <= 1)) then { + if (((player distance _Pos) < dayz_animalDistance) && {!(surfaceIsWater _Pos)} && {(count _list) <= 1}) then { if (_type == "DZ_Pastor") then { _agent = createAgent [_type, _Pos, [], 0, "NONE"]; } else { _agent = createAgent [_type, _Pos, [], 0, "FORM"]; }; - _agent setpos _Pos; - + sleep 0.001; + _agent setPos _Pos; + _id = [_pos,_agent] execFSM "\z\addons\dayz_code\system\animal_agent.fsm"; PVDZE_zed_Spawn = [_agent]; publicVariableServer "PVDZE_zed_Spawn"; - - _id = [_pos,_agent] execFSM "\z\addons\dayz_code\system\animal_agent.fsm"; }; sleep 1; -}; \ No newline at end of file +};