mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-14 12:12:34 +03:00
+ [ADDED] Added 4 more new military skins as rare drops on militaryclothes: (FR_OHara_DZ,FR_Rodriguez_DZ,CZ_Soldier_Sniper_EP1_DZ,Graves_Light_DZ) Picture. Left to right. http://i.imgur.com/HlE4o2R.jpg + [CHANGED] You can now only sell vehicles to the trader if they are between 75% and 100% health. + [ADDED] Added generator as build-able and now can be started with one 20 liter Jerrycan and runs until server restart. + [CHANGED] Lowered building preview time from 50 seconds to 15. + [ADDED] First release of PHP tool to help config traders. + [ADDED] Player Zombie vision. + [CHANGED] You must now be the owner of a plot or a friend of an owner to build. + [CHANGED] When removing base building elements and not the owner or friend removal counter is doubled. + [FIXED] Potential fix for shifting position of mg nest. + [ADDED] New sniper rifle SCAR_H_LNG_Sniper_SD (ammo: 20Rnd_762x51_SB_SCAR) added to MassGrave loot tables. + [ADDED] New Machine Gun Pecheneg_DZ to MilitarySpecial loot tables and to traders. (ammo:100Rnd_762x54_PK) + [ADDED] New SMG: Sa61_EP1 (ammo: 20Rnd_B_765x17_Ball), UZI_SD_EP1 (ammo: 30Rnd_9x19_UZI_SD) added to traders and Military loot tables. + [ADDED] New Pistol added to traders and loot tables MassGrave,DynamicDebrisMilitary, and Residential : MakarovSD (ammo: 8Rnd_9x18_MakarovSD) + [ADDED] Bikeys Added for playwith versions of taviana, namalsk, celle, lingor. + [INFO] Attention server owners should change @tavi_DayZ_Epoch folder on the server to @taviana and your players can then connect and install automatically with play.withsix.com with the above mentioned bikeys.
267 lines
8.0 KiB
Plaintext
267 lines
8.0 KiB
Plaintext
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"];
|
|
//Wait for HIVE to be free
|
|
//diag_log ("SETUP: attempted with " + str(_this));
|
|
|
|
_characterID = _this select 0;
|
|
_playerObj = _this select 1;
|
|
_playerID = getPlayerUID _playerObj;
|
|
|
|
if (isNull _playerObj) exitWith {
|
|
diag_log ("SETUP INIT FAILED: Exiting, player object null: " + str(_playerObj));
|
|
};
|
|
|
|
//Add MPHit event handler
|
|
diag_log("Adding MPHit EH for " + str(_playerObj));
|
|
_playerObj addMPEventHandler ["MPHit", {_this spawn fnc_plyrHit;}];
|
|
|
|
if (_playerID == "") then {
|
|
_playerID = getPlayerUID _playerObj;
|
|
};
|
|
|
|
if (_playerID == "") exitWith {
|
|
diag_log ("SETUP INIT FAILED: Exiting, no player ID: " + str(_playerObj));
|
|
};
|
|
|
|
private["_dummy"];
|
|
_dummy = getPlayerUID _playerObj;
|
|
if ( _playerID != _dummy ) then {
|
|
diag_log format["DEBUG: _playerID miscompare with UID! _playerID:%1",_playerID];
|
|
_playerID = _dummy;
|
|
};
|
|
|
|
//Variables
|
|
_worldspace = [];
|
|
|
|
_state = [];
|
|
|
|
//Do Connection Attempt
|
|
_doLoop = 0;
|
|
while {_doLoop < 5} do {
|
|
_key = format["CHILD:102:%1:",_characterID];
|
|
_primary = _key call server_hiveReadWrite;
|
|
if (count _primary > 0) then {
|
|
if ((_primary select 0) != "ERROR") then {
|
|
_doLoop = 9;
|
|
};
|
|
};
|
|
_doLoop = _doLoop + 1;
|
|
};
|
|
|
|
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;
|
|
_worldspace = _primary select 4;
|
|
_humanity = _primary select 5;
|
|
_lastinstance = _primary select 6;
|
|
_friendlies = [];
|
|
|
|
//Set position
|
|
_randomSpot = false;
|
|
|
|
//diag_log ("WORLDSPACE: " + str(_worldspace));
|
|
|
|
if (count _worldspace > 0) then {
|
|
|
|
_position = _worldspace select 1;
|
|
if (count _position < 3) then {
|
|
//prevent debug world!
|
|
_randomSpot = true;
|
|
};
|
|
_debug = getMarkerpos "respawn_west";
|
|
_distance = _debug distance _position;
|
|
if (_distance < 2000) then {
|
|
_randomSpot = true;
|
|
};
|
|
|
|
_distance = [0,0,0] distance _position;
|
|
if (_distance < 500) then {
|
|
_randomSpot = true;
|
|
};
|
|
|
|
// Came from another server force random spawn
|
|
if (_lastinstance != dayZ_instance) then {
|
|
_randomSpot = true;
|
|
};
|
|
|
|
//_playerObj setPosATL _position;
|
|
} else {
|
|
_randomSpot = true;
|
|
};
|
|
|
|
//diag_log ("LOGIN: Location: " + str(_worldspace) + " doRnd?: " + str(_randomSpot));
|
|
|
|
//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];
|
|
|
|
// if (_playerID in dayz_disco) then {
|
|
// _playerObj setVariable["NORRN_unconscious",true, true];
|
|
// _playerObj setVariable["unconsciousTime",300,true];
|
|
// } else {
|
|
// _playerObj setVariable["unconsciousTime",(_medical select 10),true];
|
|
// };
|
|
|
|
//Add Wounds
|
|
{
|
|
_playerObj setVariable[_x,true,true];
|
|
//["usecBleed",[_playerObj,_x,_hit]] call broadcastRpcCallAll;
|
|
usecBleed = [_playerObj,_x,_hit];
|
|
publicVariable "usecBleed";
|
|
} forEach (_medical select 8);
|
|
|
|
//Add fractures
|
|
_fractures = (_medical select 9);
|
|
_playerObj setVariable ["hit_legs",(_fractures select 0),true];
|
|
_playerObj setVariable ["hit_hands",(_fractures select 1),true];
|
|
|
|
if (count _medical > 11) then {
|
|
//Additional medical stats
|
|
_playerObj setVariable ["messing",(_medical select 11),true];
|
|
};
|
|
|
|
} else {
|
|
//Reset Fractures
|
|
_playerObj setVariable ["hit_legs",0,true];
|
|
_playerObj setVariable ["hit_hands",0,true];
|
|
_playerObj setVariable ["USEC_injured",false,true];
|
|
_playerObj setVariable ["USEC_inPain",false,true];
|
|
_playerObj setVariable ["messing",[0,0],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 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)];
|
|
if (count _stats > 4) then {
|
|
if (!(_stats select 3)) then {
|
|
_playerObj setVariable["selectSex",true,true];
|
|
};
|
|
} else {
|
|
_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];
|
|
|
|
//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];
|
|
};
|
|
|
|
if (_randomSpot) then {
|
|
private["_counter","_position","_isNear","_isZero","_mkr"];
|
|
if (!isDedicated) then {
|
|
endLoadingScreen;
|
|
};
|
|
|
|
|
|
//Spawn modify via mission init.sqf
|
|
if(isnil "spawnArea") then {
|
|
spawnArea = 1500;
|
|
};
|
|
if(isnil "spawnShoremode") then {
|
|
spawnShoremode = 1;
|
|
};
|
|
if(isnil "spawnMarkerCount") then {
|
|
spawnMarkerCount = 4;
|
|
};
|
|
|
|
// The wiki states floor has a uniform distribution but will not reach the last number so we add +1
|
|
_spawnMC = spawnMarkerCount + 1;
|
|
|
|
//spawn into random
|
|
_findSpot = true;
|
|
_mkr = "";
|
|
while {_findSpot} do {
|
|
_counter = 0;
|
|
while {_counter < 20 and _findSpot} do {
|
|
// switched to floor
|
|
_mkr = "spawn" + str(floor(random _spawnMC));
|
|
_position = ([(getMarkerPos _mkr),0,spawnArea,10,0,2000,spawnShoremode] call BIS_fnc_findSafePos);
|
|
_isNear = count (_position nearEntities ["Man",100]) == 0;
|
|
_isZero = ((_position select 0) == 0) and ((_position select 1) == 0);
|
|
//Island Check //TeeChange
|
|
_pos = _position;
|
|
_isIsland = false; //Can be set to true during the Check
|
|
for [{_w=0},{_w<=150},{_w=_w+2}] do {
|
|
_pos = [(_pos select 0),((_pos select 1) + _w),(_pos select 2)];
|
|
if(surfaceisWater _pos) exitWith {
|
|
_isIsland = true;
|
|
};
|
|
};
|
|
|
|
if ((_isNear and !_isZero) || _isIsland) then {_findSpot = false};
|
|
_counter = _counter + 1;
|
|
};
|
|
};
|
|
_isZero = ((_position select 0) == 0) and ((_position select 1) == 0);
|
|
_position = [_position select 0,_position select 1,0];
|
|
if (!_isZero) then {
|
|
//_playerObj setPosATL _position;
|
|
_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["friendlies",_friendlies,true];
|
|
|
|
dayzPlayerLogin2 = [_worldspace,_state];
|
|
_clientID = owner _playerObj;
|
|
_clientID publicVariableClient "dayzPlayerLogin2";
|
|
|
|
//record time started
|
|
_playerObj setVariable ["lastTime",time];
|
|
//_playerObj setVariable ["model_CHK",typeOf _playerObj];
|
|
|
|
diag_log ("LOGIN PUBLISHING: " + str(_playerObj) + " Type: " + (typeOf _playerObj));
|
|
|
|
dayzLogin = null;
|
|
dayzLogin2 = null;
|
|
|
|
//Save Login
|