From 6d45a8f2b63791d5f4bd5ef15146684def54c4bd Mon Sep 17 00:00:00 2001 From: icomrade Date: Wed, 17 Aug 2016 15:17:43 -0400 Subject: [PATCH] use createVeh non-array on the server Faster by my testing. Also, some more performance related changes to server_monitor --- SQF/dayz_code/compile/fnc_getSetPos.sqf | 24 +++++++++++++++---- SQF/dayz_server/compile/fa_antiwallhack.sqf | 2 +- .../compile/server_handleSafeGear.sqf | 9 ++++--- .../compile/server_publishVehicle2.sqf | 9 ++++--- .../compile/server_publishVehicle3.sqf | 3 ++- .../compile/server_spawnCarePackages.sqf | 9 ++++--- .../compile/server_spawnCrashSites.sqf | 14 +++++++---- SQF/dayz_server/compile/spawn_ammosupply.sqf | 3 ++- SQF/dayz_server/compile/spawn_mineveins.sqf | 3 ++- SQF/dayz_server/compile/spawn_roadblocks.sqf | 3 ++- SQF/dayz_server/compile/spawn_vehicles.sqf | 4 +++- SQF/dayz_server/system/lit_fireplaces.sqf | 3 ++- 12 files changed, 61 insertions(+), 25 deletions(-) diff --git a/SQF/dayz_code/compile/fnc_getSetPos.sqf b/SQF/dayz_code/compile/fnc_getSetPos.sqf index ece068db0..30f6f7d03 100644 --- a/SQF/dayz_code/compile/fnc_getSetPos.sqf +++ b/SQF/dayz_code/compile/fnc_getSetPos.sqf @@ -1,15 +1,31 @@ //DO NOT USE IF YOU NEED ANGLE COMPENSATION!!!! private "_pos"; +_params = count _this; _thingy = _this select 0; -if ((count _this) > 1) then { +_isATL = false; + +if (_params > 1) then { _pos = _this select 1; + if (_params > 2) then { + _isATL = _this select 2; + }; } else { _pos = getPosASL _thingy; }; if (surfaceIsWater _pos) then { - _thingy setPosASL _pos; + if (_isATL) then { + _thingy setPosASL (ATLToASL _pos); + } else { + _thingy setPosASL _pos; + }; } else { - _thingy setPosATL (ASLToATL _pos); -}; \ No newline at end of file + if (_isATL) then { + _thingy setPosATL _pos; + } else { + _thingy setPosATL (ASLToATL _pos); + }; +}; + +_pos; \ No newline at end of file diff --git a/SQF/dayz_server/compile/fa_antiwallhack.sqf b/SQF/dayz_server/compile/fa_antiwallhack.sqf index 277b43a14..a04de5a96 100644 --- a/SQF/dayz_server/compile/fa_antiwallhack.sqf +++ b/SQF/dayz_server/compile/fa_antiwallhack.sqf @@ -79,7 +79,7 @@ _nbpatchs = 0; _pos = +(_x); _pos resize 3; _pos = _house modelToWorld _pos; - _o = createVehicle [(_x select 3), _pos, [], 0, "CAN_COLLIDE"]; + _o = (_x select 3) createVehicle [0,0,0]; _o setDir ((getDir _house)+(_x select 4)); _o setPosATL _pos; diag_log [ typeOf _o, getPosATL _o, getDir _o, 0, nil]; diff --git a/SQF/dayz_server/compile/server_handleSafeGear.sqf b/SQF/dayz_server/compile/server_handleSafeGear.sqf index f8669ab08..2788f0fae 100644 --- a/SQF/dayz_server/compile/server_handleSafeGear.sqf +++ b/SQF/dayz_server/compile/server_handleSafeGear.sqf @@ -41,7 +41,8 @@ switch (_status) do { _backpacks = _obj getVariable ["BackpackCargo",[]]; // Create new unlocked safe, then delete old locked safe - _holder = createVehicle [_unlockedClass,_pos,[],0,"CAN_COLLIDE"]; + //_holder = createVehicle [_unlockedClass,_pos,[],0,"CAN_COLLIDE"]; + _holder = _unlockedClass createVehicle [0,0,0]; _holder setDir _dir; _holder setVariable ["memDir",_dir,true]; _holder setVectorDirAndUp _vector; @@ -65,7 +66,8 @@ switch (_status) do { _backpacks = getBackpackCargo _obj; // Create new locked safe, then delete old unlocked safe - _holder = createVehicle [_lockedClass,_pos,[],0,"CAN_COLLIDE"]; + //_holder = createVehicle [_lockedClass,_pos,[],0,"CAN_COLLIDE"]; + _holder = _lockedClass createVehicle [0,0,0]; _holder setDir _dir; _holder setVariable ["memDir",_dir,true]; _holder setVectorDirAndUp _vector; @@ -89,7 +91,8 @@ switch (_status) do { _magazines = getMagazineCargo _obj; _backpacks = getBackpackCargo _obj; - _holder = createVehicle [_packedClass,_pos,[],0,"CAN_COLLIDE"]; + //_holder = createVehicle [_packedClass,_pos,[],0,"CAN_COLLIDE"]; + _holder = _packedClass createVehicle [0,0,0]; deleteVehicle _obj; _holder setDir _dir; _holder setPosATL _pos; diff --git a/SQF/dayz_server/compile/server_publishVehicle2.sqf b/SQF/dayz_server/compile/server_publishVehicle2.sqf index a96aa423e..c5064ecee 100644 --- a/SQF/dayz_server/compile/server_publishVehicle2.sqf +++ b/SQF/dayz_server/compile/server_publishVehicle2.sqf @@ -67,11 +67,14 @@ _key call server_hiveWrite; if(!_done) exitWith { diag_log("CUSTOM: failed to get id for : " + str(_uid)); }; if(DZE_TRADER_SPAWNMODE) then { - _object_para = createVehicle ["ParachuteMediumWest", [0,0,0], [], 0, "CAN_COLLIDE"]; + //_object_para = createVehicle ["ParachuteMediumWest", [0,0,0], [], 0, "CAN_COLLIDE"]; + _object_para = "ParachuteMediumWest" createVehicle [0,0,0]; _object_para setPos [_location select 0, _location select 1,(_location select 2) + 65]; - _object = createVehicle [_class, [0,0,0], [], 0, "CAN_COLLIDE"]; + //_object = createVehicle [_class, [0,0,0], [], 0, "CAN_COLLIDE"]; + _object = _class createVehicle [0,0,0]; } else { - _object = createVehicle [_class, _location, [], 0, "CAN_COLLIDE"]; + //_object = createVehicle [_class, _location, [], 0, "CAN_COLLIDE"]; + _object = _class createVehicle _location; }; if(!_donotusekey) then { diff --git a/SQF/dayz_server/compile/server_publishVehicle3.sqf b/SQF/dayz_server/compile/server_publishVehicle3.sqf index 0c28cdb6f..6295bf1fa 100644 --- a/SQF/dayz_server/compile/server_publishVehicle3.sqf +++ b/SQF/dayz_server/compile/server_publishVehicle3.sqf @@ -75,7 +75,8 @@ _key call server_hiveWrite; // Remove marker deleteVehicle _object; - _newobject = createVehicle [_class, [0,0,0], [], 0, "CAN_COLLIDE"]; + //_newobject = createVehicle [_class, [0,0,0], [], 0, "CAN_COLLIDE"]; + _newobject = _class createVehicle [0,0,0]; // remove old vehicle from DB [_objectID,_objectUID,_activatingPlayer] call server_deleteObj; diff --git a/SQF/dayz_server/compile/server_spawnCarePackages.sqf b/SQF/dayz_server/compile/server_spawnCarePackages.sqf index 2ccecfac8..5c9854aaa 100644 --- a/SQF/dayz_server/compile/server_spawnCarePackages.sqf +++ b/SQF/dayz_server/compile/server_spawnCarePackages.sqf @@ -49,7 +49,8 @@ for "_i" from 1 to (SPAWN_NUM) do diag_log format ["DEBUG: Spawning a care package (%1) at %2 with %3 items.", _class, _position, _lootNum]; - _vehicle = createVehicle [_class, _position, [], 0, "CAN_COLLIDE"]; + //_vehicle = createVehicle [_class, _position, [], 0, "CAN_COLLIDE"]; + _vehicle = _class createVehicle _position; dayz_serverObjectMonitor set [count dayz_serverObjectMonitor, _vehicle]; _vehicle setVariable ["ObjectID", 1, true]; @@ -73,12 +74,14 @@ for "_i" from 1 to (SPAWN_NUM) do case 2: //Clutter cutter { - createVehicle ["ClutterCutter_small_2_EP1", _lootPos, [], 0, "CAN_COLLIDE"]; + //createVehicle ["ClutterCutter_small_2_EP1", _lootPos, [], 0, "CAN_COLLIDE"]; + "ClutterCutter_small_2_EP1" createVehicle _lootPos; }; case 3: //Debug sphere { - createVehicle ["Sign_sphere100cm_EP1", _lootPos, [], 0, "CAN_COLLIDE"]; + //createVehicle ["Sign_sphere100cm_EP1", _lootPos, [], 0, "CAN_COLLIDE"]; + "Sign_sphere100cm_EP1" createVehicle _lootPos; }; }; } forEach Loot_Select(_lootGroup, _lootNum); diff --git a/SQF/dayz_server/compile/server_spawnCrashSites.sqf b/SQF/dayz_server/compile/server_spawnCrashSites.sqf index 6baf8d32e..35384a808 100644 --- a/SQF/dayz_server/compile/server_spawnCrashSites.sqf +++ b/SQF/dayz_server/compile/server_spawnCrashSites.sqf @@ -70,13 +70,15 @@ _spawnCrashSite = diag_log format ["CRASHSPAWNER: Spawning crash site (%1) at %2 with %3 items.", _class, _position, _lootNum]; - _vehicle = createVehicle ["ClutterCutter_small_2_EP1", _position, [], 0, "CAN_COLLIDE"]; - _vehicle = createVehicle [_class, _position, [], 0, "CAN_COLLIDE"]; + //_vehicle = createVehicle ["ClutterCutter_small_2_EP1", _position, [], 0, "CAN_COLLIDE"]; + //_vehicle = createVehicle [_class, _position, [], 0, "CAN_COLLIDE"]; + _vehicle = "ClutterCutter_small_2_EP1" createVehicle _position; + _vehicle = _class createVehicle [0,0,0]; dayz_serverObjectMonitor set [count dayz_serverObjectMonitor, _vehicle]; _vehicle setVariable ["ObjectID", 1, true]; _vehicle setDir random 360; _vehicle setPos _position; - + _lootParams = getArray (configFile >> "CfgVehicles" >> _class >> "lootParams"); { @@ -101,12 +103,14 @@ _spawnCrashSite = case 2: //Clutter cutter { - createVehicle ["ClutterCutter_small_2_EP1", _lootPos, [], 0, "CAN_COLLIDE"]; + //createVehicle ["ClutterCutter_small_2_EP1", _lootPos, [], 0, "CAN_COLLIDE"]; + "ClutterCutter_small_2_EP1" createVehicle _lootPos; }; case 3: //Debug sphere { - createVehicle ["Sign_sphere100cm_EP1", _lootPos, [], 0, "CAN_COLLIDE"]; + //createVehicle ["Sign_sphere100cm_EP1", _lootPos, [], 0, "CAN_COLLIDE"]; + "Sign_sphere100cm_EP1" createVehicle _lootPos; }; }; } diff --git a/SQF/dayz_server/compile/spawn_ammosupply.sqf b/SQF/dayz_server/compile/spawn_ammosupply.sqf index 33c62de8a..5e77a4def 100644 --- a/SQF/dayz_server/compile/spawn_ammosupply.sqf +++ b/SQF/dayz_server/compile/spawn_ammosupply.sqf @@ -15,7 +15,8 @@ if ((count _position) == 2) then { _istoomany = _position nearObjects ["All",5]; if ((count _istoomany) > 0) exitWith {}; - _veh = createVehicle ["Supply_Crate_DZE",_position, [], 0, "CAN_COLLIDE"]; + //_veh = createVehicle ["Supply_Crate_DZE",_position, [], 0, "CAN_COLLIDE"]; + _veh = "Supply_Crate_DZE" createVehicle [0,0,0]; _veh enableSimulation false; _veh setDir round(random 360); _veh setPos _position; diff --git a/SQF/dayz_server/compile/spawn_mineveins.sqf b/SQF/dayz_server/compile/spawn_mineveins.sqf index d7c32df94..83361f6f4 100644 --- a/SQF/dayz_server/compile/spawn_mineveins.sqf +++ b/SQF/dayz_server/compile/spawn_mineveins.sqf @@ -10,7 +10,8 @@ if ((count _position) == 2) then { _spawnveh = ["Iron_Vein_DZE","Iron_Vein_DZE","Iron_Vein_DZE","Iron_Vein_DZE","Iron_Vein_DZE","Silver_Vein_DZE","Silver_Vein_DZE","Silver_Vein_DZE","Gold_Vein_DZE","Gold_Vein_DZE"] call BIS_fnc_selectRandom; //diag_log("DEBUG: Spawning a crashed " + _spawnveh + " with " + _spawnloot + " at " + str(_position)); - _veh = createVehicle [_spawnveh,_position, [], 0, "CAN_COLLIDE"]; + //_veh = createVehicle [_spawnveh,_position, [], 0, "CAN_COLLIDE"]; + _veh = _spawnveh createVehicle [0,0,0]; _veh enableSimulation false; _veh setDir round(random 360); _veh setPos _position; diff --git a/SQF/dayz_server/compile/spawn_roadblocks.sqf b/SQF/dayz_server/compile/spawn_roadblocks.sqf index d14894057..1530415ac 100644 --- a/SQF/dayz_server/compile/spawn_roadblocks.sqf +++ b/SQF/dayz_server/compile/spawn_roadblocks.sqf @@ -10,7 +10,8 @@ if ((count _position) == 2) then { if ((count _istoomany) > 0) exitWith {}; _spawnveh = DZE_isWreck call BIS_fnc_selectRandom; - _veh = createVehicle [_spawnveh,_position, [], 0, "CAN_COLLIDE"]; + //_veh = createVehicle [_spawnveh,_position, [], 0, "CAN_COLLIDE"]; + _veh = _spawnveh createVehicle [0,0,0]; _veh enableSimulation false; _veh setDir round(random 360); _veh setPos _position; diff --git a/SQF/dayz_server/compile/spawn_vehicles.sqf b/SQF/dayz_server/compile/spawn_vehicles.sqf index b77c1f078..d35a0833b 100644 --- a/SQF/dayz_server/compile/spawn_vehicles.sqf +++ b/SQF/dayz_server/compile/spawn_vehicles.sqf @@ -61,7 +61,9 @@ if (count AllowedVehiclesList == 0) then { _istoomany = _position nearObjects ["AllVehicles",50]; if ((count _istoomany) > 0) exitWith {}; - _veh = createVehicle [_vehicle, _position, [], 0, "CAN_COLLIDE"]; + //_veh = createVehicle [_vehicle, _position, [], 0, "CAN_COLLIDE"]; + //_veh setPos _position; + _veh = _vehicle createVehicle [0,0,0]; _veh setDir _dir; _veh setPos _position; _objPosition = getPosATL _veh; diff --git a/SQF/dayz_server/system/lit_fireplaces.sqf b/SQF/dayz_server/system/lit_fireplaces.sqf index 63bf63e3e..baf6d95be 100644 --- a/SQF/dayz_server/system/lit_fireplaces.sqf +++ b/SQF/dayz_server/system/lit_fireplaces.sqf @@ -5,7 +5,8 @@ private ["_blocked","_flame","_position"]; _position = _x; {if (_position distance _x < 150) exitWith {_blocked = true;};} forEach dayz_townGeneratorBlackList; if (!_blocked && (random 1 < 0.33)) then { - _flame = createVehicle [ "flamable_DZ", _x, [], 0, "CAN_COLLIDE"]; + //_flame = createVehicle [ "flamable_DZ", _x, [], 0, "CAN_COLLIDE"]; + _flame = "flamable_DZ" createVehicle _x; _flame inflame true; _flame setVariable ["permaLoot",true]; // = won't be removed by the cleaner, cf. sched_lootpiles.sqf };