• 0
BlackheartsGaming

Player Deaths being Reported as Killed by NPC

Question

Getting reports by players that the server is reporting that players their kills are sometimes being reported as killed by NPC and they are not getting the proper perks.

In researching the issue, I noticed changes to the onMPKilled event handler assigned to player objects.  Most notably the change to ExileServer_util_getFragKiller.

New code:

if ((typeOf _killer) isEqualTo "Exile_Unit_Player") then
	{
		_player = _killer;	
	}
	else 
	{
		_sessionID = _killer getVariable ["ExileSessionID", -1];
		if !(_sessionID isEqualTo -1) then
		{
			_player = _sessionID call ExileServer_system_session_getPlayerObject;
		};
	};

Previous Code:

	if ((typeOf _killer) isEqualTo "Exile_Unit_Player") then
	{
		_player = _killer;	
	}
	else 
	{
		_uid = getPlayerUID _killer;
		{
			if ((getPlayerUID _x) isEqualTo _uid) exitWith 
			{
				_player = _x;
			};
		}
		forEach allPlayers;
	};

For some reason the call to this function isn't returning that the killing player is in fact a player and then throws exception 4 in ExileServer_util_getFragType:

    if (isNull _killingPlayer) then
    {
        throw 4;
    };

For logging and statistic purposes I export every player kill to a database table and it's being reported properly, but I am not using the above code to determine that.

format["insertPlayerHistory:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11", getPlayerUID _victim, name _victim, _victimPosition select 0, _victimPosition select 1, _victimPosition select 2, _kName, _kUID, _kDistance, _killerPosition select 0, _killerPosition select 1, _killerPosition select 2] call ExileServer_system_database_query_fireAndForget;

_kName, and _KUID are derived from variable that are set higher in the file.  This was from an advanced logging mod that someone else wrote (my apologies for not crediting them here).

_kName = name _killer;
_kUID = getPlayerUID _killer;

Anyone else received any complaints?

I'll keep doing some more troubleshooting and testing and report back.

Share this post


Link to post
Share on other sites

25 answers to this question

  • 1

ExileServer_object_player_event_onMpKilled:

Spoiler

/**
 * ExileServer_object_player_event_onMpKilled
 *
 * Exile Mod
 * www.exilemod.com
 * © 2015 Exile Mod Team
 *
 * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. 
 * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
 */
 
private["_victim","_killer","_countDeath","_countKill","_killSummary","_killingPlayer","_killType","_oldVictimRespect","_newVictimRespect","_oldKillerRespect","_newKillerRespect","_systemChat","_modifyVictimRespect","_respectLoss","_perks","_minRespectTransfer","_respectTransfer","_perkNames","_killerStatsNeedUpdate","_newKillerFrags","_victimStatsNeedUpdate","_newVictimDeaths","_victimPosition"];
_victim = _this select 0;
_killer = _this select 1;
if (!isServer || hasInterface || isNull _victim) exitWith {};
_victim setVariable ["ExileDiedAt", time];
if !(isPlayer _victim) exitWith {};
_victim setVariable ["ExileIsDead", true]; 
_victim setVariable ["ExileName", name _victim, true]; 
_countDeath = false;
_countKill = false;
_killSummary = [];
_killingPlayer = _killer call ExileServer_util_getFragKiller;
_killType = [_victim, _killer, _killingPlayer] call ExileServer_util_getFragType;
_oldVictimRespect = _victim getVariable ["ExileScore", 0];
_newVictimRespect = _oldVictimRespect;
_oldKillerRespect = 0;
if !(isNull _killingPlayer) then 
{
	_oldKillerRespect = _killingPlayer getVariable ["ExileScore", 0];
};
_newKillerRespect = _oldKillerRespect;
switch (_killType) do 
{
	default 
	{
		_countDeath = true;
		_systemChat = format ["%1 died for an unknown reason!", name _victim];
		_newVictimRespect = _oldVictimRespect - round ((abs _oldVictimRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "unlucky")));
	};
	case 1:
	{
		_countDeath = true;
		_modifyVictimRespect = true;
		_systemChat = format ["%1 commited suicide!", name _victim];
		_newVictimRespect = _oldVictimRespect - round ((abs _oldVictimRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "suicide")));
	};
	case 2:
	{
		_countDeath = true;
		_countKill = false;
		_systemChat = format ["%1 died while playing Russian Roulette!", name _victim];
		_newVictimRespect = _oldVictimRespect; 
		_victim call ExileServer_system_russianRoulette_event_onPlayerDied;
	};
	case 3:
	{
		_countDeath = true;
		_countKill = false;
		_systemChat = format ["%1 crashed to death!", name _victim];
		_newVictimRespect = _oldVictimRespect - round ((abs _oldVictimRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "crash")));
	};
	case 4:
	{
		_countDeath = true;
		_countKill = false;
		_systemChat = format ["%1 was killed by an NPC!", name _victim];
		_newVictimRespect = _oldVictimRespect - round ((abs _oldVictimRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "npc")));
	};
	case 5:
	{
		_countDeath = false;
		_countKill = false;
		_systemChat = format ["%1 was team-killed by %2!", name _victim, name _killingPlayer];
		_respectLoss = round ((abs _oldKillerRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "friendyFire")));
		_newKillerRespect = _oldKillerRespect - _respectLoss;
		_killSummary pushBack ["FRIENDLY FIRE", -1 * _respectLoss];
	};
	case 6:
	{
		_countDeath = false;
		_countKill = false;
		_systemChat = format ["%1 was killed by %2! (BAMBI SLAYER)", name _victim, name _killingPlayer];
		_respectLoss = round ((abs _oldKillerRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "bambiKill")));
		_newKillerRespect = _oldKillerRespect - _respectLoss;
		_killSummary pushBack ["BAMBI SLAYER", -1 * _respectLoss];
	};
	case 7:
	{
		_countDeath = true;
		_countKill = true;
		_perks = [_victim, _killer, _killingPlayer] call ExileServer_util_getFragPerks;
		_minRespectTransfer = getNumber (configFile >> "CfgSettings" >> "Respect" >> "minRespectTransfer");
		_respectTransfer = round ((abs _oldVictimRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "frag")));
		if (_respectTransfer < _minRespectTransfer) then
		{
			_respectTransfer = _minRespectTransfer;
		};
		_newVictimRespect = _oldVictimRespect - _respectTransfer;
		_newKillerRespect = _oldKillerRespect + _respectTransfer;
		_killSummary pushBack ["ENEMY FRAGGED", _respectTransfer];
		if (_perks isEqualTo []) then 
		{
			_systemChat = format ["%1 was killed by %2!", name _victim, name _killingPlayer];
		}
		else 
		{
			_perkNames = [];
			{
				_perkNames pushBack (_x select 0);
				_killSummary pushBack _x;
				_newKillerRespect = _newKillerRespect + (_x select 1);
			} 
			forEach _perks;
			_systemChat = format ["%1 was killed by %2! (%3)", name _victim, name _killingPlayer, _perkNames joinString ", "];
		};
	};
};
if !(isNull _killingPlayer) then 
{
	if !(_killSummary isEqualTo []) then 
	{	
		[_killingPlayer, "showFragRequest", [_killSummary]] call ExileServer_system_network_send_to;
	};
};
if !(isNull _killingPlayer) then 
{
	_killerStatsNeedUpdate = false;
	if (_countKill) then
	{
		_newKillerFrags = _killingPlayer getVariable ["ExileKills", 0];
		_newKillerFrags = _newKillerFrags + 1;
		_killerStatsNeedUpdate = true;
		_killingPlayer setVariable ["ExileKills", _newKillerFrags];
		format["addAccountKill:%1", getPlayerUID _killingPlayer] call ExileServer_system_database_query_fireAndForget;
	};
	if !(_newKillerRespect isEqualTo _oldKillerRespect) then 
	{
		_killingPlayer setVariable ["ExileScore", _newKillerRespect];
		_killerStatsNeedUpdate = true;
		format["setAccountScore:%1:%2", _newKillerRespect, getPlayerUID _killingPlayer] call ExileServer_system_database_query_fireAndForget;
	};
	if (_killerStatsNeedUpdate) then 
	{
		_killingPlayer call ExileServer_object_player_sendStatsUpdate;
	};
};
_victimStatsNeedUpdate = false;
if (_countDeath) then
{
	_newVictimDeaths = _victim getVariable ["ExileDeaths", 0];
	_newVictimDeaths = _newVictimDeaths + 1;
	_victim setVariable ["ExileDeaths", _newVictimDeaths];
	_victimStatsNeedUpdate = true;
	format["addAccountDeath:%1", getPlayerUID _victim] call ExileServer_system_database_query_fireAndForget;
};
if !(_newVictimRespect isEqualTo _oldVictimRespect) then 
{
	_victim setVariable ["ExileScore", _newVictimRespect];
	_victimStatsNeedUpdate = true;
	format["setAccountScore:%1:%2", _newVictimRespect, getPlayerUID _victim] call ExileServer_system_database_query_fireAndForget;
};
if (_victimStatsNeedUpdate) then 
{
	_victim call ExileServer_object_player_sendStatsUpdate;
};
if ((vehicle _victim) isEqualTo _victim) then 
{
	if !(underwater _victim) then 
	{
		if !(_victim call ExileClient_util_world_isInTraderZone) then 
		{
			_victim call ExileServer_object_flies_spawn;
		};
	};
};
if !(_systemChat isEqualTo "") then 
{
	if ((getNumber (configFile >> "CfgSettings" >> "KillFeed" >> "showKillFeed")) isEqualTo 1) then 
	{
		["systemChatRequest", [_systemChat]] call ExileServer_system_network_send_broadcast;
	};
};
if !(_systemChat isEqualTo "") then 
{
	if ((getNumber (configFile >> "CfgSettings" >> "Logging" >> "deathLogging")) isEqualTo 1) then
	{
		"extDB2" callExtension format["1:DEATH:%1", _systemChat];
	};
};
_victimPosition = getPos _victim;
format["insertPlayerHistory:%1:%2:%3:%4:%5", getPlayerUID _victim, name _victim, _victimPosition select 0, _victimPosition select 1, _victimPosition select 2] call ExileServer_system_database_query_fireAndForget;
format["deletePlayer:%1", _victim getVariable ["ExileDatabaseId", -1]] call ExileServer_system_database_query_fireAndForget;
true

 

ExileServer_util_getFragType:

Spoiler

/**
 * ExileServer_util_getFragType
 *
 * Exile Mod
 * www.exilemod.com
 * © 2015 Exile Mod Team
 *
 * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. 
 * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
 */
 
private["_victim","_killer","_killingPlayer","_type","_victimClanId","_killerClanId"];
_victim = _this select 0;
_killer = _this select 1;
_killingPlayer = _this select 2;
_type = 0;
try 
{
	if (_victim getVariable ["IsPlayingRussianRoulette", false]) then 
	{
		throw 2;
	};
	if (_victim isEqualTo _killer) then
	{
		throw 1;
	};
	if ((vehicle _victim) isEqualTo _killer) then
	{
		throw 3;
	};
	if (isNull _killer) then
	{
		throw 0;
	};
	if (isNull _killingPlayer) then 
	{
		throw 4;
	};
	if ((group _victim) isEqualTo (group _killingPlayer)) then 
	{
		throw 5;
	};
	_victimClanId = _victim getVariable ["ExileClanID", -2];
	_killerClanId = _killer getVariable ["ExileClanID", -3];
	if (!(_victimClanId isEqualTo -1) && (_victimClanId isEqualTo _killerClanId)) then
	{
		throw 5;
	};		
	if (_victim getVariable ["ExileIsBambi", false]) then 
	{
		throw 6;
	};
	throw 7;
}
catch 
{
	_type = _exception;
};
_type

 

 

Edited by kuplion
Correct file added..
  • Like 1

Share this post


Link to post
Share on other sites
Advertisement
  • 0

No I am not.  I am using extended stats logging (I cannot find the original post to credit the author).  Here is my MPKilled file.  I'll highlight the lines that are different from the default exile file for you.

Spoiler

/**
 * ExileServer_object_player_event_onMpKilled
 *
 * Exile Mod
 * www.exilemod.com
 * © 2015 Exile Mod Team
 *
 * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
 * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
 */
 
private["_victim", "_killer", "_instigator", "_countDeath", "_countKill", "_killSummary", "_killingPlayer", "_killType", "_oldVictimRespect", "_newVictimRespect", "_oldKillerRespect", "_newKillerRespect", "_unknownReasons", "_systemChat", "_modifyVictimRespect", "_respectLoss", "_perks", "_minRespectTransfer", "_respectTransfer", "_perkNames", "_killerStatsNeedUpdate", "_newKillerFrags", "_victimStatsNeedUpdate", "_newVictimDeaths", "_victimPosition"];
_victim = _this select 0;
_killer = _this select 1;
_instigator = _this select 2;
_kName = name _killer;
_kUID = getPlayerUID _killer;
_kDistance = floor(_victim distance _killer);

if (!isServer || hasInterface || isNull _victim) exitWith {};
_victim setVariable ["ExileDiedAt", time];
if !(isPlayer _victim) exitWith {};
_victim setVariable ["ExileIsDead", true];
_victim setVariable ["ExileName", name _victim, true];
_countDeath = false;
_countKill = false;
_killSummary = [];
_killingPlayer = _killer call ExileServer_util_getFragKiller;

diag_log format["BH _killingPlayer: %1",_killingPlayer];

_killType = [_victim, _killer, _killingPlayer, _instigator] call ExileServer_util_getFragType;
_oldVictimRespect = _victim getVariable ["ExileScore", 0];
_newVictimRespect = _oldVictimRespect;
_oldKillerRespect = 0;
if !(isNull _killingPlayer) then
{
    _oldKillerRespect = _killingPlayer getVariable ["ExileScore", 0];
};
_newKillerRespect = _oldKillerRespect;
switch (_killType) do
{
    default
    {
        _unknownReasons =
        [
            "%1 died because... Arma.",
            "%1 died because the universe hates him.",
            "%1 died a mysterious death.",
            "%1 died and nobody knows why.",
            "%1 died because that's why.",
            "%1 died because %1 was very unlucky.",
            "%1 died due to Arma bugs and is probably very salty right now.",
            "%1 died an awkward death.",
            "%1 died. Yes, %1 is dead. Like really dead-dead."
        ];
        _countDeath = true;
        _systemChat = format [selectRandom _unknownReasons, name _victim];
        _newVictimRespect = _oldVictimRespect - round ((abs _oldVictimRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "unlucky")));
    };
    case 1:
    {
        _countDeath = true;
        _modifyVictimRespect = true;
        _systemChat = format ["%1 commited suicide!", name _victim];
        _newVictimRespect = _oldVictimRespect - round ((abs _oldVictimRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "suicide")));
    };
    case 2:
    {
        _countDeath = true;
        _countKill = false;
        _systemChat = format ["%1 died while playing Russian Roulette!", name _victim];
        _newVictimRespect = _oldVictimRespect;
        _victim call ExileServer_system_russianRoulette_event_onPlayerDied;
    };
    case 3:
    {
        _countDeath = true;
        _countKill = false;
        _systemChat = format ["%1 crashed to death!", name _victim];
        _newVictimRespect = _oldVictimRespect - round ((abs _oldVictimRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "crash")));
    };
    case 4:
    {
        _countDeath = true;
        _countKill = false;
        _systemChat = format ["%1 was killed by an NPC!", name _victim];
        _newVictimRespect = _oldVictimRespect - round ((abs _oldVictimRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "npc")));
    };
    case 5:
    {
        _countDeath = false;
        _countKill = false;
        _systemChat = format ["%1 was team-killed by %2!", name _victim, name _killingPlayer];
        _respectLoss = round ((abs _oldKillerRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "friendyFire")));
        _newKillerRespect = _oldKillerRespect - _respectLoss;
        _killSummary pushBack ["FRIENDLY FIRE", -1 * _respectLoss];
    };
    case 6:
    {
        _countDeath = false;
        _countKill = false;
        _systemChat = format ["%1 was killed by %2! (BAMBI SLAYER)", name _victim, name _killingPlayer];
        _respectLoss = round ((abs _oldKillerRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "bambiKill")));
        _newKillerRespect = _oldKillerRespect - _respectLoss;
        _killSummary pushBack ["BAMBI SLAYER", -1 * _respectLoss];
    };
    case 7:
    {
        _countDeath = true;
        _countKill = true;
        _perks = [_victim, _killer, _killingPlayer] call ExileServer_util_getFragPerks;
        _minRespectTransfer = getNumber (configFile >> "CfgSettings" >> "Respect" >> "minRespectTransfer");
        _respectTransfer = round ((abs _oldVictimRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "frag")));
        if (_respectTransfer < _minRespectTransfer) then
        {
            _respectTransfer = _minRespectTransfer;
        };
        _newVictimRespect = _oldVictimRespect - _respectTransfer;
        _newKillerRespect = _oldKillerRespect + _respectTransfer;
        _killSummary pushBack ["ENEMY FRAGGED", _respectTransfer];
        if (_perks isEqualTo []) then
        {
            _systemChat = format ["%1 was killed by %2!", name _victim, name _killingPlayer];
        }
        else
        {
            _perkNames = [];
            {
                _perkNames pushBack (_x select 0);
                _killSummary pushBack _x;
                _newKillerRespect = _newKillerRespect + (_x select 1);
            }
            forEach _perks;
            _systemChat = format ["%1 was killed by %2! (%3)", name _victim, name _killingPlayer, _perkNames joinString ", "];
        };
    };
};
if !(isNull _killingPlayer) then
{
    if !(_killSummary isEqualTo []) then
    {    
        [_killingPlayer, "showFragRequest", [_killSummary]] call ExileServer_system_network_send_to;
    };
};
if !(isNull _killingPlayer) then
{
    _killerStatsNeedUpdate = false;
    if (_countKill) then
    {
        _newKillerFrags = _killingPlayer getVariable ["ExileKills", 0];
        _newKillerFrags = _newKillerFrags + 1;
        _killerStatsNeedUpdate = true;
        _killingPlayer setVariable ["ExileKills", _newKillerFrags];
        format["addAccountKill:%1", getPlayerUID _killingPlayer] call ExileServer_system_database_query_fireAndForget;
    };
    if !(_newKillerRespect isEqualTo _oldKillerRespect) then
    {
        _killingPlayer setVariable ["ExileScore", _newKillerRespect];
        _killerStatsNeedUpdate = true;
        format["setAccountScore:%1:%2", _newKillerRespect, getPlayerUID _killingPlayer] call ExileServer_system_database_query_fireAndForget;
    };
    if (_killerStatsNeedUpdate) then
    {
        _killingPlayer call ExileServer_object_player_sendStatsUpdate;
    };
};
_victimStatsNeedUpdate = false;
if (_countDeath) then
{
    _newVictimDeaths = _victim getVariable ["ExileDeaths", 0];
    _newVictimDeaths = _newVictimDeaths + 1;
    _victim setVariable ["ExileDeaths", _newVictimDeaths];
    _victimStatsNeedUpdate = true;
    format["addAccountDeath:%1", getPlayerUID _victim] call ExileServer_system_database_query_fireAndForget;
};
if !(_newVictimRespect isEqualTo _oldVictimRespect) then
{
    _victim setVariable ["ExileScore", _newVictimRespect];
    _victimStatsNeedUpdate = true;
    format["setAccountScore:%1:%2", _newVictimRespect, getPlayerUID _victim] call ExileServer_system_database_query_fireAndForget;
};
if (_victimStatsNeedUpdate) then
{
    _victim call ExileServer_object_player_sendStatsUpdate;
};
if ((vehicle _victim) isEqualTo _victim) then
{
    if !(underwater _victim) then
    {
        if !(_victim call ExileClient_util_world_isInTraderZone) then
        {
            _victim call ExileServer_object_flies_spawn;
        };
    };
};
if !(_systemChat isEqualTo "") then
{
    if ((getNumber (configFile >> "CfgSettings" >> "KillFeed" >> "showKillFeed")) isEqualTo 1) then
    {
        ["systemChatRequest", [_systemChat]] call ExileServer_system_network_send_broadcast;
    };
};
if !(_systemChat isEqualTo "") then
{
    if ((getNumber (configFile >> "CfgSettings" >> "Logging" >> "deathLogging")) isEqualTo 1) then
    {
        "extDB2" callExtension format["1:DEATH:%1", _systemChat];
    };
};
_victimPosition = getPos _victim;
_killerPosition = getPos _killer;
format["insertPlayerHistory:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11", getPlayerUID _victim, name _victim, _victimPosition select 0, _victimPosition select 1, _victimPosition select 2, _kName, _kUID, _kDistance, _killerPosition select 0, _killerPosition select 1, _killerPosition select 2] call ExileServer_system_database_query_fireAndForget;

//format["insertPlayerHistory:%1:%2:%3:%4:%5", getPlayerUID _victim, name _victim, _victimPosition select 0, _victimPosition select 1, _victimPosition select 2] call ExileServer_system_database_query_fireAndForget;
format["deletePlayer:%1", _victim getVariable ["ExileDatabaseId", -1]] call ExileServer_system_database_query_fireAndForget;
true

I'm outputting the variable for _killingPlayer to the log file now to try and see if this isn't getting set properly and then returning code 4.  I'll do some more data gathering for you.  Thanks!

 

Share this post


Link to post
Share on other sites
  • 0

I've tested this more here is what I found.

Using the default code in ExileServer_util_getFragKiller, the _player variable returned when the killing player is in an armed vehicle (tested with default armed Exile cars and the Huey), is _killingPlayer: <NULL-object>" which results in the code 4, NPC.

Reverting the code (ExileServer_util_getFragKiller.sqf) back to 1.0.2, the killing player is reported properly.

This only happens when a player kills another player from an armed vehicle.  Player kills with weapons are not effected.

 

  • Like 1

Share this post


Link to post
Share on other sites
  • 0

Revert the code in ExileServer_util_getFragKiller.sqf to:

	//if ((typeOf _killer) isEqualTo "Exile_Unit_Player") then
	//{
	//	_player = _killer;	
	//}
	//else 
	//{
	//	_sessionID = _killer getVariable ["ExileSessionID", -1];
	//	if !(_sessionID isEqualTo -1) then
	//	{
	//		_player = _sessionID call ExileServer_system_session_getPlayerObject;
	//	};
	//};
	if ((typeOf _killer) isEqualTo "Exile_Unit_Player") then
	{
		_player = _killer;	
	}
	else 
	{
		_uid = getPlayerUID _killer;
		{
			if ((getPlayerUID _x) isEqualTo _uid) exitWith 
			{
				_player = _x;
			};
		}
		forEach allPlayers;
	};

See if this fixes the issue and report back so the Devs can have a deeper look.

Share this post


Link to post
Share on other sites
  • 0

Use ExileServer_object_player_event_onMpKilled.sqf, and ExileServer_util_getFragKiller.sqf from 1.0.2 (as customcode overrides) and it will fix this. It's an issue with an Arma function being broken, not the Exile update.

Share this post


Link to post
Share on other sites
Advertisement

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.