mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-20 02:16:29 +03:00
+ [FIXED] Prevent player zombies from getting any default loadouts. + [FIXED] Bad vehicle type message when using default loadout override and no backpack. + [FIXED] dayz_zedsAttackVehicles logic was reversed fixed now so that true = attack vehicles. + [ADDED] Safes now have a keypad GUI. Simply click on the numbers to enter your combo and then press #. https://www.dropbox.com/s/b00fgdpo13wokg9/Untitled-1.jpg + [ADDED] Tons of awesome cars by vilas from http://www.armaholic.com/page.php?id=17447 + [FIXED] Models needed extra variable to prevent being sunk into the ground. + [CHANGED] Bleeding duration reduced to minimum of 30 sec and max of 330 seconds. Before it was min 100 max 500. + [ADDED] When kneeling bleeding per second is reduced by 50%. + [ADDED] When crawling bleeding per second is reduced by 75%. + [ADDED] When changing locations the locations name will display in the bottom right. + [CHANGED] Replaced m107 with BAF_LRR_scoped. + [CHANGED] Replaced as50 with AK_107_PSO. TODO + [FIXED] Lock vehicle no longer shows on killed vehicles. + [ADDED] Disabled purchased vehicle parachute spawning by default added variable DZE_TRADER_SPAWNMODE = true; to enable. (Default: false) + [CHANGED] Plot pole has changed to another model a "no entry" sign and can be removed by anyone. When done building take your plot pole with you, if it isn't yours remove it and put it back down again. + [ADDED] Loot positions on top of some tables. + [ADDED] Briefcase that can hold up to 10 x 10oz Gold Bars or 100oz. + [ADDED] Full moon nights as option with dayz_fullMoonNights = true; + [CHANGED] Can no longer Salvage vehicle parts with 0 damage. Fixes bugged hitpoints and duping. + [REMOVED] Remove all crates of toolbelt items. This was just to add stock to traders and since most servers are now auto stocking them at the traders its not needed and cumbersome to use. + [CHANGED] Generator can only be built within 30m of gas stations that say "Needs Power". + [CHANGED] Moved light bulb to farm loot table as it was to common on trash loots. + [ADDED] Fuel pump can be built near standard fuel source (i.e. rusty tanks) then powered with a generator to make a refuel station. + [CHANGED] R3f realism no more fade to black, changed to use dayz shaking and knockouts. + [ADDED] Reset tiredness when you take painkillers. + [ADDED] Reset tiredness when you sleep at a tent. + [ADDED] added back fixed rbull soda and added new can orange sherbet
269 lines
8.0 KiB
Plaintext
269 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;
|
|
if(!isNull _playerObj) then {
|
|
_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
|