Death msgs on dayz.st

machine

Well-Known Member
Can someone help me with death messages on dayz.st? I would also like to add it to the dayz.st wiki so others can do the same.
 
not sure what i missed here. got it installed servers running but no death messages.

Code:
private["_characterID","_minutes","_newObject","_playerID","_key","_playerName","_playerID","_myGroup","_group","_victim", "_killer", "_weapon", "_message", "_distance","_loc_message","_victimName","_killerName","_killerPlayerID"];
//[unit, weapon, muzzle, mode, ammo, magazine, projectile]
_characterID =    _this select 0;
_minutes =        _this select 1;
_newObject =    _this select 2;
_playerID =    _this select 3;
_playerName =    _this select 4;
 
_victim removeAllEventHandlers "MPHit";
 
_victim = _this select 2;
_victimName = _victim getVariable["bodyName", "nil"];
 
_killer = _victim getVariable["AttackedBy", "nil"];
_killerName = _victim getVariable["AttackedByName", "nil"];
 
// when a zombie kills a player _killer, _killerName and _weapon will be "nil"
// we can use this to determine a zombie kill and send a customized message for that. right now no killmsg means it was a zombie.
if (_killerName != "nil") then
{
    _weapon = _victim getVariable["AttackedByWeapon", "nil"];
    _distance = _victim getVariable["AttackedFromDistance", "nil"];
 
    if (_victimName == _killerName) then
    {
        _message = format["%1 killed himself",_victimName];
        _loc_message = format["PKILL: %1 killed himself", _victimName];
    }
    else
    {
        _killerPlayerID = getPlayerUID _killer;
        _message = format["%1 was owned by %2 with a damn %3 from %4m",_victimName, _killerName, _weapon, _distance];
        _loc_message = format["PKILL: %1 (%5) was killed by %2 (%6) with weapon %3 from %4m", _victimName, _killerName, _weapon, _distance, _playerID, _killerPlayerID];
    };
 
    diag_log _loc_message;
    [nil, nil, rspawn, [_killer, _message], { (_this select 0) globalChat (_this select 1) }] call RE;
    //[nil, nil, rHINT, _message] call RE;
 
    // Cleanup
    _victim setVariable["AttackedBy", "nil", true];
    _victim setVariable["AttackedByName", "nil", true];
    _victim setVariable["AttackedByWeapon", "nil", true];
    _victim setVariable["AttackedFromDistance", "nil", true];
};
 
dayz_disco = dayz_disco - [_playerID];
 
_newObject setVariable["processedDeath",time];
 
/*
diag_log ("DW_DEBUG: (isnil _characterID): " + str(isnil "_characterID"));
if (isnil "_characterID") then {
diag_log ("DW_DEBUG: _newObject: " + str(_newObject));   
    };
*/
 
if (typeName _minutes == "STRING") then
{
    _minutes = parseNumber _minutes;
};
 
if (_characterID != "0") then
{
    _key = format["CHILD:202:%1:%2:",_characterID,_minutes];
    //diag_log ("HIVE: WRITE: "+ str(_key));
    _key call server_hiveWrite;
}
else
{
    deleteVehicle _newObject;
};
 
diag_log ("PDEATH: Player Died " + _playerID);
/*
_eh = [_newObject] spawn {
    _body = _this select 0;
    _method = _body getVariable["deathType","unknown"];
    _name = _body getVariable["bodyName","unknown"];
    waitUntil{!isPlayer _body;sleep 1};
    _body setVariable["deathType",_method,true];
    _body setVariable["bodyName",_name,true];
    diag_log ("PDEATH: Player Left Body " + _name);
};
*/
//dead_bodyCleanup set [count dead_bodyCleanup,_newObject];
 
Playersetup.sqf

Code:
private ["_characterID","_doLoop","_playerID","_playerObj","_randomSpot","_primary","_key","_worldspace","_score","_position","_pos","_isIsland","_medical","_stats","_state","_dummy","_debug","_distance","_hit","_fractures","_w","_findSpot","_humanity","_clientID"];//Set Variables
//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;
 
//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;
    };
 
    //_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 into random
    _findSpot = true;
    _mkr = "";
    while {_findSpot} do {
        _counter = 0;
        while {_counter < 20 and _findSpot} do {
            _mkr = "spawn" + str(round(random 4));
            _position = ([(getMarkerPos _mkr),0,1500,10,0,2000,1] 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];
 
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
 
*EDIT*

Hello Machine...


According to the wiki, the line:
server/init/server_functions.sqf
was supposed to be replaced in dayz_server/compile/server_playerSetup.sqf. However, the newer dayz.st server_functions file does not contain this line. I think there is a conflict because this code still exists, but under an alternative name.
 
*EDIT*

Hello Machine...


According to the wiki, the line:
server/init/server_functions.sqf
was supposed to be replaced in dayz_server/compile/server_playerSetup.sqf. However, the newer dayz.st server_functions file does not contain this line. I think there is a conflict because this code still exists, but under an alternative name.

Maybe the server/init/server_functions.sqf is suppose to be in there? server functions calls out the server_playersetup.sqf and server_playerdied.sqf.

Such as:
Code:
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;
};
server/init/server_functions.sqf

EDIT!!!

That does not work lmao. Stalled the server.
 
you need to add this in your server_functions.sqf by compile preprocessFileLineNumbers
Code:
fnc_plyrHit  = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\fnc_plyrHit.sqf";
 
thanks dirtbikr59!

That line was accidentally left in there. I have updated the wiki to reflect this.

That is what I get for hurrying.
 
Do you guys have any idea how to make it to where its not only friendly fire? Ideally i would like it to be anyone that kills anyone. Is this not workable to have that?
 
you need to add this in your server_functions.sqf by compile preprocessFileLineNumbers
Code:
fnc_plyrHit  = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\fnc_plyrHit.sqf";

+1 after doing this it works on my teams dayztaviana2.0 server. rpt file shows who shot who and player died messages :)
 
Back
Top