mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-14 12:12:34 +03:00
464 lines
16 KiB
Plaintext
464 lines
16 KiB
Plaintext
waituntil {!isnil "bis_fnc_init"};
|
|
|
|
BIS_Effects_Burn = {};
|
|
object_spawnDamVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_spawnDamVehicle.sqf";
|
|
server_playerLogin = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerLogin.sqf";
|
|
server_playerSetup = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerSetup.sqf";
|
|
server_onPlayerDisconnect = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_onPlayerDisconnect.sqf";
|
|
server_routinePlayerCheck = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_routinePlayerCheck.sqf";
|
|
server_updateObject = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_updateObject.sqf";
|
|
server_playerDied = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerDied.sqf";
|
|
server_updatePlayer = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_updatePlayer.sqf";
|
|
server_playerStat = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerStat.sqf";
|
|
server_publishObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishObject.sqf";
|
|
server_publishVeh = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishVehicle.sqf"; // Custom to add vehicles
|
|
server_publishBank = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishBank.sqf";
|
|
server_traders = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_traders.sqf";
|
|
local_publishObj = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_publishObj.sqf"; //Creates the object in DB
|
|
local_deleteObj = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_deleteObj.sqf"; //Creates the object in DB
|
|
local_createObj = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_createObj.sqf"; //Creates the object in DB
|
|
server_playerSync = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerSync.sqf";
|
|
//zombie_initialize = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\zombie_initialize.sqf";
|
|
zombie_findOwner = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\zombie_findOwner.sqf";
|
|
|
|
server_updateNearbyObjects = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_updateNearbyObjects.sqf";
|
|
|
|
vehicle_handleInteract = {
|
|
private["_object"];
|
|
_object = _this select 0;
|
|
[_object, "all"] call server_updateObject;
|
|
};
|
|
|
|
//event Handlers
|
|
eh_localCleanup = {
|
|
_object = _this select 0;
|
|
_object addEventHandler ["local", {
|
|
if(_this select 1) then {
|
|
private["_type","_unit"];
|
|
_unit = _this select 0;
|
|
_type = typeOf _unit;
|
|
deleteVehicle _unit;
|
|
diag_log ("CLEANUP: DELETED A " + str(_type) );
|
|
};
|
|
}];
|
|
};
|
|
|
|
server_characterSync = {
|
|
//dayzCharDisco = [_characterID,_playerPos,[_weapons,_magazines],[typeOf _backpack,getWeaponCargo _backpack,getMagazineCargo _backpack],_medical,_currentState,_currentModel];
|
|
_characterID = _this select 0;
|
|
_playerPos = _this select 1;
|
|
_playerGear = _this select 2;
|
|
_playerBackp = _this select 3;
|
|
_medical = _this select 4;
|
|
_currentState = _this select 5;
|
|
_currentModel = _this select 6;
|
|
|
|
_key = format["CHILD:201:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:",_characterID,_playerPos,_playerGear,_playerBackp,_medical,false,false,0,0,0,0,_currentState,0,0,_currentModel,0];
|
|
//diag_log ("HIVE: WRITE: "+ str(_key) + " / " + _characterID);
|
|
_key call server_hiveWrite;
|
|
};
|
|
|
|
//was missing for server
|
|
fnc_buildWeightedArray = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_buildWeightedArray.sqf"; //Checks which actions for nearby casualty
|
|
|
|
//onPlayerConnected "[_uid,_name] spawn server_onPlayerConnect;";
|
|
onPlayerDisconnected "[_uid,_name] call server_onPlayerDisconnect;";
|
|
|
|
server_hiveWrite = {
|
|
private["_resultArray","_data"];
|
|
//diag_log ("ATTEMPT WRITE: " + _this);
|
|
_data = "HiveEXT" callExtension _this;
|
|
diag_log ("WRITE: " + _data);
|
|
};
|
|
|
|
server_hiveReadWrite = {
|
|
private["_key","_resultArray","_data"];
|
|
_key = _this select 0;
|
|
//diag_log ("ATTEMPT READ/WRITE: " + _key);
|
|
_data = "HiveEXT" callExtension _key;
|
|
diag_log ("READ/WRITE: " + _data);
|
|
_resultArray = call compile format ["%1;",_data];
|
|
_resultArray;
|
|
};
|
|
|
|
// Setup globals allow overwrite from init.sqf
|
|
if(isnil "dayz_MapArea") then {
|
|
dayz_MapArea = 10000;
|
|
};
|
|
if(isnil "DynamicVehicleArea") then {
|
|
DynamicVehicleArea = dayz_MapArea / 2;
|
|
};
|
|
if(isnil "HeliCrashArea") then {
|
|
HeliCrashArea = dayz_MapArea / 2;
|
|
};
|
|
|
|
|
|
spawn_heliCrash = {
|
|
private["_position","_veh","_num","_config","_itemType","_itemChance","_weights","_index","_iArray"];
|
|
|
|
waitUntil{!isNil "BIS_fnc_selectRandom"};
|
|
if (isDedicated) then {
|
|
_position = [getMarkerPos "center",0,HeliCrashArea,10,0,2000,0] call BIS_fnc_findSafePos;
|
|
_veh = createVehicle ["UH1Wreck_DZ",_position, [], 0, "CAN_COLLIDE"];
|
|
dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_veh];
|
|
_veh setVariable ["ObjectID",1,true];
|
|
dayzFire = [_veh,2,time,false,false];
|
|
publicVariable "dayzFire";
|
|
if (isServer) then {
|
|
nul=dayzFire spawn BIS_Effects_Burn;
|
|
};
|
|
_num = round(random 4) + 3;
|
|
_config = configFile >> "CfgBuildingLoot" >> "HeliCrash";
|
|
_itemType = [] + getArray (_config >> "itemType");
|
|
//diag_log ("DW_DEBUG: _itemType: " + str(_itemType));
|
|
_itemChance = [] + getArray (_config >> "itemChance");
|
|
//diag_log ("DW_DEBUG: _itemChance: " + str(_itemChance));
|
|
//diag_log ("DW_DEBUG: (isnil fnc_buildWeightedArray): " + str(isnil "fnc_buildWeightedArray"));
|
|
|
|
waituntil {!isnil "fnc_buildWeightedArray"};
|
|
|
|
_weights = [];
|
|
_weights = [_itemType,_itemChance] call fnc_buildWeightedArray;
|
|
//diag_log ("DW_DEBUG: _weights: " + str(_weights));
|
|
for "_x" from 1 to _num do {
|
|
//create loot
|
|
_index = _weights call BIS_fnc_selectRandom;
|
|
sleep 1;
|
|
if (count _itemType > _index) then {
|
|
//diag_log ("DW_DEBUG: " + str(count (_itemType)) + " select " + str(_index));
|
|
_iArray = _itemType select _index;
|
|
_iArray set [2,_position];
|
|
_iArray set [3,5];
|
|
_iArray call spawn_loot;
|
|
_nearby = _position nearObjects ["WeaponHolder",20];
|
|
{
|
|
_x setVariable ["permaLoot",true];
|
|
} forEach _nearBy;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
// Get all buildings and roads only once
|
|
MarkerPosition = getMarkerPos "center";
|
|
RoadList = MarkerPosition nearRoads DynamicVehicleArea;
|
|
BuildingList = MarkerPosition nearObjects ["House",DynamicVehicleArea];
|
|
|
|
spawn_vehicles = {
|
|
private["_vehicle","_isAir","_isShip","_position","_roadlist","_buildinglist","_istoomany","_marker","_veh","_objPosition","_weights","_index","_uid"];
|
|
|
|
// TODO: change this part either to DB or mission config.
|
|
|
|
// 1 : Motocycles
|
|
// 2 : Bicycles, ATV's
|
|
// 3 : Trucks Unarmed
|
|
// 4 : Trucks
|
|
// 5 : Cars
|
|
// 6 : Jeeps
|
|
// 7 : Bus, Tractor, SUV, Vans
|
|
// 8 : Helicopters
|
|
// 9 : Helicopters Unarmed
|
|
// 10: Military Unarmed
|
|
// 11: Military
|
|
// 12: Boat Unarmed
|
|
// 13: Boat
|
|
// 14: Heavy Armor Unarmed
|
|
// 15: Fuel Trucks
|
|
|
|
_AllowedVehiclesList = ["M1030_US_DES_EP1","TT650_TK_CIV_EP1","Old_moto_TK_Civ_EP1","TT650_Civ","TT650_Ins",
|
|
"MMT_Civ","Old_bike_TK_INS_EP1","ATV_US_EP1","BAF_ATV_D","ATV_CZ_EP1",
|
|
"hilux1_civil_3_open_EP1","hilux1_civil_2_covered","hilux1_civil_1_open","datsun1_civil_3_open","datsun1_civil_2_covered","datsun1_civil_1_open",
|
|
"Pickup_PK_TK_GUE_EP1","Offroad_DSHKM_TK_GUE_EP1","Offroad_SPG9_TK_GUE_EP1","Pickup_PK_GUE","Pickup_PK_INS",
|
|
"policecar","Octavia_ACR","Lada1","Lada2","LadaLM","Skoda","SkodaBlue","SkodaGreen","SkodaRed","VWGolf","car_hatchback","car_sedan","Lada1_TK_CIV_EP1","Lada2_TK_CIV_EP1","VolhaLimo_TK_CIV_EP1","Volha_1_TK_CIV_EP1","Volha_2_TK_CIV_EP1",
|
|
"UAZ_CDF","UAZ_INS","UAZ_RU","UAZ_Unarmed_TK_CIV_EP1","UAZ_Unarmed_TK_EP1","UAZ_Unarmed_UN_EP1",
|
|
"Ikarus","Ikarus_TK_CIV_EP1","tractor","TowingTractor","SUV_TK_CIV_EP1","S1203_TK_CIV_EP1","S1203_ambulance_EP1",
|
|
"UH1H_DZ","UH1H_TK_EP1","CH_47F_EP1","Mi17_TK_EP1","Mi17_UN_CDF_EP1","Mi171Sh_CZ_EP1","UH60M_EP1","Mi17_CDF","MH60S","UH1Y",
|
|
"Mi17_Civilian","MH6J_EP1","UH60M_MEV_EP1","MV22",
|
|
"LandRover_ACR","LandRover_CZ_EP1","LandRover_TK_CIV_EP1","HMMWV","HMMWV_DES_EP1","HMMWV_M1035_DES_EP1","HMMWV_Ambulance","HMMWV_Ambulance_CZ_DES_EP1","GAZ_Vodnik_MedEvac","Ural_TK_CIV_EP1","Ural_UN_EP1","V3S_Open_TK_CIV_EP1","V3S_Open_TK_EP1","MTVR_DES_EP1","Kamaz",
|
|
"HMMWV_M998A2_SOV_DES_EP1","HMMWV_M1151_M2_CZ_DES_EP1","LandRover_Special_CZ_EP1","LandRover_MG_TK_EP1","ArmoredSUV_PMC",
|
|
"Fishing_Boat","PBX","PBX_ACR","Smallboat_1","Smallboat_2","Zodiac",
|
|
"RHIB","RHIB2Turret",
|
|
"M113Ambul_UN_EP1","M113Ambul_TK_EP1","BMP2_Ambul_CDF","BMP2_Ambul_INS",
|
|
"KamazRefuel","MtvrRefuel_DES_EP1","UralRefuel_TK_EP1","V3S_Refuel_TK_GUE_EP1","T810Refuel_Des_ACR","T810Refuel_ACR"];
|
|
|
|
|
|
_AllowedVehiclesChance = [0.55,0.65,0.25,0.35,0.45,
|
|
0.25,0.75,0.45,0.45,0.45,
|
|
0.40,0.35,0.35,0.25,0.20,0.25,
|
|
0.25,0.75,0.45,0.45,0.45,
|
|
0.2,0.25,0.45,0.45,0.45,0.45,0.45,0.45,0.45,0.35,0.40,0.40,0.40,0.25,0.45,0.45,0.45,
|
|
0.30,0.30,0.30,0.30,0.30,0.30,
|
|
0.15,0.15,0.15,0.05,0.05,0.30,0.15,
|
|
0.05,0.05,0.01,0.025,0.025,0.025,0.025,0.02,0.02,0.02,
|
|
0.09,0.08,0.07,0.01,
|
|
0.11,0.11,0.11,0.10,0.10,0.10,0.05,0.05,0.05,0.05,0.10,0.10,0.10,0.10,0.10,
|
|
0.05,0.05,0.01,0.05,0.01,
|
|
0.15,0.15,0.15,0.15,0.15,0.15,
|
|
0.01,0.01,
|
|
0.001,0.001,0.001,0.001,
|
|
0.001,0.001,0.001,0.001,0.001,0.001];
|
|
|
|
|
|
if (isDedicated) then {
|
|
|
|
waituntil {!isnil "fnc_buildWeightedArray"};
|
|
|
|
_weights = [];
|
|
_weights = [_AllowedVehiclesList,_AllowedVehiclesChance] call fnc_buildWeightedArray;
|
|
|
|
waitUntil{!isNil "BIS_fnc_selectRandom"};
|
|
// get index from fnc_buildWeightedArray
|
|
_index = _weights call BIS_fnc_selectRandom;
|
|
|
|
// select vehicle
|
|
_vehicle = _AllowedVehiclesList select _index;
|
|
|
|
// Find Vehicle Type to better control spawns
|
|
_isAir = _vehicle isKindOf "Air";
|
|
_isShip = _vehicle isKindOf "Ship";
|
|
|
|
|
|
|
|
if(_isShip || _isAir) then {
|
|
if(_isShip) then {
|
|
// Spawn anywhere on coast on water
|
|
waitUntil{!isNil "BIS_fnc_selectRandom"};
|
|
_position = [MarkerPosition,0,DynamicVehicleArea,10,1,2000,1] call BIS_fnc_findSafePos;
|
|
//diag_log("DEBUG: spawning boat near coast " + str(_position));
|
|
} else {
|
|
// Spawn air anywhere that is flat
|
|
waitUntil{!isNil "BIS_fnc_selectRandom"};
|
|
_position = [MarkerPosition,0,DynamicVehicleArea,25,0,1,0] call BIS_fnc_findSafePos;
|
|
//diag_log("DEBUG: spawning air anywhere flat " + str(_position));
|
|
};
|
|
|
|
|
|
} else {
|
|
// Spawn around buildings and 50% near roads
|
|
if((random 1) > 0.5) then {
|
|
|
|
|
|
|
|
waitUntil{!isNil "BIS_fnc_selectRandom"};
|
|
_position = RoadList call BIS_fnc_selectRandom;
|
|
|
|
_position = _position modelToWorld [0,0,0];
|
|
|
|
waitUntil{!isNil "BIS_fnc_findSafePos"};
|
|
_position = [_position,0,10,10,0,2000,0] call BIS_fnc_findSafePos;
|
|
|
|
//diag_log("DEBUG: spawning near road " + str(_position));
|
|
|
|
} else {
|
|
|
|
|
|
|
|
waitUntil{!isNil "BIS_fnc_selectRandom"};
|
|
_position = BuildingList call BIS_fnc_selectRandom;
|
|
|
|
_position = _position modelToWorld [0,0,0];
|
|
|
|
waitUntil{!isNil "BIS_fnc_findSafePos"};
|
|
_position = [_position,0,40,5,0,2000,0] call BIS_fnc_findSafePos;
|
|
|
|
//diag_log("DEBUG: spawning around buildings " + str(_position));
|
|
|
|
};
|
|
};
|
|
// only proceed if two params otherwise BIS_fnc_findSafePos failed and may spawn in air
|
|
if ((count _position) == 2) then {
|
|
|
|
_dir = round(random 180);
|
|
|
|
_istoomany = _position nearObjects ["AllVehicles",50];
|
|
if((count _istoomany) > 0) exitWith { diag_log("DEBUG: Too many vehicles at " + str(_position)); };
|
|
|
|
//place vehicle
|
|
_veh = createVehicle [_vehicle, _position, [], 0, "CAN_COLLIDE"];
|
|
_veh setdir _dir;
|
|
_veh setpos _position;
|
|
|
|
// Get position with ground
|
|
_objPosition = getPosATL _veh;
|
|
|
|
clearWeaponCargoGlobal _veh;
|
|
clearMagazineCargoGlobal _veh;
|
|
|
|
[_veh,[_dir,_objPosition],_vehicle,_uid] call server_publishVeh;
|
|
};
|
|
};
|
|
};
|
|
|
|
spawn_roadblocks = {
|
|
private["_position","_veh","_num","_config","_itemType","_itemChance","_weights","_index","_iArray","_isRoad","_roadlist","_istoomany"];
|
|
_WreckList = ["SKODAWreck","HMMWVWreck","UralWreck","datsun01Wreck","hiluxWreck","datsun02Wreck","UAZWreck","Land_Misc_Garb_Heap_EP1","Fort_Barricade_EP1"];
|
|
_WreckLoot = ["DynamicDebris"];
|
|
waitUntil{!isNil "BIS_fnc_selectRandom"};
|
|
if (isDedicated) then {
|
|
|
|
waitUntil{!isNil "BIS_fnc_selectRandom"};
|
|
_position = RoadList call BIS_fnc_selectRandom;
|
|
|
|
_position = _position modelToWorld [0,0,0];
|
|
|
|
waitUntil{!isNil "BIS_fnc_findSafePos"};
|
|
_position = [_position,0,10,5,0,2000,0] call BIS_fnc_findSafePos;
|
|
|
|
if ((count _position) == 2) then {
|
|
// Get position with ground
|
|
|
|
|
|
_istoomany = _position nearObjects ["All",5];
|
|
|
|
if((count _istoomany) > 0) exitWith { diag_log("DEBUG: Too many at " + str(_position)); };
|
|
|
|
//_isRoad = isOnRoad _position;
|
|
|
|
//_marker = createMarker [str(_position) , _position];
|
|
//_marker setMarkerShape "ICON";
|
|
//_marker setMarkerType "DOT";
|
|
//_marker setMarkerText "ON";
|
|
|
|
|
|
waitUntil{!isNil "BIS_fnc_selectRandom"};
|
|
_spawnveh = _WreckList call BIS_fnc_selectRandom;
|
|
waitUntil{!isNil "BIS_fnc_selectRandom"};
|
|
_spawnloot = _WreckLoot call BIS_fnc_selectRandom;
|
|
|
|
diag_log("DEBUG: Spawning a crashed " + _spawnveh + " with " + _spawnloot + " at " + str(_position));
|
|
_veh = createVehicle [_spawnveh,_position, [], 0, "CAN_COLLIDE"];
|
|
// Randomize placement a bit
|
|
_veh setDir round(random 360);
|
|
_veh setpos _position;
|
|
|
|
|
|
|
|
dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_veh];
|
|
_veh setVariable ["ObjectID",1,true];
|
|
|
|
_num = round(random 4) + 3;
|
|
_config = configFile >> "CfgBuildingLoot" >> _spawnloot;
|
|
_itemType = [] + getArray (_config >> "itemType");
|
|
_itemChance = [] + getArray (_config >> "itemChance");
|
|
|
|
waituntil {!isnil "fnc_buildWeightedArray"};
|
|
|
|
_weights = [];
|
|
_weights = [_itemType,_itemChance] call fnc_buildWeightedArray;
|
|
for "_x" from 1 to _num do {
|
|
//create loot
|
|
_index = _weights call BIS_fnc_selectRandom;
|
|
sleep 1;
|
|
if (count _itemType > _index) then {
|
|
_iArray = _itemType select _index;
|
|
_iArray set [2,_position];
|
|
_iArray set [3,5];
|
|
_iArray call spawn_loot;
|
|
_nearby = _position nearObjects ["WeaponHolder",20];
|
|
{
|
|
_x setVariable ["permaLoot",true];
|
|
} forEach _nearBy;
|
|
};
|
|
};
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
// Damage generator fuction
|
|
generate_new_damage = {
|
|
private ["_damage","_rnd"];
|
|
_rnd = random 1;
|
|
if(_rnd > 0.5) then {
|
|
_damage = 0;
|
|
} else {
|
|
_rnd = random 1;
|
|
if(_rnd > 0.5) then {
|
|
_damage = 0.50;
|
|
} else {
|
|
_damage = 1;
|
|
};
|
|
};
|
|
_damage;
|
|
};
|
|
|
|
// Damage generator fuction
|
|
generate_exp_damage = {
|
|
private ["_damage","_rnd"];
|
|
_rnd = random 1;
|
|
if(_rnd > 0.5) then {
|
|
_damage = 0;
|
|
} else {
|
|
_rnd = random 1;
|
|
if(_rnd > 0.5) then {
|
|
_damage = 0.50;
|
|
} else {
|
|
_damage = 0.85;
|
|
};
|
|
};
|
|
_damage;
|
|
};
|
|
|
|
server_getDiff = {
|
|
private["_variable","_object","_vNew","_vOld","_result"];
|
|
_variable = _this select 0;
|
|
_object = _this select 1;
|
|
_vNew = _object getVariable[_variable,0];
|
|
_vOld = _object getVariable[(_variable + "_CHK"),_vNew];
|
|
_result = 0;
|
|
if (_vNew < _vOld) then {
|
|
//JIP issues
|
|
_vNew = _vNew + _vOld;
|
|
_object getVariable[(_variable + "_CHK"),_vNew];
|
|
} else {
|
|
_result = _vNew - _vOld;
|
|
_object setVariable[(_variable + "_CHK"),_vNew];
|
|
};
|
|
_result
|
|
};
|
|
|
|
server_getDiff2 = {
|
|
private["_variable","_object","_vNew","_vOld","_result"];
|
|
_variable = _this select 0;
|
|
_object = _this select 1;
|
|
_vNew = _object getVariable[_variable,0];
|
|
_vOld = _object getVariable[(_variable + "_CHK"),_vNew];
|
|
_result = _vNew - _vOld;
|
|
_object setVariable[(_variable + "_CHK"),_vNew];
|
|
_result
|
|
};
|
|
|
|
dayz_objectUID = {
|
|
private["_position","_dir","_key","_object"];
|
|
_object = _this;
|
|
_position = getPosATL _object;
|
|
_dir = direction _object;
|
|
_key = [_dir,_position] call dayz_objectUID2;
|
|
_key
|
|
};
|
|
|
|
dayz_objectUID2 = {
|
|
private["_position","_dir","_key"];
|
|
_dir = _this select 0;
|
|
_key = "";
|
|
_position = _this select 1;
|
|
{
|
|
_x = _x * 10;
|
|
if ( _x < 0 ) then { _x = _x * -10 };
|
|
_key = _key + str(round(_x));
|
|
} forEach _position;
|
|
_key = _key + str(round(_dir));
|
|
_key
|
|
};
|
|
|
|
dayz_recordLogin = {
|
|
private["_key"];
|
|
_key = format["CHILD:103:%1:%2:%3:",_this select 0,_this select 1,_this select 2];
|
|
diag_log ("HIVE: WRITE: "+ str(_key));
|
|
_key call server_hiveWrite;
|
|
};
|