Guest Posted April 8, 2015 Report Share Posted April 8, 2015 Introduction This script is meant to Freeze AI Units spawned by Missions such as WAI, in order to reduce the Server Last and increase Client and Server FPS. While there is no enemy near a Mission, the AI units will be disabled in Movement, targeting and animations etc., once a player enters the Radius, which you can define individually for yourself, the AI will be re-activated in Order to not defeat the purpose of fighting. This does not effect Single Units sitting on MG's or in Vehicles. Note: It is NOT recommended to Freeze Zombies, AI Patrols or Players. Setup Now this script allows you an exact amount of 3 personal configurations. You can determine the Range in which the Player has to be to active the Mission with "_countRange". Also you can choose the Time, that has to pass before the AI will be frozen again, if Player left the Area (this is not triggered, if the player simply dies) - _timeTillFreeze. The third and last option is simply the debugging. This allows to see in your Logs, which Group is when frozen and unfrozen and by who (freeze_log). The Default Values are: _countRange - 800 _timeTillFreeze - 30 freeze_log - true Installation I do not have EMS or DZMS Installed, so this Installation instructions is for WAI only. Note, that the script can be run with any Mission System. In dayz_server.pbo\WAI\init.sqf add this Line within "if(isServer) then {" cache_units = compile preprocessFileLineNumbers "\z\addons\dayz_server\WAI\compile\cache_units.sqf"; You can add that Line anywhere you want, inside the IF. In dayz_server.pbo\WAI\compile\spawn_group.sqf add UNDER: _unitGroup selectLeader ((units _unitGroup) select 0); This: [_unitGroup] spawn cache_units; Update With the Updates comes new Features. Suggested from Halvhjearne was to Hide the AI, while nobody is near and Un-Hide them, when player get's within the Range that you can still set in the config variable. This feature comes with a new Variable: hide_ai. It's fairly easy to get, what this Variable is there for. Now RimBlock also suggested something very interesting: Randomize AI Position, after the un-freeze. This comes with 2 Variables: randomize_position - This determines to use the randomize or not. and randomize_distance, which will set the Maximum distance the ai can be away from their Original Position. It works random, so if you choose 100, it can happen, that the AI is 100m away, but it can also happen, that the AI is only 1m away. Now Gr8 posted out the Issue, that the Waypoint of the AI is being unassigned, when they are un-freezed. I personally don't mind that, but some might do, so i've made up a new configuration Variable for that to: unassign_waypoints. - Pastebin - Raw Paste (cache_units.sqf) /** Please take my Special Thanks, - RimBlock ( http://epochmod.com/forum/index.php?/user/12612-rimblock/ ) *** - MGM ( http://epochmod.com/forum/index.php?/user/16852-mgm/ ) - Gr8 ( http://epochmod.com/forum/index.php?/user/15884-gr8/ ) - halvhjearne ( http://epochmod.com/forum/index.php?/user/10011-halvhjearne/ ) PS: God sake, that name is hard to write! Author: Martin ( http://epochmod.com/forum/index.php?/user/30755-ukmartin/ ) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 1 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. **/ private ["_unitGroup","_countRange","_timeTillFreeze","_state","_stateFroze","_timeFroze","_matchingObjectsArray","_numberOfMatchingObjectsNumber","_playerCount"]; _unitGroup = _this select 0; /**************************************/ /**Range for Re-Activation*************/ /****** Default: 800 ******************/ _countRange = 800; /**************************************/ /**************************************/ /**Time untill units are Frozen again**/ /************* Default: 30 ************/ _timeTillFreeze = 30; /**************************************/ /**************************************/ /****** Log Actions to RPT File? ******/ /*********** Default: true ************/ freeze_log = true; /**************************************/ /**************************************/ /******** Unassign Waypoints? ********/ /*********** Default: false ***********/ unassign_waypoints = false; /**************************************/ /**************************************/ /******** Randomize Position? ********/ /******** Distance to Randomize *******/ /*********** Default: true ************/ /*********** Distance: 20 *************/ randomize_position = true; randomize_distance = 20; /**************************************/ /**************************************/ /********** Hide un-used AI? *********/ /*********** Default: true ************/ hide_ai = true; /**************************************/ /**************************************/ /** fnc_freeze: Used to Freeze the Units of the Group Parameters: Unit Group (Type: Object / Group) Behaviour: For Each Unit of the given Group the AI will be disabled (force them to freeze) Addition: Set's a Variable with the time the AI is frozen and the state **/ fnc_freeze = { private ["_unitGroup","_nic"]; _unitGroup = _this select 0; if (freeze_log) then { diag_log(format["[DEBUG] Freezing Units of Group: %1", _unitGroup]); }; { _x disableAI "TARGET"; sleep 0.05; _x disableAI "AUTOTARGET"; sleep 0.05; _x disableAI "MOVE"; sleep 0.05; _x disableAI "ANIM"; sleep 0.05; if (unassign_waypoints) then { _x disableAI "FSM"; sleep 0.05; }; if (hide_ai) then { //_x hideObjectGlobal true; _nic = [nil, _x, "per", rHideObject, true ] call RE; }; } foreach units _unitGroup; _unitGroup setVariable["FrozenState",[time,true],true]; }; /** fnc_unfreeze: Used to Unfreeze the Units of the Group Parameters: Unit Group (Type: Object / Group) Behaviour: For Each Unit of the given Group the AI will be enabled Addition: Set's a Variable with the time the AI is Unfrozen and the state **/ fnc_unfreeze = { private ["_unitGroup","_posX","_posY","_posZ","_pos","_nic"]; _unitGroup = _this select 0; if (freeze_log) then { diag_log(format["[DEBUG] Un-Freezing Units of Group: %1", _unitGroup]); }; { _x enableAI "TARGET"; sleep 0.05; _x enableAI "AUTOTARGET"; sleep 0.05; _x enableAI "MOVE"; sleep 0.05; _x enableAI "ANIM"; sleep 0.05; if (unassign_waypoints) then { _x enableAI "FSM"; sleep 0.05; }; if (randomize_position) then { _pos = getPos _x; _posX = _pos select 0; _posY = _pos select 1; _posZ = _pos select 2; _posX = _posX + round(random randomize_distance); _posY = _posY + round(random randomize_distance); sleep 0.05; _x setPos [_posX,_posY,_posZ]; sleep 0.05; }; if (hide_ai) then { //_x hideObjectGlobal false; _nic = [nil, _x, "per", rHideObject, false ] call RE; }; } foreach units _unitGroup; _unitGroup setVariable["FrozenState",[time,false],true]; }; //Call the Freeze Function, in Order to make the Units freeze [_unitGroup] spawn fnc_freeze; /** While {true}: Infinite Loop, that runs every 15 Seconds Parameters: None Behaviour: Counts nearby Units, if it found a Unit it will check if the Unit is a Player Behaviour: If the Unit is a Player, the Frozen Group will be defrosted. Behaviour: If there is no Player near that Group for _timeTillFreeze the AI will be frozen again Addition: None **/ while {true} do { _matchingObjectsArray = ((units _unitGroup) select 0) nearEntities ["CAManBase",_countRange]; _numberOfMatchingObjectsNumber = (count _matchingObjectsArray); if (_numberOfMatchingObjectsNumber >= 1) then { _state = _unitGroup getVariable["FrozenState",[time,true]]; _timeFroze = _state select 0; _stateFroze = _state select 1; if (_stateFroze) then { { if (isPlayer _x) then { if (freeze_log) then { diag_log(format["[DEBUG] %1 Triggered Un-Freezing of Group: %2", _x, _unitGroup]); }; [_unitGroup] spawn fnc_unfreeze; } else { if (!_stateFroze && ((time - _timeFroze) > _timeTillFreeze)) then { if (freeze_log) then { diag_log(format["[DEBUG] Re-Freezing Group: %1", _unitGroup]); }; [_unitGroup] spawn fnc_freeze; }; }; } foreach _matchingObjectsArray; } else { if (!_stateFroze && ((time - _timeFroze) > _timeTillFreeze)) then { if (freeze_log) then { diag_log(format["[DEBUG] Re-Freezing Group: %1", _unitGroup]); }; [_unitGroup] spawn fnc_freeze; }; }; }; sleep 15; }; PS: No, i will not Upload the whole .sqf File, because you're to lazy to save it. Why? Because i'm not even going to visit all those malware Upload sites :) Old Version - Pastebin Raw Paste /** Please take my Special Thanks, - RimBlock ( http://epochmod.com/forum/index.php?/user/12612-rimblock/ ) *** - MGM ( http://epochmod.com/forum/index.php?/user/16852-mgm/ ) Author: Martin ( http://epochmod.com/forum/index.php?/user/30755-ukmartin/ ) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 1 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. **/ private ["_unitGroup","_countRange","_timeTillFreeze","_state","_stateFroze","_timeFroze","_matchingObjectsArray","_numberOfMatchingObjectsNumber","_playerCount"]; _unitGroup = _this select 0; /**************************************/ /**Range for Re-Activation*************/ /****** Default: 800 ******************/ _countRange = 800; /**************************************/ /**************************************/ /**Time untill units are Frozen again**/ /************* Default: 30 ************/ _timeTillFreeze = 30; /**************************************/ /**************************************/ /****** Log Actions to RPT File? ******/ /*********** Default: true ************/ freeze_log = true; /**************************************/ /**************************************/ /** fnc_freeze: Used to Freeze the Units of the Group Parameters: Unit Group (Type: Object / Group) Behaviour: For Each Unit of the given Group the AI will be disabled (force them to freeze) Addition: Set's a Variable with the time the AI is frozen and the state **/ fnc_freeze = { private ["_unitGroup"]; _unitGroup = _this select 0; if (freeze_log) then { diag_log(format["[DEBUG] Freezing Units of Group: %1", _unitGroup]); }; { _x disableAI "TARGET"; sleep 0.05; _x disableAI "AUTOTARGET"; sleep 0.05; _x disableAI "MOVE"; sleep 0.05; _x disableAI "ANIM"; sleep 0.05; _x disableAI "FSM"; sleep 0.05; } foreach units _unitGroup; _unitGroup setVariable["FrozenState",[time,true],true]; }; /** fnc_unfreeze: Used to Unfreeze the Units of the Group Parameters: Unit Group (Type: Object / Group) Behaviour: For Each Unit of the given Group the AI will be enabled Addition: Set's a Variable with the time the AI is Unfrozen and the state **/ fnc_unfreeze = { private ["_unitGroup"]; _unitGroup = _this select 0; if (freeze_log) then { diag_log(format["[DEBUG] Un-Freezing Units of Group: %1", _unitGroup]); }; { _x enableAI "TARGET"; sleep 0.05; _x enableAI "AUTOTARGET"; sleep 0.05; _x enableAI "MOVE"; sleep 0.05; _x enableAI "ANIM"; sleep 0.05; _x enableAI "FSM"; sleep 0.05; } foreach units _unitGroup; _unitGroup setVariable["FrozenState",[time,false],true]; }; //Call the Freeze Function, in Order to make the Units freeze [_unitGroup] spawn fnc_freeze; /** While {true}: Infinite Loop, that runs every 15 Seconds Parameters: None Behaviour: Counts nearby Units, if it found a Unit it will check if the Unit is a Player Behaviour: If the Unit is a Player, the Frozen Group will be defrosted. Behaviour: If there is no Player near that Group for _timeTillFreeze the AI will be frozen again Addition: None **/ while {true} do { _matchingObjectsArray = ((units _unitGroup) select 0) nearEntities ["CAManBase",_countRange]; _numberOfMatchingObjectsNumber = (count _matchingObjectsArray); if (_numberOfMatchingObjectsNumber >= 1) then { _state = _unitGroup getVariable["FrozenState",[time,true]]; _timeFroze = _state select 0; _stateFroze = _state select 1; if (_stateFroze) then { { if (isPlayer _x) then { if (freeze_log) then { diag_log(format["[DEBUG] %1 Triggered Un-Freezing of Group: %2", _x, _unitGroup]); }; [_unitGroup] spawn fnc_unfreeze; } else { if (!_stateFroze && ((time - _timeFroze) > _timeTillFreeze)) then { if (freeze_log) then { diag_log(format["[DEBUG] Re-Freezing Group: %1", _unitGroup]); }; [_unitGroup] spawn fnc_freeze; }; }; } foreach _matchingObjectsArray; } else { if (!_stateFroze && ((time - _timeFroze) > _timeTillFreeze)) then { if (freeze_log) then { diag_log(format["[DEBUG] Re-Freezing Group: %1", _unitGroup]); }; [_unitGroup] spawn fnc_freeze; }; }; }; sleep 15; }; Please let me know, if you encounter any errors and with that please provide your RPT Log and if you modified this code please provide that to. Link to comment Share on other sites More sharing options...
Gr8 Posted April 8, 2015 Report Share Posted April 8, 2015 Incredibly genius ! Great Share once again. Might wanna share the instructions for DZMS too, because its the same process but not for some people Link to comment Share on other sites More sharing options...
Halvhjearne Posted April 8, 2015 Report Share Posted April 8, 2015 its a good idea, however i dont think it will actually help as much as you think unless you have quite a lot of ai spawned and alive always on your map. what you could do was hide or delete them them when players are out of range and then respawn or make them visible again once players are near, that will defenatly make a diffrence in server fps, but not so much with this (not to mention this will stop any patrols or convoys you might have moving across the map). you should rather look into hideobject instead of this and just make sure players makes them visible again when they are near. Link to comment Share on other sites More sharing options...
Gr8 Posted April 8, 2015 Report Share Posted April 8, 2015 Freeing AIs stops them to getting assigned way points around the mission. Thats about it. It would help alot more if the AIs only spawned in when a player was near the mission. Link to comment Share on other sites More sharing options...
Guest Posted April 8, 2015 Report Share Posted April 8, 2015 its a good idea, however i dont think it will actually help as much as you think unless you have quite a lot of ai spawned and alive always on your map. what you could do was hide or delete them them when players are out of range and then respawn or make them visible again once players are near, that will defenatly make a diffrence in server fps, but not so much with this (not to mention this will stop any patrols or convoys you might have moving across the map). you should rather look into hideobject instead of this and just make sure players makes them visible again when they are near. Thanks for that suggestions. This script does not effect AI Patrols, as the Patrols are created differently and the Script is not getting all Groups, just that one group that triggered the script. You can ofc add this to AI Patrols, but as mentioned that is not recommended. Link to comment Share on other sites More sharing options...
Guest Posted April 8, 2015 Report Share Posted April 8, 2015 Freeing AIs stops them to getting assigned way points around the mission. Thats about it. It would help alot more if the AIs only spawned in when a player was near the mission. Try comment out the following: //_x disableAI "FSM"; Link to comment Share on other sites More sharing options...
Triage Posted April 8, 2015 Report Share Posted April 8, 2015 This is amazing! Link to comment Share on other sites More sharing options...
SideShowFreak Posted April 8, 2015 Report Share Posted April 8, 2015 Any before and after fps pics? Im just curious what kind of FPs gain on ecould expect from this? Obviously the maount of Ai on the map will have a huge impact as well. just curious about it thats all. Link to comment Share on other sites More sharing options...
Creep Posted April 8, 2015 Report Share Posted April 8, 2015 this is not the fps you can "see", its the server fps aka. how good/fast the server works Link to comment Share on other sites More sharing options...
Halvhjearne Posted April 8, 2015 Report Share Posted April 8, 2015 this is not the fps you can "see", its the server fps aka. how good/fast the server works you can show server fps when logged in as admin with this: #monitor Link to comment Share on other sites More sharing options...
Guest Posted April 9, 2015 Report Share Posted April 9, 2015 Bump: Major Update //EDIT: Sorry, is bumping actually allowed? Never searched for the Board Rules, just can't be bothered :wub: Link to comment Share on other sites More sharing options...
BetterDeadThanZed Posted April 9, 2015 Report Share Posted April 9, 2015 I've gotta ask. What do you mean by "to reduce the Server Last" What is "Server Last"? Link to comment Share on other sites More sharing options...
Guest Posted April 9, 2015 Report Share Posted April 9, 2015 I've gotta ask. What do you mean by "to reduce the Server Last" What is "Server Last"? That's the FPS of the Server, i.e. the Memory Usage. You see, when the AI is running around the Server has lot's of stuff to calculate and check etc, that allocates Memory and also slows down the server. It somewhat effects Clients to, but this Script only does little for the Client. By "boosting" the Server, you grant it the ability to do stuff faster, like for example Update the Objects or the Hitpoints of Vehicles, actually that effects anything, that is handled by Server. Also writing to the Database. Note, that this does not "permanently" helps the server, it only "takes away" a bit of last, while the Missions are active. For a real boost consider using Headless Client or wait for my next Project, which will hopefully be an upgrade for Clients FPS (Still want's testing and scripting). Link to comment Share on other sites More sharing options...
Buck0 Posted April 9, 2015 Report Share Posted April 9, 2015 Do you have a working headless client? Currently the only one im aware of comes with crashes Link to comment Share on other sites More sharing options...
-CJ- Posted April 9, 2015 Report Share Posted April 9, 2015 I installed the 1st version of this earlier and the RPT file was filled with this error: if (_numberOfMa> 23:33:17 Error position: <_matchingObjectsArray); if (_numberOfMa> 23:33:17 Error Undefined variable in expression: _matchingobjectsarray 23:33:17 File z\addons\dayz_server\WAI\compile\cache_units.sqf, line 119 23:33:17 Error in expression <_numberOfMatchingObjectsNumber = (count _matchingObjectsArray); Link to comment Share on other sites More sharing options...
Rotzloch Posted April 9, 2015 Report Share Posted April 9, 2015 I installed the 1st version of this earlier and the RPT file was filled with this error: if (_numberOfMa>23:33:17 Error position: <_matchingObjectsArray);if (_numberOfMa>23:33:17 Error Undefined variable in expression: _matchingobjectsarray23:33:17 File z\addons\dayz_server\WAI\compile\cache_units.sqf, line 11923:33:17 Error in expression <_numberOfMatchingObjectsNumber = (count _matchingObjectsArray);I have change following to prevent this error:Original:while {true} do { _matchingObjectsArray = ((units _unitGroup) select 0) nearEntities ["CAManBase",_countRange]; _numberOfMatchingObjectsNumber = (count _matchingObjectsArray); if (_numberOfMatchingObjectsNumber >= 1) then { _state = _unitGroup getVariable["FrozenState",[time,true]]; _timeFroze = _state select 0; _stateFroze = _state select 1; if (_stateFroze) then { { if (isPlayer _x) then { if (freeze_log) then { diag_log(format["[DEBUG] %1 Triggered Un-Freezing of Group: %2", _x, _unitGroup]); }; [_unitGroup] spawn fnc_unfreeze; } else { if (!_stateFroze && ((time - _timeFroze) > _timeTillFreeze)) then { if (freeze_log) then { diag_log(format["[DEBUG] Re-Freezing Group: %1", _unitGroup]); }; [_unitGroup] spawn fnc_freeze; }; }; } foreach _matchingObjectsArray; } else { if (!_stateFroze && ((time - _timeFroze) > _timeTillFreeze)) then { if (freeze_log) then { diag_log(format["[DEBUG] Re-Freezing Group: %1", _unitGroup]); }; [_unitGroup] spawn fnc_freeze; }; }; }; sleep 15; }; My Changes:while {true} do { _matchingObjectsArray = ((units _unitGroup) select 0) nearEntities ["CAManBase",_countRange]; if(!isnil "_matchingObjectsArray") then { _numberOfMatchingObjectsNumber = (count _matchingObjectsArray); if (_numberOfMatchingObjectsNumber >= 1) then { _state = _unitGroup getVariable["FrozenState",[time,true]]; _timeFroze = _state select 0; _stateFroze = _state select 1; if (_stateFroze) then { { if (isPlayer _x) then { if (freeze_log) then { diag_log(format["[DEBUG] %1 Triggered Un-Freezing of Group: %2", _x, _unitGroup]); }; [_unitGroup] spawn fnc_unfreeze; } else { if (!_stateFroze && ((time - _timeFroze) > _timeTillFreeze)) then { if (freeze_log) then { diag_log(format["[DEBUG] Re-Freezing Group: %1", _unitGroup]); }; [_unitGroup] spawn fnc_freeze; }; }; } foreach _matchingObjectsArray; } else { if (!_stateFroze && ((time - _timeFroze) > _timeTillFreeze)) then { if (freeze_log) then { diag_log(format["[DEBUG] Re-Freezing Group: %1", _unitGroup]); }; [_unitGroup] spawn fnc_freeze; }; }; }; }; sleep 15; }; GreetsRotzloch -CJ- and SchwEde 2 Link to comment Share on other sites More sharing options...
-CJ- Posted April 9, 2015 Report Share Posted April 9, 2015 I have change following to prevent this error: Original: while {true} do { _matchingObjectsArray = ((units _unitGroup) select 0) nearEntities ["CAManBase",_countRange]; _numberOfMatchingObjectsNumber = (count _matchingObjectsArray); if (_numberOfMatchingObjectsNumber >= 1) then { _state = _unitGroup getVariable["FrozenState",[time,true]]; _timeFroze = _state select 0; _stateFroze = _state select 1; if (_stateFroze) then { { if (isPlayer _x) then { if (freeze_log) then { diag_log(format["[DEBUG] %1 Triggered Un-Freezing of Group: %2", _x, _unitGroup]); }; [_unitGroup] spawn fnc_unfreeze; } else { if (!_stateFroze && ((time - _timeFroze) > _timeTillFreeze)) then { if (freeze_log) then { diag_log(format["[DEBUG] Re-Freezing Group: %1", _unitGroup]); }; [_unitGroup] spawn fnc_freeze; }; }; } foreach _matchingObjectsArray; } else { if (!_stateFroze && ((time - _timeFroze) > _timeTillFreeze)) then { if (freeze_log) then { diag_log(format["[DEBUG] Re-Freezing Group: %1", _unitGroup]); }; [_unitGroup] spawn fnc_freeze; }; }; }; sleep 15; }; My Changes: while {true} do { _matchingObjectsArray = ((units _unitGroup) select 0) nearEntities ["CAManBase",_countRange]; if(!isnil "_matchingObjectsArray") then { _numberOfMatchingObjectsNumber = (count _matchingObjectsArray); if (_numberOfMatchingObjectsNumber >= 1) then { _state = _unitGroup getVariable["FrozenState",[time,true]]; _timeFroze = _state select 0; _stateFroze = _state select 1; if (_stateFroze) then { { if (isPlayer _x) then { if (freeze_log) then { diag_log(format["[DEBUG] %1 Triggered Un-Freezing of Group: %2", _x, _unitGroup]); }; [_unitGroup] spawn fnc_unfreeze; } else { if (!_stateFroze && ((time - _timeFroze) > _timeTillFreeze)) then { if (freeze_log) then { diag_log(format["[DEBUG] Re-Freezing Group: %1", _unitGroup]); }; [_unitGroup] spawn fnc_freeze; }; }; } foreach _matchingObjectsArray; } else { if (!_stateFroze && ((time - _timeFroze) > _timeTillFreeze)) then { if (freeze_log) then { diag_log(format["[DEBUG] Re-Freezing Group: %1", _unitGroup]); }; [_unitGroup] spawn fnc_freeze; }; }; }; }; sleep 15; }; Greets Rotzloch Thank you very much and learn something new everyday! ;) -CJ- Link to comment Share on other sites More sharing options...
BetterDeadThanZed Posted April 9, 2015 Report Share Posted April 9, 2015 That's the FPS of the Server, i.e. the Memory Usage. You see, when the AI is running around the Server has lot's of stuff to calculate and check etc, that allocates Memory and also slows down the server. It somewhat effects Clients to, but this Script only does little for the Client. By "boosting" the Server, you grant it the ability to do stuff faster, like for example Update the Objects or the Hitpoints of Vehicles, actually that effects anything, that is handled by Server. Also writing to the Database. Note, that this does not "permanently" helps the server, it only "takes away" a bit of last, while the Missions are active. For a real boost consider using Headless Client or wait for my next Project, which will hopefully be an upgrade for Clients FPS (Still want's testing and scripting). Ah ok, I thought maybe it was a typo and was supposed to be "reduce server lag". Never heard of "server last" before. Looks good. I might try it out when I have some time. Link to comment Share on other sites More sharing options...
Rotzloch Posted April 9, 2015 Report Share Posted April 9, 2015 Thx to UKMartin for this nice Script.It works great. Link to comment Share on other sites More sharing options...
Guest Posted April 9, 2015 Report Share Posted April 9, 2015 CJ did you have DZAI installed as that error was occuring? Rotzloch thanks for that Update! I only just thought about: last is not an english word or is it? It is someehat simular to burdons i think :s sorry i only started learning half a year ago Link to comment Share on other sites More sharing options...
-CJ- Posted April 9, 2015 Report Share Posted April 9, 2015 CJ did you have DZAI installed as that error was occuring? Rotzloch thanks for that Update! I only just thought about: last is not an english word or is it? It is someehat simular to burdons i think :s sorry i only started learning half a year ago Yes, DZAI is installed. I've been editing files and have had the server up and down last night, but the error has not shown in the RPT since I applied the suggested change. -CJ- Link to comment Share on other sites More sharing options...
Buck0 Posted April 9, 2015 Report Share Posted April 9, 2015 works like a charm, thx edit:: i assume theres no issue applying the same fix to static wai spawns? Link to comment Share on other sites More sharing options...
Guest Posted April 9, 2015 Report Share Posted April 9, 2015 works like a charm, thx edit:: i assume theres no issue applying the same fix to static wai spawns? Hi, if you want to add this to static Spawns you can open the dayz_server.pbo\WAi\compiles\static_spawn.sqf and add it on the bottom, just as mentioned in the first Post. :) And -CJ-, yes Rotzloch fixed that issue, but you might wanna check, if the DZAI are shooting at the WAI, as that's what caused the issue. If DZAI killes the WAI you might sometimes have problems with missions not clearing from map etc. Link to comment Share on other sites More sharing options...
-CJ- Posted April 9, 2015 Report Share Posted April 9, 2015 Hi, if you want to add this to static Spawns you can open the dayz_server.pbo\WAi\compiles\static_spawn.sqf and add it on the bottom, just as mentioned in the first Post. :) And -CJ-, yes Rotzloch fixed that issue, but you might wanna check, if the DZAI are shooting at the WAI, as that's what caused the issue. If DZAI killes the WAI you might sometimes have problems with missions not clearing from map etc. Ok... every now and then, some of the hero WAI mix it up with the other AI on the server... the convoy script created some interesting situations with the hero WAI ai missions... Good to know whats causing the error. We have had some instances where there were only a few ai on a mission and it wouldn't clear so now we know the reason. Thanks again. -CJ- Link to comment Share on other sites More sharing options...
-CJ- Posted April 9, 2015 Report Share Posted April 9, 2015 Going to try this with the DZAI as well on the next server restart... Took a quick look at DZMS but it's a bit different. -CJ- Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now