From b7a07fbc51e78407a634bd51cae204eba7a585aa Mon Sep 17 00:00:00 2001 From: "[VB]AWOL" Date: Mon, 12 Aug 2013 13:50:39 -0500 Subject: [PATCH] cache fixes and trader menu cache preload --- SQF/dayz_server/compile/server_traders.sqf | 7 ++-- SQF/dayz_server/system/server_monitor.sqf | 40 +++++++++++++++++++++- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/SQF/dayz_server/compile/server_traders.sqf b/SQF/dayz_server/compile/server_traders.sqf index d9bb01342..3420ee77f 100644 --- a/SQF/dayz_server/compile/server_traders.sqf +++ b/SQF/dayz_server/compile/server_traders.sqf @@ -3,8 +3,6 @@ private ["_clientID","_character","_traderid","_retrader","_data","_result","_st _character = _this select 0; _traderid = _this select 1; -_retrader = []; - _clientID = owner _character; diag_log ("HIVE: Menu Request by ClientID: "+ str(_clientID)); @@ -12,6 +10,9 @@ diag_log ("HIVE: Menu Request by ClientID: "+ str(_clientID)); _retrader = call compile format["ServerTcache_%1;",_traderid]; if(isNil "_retrader") then { + + _retrader = []; + _key = format["CHILD:399:%1:",_traderid]; _data = "HiveEXT" callExtension _key; @@ -32,7 +33,7 @@ if(isNil "_retrader") then { _retrader set [count _retrader,_result]; }; //diag_log ("HIVE: Streamed " + str(_val) + " objects"); - call compile format["ServerTcache_%1 = %2;",_tid,_retrader]; + call compile format["ServerTcache_%1 = %2;",_traderid,_retrader]; }; }; diff --git a/SQF/dayz_server/system/server_monitor.sqf b/SQF/dayz_server/system/server_monitor.sqf index c98c1ad4b..37bd23d41 100644 --- a/SQF/dayz_server/system/server_monitor.sqf +++ b/SQF/dayz_server/system/server_monitor.sqf @@ -1,4 +1,4 @@ -private ["_result","_pos","_wsDone","_dir","_block","_isOK","_countr","_objWpnTypes","_objWpnQty","_dam","_selection","_totalvehicles","_object","_idKey","_type","_ownerID","_worldspace","_intentory","_hitPoints","_fuel","_damage","_date","_script","_key","_outcome","_vehLimit","_hiveResponse","_objectCount","_codeCount","_objectArray"]; +private ["_result","_pos","_wsDone","_dir","_block","_isOK","_countr","_objWpnTypes","_objWpnQty","_dam","_selection","_totalvehicles","_object","_idKey","_type","_ownerID","_worldspace","_intentory","_hitPoints","_fuel","_damage","_date","_script","_key","_outcome","_vehLimit","_hiveResponse","_objectCount","_codeCount","_objectArray","_year","_month","_day","_hour","_minute","_data","_status","_val","_traderid","_retrader","_traderData","_id"]; []execVM "\z\addons\dayz_server\system\s_fps.sqf"; //server monitor FPS (writes each ~181s diag_fps+181s diag_fpsmin*) dayz_versionNo = getText(configFile >> "CfgMods" >> "DayZ" >> "version"); @@ -250,6 +250,44 @@ if (isServer and isNil "sm_done") then { } forEach _objectArray; // # END OF STREAMING # + + // preload server traders menu data into cache + { + // get tids + _traderData = call compile format["menu_%1;",_x]; + if(!isNil "_traderData") then { + { + _traderid = _x select 1; + + _retrader = []; + + _key = format["CHILD:399:%1:",_traderid]; + _data = "HiveEXT" callExtension _key; + + diag_log "HIVE: Request sent"; + + //Process result + _result = call compile format ["%1",_data]; + _status = _result select 0; + + if (_status == "ObjectStreamStart") then { + _val = _result select 1; + //Stream Objects + diag_log ("HIVE: Commence Menu Streaming..."); + for "_i" from 1 to _val do { + _data = "HiveEXT" callExtension _key; + _result = call compile format ["%1",_data]; + _status = _result select 0; + _retrader set [count _retrader,_result]; + }; + //diag_log ("HIVE: Streamed " + str(_val) + " objects"); + call compile format["ServerTcache_%1 = %2;",_traderid,_retrader]; + }; + + } forEach (_traderData select 0); + }; + } forEach serverTraders; + // spawn_vehicles _vehLimit = MaxVehicleLimit - _totalvehicles; diag_log ("HIVE: Spawning # of Vehicles: " + str(_vehLimit));