#include "\z\addons\dayz_server\compile\server_toggle_debug.hpp" private ["_characterID","_minutes","_newObject","_playerID","_playerName","_key","_pos","_infected","_sourceName","_sourceWeapon","_distance","_message","_method","_suicide","_bodyName","_type","_sourceID"]; //[unit, weapon, muzzle, mode, ammo, magazine, projectile] _characterID = _this select 0; _minutes = _this select 1; _newObject = _this select 2; _playerID = _this select 3; _playerName = toString (_this select 4); //Sent as array to avoid publicVariable value restrictions _infected = _this select 5; _sourceName = toString (_this select 6); _sourceWeapon = _this select 7; _distance = _this select 8; _method = _this select 9; _sourceID = _this select 10; //Mark player as dead so we bypass the ghost system dayz_died set [count dayz_died, _playerID]; _newObject setVariable ["bodyName",_playerName,true]; _newObject setVariable ["bodyUID",_playerID,true]; _pos = getPosATL _newObject; // force to follow the terrain slope in sched_corpses.sqf //if (_pos select 2 < 0.1) then {_pos set [2,0];}; //_newObject setVariable ["deathPos",_pos]; if (typeName _minutes == "STRING") then {_minutes = parseNumber _minutes;}; if (_characterID != "0") then { _key = format["CHILD:202:%1:%2:%3:",_characterID,_minutes,_infected]; //diag_log ("HIVE: WRITE: "+ str(_key)); _key call server_hiveWrite; }; diag_log format ["Player %1(%3) died as %5 at %2 CharID: %4", _newObject call fa_plr2str, _pos call fa_coor2str, _playerID, _characterID, typeOf _newObject ]; // DEATH MESSAGES _suicide = ((_sourceName == _playerName) or (_method == "suicide")); if (_method in ["explosion","melee","shot","shothead","shotheavy","suicide"] && {!(_method == "explosion" && {_suicide || {_sourceName == "unknown"}})}) then { if (_suicide) then { _message = ["suicide",_playerName]; } else { if (_sourceWeapon == "") then {_sourceWeapon = "unknown weapon";}; _message = ["killed",_playerName,_sourceName,_sourceWeapon,_distance]; // Store death messages to allow viewing at message board in trader citys. PlayerDeaths set [count PlayerDeaths,[_playerName,_sourceName,_sourceWeapon,_distance,[(ServerCurrentTime select 3), (ServerCurrentTime select 4)]]]; }; } else { // No source name, distance or weapon needed: "%1 died from %2" str_death_%1 (see stringtable) // Possible methods: ["bled","combatlog","crash","crushed","dehyd","eject","fall","starve","sick","rad","runover","unknown","zombie"] _message = ["died",_playerName,_method]; }; if (_playerName != "unknown" || {_sourceName != "unknown"}) then { if (toLower DZE_DeathMsgChat != "none" || {DZE_DeathMsgRolling} || {DZE_DeathMsgDynamicText}) then { PVDZE_deathMessage = _message; //Don't use regular PV here since JIP clients don't need it owner _newObject publicVariableClient "PVDZE_deathMessage"; //Send to dead player (not in playableUnits) { if !(getPlayerUID _x in ["",_playerID]) then { owner _x publicVariableClient "PVDZE_deathMessage"; }; } count playableUnits; }; _type = _message select 0; _bodyName = _message select 1; if (_type == "killed" && {_sourceName == "AI"}) then { _message set [2, (localize "STR_PLAYER_AI")]; }; _message = call { if (_type == "died") exitwith {format ["%1(%3) died from %2", _bodyName, localize format["str_death_%1",_message select 2],_playerID]}; if (_type == "killed") exitwith {format ["%1(%5) was killed by %2(%6) with %3 from %4m", _bodyName, _message select 2, _message select 3, _message select 4,_playerID,_sourceID]}; if (_type == "suicide") exitwith {format ["%1(%2) committed suicide", _bodyName,_playerID]}; }; diag_log format["DeathMessage: %1",_message]; }; _newObject setDamage 1; _newObject setOwner 0; //dead_bodyCleanup set [count dead_bodyCleanup,_newObject];