Files
DayZ-Epoch/dayz_server/compile/server_playerSetup.sqf
vbawol 95c8bc5205 1.0.1.2 RC1
+ [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
2013-06-20 09:03:48 -05:00

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