0.69 + 1.7.5.M1D15

This commit is contained in:
vbawol
2013-01-18 12:25:49 -06:00
parent 662d62d781
commit 4cab61bf63
81 changed files with 1061 additions and 532 deletions

View File

@@ -0,0 +1,21 @@
/*
[_objectID,_objectUID] call server_deleteObj;
*/
private["_id","_uid","_key"];
_id = _this select 0;
_uid = _this select 1;
if (isServer) then {
//remove from database
if (parseNumber _id > 0) then {
//Send request
_key = format["CHILD:304:%1:",_id];
_key call server_hiveWrite;
diag_log format["DELETE: Deleted by ID: %1",_id];
} else {
//Send request
_key = format["CHILD:310:%1:",_uid];
_key call server_hiveWrite;
diag_log format["DELETE: Deleted by UID: %1",_uid];
};
};

View File

@@ -1,11 +1,32 @@
private ["_qty","_item","_meat","_loop","_timer"];
private["_item","_qty","_type","_meat","_loop"];
_item = _this select 0;
_qty = _this select 1;
_type = typeOf _item;
_meat = 0;
_loop = true;
if (local _item) then {
for "_x" from 1 to _qty do {
_item addMagazine "FoodSteakRaw";
diag_log ("Item Type: " +str(_item));
switch (_type) do {
case "Cow": {
_item addMagazine "FoodSteakRaw";
};
case "Goat": {
_item addMagazine "FoodSteakRaw";
};
case "Sheep": {
_item addMagazine "FoodSteakRaw";
};
case "WildBoar": {
_item addMagazine "FoodboarRaw";
};
case "hen": {
_item addMagazine "FoodSteakRaw";
};
case "Rabbit": {
_item addMagazine "FoodSteakRaw";
};
};
};
sleep 2;
_timer = time;
@@ -15,9 +36,11 @@ if (local _item) then {
if ((time - _timer) > 300) then {_loop = false};
sleep 1;
};
dayzHideBody = _item;
publicVariable "dayzHideBody";
hideBody _item;
["dayzHideBody",_item] call broadcastRpcCallAll;
sleep 10;
deleteVehicle _item;
} else {
_ehLoc = "client";
if (isServer) then { _ehLoc = "server"; };
diag_log format["gutObject EH on %1 item not local ! Type: %2",_ehLoc,str(_item)];
};

View File

@@ -0,0 +1,24 @@
private["_item","_qty","_type","_meat","_loop"];
_item = _this select 0;
_qty = _this select 1;
_type = typeOf _item;
_meat = 0;
_loop = true;
if (local _item) then {
_item addMagazine "ItemZombieParts";
sleep 2;
_timer = time;
while {_loop} do {
_meat = count magazines _item;
if (_meat == 0) then {_loop = false};
if ((time - _timer) > 300) then {_loop = false};
sleep 1;
};
["dayzHideBody",_item] call broadcastRpcCallAll;
sleep 10;
deleteVehicle _item;
} else {
_ehLoc = "client";
if (isServer) then { _ehLoc = "server"; };
diag_log format["gutObject EH on %1 item not local ! Type: %2",_ehLoc,str(_item)];
};

View File

@@ -12,8 +12,6 @@ if (count _this > 2) then {
dayz_players = dayz_players - [_this select 2];
};
//waitUntil{allowConnection};
//Variables
_inventory = [];
_backpack = [];
@@ -45,7 +43,7 @@ diag_log ("LOGIN ATTEMPT: " + str(_playerID) + " " + _playerName);
_doLoop = 0;
while {_doLoop < 5} do {
_key = format["CHILD:101:%1:%2:%3:",_playerID,dayZ_instance,_playerName];
_primary = [_key,false,dayZ_hivePipeAuth] call server_hiveReadWrite;
_primary = _key call server_hiveReadWrite;
if (count _primary > 0) then {
if ((_primary select 0) != "ERROR") then {
_doLoop = 9;

View File

@@ -34,7 +34,7 @@ _state = [];
_doLoop = 0;
while {_doLoop < 5} do {
_key = format["CHILD:102:%1:",_characterID];
_primary = [_key,false,dayZ_hivePipeAuth] call server_hiveReadWrite;
_primary = _key call server_hiveReadWrite;
if (count _primary > 0) then {
if ((_primary select 0) != "ERROR") then {
_doLoop = 9;
@@ -116,9 +116,7 @@ if (count _medical > 0) then {
//Add Wounds
{
_playerObj setVariable[_x,true,true];
[_playerObj,_x,_hit] spawn fnc_usec_damageBleed;
usecBleed = [_playerObj,_x,0];
publicVariable "usecBleed";
["usecBleed",[_playerObj,_x,_hit]] call broadcastRpcCallAll;
} forEach (_medical select 8);
//Add fractures

View File

@@ -4,10 +4,13 @@ private["_character","_magazines","_force","_characterID","_charPos","_isInVehic
//waituntil {(typeName(_this) == "ARRAY");sleep 0.01;}; //seems to cause often infinite waits (but not for first n players)
if ( typeName(_this) == "OBJECT" ) then {
//this only happens when we don't follow the correct parameter format...
//(like supplying just the player object instead of the array in player_eat.sqf)
//i've fixed this in player_eat so i can comment this part out
/*if ( typeName(_this) == "OBJECT" ) then {
_this = [_this,[],true];
//diag_log ("DW_DEBUG: #manual fix _this: " + str(_this));
};
};*/
//correct
//"UPDATE: [B 1-1-B:1 (THE BEAST) REMOTE,[],true]"

View File

@@ -1,7 +1,5 @@
private["_position","_num","_config","_itemType","_itemChance","_weights","_index","_iArray","_crashModel","_lootTable","_guaranteedLoot","_randomizedLoot","_frequency","_variance","_spawnChance","_spawnMarker","_spawnRadius","_spawnFire","_permanentFire","_crashName"];
waitUntil{!isNil "BIS_fnc_selectRandom"};
//_crashModel = _this select 0;
//_lootTable = _this select 1;
_guaranteedLoot = _this select 0;
@@ -78,9 +76,7 @@ while {true} do {
_crash setVariable ["ObjectID",1,true];
if (_spawnFire) then {
dayzFire = [_crash,2,time,false,_fadeFire];
publicVariable "dayzFire";
nul=dayzFire spawn BIS_Effects_Burn;
["dayzFire",[_crash,2,time,false,_fadeFire]] call broadcastRpcCallAll;
_crash setvariable ["fadeFire",_fadeFire,true];
};
@@ -92,8 +88,6 @@ while {true} do {
_weights = dayz_CBLChances select _index;
_cntWeights = count _weights;
waituntil {!isnil "fnc_buildWeightedArray"};
for "_x" from 1 to _num do {
//create loot
_index = floor(random _cntWeights);

8
dayz_server/config.cpp Normal file
View File

@@ -0,0 +1,8 @@
class CfgPatches {
class dayz_server {
units[] = {};
weapons[] = {};
requiredVersion = 0.1;
requiredAddons[] = {"dayz_code"};
};
};

View File

@@ -0,0 +1,27 @@
//register client->server rpc
registerServerRpc = {
if (isServer) then {
_this call registerBroadcastRpc;
};
};
["dayzDeath", { (_this select 1) call server_playerDied; } ] call registerServerRpc;
["dayzDiscoAdd", { dayz_disco set [count dayz_disco,(_this select 1)]; } ] call registerServerRpc;
["dayzDiscoRem", { dayz_disco = dayz_disco - [(_this select 1)]; } ] call registerServerRpc;
["dayzPlayerSave", { (_this select 1) call server_playerSync; } ] call registerServerRpc;
["dayzPublishObj", { (_this select 1) call server_publishObj; } ] call registerServerRpc;
["dayzUpdateVehicle", { (_this select 1) call server_updateObject; } ] call registerServerRpc;
["dayzDeleteObj", { (_this select 1) call server_deleteObj; } ] call registerServerRpc;
["dayzLogin", { (_this select 1) call server_playerLogin; } ] call registerServerRpc;
["dayzLogin2", { (_this select 1) call server_playerSetup; } ] call registerServerRpc;
//missing sqf for server_playerMorph
//["dayzPlayerMorph", { (_this select 1) call server_playerMorph; } ] call registerServerRpc;
["dayzLoginRecord", { (_this select 1) call dayz_recordLogin; } ] call registerServerRpc;
["dayzCharDisco", { (_this select 1) call server_characterSync; } ] call registerServerRpc;
["dayzGutBody", { (_this select 1) spawn server_gutObject; } ] call registerServerRpc;
// DayZ Epoch Custom
["dayzGutBodyZ", { (_this select 1) spawn server_gutObjectZ; } ] call registerServerRpc;
["dayzPublishVeh", { (_this select 1) spawn server_publishVeh; } ] call registerServerRpc;
["dayzTradeObject", { (_this select 1) spawn server_tradeObj; } ] call registerServerRpc;
["dayzTraderMenu", { (_this select 1) spawn server_traders; } ] call registerServerRpc;

View File

@@ -7,21 +7,18 @@ BIS_MPF_remoteExecutionServer = {
};
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_updateObject = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_updateObject.sqf";
server_playerDied = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerDied.sqf";
server_publishObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishObject.sqf";
server_publishObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishObject.sqf"; //Creates the object in DB
server_deleteObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_deleteObj.sqf"; //Removes the object from the DB
server_gutObject = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_gutObject.sqf"; //Generated on the server when gutting an object
server_gutObjectZ = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_gutObjectZ.sqf"; //Generated on the server when gutting an object
server_publishVeh = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishVehicle.sqf"; // Custom to add vehicles
server_tradeObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_tradeObject.sqf";
server_tradeObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_tradeObject.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_findOwner = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\zombie_findOwner.sqf";
server_updateNearbyObjects = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_updateNearbyObjects.sqf";
@@ -63,7 +60,7 @@ check_publishobject = {
_allowed = true;
};
_allowed;
_allowed
};
//event Handlers
@@ -95,6 +92,23 @@ eh_localCleanup = {
}];
};
server_hiveWrite = {
private["_data"];
//diag_log ("ATTEMPT WRITE: " + _this);
_data = "HiveExt" callExtension _this;
diag_log ("WRITE: " + _data);
};
server_hiveReadWrite = {
private["_key","_resultArray","_data"];
_key = _this;
//diag_log ("ATTEMPT READ/WRITE: " + _key);
_data = "HiveExt" callExtension _key;
diag_log ("READ/WRITE: " + _data);
_resultArray = call compile format ["%1",_data];
_resultArray
};
server_characterSync = {
private ["_characterID","_playerPos","_playerGear","_playerBackp","_medical","_currentState","_currentModel","_key"];
_characterID = _this select 0;
@@ -110,28 +124,9 @@ server_characterSync = {
_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["_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 {
@@ -144,38 +139,6 @@ if(isnil "HeliCrashArea") then {
HeliCrashArea = dayz_MapArea / 2;
};
spawn_heliCrash = {
private["_position","_veh","_config","_itemType","_itemTypes","_weights","_cntWeights","_index","_num","_i"];
_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";
_config = configFile >> "CfgBuildingLoot" >> "HeliCrash";
_itemTypes = [] + getArray (_config >> "itemType");
_index = dayz_CBLCounts find (count _itemTypes);
_weights = dayz_CBLChances select _index;
_cntWeights = count _weights;
_num = round(random 4) + 3;
for "_i" from 1 to _num do {
//create loot
_index = floor(random _cntWeights);
_index = _weights select _index;
_itemType = _itemTypes select _index;
[_itemType select 0, _itemType select 1, _position, 5] call spawn_loot;
_nearby = _position nearObjects ["WeaponHolder", 5];
{
_x setVariable ["permaLoot",true];
} forEach _nearBy;
};
};
// Get all buildings and roads only once
MarkerPosition = getMarkerPos "center";
RoadList = MarkerPosition nearRoads DynamicVehicleArea;
@@ -462,6 +425,5 @@ dayz_objectUID2 = {
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;
};

View File

@@ -251,16 +251,14 @@ class FSM
name = "sync_the_time";
init = /*%FSM<STATEINIT""">*/"//Send request" \n
"_key = ""CHILD:307:"";" \n
"_result = [_key] call server_hiveReadWrite;" \n
"_result = _key call server_hiveReadWrite;" \n
"_outcome = _result select 0;" \n
"if(_outcome == ""PASS"") then {" \n
" _date = _result select 1; " \n
" _dateNum = dateToNumber(_date); " \n
" _diff = ( _dateNum - dateToNumber (date) )*365*24*60;" \n
" if ( abs(_diff)>5 ) then {" \n
" setDate _date;" \n
" dayzSetDate = _date;" \n
" publicVariable ""dayzSetDate"";" \n
" [""dayzSetDate"",_date] call broadcastRpcCallAll;" \n
" diag_log (""TIME SYNC: Local Time set to "" + str(_date));" \n
" };" \n
"};" \n

View File

@@ -9,7 +9,7 @@ if ((count playableUnits == 0) and !isDedicated) then {
isSinglePlayer = true;
};
waitUntil{initialized};
waitUntil{initialized}; //means all the functions are now defined
diag_log "HIVE: Starting";
@@ -17,12 +17,11 @@ diag_log "HIVE: Starting";
/* STREAM OBJECTS */
//Send the key
_key = format["CHILD:302:%1:",dayZ_instance];
_data = "HiveEXT" callExtension _key;
_result = _key call server_hiveReadWrite;
diag_log "HIVE: Request sent";
//Process result
_result = call compile format ["%1",_data];
_status = _result select 0;
_myArray = [];
@@ -31,8 +30,7 @@ diag_log "HIVE: Starting";
//Stream Objects
diag_log ("HIVE: Commence Object Streaming...");
for "_i" from 1 to _val do {
_data = "HiveEXT" callExtension _key;
_result = call compile format ["%1",_data];
_result = _key call server_hiveReadWrite;
_status = _result select 0;
_myArray set [count _myArray,_result];
@@ -184,14 +182,12 @@ diag_log "HIVE: Starting";
//Set the Time
//Send request
_key = "CHILD:307:";
_result = [_key] call server_hiveReadWrite;
_result = _key call server_hiveReadWrite;
_outcome = _result select 0;
if(_outcome == "PASS") then {
_date = _result select 1;
if(isDedicated) then {
setDate _date;
dayzSetDate = _date;
publicVariable "dayzSetDate";
["dayzSetDate",_date] call broadcastRpcCallAll;
};
diag_log ("HIVE: Local Time set to " + str(_date));
@@ -201,7 +197,6 @@ diag_log "HIVE: Starting";
if (isDedicated) then {
endLoadingScreen;
};
hiveInUse = false;
if (isDedicated) then {
_id = [] execFSM "\z\addons\dayz_server\system\server_cleanup.fsm";
@@ -242,7 +237,6 @@ for "_x" from 1 to MaxDynamicDebris do {
allowConnection = true;
// [_guaranteedLoot, _randomizedLoot, _frequency, _variance, _spawnChance, _spawnMarker, _spawnRadius, _spawnFire, _fadeFire]
nul = [3, 4, (50 * 60), (15 * 60), 0.75, 'center', 4000, true, false] spawn server_spawnCrashSite;