cache fixes and trader menu cache preload

This commit is contained in:
[VB]AWOL
2013-08-12 13:50:39 -05:00
parent 6131bbcdba
commit b7a07fbc51
2 changed files with 43 additions and 4 deletions

View File

@@ -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];
};
};

View File

@@ -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));