Files
DayZ-Epoch/SQF/dayz_server/compile/server_playerDied.sqf
ebayShopper f2360a9cd8 Do not use localize on server machine
These were resulting in sloppy mixed language sentences.

The server language never changes, so localize should not be used server
side, unless complete translations are added for all logs, which is not
worth the effort. Only admins see them, unlike client side strings which
are seen by everyone.
2017-11-05 15:05:59 -05:00

111 lines
4.1 KiB
Plaintext

#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","_english"];
//[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 = toString (_this select 7);
_distance = _this select 8;
_method = _this select 9;
//Mark player as dead so we bypass the ghost system
dayz_died set [count dayz_died, _playerID];
_newObject setVariable ["bodyName",_playerName,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;
};
#ifdef PLAYER_DEBUG
diag_log format ["Player UID#%3 CID#%4 %1 as %5 died at %2",
_newObject call fa_plr2str, _pos call fa_coor2str,
_playerID, _characterID,
typeOf _newObject
];
#endif
// DEATH MESSAGES
_suicide = ((_sourceName == _playerName) or (_method == "suicide"));
if (_method in ["explosion","melee","shot","shothead","shotheavy","suicide"] && !(_method == "explosion" && (_suicide or _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]];
};
} 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" or _sourceName != "unknown") then {
if (toLower DZE_DeathMsgChat != "none" or DZE_DeathMsgRolling or 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,"AI"];
};
_english = [ //Do not use localize on server machine
"shot","a gunshot wound.",
"shothead","a gunshot to the head.",
"shotheavy","a large calibre gunshot.",
"bled","blood loss.",
"dehyd","dehydration.",
"sick","infection.",
"starve","starvation.",
"combatlog","combat logging.",
"explosion","an explosion.",
"unknown","an unknown cause.",
"zombie","the infected.",
"fall","falling.",
"crash","a vehicle crash.",
"runover","being run over.",
"eject","falling out of a moving vehicle.",
"melee","blunt force trauma.",
"rad","radiation.",
"crushed","being crushed."
];
_message = switch _type do {
case "died": {format ["%1 died from %2", _bodyName, (_english select ((_english find (_message select 2))+1))]};
case "killed": {format ["%1 was killed by %2 with a %3 from %4m", _bodyName, _message select 2, _message select 3, _message select 4]};
case "suicide": {format ["%1 committed suicide", _bodyName]};
};
diag_log format["DeathMessage: %1",_message];
};
_newObject setDamage 1;
_newObject setOwner 0;
//dead_bodyCleanup set [count dead_bodyCleanup,_newObject];