Remove friendlySaving for now

Achievements are saved in the state field, so we don't have room to save
friendlies there anymore. DZE_FriendlySaving is removed for now. I will
add it back later with a save to player profile instead.

The dayz_players variable is not used for anything. There were several
other unused variables in server_playerLogin.sqf.
This commit is contained in:
ebaydayz
2016-03-24 17:04:17 -04:00
parent 3ed4a95c14
commit ee13f4caf7
23 changed files with 218 additions and 401 deletions

View File

@@ -1,2 +0,0 @@
PVDZ_obj_Save = [_this select 3,"all"];
publicVariableServer "PVDZ_obj_Save";

View File

@@ -63,7 +63,7 @@ if(!(alive _item)) then {
dayz_lastMeal = time;
dayz_hunger = 0;
PVDZ_plr_Save = [player,[],true,false];
PVDZ_plr_Save = [player,[],true];
publicVariableServer "PVDZ_plr_Save";
[player,"eat",0,false] call dayz_zombieSpeak;

View File

@@ -707,18 +707,6 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
s_player_lockUnlock_crtl = -1;
};
if (DZE_AllowForceSave) then {
//Allow player to force save
if ((_isVehicle || _istypeTent) && !_isMan) then {
if (s_player_forceSave < 0) then {
s_player_forceSave = player addAction [format[localize "str_actions_save",_text], "\z\addons\dayz_code\actions\forcesave.sqf",_cursorTarget, 1, true, true];
};
} else {
player removeAction s_player_forceSave;
s_player_forceSave = -1;
};
};
if (DZE_AllowCargoCheck) then {
if ((_isVehicle || _istypeTent || (_typeOfCursorTarget in DZE_isNewStorage)) && _isAlive && !_isMan && !locked _cursorTarget) then {
if (s_player_checkGear < 0) then {
@@ -1015,8 +1003,6 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
player removeAction s_player_repair_crtl;
s_player_repair_crtl = -1;
dayz_myCursorTarget = objNull;
//player removeAction s_player_forceSave;
//s_player_forceSave = -1;
player removeAction s_player_flipveh;
s_player_flipveh = -1;
player removeAction s_player_sleep;
@@ -1091,8 +1077,6 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
s_player_maintain_area = -1;
player removeAction s_player_maintain_area_preview;
s_player_maintain_area_preview = -1;
player removeAction s_player_forceSave;
s_player_forceSave = -1;
player removeAction s_player_tamedog;
s_player_tamedog = -1;
player removeAction s_player_feeddog;

View File

@@ -210,7 +210,6 @@ dayz_resetSelfActions = {
s_player_pzombiesfeed = -1;
s_player_tamedog = -1;
s_player_parts_crtl = -1;
s_player_forceSave = -1;
s_player_checkGear = -1;
s_player_movedog = -1;
s_player_speeddog = -1;
@@ -534,11 +533,8 @@ if(isNil "dayz_sellDistance_vehicle") then {dayz_sellDistance_vehicle = 10;};
if(isNil "dayz_sellDistance_boat") then {dayz_sellDistance_boat = 30;};
if(isNil "dayz_sellDistance_air") then {dayz_sellDistance_air = 40;};
if(isNil "dayz_paraSpawn") then {dayz_paraSpawn = false;};
if(isNil "dayz_minpos") then {dayz_minpos = -20000;};
if(isNil "dayz_maxpos") then {dayz_maxpos = 20000;};
if(isNil "DZE_BuildingLimit") then {DZE_BuildingLimit = 150;};
if(isNil "DZE_HumanityTargetDistance") then {DZE_HumanityTargetDistance = 25;};
if(isNil "DZE_FriendlySaving") then {DZE_FriendlySaving = true;};
if(isNil "DZE_BuildOnRoads") then {DZE_BuildOnRoads = false;};
if(isNil "DZE_MissionLootTable") then {DZE_MissionLootTable = false;};
if(isNil "DZE_ConfigTrader") then {DZE_ConfigTrader = false;};
@@ -555,9 +551,15 @@ if(isNil "DZE_maintainRange") then {DZE_maintainRange = ((DZE_PlotPole select 0)
if(isNil "DZE_HeartBeat") then {DZE_HeartBeat = false;};
if(isNil "DZE_UseBloodTypes") then {DZE_UseBloodTypes = false;};
if(isNil "DZE_slowZombies") then {DZE_slowZombies = false;};
if ((toLower worldName) in ["napf","sauerland","tavi"]) then {
dayz_minpos = if ((toLower worldName) == "tavi") then {-26000} else {-1000};
dayz_maxpos = 26000;
} else {
dayz_minpos = -20000;
dayz_maxpos = 20000;
};
if (isServer) then {
dayz_players = [];
dead_bodyCleanup = [];
needUpdate_objects = [];
Server_InfectedCamps = [];
@@ -706,7 +708,6 @@ if (!isDedicated) then {
Dayz_freefall = [ time, 0, 0.1 ];
// EPOCH ADDITIONS
if(isNil "DZE_AllowForceSave") then {DZE_AllowForceSave = false;};
if(isNil "DZE_AllowCargoCheck") then {DZE_AllowCargoCheck = true;};
if(isNil "DZE_ForceNameTags") then {DZE_ForceNameTags = false;};
if(isNil "DZE_ForceNameTagsOff") then {DZE_ForceNameTagsOff = false;};

View File

@@ -1078,8 +1078,6 @@ class FSM
" //Reload players state" \n
" if (count _state > 2) then {" \n
" dayz_temperatur = _state select 2;" \n
" if ((count _state > 3) && DZE_FriendlySaving) then {" \n
" DZE_Friends = _state select 3;" \n
" };" \n
"} else {" \n
" _currentWpn = ""Makarov"";" \n

View File

@@ -1,54 +1,36 @@
private ["_isInfected","_doLoop","_hiveVer","_isHiveOk","_playerID","_playerObj","_primary","_key","_charID","_playerName","_backpack","_isNew","_inventory","_survival","_model","_mags","_wpns","_bcpk","_config","_newPlayer"];
private ["_doLoop","_hiveVer","_isHiveOk","_playerID","_playerObj","_primary","_key","_charID","_playerName","_backpack","_isNew","_inventory","_survival","_model","_config","_mags","_wpns","_bcpk","_newPlayer","_isInfected"];
#include "\z\addons\dayz_server\compile\server_toggle_debug.hpp"
#ifdef DZE_SERVER_DEBUG
#ifdef LOGIN_DEBUG
diag_log ("STARTING LOGIN: " + str(_this));
#endif
_playerID = _this select 0;
_playerObj = _this select 1;
_playerName = name _playerObj;
_worldspace = [];
if (_playerName == '__SERVER__' || _playerID == '' || local player) exitWith {};
if (isNil "sm_done") exitWith {
#ifdef DZE_SERVER_DEBUG
diag_log ("Login cancelled, server is not ready. " + str(_playerObj));
#endif
};
// Cancel any login until server_monitor terminates.
// This is mandatory since all vehicles must be spawned before the first players spawn on the map.
// Otherwise, all vehicle event handlers won't be created on players' client side.
if (isNil "sm_done") exitWith { diag_log ("Login cancelled, server is not ready. " + str(_playerObj)); };
if (count _this > 2) then {
dayz_players = dayz_players - [_this select 2];
};
//Variables
_inventory = [];
_backpack = [];
_items = [];
_magazines = [];
_weapons = [];
_medicalStats = [];
_survival = [0,0,0];
_isInfected = 0;
_tent = [];
_state = [];
_direction = 0;
_model = "";
_newUnit = objNull;
_isInfected = 0;
if (_playerID == "") then {
_playerID = [_playerObj] call FNC_GetPlayerUID;
};
if ((_playerID == "") || (isNil "_playerID")) exitWith {
#ifdef DZE_SERVER_DEBUG
if ((_playerID == "") or (isNil "_playerID")) exitWith {
diag_log ("LOGIN FAILED: Player [" + _playerName + "] has no login ID");
#endif
};
#ifdef DZE_SERVER_DEBUG
#ifdef LOGIN_DEBUG
diag_log ("LOGIN ATTEMPT: " + str(_playerID) + " " + _playerName);
#endif
@@ -64,14 +46,14 @@ _timeleft = 0;
//If players last logoff is about the ghost timer remove player from ghost que.
if ((_timeleft > dayz_ghostTimer) or (_timeleft < 0)) then {
dayz_ghostPlayers = dayz_ghostPlayers - [_0];
dayz_activePlayers set[_forEachIndex, _0];
dayz_activePlayers set [_forEachIndex, _0];
dayz_activePlayers = dayz_activePlayers - [_0];
} else {
//if player is in died allow them passage.
if (_playerID in dayz_died) then {
dayz_died = dayz_died - [_playerID];
dayz_ghostPlayers = dayz_ghostPlayers - [_0];
dayz_activePlayers set[_forEachIndex, _0];
dayz_activePlayers set [_forEachIndex, _0];
dayz_activePlayers = dayz_activePlayers - [_0];
} else {
// Logoff time is not beyond ghost time and player didn't die
@@ -79,7 +61,7 @@ _timeleft = 0;
};
};
};
}forEach dayz_activePlayers;
} forEach dayz_activePlayers;
//Do Connection Attempt
_doLoop = 0;
@@ -94,26 +76,19 @@ while {_doLoop < 5} do {
_doLoop = _doLoop + 1;
};
if (isNull _playerObj || !isPlayer _playerObj) exitWith {
#ifdef DZE_SERVER_DEBUG
if (isNull _playerObj or !isPlayer _playerObj) exitWith {
diag_log ("LOGIN RESULT: Exiting, player object null: " + str(_playerObj));
#endif
};
if ((_primary select 0) == "ERROR") exitWith {
#ifdef DZE_SERVER_DEBUG
diag_log format ["LOGIN RESULT: Exiting, failed to load _primary: %1 for player: %2 ",_primary,_playerID];
#endif
};
//Process request
_newPlayer = _primary select 1;
_isNew = count _primary < 7; //_result select 1;
_charID = _primary select 2;
_randomSpot = false;
#ifdef DZE_SERVER_DEBUG
diag_log ("LOGIN RESULT: " + str(_primary));
#endif
//diag_log ("LOGIN RESULT: " + str(_primary));
/* PROCESS */
_hiveVer = 0;
@@ -125,46 +100,26 @@ if (!_isNew) then {
_survival = _primary select 6;
_model = _primary select 7;
_hiveVer = _primary select 8;
if (!(_model in AllPlayers)) then {
_model = "Survivor2_DZ";
};
if !(_model in AllPlayers) then {_model = "Survivor2_DZ";};
} else {
if (DZE_PlayerZed) then {
_isInfected = _primary select 3;
} else {
_isInfected = 0;
};
_isInfected = if (DZE_PlayerZed) then {_primary select 3} else {0};
_model = _primary select 4;
_hiveVer = _primary select 5;
if (isNil "_model") then {
_model = "Survivor2_DZ";
} else {
if (_model == "") then {
_model = "Survivor2_DZ";
if (_model == "") then {_model = "Survivor2_DZ";};
};
};
//Record initial inventory only if not player zombie
if(_isInfected != 1) then {
_config = (configFile >> "CfgSurvival" >> "Inventory" >> "Default");
if (_isInfected != 1) then {
_config = configFile >> "CfgSurvival" >> "Inventory" >> "Default";
_mags = getArray (_config >> "magazines");
_wpns = getArray (_config >> "weapons");
_bcpk = getText (_config >> "backpack");
_randomSpot = true;
if(!isNil "DefaultMagazines") then {
_mags = DefaultMagazines;
};
if(!isNil "DefaultWeapons") then {
_wpns = DefaultWeapons;
};
if(!isNil "DefaultBackpack") then {
_bcpk = DefaultBackpack;
};
//_randomSpot = true;
if (!isNil "DefaultMagazines") then {_mags = DefaultMagazines;};
if (!isNil "DefaultWeapons") then {_wpns = DefaultWeapons;};
if (!isNil "DefaultBackpack") then {_bcpk = DefaultBackpack;};
//Wait for HIVE to be free
_key = format["CHILD:203:%1:%2:%3:",_charID,[_wpns,_mags],[_bcpk,[],[]]];
@@ -172,28 +127,13 @@ if (!_isNew) then {
};
};
#ifdef DZE_SERVER_DEBUG
diag_log ("LOGIN LOADED: " + str(_playerObj) + " Type: " + (typeOf _playerObj) + " at location: " + (getPosATL _playerObj));
#endif
_isHiveOk = false;
if (_hiveVer >= dayz_hiveVersionNo) then {
_isHiveOk = true;
};
if (worldName == "chernarus") then {
([4654,9595,0] nearestObject 145259) setDamage 1;
([4654,9595,0] nearestObject 145260) setDamage 1;
};
_isHiveOk = if (_hiveVer >= dayz_hiveVersionNo) then {true} else {false}; //EDITED
PVCDZ_plr_Login = [_charID,_inventory,_backpack,_survival,_isNew,dayz_versionNo,_model,_isHiveOk,_newPlayer,_isInfected];
#ifdef DZE_SERVER_DEBUG
diag_log format["%1, %2, %3, %4, %5, %6, %7, %8, %9, %10",_charID,_inventory,_backpack,_survival,_isNew,dayz_versionNo,_model,_isHiveOk,_newPlayer,_isInfected];
#endif
diag_log str(PVCDZ_plr_Login);
(owner _playerObj) publicVariableClient "PVCDZ_plr_Login";
//Make player wait till ghost timer is up.
//Make player wait until ghost timer is up.
if (_endMission) exitwith {
_remaining = dayz_ghostTimer - _timeleft;
diag_log format["LOGIN CANCELLED: player: %1 is in ghost mode. Time remianing: %2 before login!!",_playerObj,_remaining];
@@ -201,6 +141,7 @@ if (_endMission) exitwith {
(owner _playerObj) publicVariableClient "PVCDZ_plr_Ghost";
};
//Record Player Login/LogOut
[_playerID,_charID,1] call dayz_recordLogin;
PVCDZ_plr_PlayerAccepted = [_playerName,diag_ticktime];

View File

@@ -1,6 +1,6 @@
private ["_characterID","_playerObj","_playerID","_dummy","_worldspace","_state","_doLoop","_key","_primary","_medical","_stats","_humanity","_lastinstance","_friendlies","_randomSpot","_position","_debug","_distance","_hit","_fractures","_score","_findSpot","_pos","_isIsland","_w","_clientID","_spawnMC","_namespace"];
private ["_characterID","_playerObj","_playerID","_dummy","_worldspace","_state","_doLoop","_key","_primary","_medical","_stats","_humanity","_randomSpot","_position","_debug","_distance","_fractures","_score","_findSpot","_mkr","_j","_isIsland","_w","_clientID","_lastInstance"];
//diag_log ("SETUP: attempted with " + str(_this));
diag_log (format["%1 DEBUG %2", __FILE__, _this]);
_characterID = _this select 0;
_playerObj = _this select 1;
@@ -8,6 +8,7 @@ _spawnSelection = _this select 3;
_playerID = [_playerObj] call FNC_GetPlayerUID;
#include "\z\addons\dayz_server\compile\server_toggle_debug.hpp"
if (isNull _playerObj) exitWith {
diag_log ("SETUP INIT FAILED: Exiting, player object null: " + str(_playerObj));
};
@@ -20,16 +21,14 @@ if (_playerID == "") exitWith {
diag_log ("SETUP INIT FAILED: Exiting, no player ID: " + str(_playerObj));
};
private["_dummy"];
private "_dummy";
_dummy = [_playerObj] call FNC_GetPlayerUID;
if ( _playerID != _dummy ) then {
if (_playerID != _dummy) then {
diag_log format["DEBUG: _playerID miscompare with UID! _playerID:%1",_playerID];
_playerID = _dummy;
};
//Variables
_worldspace = [];
_state = [];
//Do Connection Attempt
@@ -45,7 +44,7 @@ while {_doLoop < 5} do {
_doLoop = _doLoop + 1;
};
if (isNull _playerObj || !isPlayer _playerObj) exitWith {
if (isNull _playerObj or !isPlayer _playerObj) exitWith {
diag_log ("SETUP RESULT: Exiting, player object null: " + str(_playerObj));
};
@@ -54,54 +53,35 @@ if (isNull _playerObj || !isPlayer _playerObj) exitWith {
_medical = _primary select 1;
_stats = _primary select 2;
_state = _primary select 3;
_statearray = if (count _primary >= 4) then { _primary select 3 } else {[""]};
_worldspace = _primary select 4;
_humanity = _primary select 5;
_lastinstance = _primary select 6;
_lastInstance = _primary select 6;
_randomSpot = false; //Set position
if (count _statearray == 0) then { _statearray = [""]; };
//diag_log ("StateNew: "+str(_statearray));
_statearray = if (count _primary >= 4) then {_primary select 3} else {[""]};
if (count _statearray == 0) then {_statearray = [""];}; //diag_log ("StateNew: "+str(_statearray));
if (typeName ((_statearray) select 0) == "STRING") then {_statearray = [_statearray,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];};
_state = (_statearray) select 0; //diag_log ("State: "+str(_state));
if (typeName ((_statearray) select 0) == "STRING") then {
_statearray = [_statearray,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];
};
_state = ((_statearray) select 0);
//diag_log ("State: "+str(_state));
_Achievements = ((_statearray) select 1);
if (count _Achievements == 0) then {
_Achievements = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
};
_Achievements = (_statearray) select 1;
if (count _Achievements == 0) then {_Achievements = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];};
//diag_log ("Achievements: "+str(_Achievements));
_worldspace = _primary select 4;
_humanity = _primary select 5;
//Set position
_randomSpot = false;
//diag_log ("WORLDSPACE: " + str(_worldspace));
if (count _worldspace > 0) then {
if (count _worldspace > 0) then {
_position = _worldspace select 1;
if (count _position < 3) then {
//prevent debug world!
_randomSpot = true;
};
if (count _position < 3) then {_randomSpot = true;}; //prevent debug world!
_debug = getMarkerpos "respawn_west";
_distance = _debug distance _position;
if (_distance < 2000) then {
_randomSpot = true;
};
if (_distance < 2000) then {_randomSpot = true;};
_distance = [0,0,0] distance _position;
if (_distance < 500) then {
_randomSpot = true;
};
if (_distance < 500) then {_randomSpot = true;};
//_playerObj setPosATL _position;
// Came from another server force random spawn
if (_lastInstance != dayZ_instance) then {_randomSpot = true;};
} else {
_randomSpot = true;
};
@@ -110,34 +90,32 @@ if (count _worldspace > 0) then {
//set medical values
if (count _medical > 0) then {
_playerObj setVariable["USEC_isDead",(_medical select 0),true];
_playerObj setVariable["NORRN_unconscious", (_medical select 1), true];
_playerObj setVariable["USEC_infected",(_medical select 2),true];
_playerObj setVariable["USEC_injured",(_medical select 3),true];
_playerObj setVariable["USEC_inPain",(_medical select 4),true];
_playerObj setVariable["USEC_isCardiac",(_medical select 5),true];
_playerObj setVariable["USEC_lowBlood",(_medical select 6),true];
_playerObj setVariable["USEC_BloodQty",(_medical select 7),true];
_playerObj setVariable["unconsciousTime",(_medical select 10),true];
_playerObj setVariable ["USEC_isDead",(_medical select 0),true];
_playerObj setVariable ["NORRN_unconscious",(_medical select 1),true];
_playerObj setVariable ["USEC_infected",(_medical select 2),true];
_playerObj setVariable ["USEC_injured",(_medical select 3),true];
_playerObj setVariable ["USEC_inPain",(_medical select 4),true];
_playerObj setVariable ["USEC_isCardiac",(_medical select 5),true];
_playerObj setVariable ["USEC_lowBlood",(_medical select 6),true];
_playerObj setVariable ["USEC_BloodQty",(_medical select 7),true];
//Add Wounds
//Add bleeding wounds
{
_playerObj setVariable["hit_"+_x,true, true];
} count (_medical select 8);
_playerObj setVariable ["hit_"+_x,true,true];
} forEach (_medical select 8);
//Add fractures
_fractures = (_medical select 9);
_fractures = _medical select 9;
_playerObj setVariable ["hit_legs",(_fractures select 0),true];
_playerObj setVariable ["hit_hands",(_fractures select 1),true];
_playerObj setVariable["messing",if (count _medical >= 14) then {(_medical select 13)} else {[0,0,0]},true];
_playerObj setVariable["blood_testdone",if (count _medical >= 15) then {(_medical select 14)} else {false},true];
_playerObj setVariable ["unconsciousTime",(_medical select 10),true];
_playerObj setVariable ["messing",if (count _medical >= 14) then {(_medical select 13)} else {[0,0,0]},true];
_playerObj setVariable ["blood_testdone",if (count _medical >= 15) then {(_medical select 14)} else {false},true];
if (count _medical >= 12) then {
_playerObj setVariable["blood_type",(_medical select 11),true];
_playerObj setVariable["rh_factor",(_medical select 12),true];
_playerObj setVariable ["blood_type",(_medical select 11),true];
_playerObj setVariable ["rh_factor",(_medical select 12),true];
diag_log [ "Character data: blood_type,rh_factor,testdone=",
_playerObj getVariable ["blood_type", "?"],_playerObj getVariable ["rh_factor", "?"], _playerObj getVariable["blood_testdone", false]
_playerObj getVariable ["blood_type", "?"],_playerObj getVariable ["rh_factor", "?"], _playerObj getVariable ["blood_testdone", false]
];
} else {
_playerObj call player_bloodCalc;
@@ -146,7 +124,7 @@ if (count _medical > 0) then {
} else {
//Reset bleeding wounds
call fnc_usec_resetWoundPoints;
//Reset Fractures
//Reset fractures
_playerObj setVariable ["hit_legs",0,true];
_playerObj setVariable ["hit_hands",0,true];
_playerObj setVariable ["USEC_injured",false,true];
@@ -159,10 +137,10 @@ if (count _medical > 0) then {
if (count _stats > 0) then {
//register stats
_playerObj setVariable["zombieKills",(_stats select 0),true];
_playerObj setVariable["headShots",(_stats select 1),true];
_playerObj setVariable["humanKills",(_stats select 2),true];
_playerObj setVariable["banditKills",(_stats select 3),true];
_playerObj setVariable ["zombieKills",(_stats select 0),true];
_playerObj setVariable ["headShots",(_stats select 1),true];
_playerObj setVariable ["humanKills",(_stats select 2),true];
_playerObj setVariable ["banditKills",(_stats select 3),true];
_playerObj addScore (_stats select 1);
//Save Score
@@ -170,117 +148,92 @@ if (count _stats > 0) then {
_playerObj addScore ((_stats select 0) - _score);
//record for Server JIP checks
_playerObj setVariable["zombieKills_CHK",(_stats select 0)];
_playerObj setVariable["headShots_CHK",(_stats select 1)];
_playerObj setVariable["humanKills_CHK",(_stats select 2)];
_playerObj setVariable["banditKills_CHK",(_stats select 3)];
_playerObj setVariable ["zombieKills_CHK",(_stats select 0)];
_playerObj setVariable ["headShots_CHK",(_stats select 1)];
if (count _stats > 4) then {
if (!(_stats select 3)) then {
_playerObj setVariable["selectSex",true,true];
};
if !(_stats select 3) then {_playerObj setVariable ["selectSex",true,true];};
} else {
_playerObj setVariable["selectSex",true,true];
_playerObj setVariable ["selectSex",true,true];
};
} else {
//Save initial loadout
//register stats
_playerObj setVariable["zombieKills",0,true];
_playerObj setVariable["humanKills",0,true];
_playerObj setVariable["banditKills",0,true];
_playerObj setVariable["headShots",0,true];
_playerObj setVariable ["zombieKills",0,true];
_playerObj setVariable ["humanKills",0,true];
_playerObj setVariable ["banditKills",0,true];
_playerObj setVariable ["headShots",0,true];
//record for Server JIP checks
_playerObj setVariable["zombieKills_CHK",0];
_playerObj setVariable["humanKills_CHK",0,true];
_playerObj setVariable["banditKills_CHK",0,true];
_playerObj setVariable["headShots_CHK",0];
_playerObj setVariable ["zombieKills_CHK",0];
_playerObj setVariable ["headShots_CHK",0];
};
if (_randomSpot) then {
private["_counter","_position","_isNear","_isZero","_mkr"];
if (!isDedicated) then {
endLoadingScreen;
};
private ["_counter","_position","_isNear","_isZero","_mkr"];
if (!isDedicated) then {endLoadingScreen;};
_IslandMap = if (worldName in ["dzhg","panthera2","Sara","Utes","Dingor","namalsk","isladuala","Tavi","dayznogova","tasmania2010"]) then {true} else {false};
//Spawn modify via mission init.sqf
if(isnil "spawnArea") then {
spawnArea = 1500;
};
if(isnil "spawnShoremode") then {
spawnShoremode = 1;
};
//
_spawnMC = actualSpawnMarkerCount;
if (worldName in ["dzhg", "panthera2", "Sara", "Utes", "Dingor", "namalsk", "isladuala", "Tavi", "dayznogova","tasmania2010"]) then { _IslandMap = true; } else { _IslandMap = false; };
if (isNil "spawnArea") then {spawnArea = 1400;};
if (isNil "spawnShoremode") then {spawnShoremode = 1;};
//spawn into random
_findSpot = true;
_mkr = [];
_position = [0,0,0];
for [{_j=0},{_j<=100 AND _findSpot},{_j=_j+1}] do {
for [{_j=0},{_j<=100 && _findSpot},{_j=_j+1}] do {
if (_spawnSelection == 9) then {
// random spawn location selected, lets get the marker and spawn in somewhere
if (dayz_spawnselection == 1) then { _mkr = getMarkerPos ("spawn" + str(floor(random 6))); } else { _mkr = getMarkerPos ("spawn" + str(floor(random 5))); };
if (dayz_spawnselection == 1) then {_mkr = getMarkerPos ("spawn" + str(floor(random 6)));} else {_mkr = getMarkerPos ("spawn" + str(floor(random 5)));};
} else {
// spawn is not random, lets spawn in our location that was selected
_mkr = getMarkerPos ("spawn" + str(_spawnSelection));
};
_position = ([_mkr,0,spawnArea,10,0,2,spawnShoremode] call BIS_fnc_findSafePos);
if ((count _position >= 2) // !bad returned position
AND {(_position distance _mkr < 1400)}) then { // !ouside the disk
&& {(_position distance _mkr < spawnArea)}) then { // !ouside the disk
_position set [2, 0];
if (((ATLtoASL _position) select 2 > 2.5) //! player's feet too wet
AND {({alive _x} count (_position nearEntities ["Man",150]) == 0)}) then { // !too close from other players/zombies
&& {({alive _x} count (_position nearEntities ["Man",150]) == 0)}) then { // !too close from other players/zombies
_pos = +(_position);
_isIsland = false; //Can be set to true during the Check
// we check over a 809-meter cross line, with an effective interlaced step of 5 meters
for [{_w = 0}, {_w != 809}, {_w = ((_w + 17) % 811)}] do {
//if (_w < 17) then { diag_log format[ "%1 loop starts with _w=%2", __FILE__, _w]; };
_pos = [((_pos select 0) - _w),((_pos select 1) + _w),(_pos select 2)];
if((surfaceisWater _pos) and (!_IslandMap)) exitWith {
_isIsland = true;
};
if ((surfaceisWater _pos) && !_IslandMap) exitWith {_isIsland = true;};
};
if (!_isIsland) then {_findSpot = false};
};
};
//diag_log format["%1: pos:%2 _findSpot:%3", __FILE__, _position, _findSpot];
};
if ((_findSpot) and (!_IslandMap)) exitWith {
if (_findSpot && !_IslandMap) exitWith {
diag_log format["%1: Error, failed to find a suitable spawn spot for player. area:%2",__FILE__, _mkr];
};
_worldspace = [0,_position];
};
//Record player for management
dayz_players set [count dayz_players,_playerObj];
//record player pos locally for server checking
_playerObj setVariable["CharacterID",_characterID,true];
_playerObj setVariable["humanity",_humanity,true];
_playerObj setVariable["humanity_CHK",_humanity];
//_playerObj setVariable["worldspace",_worldspace,true];
//_playerObj setVariable["state",_state,true];
_playerObj setVariable["lastPos",getPosATL _playerObj];
_playerObj setVariable ["characterID",_characterID,true];
_playerObj setVariable ["humanity",_humanity,true];
_playerObj setVariable ["humanity_CHK",_humanity];
_playerObj setVariable ["lastPos",getPosATL _playerObj];
if (!isNil "faco_hook_playerSetup") then {
[_worldspace,_state,_playerObj, _characterID] call faco_hook_playerSetup;
[_worldspace,_state,_playerObj,_characterID] call faco_hook_playerSetup;
_playerObj call faco_sendSecret;
};
PVCDZ_plr_Login2 = [_worldspace,_state,_Achievements];
_clientID = owner _playerObj;
_clientID publicVariableClient "PVCDZ_plr_Login2";
_clientID publicVariableClient "PVCDZ_plr_plantSpawner";
//record time started
_playerObj setVariable ["lastTime",time];
//_playerObj setVariable ["model_CHK",typeOf _playerObj];
//diag_log ("LOGIN PUBLISHING: " + str(_playerObj) + " Type: " + (typeOf _playerObj));
diag_log format["LOGIN PUBLISHING: UID#%1 CID#%2 %3 as %4 should spawn at %5",getPlayerUID _playerObj,_characterID,_playerObj call fa_plr2str,typeOf _playerObj,(_worldspace select 1) call fa_coor2str];
PVDZ_plr_Login1 = null;
PVDZ_plr_Login2 = null;

View File

@@ -1,66 +1,49 @@
private ["_name","_character","_magazines","_force","_characterID","_charPos","_isInVehicle","_timeSince","_humanity","_debug","_distance","_isNewMed","_isNewPos","_isNewGear","_playerPos","_playerGear","_playerBackp","_medical","_distanceFoot","_lastPos","_backpack","_kills","_killsB","_killsH","_headShots","_lastTime","_timeGross","_timeLeft","_currentWpn","_currentAnim","_config","_onLadder","_isTerminal","_currentModel","_modelChk","_muzzles","_temp","_currentState","_array","_key","_pos","_forceGear","_friendlies"];
private ["_characterID","_temp","_currentWpn","_magazines","_force","_isNewPos","_humanity","_isNewGear","_currentModel","_modelChk","_playerPos","_playerGear","_playerBackp","_backpack","_killsB","_killsH","_medical","_isNewMed","_character","_timeSince","_charPos","_isInVehicle","_distanceFoot","_lastPos","_kills","_headShots","_timeGross","_timeLeft","_onLadder","_isTerminal","_currentAnim","_muzzles","_array","_key","_lastTime","_config","_currentState","_name"];
//[player,array]
_character = _this select 0;
_magazines = _this select 1;
_Achievements = _character getVariable "Achievements";
//_force = _this select 2;
_forceGear = _this select 3;
_characterID = _character getVariable ["characterID","0"];
_force = true;
if (isNull _character) exitWith {
diag_log ("Player is Null FAILED: Exiting, player sync: " + str(_character));
};
_characterID = _character getVariable ["CharacterID","0"];
_charPos = getPosATL _character;
_isInVehicle = vehicle _character != _character;
_timeSince = 0;
_humanity = 0;
_name = if (alive _character) then {name _character} else {"Dead Player"};
//diag_log ("DW_DEBUG: (isnil _characterID): " + str(isnil "_characterID"));
_name = if (alive _character) then { name _character; } else { "Dead Player"; };
if (_character isKindOf "Animal") exitWith {
diag_log ("ERROR: Cannot Sync Character " + (_name) + " is an Animal class");
diag_log ("ERROR: Cannot Sync Character " + _name + " is an Animal class");
};
if (isnil "_characterID") exitWith {
diag_log ("ERROR: Cannot Sync Character " + (_name) + " has nil characterID");
if (isNil "_characterID") exitWith {
diag_log ("ERROR: Cannot Sync Character " + _name + " has nil characterID");
};
if (_characterID == "0") exitWith {
diag_log ("ERROR: Cannot Sync Character " + (_name) + " as no characterID");
diag_log ("ERROR: Cannot Sync Character " + _name + " as no characterID");
};
if (isNil {_Achievements}) exitWith {
diag_log ("ERROR: Cannot Sync Achievements " + (name _character) + " has no default Achievements");
diag_log ("ERROR: Cannot Sync Achievements " + _name + " has no default Achievements");
_Achievements = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
};
/*
private["_debug","_distance"];
_debug = getMarkerpos "respawn_west";
_distance = _debug distance _charPos;
if (_distance < 2000) exitWith {
diag_log format["ERROR: server_playerSync: Cannot Sync Player %1 [%2]. Position in debug! %3",_name,_characterID,_charPos];
}; */
//No longer used
private["_debug","_distance"];
_debug = getMarkerpos "respawn_west";
_distance = _debug distance _charPos;
if (_distance < 2000) exitWith {
// diag_log format["ERROR: server_playerSync: Cannot Sync Player %1 [%2]. Position in debug! %3",name _character,_characterID,_charPos];
};
*/
//Check for server initiated updates
_isNewMed = _character getVariable["medForceUpdate",false]; //Med Update is forced when a player receives some kind of med incident
_isNewPos = _character getVariable["posForceUpdate",false]; //Med Update is forced when a player receives some kind of med incident
_isNewMed = _character getVariable ["medForceUpdate",false]; //Med update is forced when a player receives some kind of med incident
_isNewPos = _character getVariable ["posForceUpdate",false]; //Med update is forced when a player receives some kind of med incident
_isNewGear = if (!isNil "_magazines") then { true } else { false };
//diag_log ("Starting Save... MED: " + str(_isNewMed) + " / POS: " + str(_isNewPos)); sleep 0.05;
//Check for player initiated updates
if (_characterID != "0") then {
@@ -73,44 +56,40 @@ if (_characterID != "0") then {
//diag_log ("Found Character...");
//Check if update is requested
if (_isNewPos || _force) then {
//diag_log ("position..." + str(_isNewPos) + " / " + str(_force)); uiSleep 0.05;
if (_isNewPos or _force) then {
//diag_log ("position..." + str(_isNewPos) + " / " + str(_force)); sleep 0.05;
if (((_charPos select 0) == 0) && ((_charPos select 1) == 0)) then {
//Zero Position
} else {
//diag_log ("getting position..."); uiSleep 0.05;
_playerPos = [round(direction _character),_charPos];
_lastPos = _character getVariable["lastPos",_charPos];
//diag_log ("getting position..."); sleep 0.05;
_playerPos = [round (direction _character),_charPos];
_lastPos = _character getVariable ["lastPos",_charPos];
if (count _lastPos > 2 && count _charPos > 2) then {
if (!_isInVehicle) then {
_distanceFoot = round(_charPos distance _lastPos);
};
if (!_isInVehicle) then {_distanceFoot = round (_charPos distance _lastPos);};
_character setVariable["lastPos",_charPos];
};
if (count _charPos < 3) then {
_playerPos = [];
};
//diag_log ("position = " + str(_playerPos)); uiSleep 0.05;
if (count _charPos < 3) then {_playerPos = [];};
//diag_log ("position = " + str(_playerPos)); sleep 0.05;
};
_character setVariable ["posForceUpdate",false,true];
};
if (_isNewGear || _forceGear) then {
//diag_log ("gear..."); uiSleep 0.05;
_playerGear = [weapons _character,_magazines];
//diag_log ("playerGear: " +str(_playerGear));
_backpack = unitBackpack _character;
_playerBackp = [typeOf _backpack,getWeaponCargo _backpack,getMagazineCargo _backpack];
if (_isNewGear) then {
if (typeName _magazines == "ARRAY") then {
_playerGear = [weapons _character,_magazines select 0,_magazines select 1];
};
};
if (_isNewMed || _force) then {
//diag_log ("medical..."); uiSleep 0.05;
if (!(_character getVariable["USEC_isDead",false])) then {
//diag_log ("medical check..."); uiSleep 0.05;
//Check player backpack each time sync runs
_backpack = unitBackpack _character;
_playerBackp = [typeOf _backpack,getWeaponCargo _backpack,getMagazineCargo _backpack];
if (_isNewMed or _force) then {
//diag_log ("medical..."); sleep 0.05;
if !(_character getVariable ["USEC_isDead",false]) then {
//diag_log ("medical check..."); sleep 0.05;
_medical = _character call player_sumMedical;
//diag_log ("medical result..." + str(_medical)); uiSleep 0.05;
//diag_log ("medical result..." + str(_medical)); sleep 0.05;
};
_character setVariable ["medForceUpdate",false,true];
};
@@ -134,9 +113,9 @@ if (_characterID != "0") then {
/*
Assess how much time has passed, for recording total time on server
*/
_lastTime = _character getVariable["lastTime",diag_ticktime];
_lastTime = _character getVariable ["lastTime",diag_ticktime];
_timeGross = (diag_ticktime - _lastTime);
_timeSince = floor(_timeGross / 60);
_timeSince = floor (_timeGross / 60);
_timeLeft = (_timeGross - (_timeSince * 60));
/*
Get character state details
@@ -152,81 +131,62 @@ if (_characterID != "0") then {
if (_currentModel == _modelChk) then {
_currentModel = "";
} else {
_currentModel = str(_currentModel);
_currentModel = str _currentModel;
_character setVariable ["model_CHK",typeOf _character];
};
if (_onLadder || _isInVehicle || _isTerminal) then {
if (_onLadder or _isInVehicle or _isTerminal) then {
_currentAnim = "";
//If position to be updated, make sure it is at ground level!
if ((count _playerPos > 0) && !_isTerminal) then {
_charPos set [2,0];
_playerPos set[1,_charPos];
_playerPos set [1,_charPos];
};
};
if (_isInVehicle) then {
_currentWpn = "";
} else {
if ( typeName(_currentWpn) == "STRING" ) then {
_muzzles = getArray(configFile >> "cfgWeapons" >> _currentWpn >> "muzzles");
if (count _muzzles > 1) then {
_currentWpn = currentMuzzle _character;
};
if (typeName _currentWpn == "STRING") then {
_muzzles = getArray (configFile >> "cfgWeapons" >> _currentWpn >> "muzzles");
if (count _muzzles > 1) then {_currentWpn = currentMuzzle _character;};
} else {
//diag_log ("DW_DEBUG: _currentWpn: " + str(_currentWpn));
_currentWpn = "";
};
};
_temp = round(_character getVariable ["temperature",100]);
_temp = round (_character getVariable ["temperature",100]);
_currentState = [[_currentWpn,_currentAnim,_temp],_Achievements];
if(DZE_FriendlySaving) then {
// save only last/most recent 5 entrys as we only have 200 chars in db field and weapon + animation names are sometimes really long 60-70 chars.
_friendlies = [(_character getVariable ["friendlies",[]]),5] call array_reduceSizeReverse;
_currentState set [(count _currentState),_friendlies];
};
/*
Everything is ready, now publish to HIVE
*/
if (count _playerPos > 0) then {
_array = [];
{
if (_x > dayz_minpos && _x < dayz_maxpos) then {
_array set [count _array,_x];
};
} count (_playerPos select 1);
if (_x > dayz_minpos && _x < dayz_maxpos) then {_array set [count _array,_x];};
} forEach (_playerPos select 1);
_playerPos set [1,_array];
};
if (!isNull _character) then {
if (alive _character) then {
//Wait for HIVE to be free
//Send request
//Wait for HIVE to be free and send request
_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,_kills,_headShots,_distanceFoot,_timeSince,_currentState,_killsH,_killsB,_currentModel,_humanity];
//diag_log ("HIVE: WRITE: "+ str(_key) + " / " + _characterID);
//diag_log format["HIVE: SYNC: [%1,%2,%3,%4]",_characterID,_playerPos,_playerGear,_playerBackp];
_key call server_hiveWrite;
};
};
// If player is in a vehicle, keep its position updated
if (vehicle _character != _character) then {
//[vehicle _character, "position"] call server_updateObject;
if (!(vehicle _character in needUpdate_objects)) then {
//diag_log format["DEBUG: Added to NeedUpdate=%1",vehicle _character];
needUpdate_objects set [count needUpdate_objects, vehicle _character];
};
[vehicle _character, "position"] call server_updateObject;
};
// Force gear updates for nearby vehicles/tents
{
[_x, "gear"] call server_updateObject;
} count (nearestObjects [_charPos, DayZ_GearedObjects, 10]);
} count nearestObjects [_character, DayZ_GearedObjects, 10];
//[_charPos] call server_updateNearbyObjects;
//Reset timer

View File

@@ -59,15 +59,11 @@ enableSentences false;
//Map & Player Spawn Variables
spawnShoremode = 1; // Default: 1 (on shore)
spawnArea= 1500; // Default: 1500
spawnArea = 1400; // Default: 1400
dayz_paraSpawn = false; // Default: false
dayz_fullMoonNights = true; // Default: false
dayz_MapArea = 14000; // Default: 10000
//Do Not Edit - Chernarus Specific
dayz_minpos = -1; // Do Not Edit - Chernarus Specific
dayz_maxpos = 16000; // Do Not Edit - Chernarus Specific
//Item Spawn Variables
MaxHeliCrashes= 5; // Default: 5
MaxVehicleLimit = 300; // Default: 50
@@ -89,7 +85,6 @@ dayz_sellDistance_air = 40; // Default: 40
//Player Variables
DZE_R3F_WEIGHT = true; // Default: true
DZE_FriendlySaving = true; // Default: true
DZE_PlayerZed = true; // Default: true
DZE_BackpackGuard = true; // Default: true
DZE_SelfTransfuse = false; // Default: false
@@ -107,7 +102,6 @@ DZE_DeathMsgSide = false; // Default: false
DZE_DeathMsgTitleText = false; // Default: false
//Vehicles Variables
DZE_AllowForceSave = false; // Default: false
DZE_AllowCargoCheck = false; // Default: false
DZE_HeliLift = true; // Default: true
DZE_HaloJump = true; // Default: true

View File

@@ -23,7 +23,7 @@ enableSentences false;
// DayZ Epoch config
dayz_enableRules = true; // Default: true
spawnShoremode = 1; // Default = 1 (on shore)
spawnArea= 1500; // Default = 1500
spawnArea = 1400; // Default = 1400
MaxVehicleLimit = 300; // Default = 50
MaxDynamicDebris = 400; // Default = 100

View File

@@ -32,9 +32,6 @@ dayz_MapArea = 20000; // Default = 10000
EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]];
dayz_fullMoonNights = true;
dayz_minpos = -26000;
dayz_maxpos = 26000;
dayz_sellDistance_vehicle = 10;
dayz_sellDistance_boat = 30;
dayz_sellDistance_air = 40;

View File

@@ -23,7 +23,7 @@ enableSentences false;
// DayZ Epoch config
dayz_enableRules = true; // Default: true
spawnShoremode = 1; // Default = 1 (on shore)
spawnArea= 1500; // Default = 1500
spawnArea = 1400; // Default = 1400
MaxVehicleLimit = 300; // Default = 50
MaxDynamicDebris = 500; // Default = 100

View File

@@ -23,7 +23,7 @@ enableSentences false;
// DayZ Epoch config
dayz_enableRules = true; // Default: true
spawnShoremode = 1; // Default = 1 (on shore)
spawnArea= 1500; // Default = 1500
spawnArea = 1400; // Default = 1400
MaxVehicleLimit = 300; // Default = 50
MaxDynamicDebris = 500; // Default = 100

View File

@@ -23,7 +23,7 @@ enableSentences false;
// DayZ Epoch config
dayz_enableRules = true; // Default: true
spawnShoremode = 1; // Default = 1 (on shore)
spawnArea= 1500; // Default = 1500
spawnArea = 1400; // Default = 1400
MaxVehicleLimit = 300; // Default = 50
MaxDynamicDebris = 500; // Default = 100

View File

@@ -23,7 +23,7 @@ enableSentences false;
// DayZ Epoch config
dayz_enableRules = true; // Default: true
spawnShoremode = 1; // Default = 1 (on shore)
spawnArea= 1500; // Default = 1500
spawnArea = 1400; // Default = 1400
MaxVehicleLimit = 200; // Default = 50
MaxDynamicDebris = 250; // Default = 100

View File

@@ -23,7 +23,7 @@ enableSentences false;
// DayZ Epoch config
dayz_enableRules = true; // Default: true
spawnShoremode = 1; // Default = 1 (on shore)
spawnArea = 1500; // Default = 1500
spawnArea = 1400; // Default = 1400
MaxVehicleLimit = 200; // Default = 50
MaxDynamicDebris = 250; // Default = 100

View File

@@ -23,7 +23,7 @@ enableSentences false;
// DayZ Epoch config
dayz_enableRules = true; // Default: true
spawnShoremode = 1; // Default = 1 (on shore)
spawnArea = 1500; // Default = 1500
spawnArea = 1400; // Default = 1400
MaxVehicleLimit = 200; // Default = 50
MaxDynamicDebris = 250; // Default = 100

View File

@@ -23,7 +23,7 @@ enableSentences false;
// DayZ Epoch config
dayz_enableRules = true; // Default: true
spawnShoremode = 1; // Default = 1 (on shore)
spawnArea= 1500; // Default = 1500
spawnArea = 1400; // Default = 1400
MaxVehicleLimit = 300; // Default = 50
MaxDynamicDebris = 350; // Default = 100

View File

@@ -21,7 +21,7 @@ enableRadio false;
// DayZ Epoch config
dayz_enableRules = true; // Default: true
spawnShoremode = 1; // Default = 1 (on shore)
spawnArea= 1500; // Default = 1500
spawnArea = 1400; // Default = 1400
MaxVehicleLimit = 300; // Default = 50
MaxDynamicDebris = 500; // Default = 100

View File

@@ -23,15 +23,12 @@ enableSentences false;
// DayZ Epochconfig
dayz_enableRules = true; // Default: true
spawnShoremode = 1; // Default = 1 (on shore)
spawnArea= 1500; // Default = 1500
spawnArea = 1400; // Default = 1400
//
MaxVehicleLimit = 300; // Default = 50
MaxDynamicDebris = 500; // Default = 100
dayz_MapArea = 18000; // Default = 10000
dayz_minpos = -1000;
dayz_maxpos = 26000;
dayz_paraSpawn = true;
dayz_sellDistance_vehicle = 10;

View File

@@ -29,9 +29,6 @@ MaxVehicleLimit = 300; // Default = 50
MaxDynamicDebris = 500; // Default = 100
dayz_MapArea = 22000; // Default = 10000
dayz_minpos = -1000;
dayz_maxpos = 26000;
dayz_paraSpawn = true;
dayz_sellDistance_vehicle = 10;

View File

@@ -29,9 +29,6 @@ MaxVehicleLimit = 300; // Default = 50
MaxDynamicDebris = 500; // Default = 100
dayz_MapArea = 22000; // Default = 10000
dayz_minpos = -1000;
dayz_maxpos = 26000;
dayz_paraSpawn = true;
dayz_sellDistance_vehicle = 10;

View File

@@ -23,7 +23,7 @@ enableSentences false;
// DayZ Epoch config
dayz_enableRules = true; // Default: true
spawnShoremode = 1; // Default = 1 (on shore)
spawnArea = 1500; // Default = 1500
spawnArea = 1400; // Default = 1400
MaxVehicleLimit = 300; // Default = 50
MaxDynamicDebris = 500; // Default = 100