Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private["_raidKill","_territoryKill","_vehicle","_logStat","_killerID","_killerNPC","_systemChat","_killer","_respectTransferVictim", "_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;
- _bambislayer = 0;
- _killerNPC = 0;
- _territoryKill = 0;
- _raidKill = 0;
- _logStat = true;
- diag_log "[STAT TRACKER] FIRED MPKILLED!";
- params[["_victim",objNull],["_killer",objNull]];
- if(isNil "XG_DataBaseLog") then
- {
- XG_DataBaseLog = compileFinal
- "
- params[['_killer',objNull],['_victim',objNull]];
- _killerName = name _killer;
- _killerUID = getPlayerUID _killer;
- _victimName = name _victim;
- _victimUID = getPlayerUID _victim;
- _killerWeapon = getText(configFile >> 'CfgWeapons' >> (currentWeapon _killer) >> 'displayName');
- _killerVehicle = getText(configFile >> 'CfgVehicles' >> (typeof (vehicle _killer)) >> 'displayName');
- _distance = round(_killer distance _victim);
- format['XG_LogKill:%1:%2:%3:%4:%5:%6:%7',_victimUID,_victimName,_killerUID,_killerName,_killerWeapon,_killerVehicle,_distance] call ExileServer_system_database_query_fireAndForget;
- ";
- };
- _XG_Fnc_Killed_Handle =
- {
- _vehicleMessage =
- {
- params[["_killer",objNull],["_victim",objNull],"_type"];
- _vehicle = vehicle _killer;
- _display = getText(configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "displayName");
- _vehicleRole = _killer call ExileClient_util_vehicle_getRole;
- switch (_vehicleRole) do
- {
- case "driver":
- {
- switch (true) do
- {
- case (_vehicle isKindOf "ParachuteBase"):
- {
- _type = "Driver:Para";
- };
- case (_vehicle isKindOf "Air"):
- {
- _type = "Driver:Air";
- };
- default
- {
- _type = "Driver:Vehicle";
- };
- };
- };
- case "turret":
- {
- if ((currentWeapon _killer) isKindOf "StaticWeapon") then
- {
- _type = "Turret:Static";
- }
- else
- {
- _type = "Turret:Vehicle";
- };
- };
- default
- {
- _type = "Cargo:Vehicle";
- };
- };
- ["Vehicle",_type,_killer,_victim] call _XG_fnc_Send_Killed;
- };
- _playerMessage =
- {
- params[["_killer",objNull],["_victim",objNull],"_type"];
- if!((currentWeapon _killer) isEqualTo "") then
- {
- _type = "Weapon";
- }
- else
- {
- _type = "NoWeapon";
- };
- ["Player",_type,_killer,_victim] call _XG_fnc_Send_Killed;
- };
- params[["_killer",objNull],["_victim",objNull],"_return"];
- _vehicle = vehicle _killer;
- if(_vehicle isEqualTo _killer) then
- {
- if((typeOf _vehicle) isEqualTo "Exile_Unit_Player") then
- {
- [_killer,_victim] call _playerMessage;
- }
- else
- {
- [_killer,_victim] call _vehicleMessage;
- };
- }
- else
- {
- [_killer,_victim] call _vehicleMessage;
- };
- [_killer,_victim] call XG_DataBaseLog;
- };
- _XG_fnc_Send_Killed =
- {
- [
- "KillMessages",
- _this
- ] call ExileServer_system_network_send_broadcast;
- };
- 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, _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 because he died.",
- "%1 died because he likes Fortnite.",
- "%1 died. Yes, %1 is dead. Like really dead-dead."
- ];
- _countDeath = true;
- _systemChat = format [selectRandom _unknownReasons, name _victim];
- ["Exile","Unknown",_killer,_victim] call _XG_fnc_Send_Killed;
- _newVictimRespect = _oldVictimRespect - round ((abs _oldVictimRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "unlucky")));
- _logStat = false;
- };
- case 1:
- {
- private["_zombieKill"];
- _victimPosition = position _victim;
- _bystanders = _victimPosition nearEntities ['Man',5];
- _zombieKill = false;
- {
- _zombieKill = getText(configFile >> 'CfgVehicles' >> typeOf _x >> 'author') isEqualTo 'Ryan';
- } forEach _bystanders;
- if(_zombieKill) then
- {
- _countDeath = false;
- _modifyVictimRespect = true;
- _zombieDeath = selectRandom ["was killed", "was eaten", "got absolutely obliterated"]; //Add more messages here to change the killed text
- _systemChat = format ["%1 %2 by a zombie!", name _victim, _zombieDeath];
- _newVictimRespect = _oldVictimRespect - round ((abs _oldVictimRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "suicide")));
- ["Exile","Zombie",_killer,_victim] call _XG_fnc_Send_Killed;
- }
- else
- {
- _countDeath = false;
- _modifyVictimRespect = true;
- _systemChat = format ["%1 commited suicide!", name _victim];
- _newVictimRespect = _oldVictimRespect - round ((abs _oldVictimRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "suicide")));
- ["Exile","Suicide",_killer,_victim] call _XG_fnc_Send_Killed;
- _logStat = false;
- };
- };
- case 2:
- {
- _countDeath = false;
- _countKill = false;
- _systemChat = format ["%1 died while playing Russian Roulette!", name _victim];
- ["Exile","Roulette",_killer,_victim] call _XG_fnc_Send_Killed;
- _newVictimRespect = _oldVictimRespect;
- _victim call ExileServer_system_russianRoulette_event_onPlayerDied;
- _logStat = false;
- };
- case 3:
- {
- _countDeath = false;
- _countKill = false;
- _systemChat = format ["%1 crashed to death!", name _victim];
- ["Exile","Crashed",_killer,_victim] call _XG_fnc_Send_Killed;
- _newVictimRespect = _oldVictimRespect - round ((abs _oldVictimRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "crash")));
- _logStat = false;
- };
- case 4:
- {
- _countDeath = false;
- _countKill = false;
- _systemChat = format ["%1 was killed by an NPC!", name _victim];
- ["Exile","NPC",_killer,_victim] call _XG_fnc_Send_Killed;
- _newVictimRespect = _oldVictimRespect - round ((abs _oldVictimRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "npc")));
- _killerNPC = 1;
- _logStat = true;
- };
- case 5:
- {
- _countDeath = false;
- _countKill = false;
- _systemChat = format ["%2 team-killed %1!", name _victim, name _killingPlayer];
- ["Exile","TK",_killer,_victim] call _XG_fnc_Send_Killed;
- _systemChat call _XG_fnc_Send_Killed;
- _respectLoss = round ((abs _oldKillerRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "friendyFire")));
- _newKillerRespect = _oldKillerRespect - _respectLoss;
- _killSummary pushBack ["FRIENDLY FIRE", -1 * _respectLoss];
- _logStat = false;
- };
- case 6:
- {
- _countDeath = false;
- _countKill = false;
- _systemChat = format ["%2 killed %1! (BAMBI SLAYER)", name _victim, name _killingPlayer];
- ["Exile","BAMBI",_killer,_victim] call _XG_fnc_Send_Killed;
- _respectLoss = round ((abs _oldKillerRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "bambiKill")));
- _newKillerRespect = _oldKillerRespect - _respectLoss;
- _killSummary pushBack ["BAMBI SLAYER", -1 * _respectLoss];
- _bambislayer = 1;
- _logStat = true;
- diag_log "[STAT TRACKER] BAMBI KILLED!";
- };
- case 7:
- {
- _logStat = true;
- private["_weapon","_weaponDisplayName","_weaponScope","_weaponScopeDisplayName","_vehicle"];
- _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")));
- _respectTransferVictim = round ((abs _oldVictimRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "fragvictim")));
- // _weapon = currentWeapon _killer;
- if !((vehicle _killer) isEqualTo _killer) then
- {
- _weapon = currentWeapon (gunner (vehicle _killer));
- };
- _weapon = currentWeapon _killer;
- if (currentWeapon _killer isEqualTo secondaryWeapon _killer && {!((primaryWeapon _killer) isEqualTo "")} || (currentWeapon _killer isEqualTo "Binocular") || (currentWeapon _killer isEqualTo "Rangefinder")) then
- {
- _weapon = primaryWeapon _killer;
- };
- _weaponDisplayName = getText (configfile >> "CfgWeapons" >> _weapon >> "displayName");
- _weaponScope = "";
- _weaponScopeDisplayName = "Iron Sights";
- if ((vehicle _killer) isEqualTo _killer) then
- {
- _weaponScope = (_killer weaponAccessories (currentWeapon _killer)) select 2;
- if !(_weaponScope isEqualTo "") then
- {
- _weaponScopeDisplayName = getText (configfile >> "CfgWeapons" >> _weaponScope >> "displayName");
- };
- };
- if (_respectTransfer < _minRespectTransfer) then
- {
- _respectTransfer = _minRespectTransfer;
- };
- _newVictimRespect = _oldVictimRespect - _respectTransferVictim; // NEW VARIABLE 10% VICTIM
- _newKillerRespect = _oldKillerRespect + _respectTransfer;
- _killSummary pushBack ["ENEMY FRAGGED", _respectTransfer];
- if (_perks isEqualTo []) then
- {
- if ((vehicle _killer) isEqualTo _killer) then
- {
- _systemChat = format ["%2 killed %1 with a %3 (%4)", name _victim, name _killingPlayer, _weaponDisplayName, _weaponScopeDisplayName];
- }
- else
- {
- _systemChat = format ["%2 killed %1", name _victim, name _killingPlayer];
- };
- [_killer,_victim] call _XG_Fnc_Killed_Handle;
- }
- else
- {
- if ((vehicle _killer) isEqualTo _killer) then
- {
- _perkNames = [];
- {
- _perkNames pushBack (_x select 0);
- _killSummary pushBack _x;
- _newKillerRespect = _newKillerRespect + (_x select 1);
- }
- forEach _perks;
- _systemChat = format ["%2 killed %1 with a %3 (%4)! (%5)", name _victim, name _killingPlayer, _weaponDisplayName, _weaponScopeDisplayName, _perkNames joinString ", "];
- [_killer,_victim] call _XG_Fnc_Killed_Handle;
- }
- else
- {
- _perkNames = [];
- {
- _perkNames pushBack (_x select 0);
- _killSummary pushBack _x;
- _newKillerRespect = _newKillerRespect + (_x select 1);
- }
- forEach _perks;
- _systemChat = format ["%2 killed %1! (%3)", name _victim, name _killingPlayer, _perkNames joinString ", "];
- [_killer,_victim] call _XG_Fnc_Killed_Handle;
- };
- };
- // ROADKILL TEST
- if !(_vehicle isEqualTo _killingPlayer) then
- {
- _vehicleRole = _killingPlayer call ExileClient_util_vehicle_getRole;
- switch (_vehicleRole) do
- {
- case "driver":
- {
- _weapontxt = "RoadKill";
- };
- };
- _systemChat = format ["%2 drove over %1! *SPLAT*", name _victim, name _killingPlayer];
- [_killer,_victim] call _XG_Fnc_Killed_Handle;
- };
- // ROADKILL TEST
- };
- };
- 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];
- ['A3_KILL_LOG',_systemChat] call FNC_A3_CUSTOMLOG;
- _weapon = currentWeapon _killer;
- _weapontxt = (gettext (configFile >> 'cfgWeapons' >> _weapon >> 'displayName'));
- _distance = floor(_victim distance _killer);
- _killerID = (getPlayerUID _killer);
- _vehicle = vehicle _killingPlayer;
- _territory = _killer call ExileClient_util_world_getTerritoryAtPosition;
- if(!isNull _territory)then
- {
- if((getPlayerUID _killer) in (_territory getVariable ["ExileTerritoryBuildRights",[]]))then
- {
- _territoryKill = 1;
- };
- };
- _flagNextToVictim = _victim call ExileClient_util_world_getTerritoryAtPosition;
- if !(isNull _flagNextToVictim) then
- {
- if ((getPlayerUID _victim) in (_flagNextToVictim getVariable ["ExileTerritoryBuildRights", []])) then
- {
- _raidKill = 1;
- };
- };
- if !(_vehicle isEqualTo _killingPlayer) then
- {
- _vehicleRole = _killingPlayer call ExileClient_util_vehicle_getRole;
- switch (_vehicleRole) do
- {
- case "driver":
- {
- _weapontxt = "RoadKill";
- };
- };
- };
- if (_killerNPC == 1) then {
- _killerID = "NPC";
- };
- if (_logStat) then {
- if (_weapontxt == "") then {
- _weapontxt = "Explosive";
- };
- format["updatePlayerStats:%1:%2:%3:%4:%5:%6:%7", _killerID, (getPlayerUID _victim), _weapontxt, _distance, _bambislayer, _territoryKill, _raidKill ] call ExileServer_system_database_query_fireAndForget;
- diag_log format ["[STAT TRACKER] weapon used for kill: %1!", _weapontxt];
- };
- _logStat = true;
- _bambislayer = 0;
- _killerNPC = 0;
- _territoryKill = 0;
- _raidKill = 0;
- };
- };
- _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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement