mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-13 19:52:38 +03:00
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:
@@ -1,2 +0,0 @@
|
||||
PVDZ_obj_Save = [_this select 3,"all"];
|
||||
publicVariableServer "PVDZ_obj_Save";
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
@@ -1090,9 +1076,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
|
||||
player removeAction s_player_maintain_area;
|
||||
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;
|
||||
s_player_maintain_area_preview = -1;
|
||||
player removeAction s_player_tamedog;
|
||||
s_player_tamedog = -1;
|
||||
player removeAction s_player_feeddog;
|
||||
|
||||
@@ -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;};
|
||||
|
||||
@@ -1078,9 +1078,7 @@ 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
|
||||
" };" \n
|
||||
"} else {" \n
|
||||
" _currentWpn = ""Makarov"";" \n
|
||||
" _currentAnim = ""aidlpercmstpsraswpstdnon_player_idlesteady02"";" \n
|
||||
|
||||
@@ -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];
|
||||
};
|
||||
_inventory = [];
|
||||
_backpack = [];
|
||||
_survival = [0,0,0];
|
||||
_model = "";
|
||||
_isInfected = 0;
|
||||
|
||||
//Variables
|
||||
_inventory = [];
|
||||
_backpack = [];
|
||||
_items = [];
|
||||
_magazines = [];
|
||||
_weapons = [];
|
||||
_medicalStats = [];
|
||||
_survival = [0,0,0];
|
||||
_isInfected = 0;
|
||||
_tent = [];
|
||||
_state = [];
|
||||
_direction = 0;
|
||||
_model = "";
|
||||
_newUnit = objNull;
|
||||
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,77 +76,50 @@ 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
|
||||
_newPlayer = _primary select 1;
|
||||
_isNew = count _primary < 7; //_result select 1;
|
||||
_charID = _primary select 2;
|
||||
//diag_log ("LOGIN RESULT: " + str(_primary));
|
||||
|
||||
/* PROCESS */
|
||||
_hiveVer = 0;
|
||||
|
||||
if (!_isNew) then {
|
||||
//RETURNING CHARACTER
|
||||
_inventory = _primary select 4;
|
||||
_backpack = _primary select 5;
|
||||
_survival = _primary select 6;
|
||||
_model = _primary select 7;
|
||||
_hiveVer = _primary select 8;
|
||||
|
||||
if (!(_model in AllPlayers)) then {
|
||||
_model = "Survivor2_DZ";
|
||||
};
|
||||
|
||||
//RETURNING CHARACTER
|
||||
_inventory = _primary select 4;
|
||||
_backpack = _primary select 5;
|
||||
_survival = _primary select 6;
|
||||
_model = _primary select 7;
|
||||
_hiveVer = _primary select 8;
|
||||
if !(_model in AllPlayers) then {_model = "Survivor2_DZ";};
|
||||
} else {
|
||||
if (DZE_PlayerZed) then {
|
||||
_isInfected = _primary select 3;
|
||||
} else {
|
||||
_isInfected = 0;
|
||||
};
|
||||
_model = _primary select 4;
|
||||
_hiveVer = _primary select 5;
|
||||
|
||||
_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];
|
||||
|
||||
@@ -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,17 +21,15 @@ 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 = [];
|
||||
_worldspace = [];
|
||||
_state = [];
|
||||
|
||||
//Do Connection Attempt
|
||||
_doLoop = 0;
|
||||
@@ -45,63 +44,44 @@ 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));
|
||||
};
|
||||
|
||||
//Wait for HIVE to be free
|
||||
//diag_log ("SETUP: RESULT: Successful with " + str(_primary));
|
||||
|
||||
_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;
|
||||
|
||||
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));
|
||||
_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));
|
||||
|
||||
_medical = _primary select 1;
|
||||
_stats = _primary select 2;
|
||||
_worldspace = _primary select 4;
|
||||
_humanity = _primary select 5;
|
||||
_lastInstance = _primary select 6;
|
||||
_randomSpot = false; //Set position
|
||||
|
||||
//Set position
|
||||
_randomSpot = false;
|
||||
_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));
|
||||
|
||||
_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));
|
||||
//diag_log ("WORLDSPACE: " + str(_worldspace));
|
||||
if (count _worldspace > 0) then {
|
||||
|
||||
_position = _worldspace select 1;
|
||||
if (count _position < 3) then {
|
||||
//prevent debug world!
|
||||
_randomSpot = true;
|
||||
};
|
||||
if (count _worldspace > 0) then {
|
||||
_position = _worldspace select 1;
|
||||
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];
|
||||
|
||||
//Add Wounds
|
||||
_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 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];
|
||||
@@ -156,131 +134,106 @@ if (count _medical > 0) then {
|
||||
_playerObj setVariable ["messing",[0,0,0],true];
|
||||
_playerObj setVariable ["blood_testdone",false,true];
|
||||
};
|
||||
|
||||
|
||||
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
|
||||
_score = score _playerObj;
|
||||
_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))); };
|
||||
// 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)));};
|
||||
} 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
|
||||
_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;
|
||||
@@ -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;
|
||||
_character = _this select 0;
|
||||
_magazines = _this select 1;
|
||||
_Achievements = _character getVariable "Achievements";
|
||||
_Achievements = _character getVariable "Achievements";
|
||||
_characterID = _character getVariable ["characterID","0"];
|
||||
_force = true;
|
||||
_charPos = getPosATL _character;
|
||||
_isInVehicle = vehicle _character != _character;
|
||||
_timeSince = 0;
|
||||
_humanity = 0;
|
||||
_name = if (alive _character) then {name _character} else {"Dead Player"};
|
||||
|
||||
|
||||
//_force = _this select 2;
|
||||
_forceGear = _this select 3;
|
||||
_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;
|
||||
|
||||
//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
|
||||
_isNewGear = if (!isNil "_magazines") then { true } else { false };
|
||||
_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];
|
||||
};
|
||||
@@ -122,7 +101,7 @@ if (_characterID != "0") then {
|
||||
Check previous stats against what client had when they logged in
|
||||
this helps prevent JIP issues, where a new player wouldn't have received
|
||||
the old players updates. Only valid for stats where clients could have
|
||||
be recording results from their local objects (such as agent zombies)
|
||||
be recording results from their local objects (such as agent zombies)
|
||||
*/
|
||||
_kills = ["zombieKills",_character] call server_getDiff;
|
||||
_killsB = ["banditKills",_character] call server_getDiff;
|
||||
@@ -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
|
||||
@@ -234,4 +194,4 @@ if (_characterID != "0") then {
|
||||
_character setVariable ["lastTime",(diag_ticktime - _timeLeft)];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user