• 0
Sign in to follow this  
HexicGaming

Players respect being reset on player kills

Question

Not 100% sure where to post this but whenever a player on my server kills another player their respect gets reset and then they get the respect from killing the player.

i.e player1 has 1000 respect and he kills player2 and player1 gains 500 respect for the kill. however player1's respect is 500 now instead of 1500.

my ExileServer_object_player_event_onMpKilled is listed below and there are no rpts since i dont think its a error issue just probably a variable issue in this file

Spoiler

/**
 * ExileServer_object_player_event_onMpKilled
 *
 * Exile Mod
 * www.exilemod.com
 * © 2015 Exile Mod Team
 *
 * Modified by [FPS]kuplion - www.friendlyplayershooting.com
 *
 * 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;
//_instigator = _this select 2; // 1.0.3 Seems to be bugged
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; // 1.0.2 files as a temp fix
//_killType = [_victim, _killer, _killingPlayer, _instigator] call ExileServer_util_getFragType; // 1.0.3 Seems to be bugged
_oldVictimRespect = _victim getVariable ["ExileScore", 0];
_newVictimRespect = _oldVictimRespect;
_oldKillerRespect = 0;
if !(isNull _killingPlayer) then
{
    oldKillerRespect = _killingPlayer getVariable ["ExileScore", 0];
};
_newKillerRespect = _oldKillerRespect;

// Ducks of war mod
_victim setVariable["DOWGV_killer", name _killingPlayer, 0];
_victim setVariable["DOWGV_killType", _killType, 0];

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:
    {
        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 = true;
        _modifyVictimRespect = true;
        _zombieDeath = selectRandom ["was killed", "was eaten"]; //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")));
        }
        else
        {
        
        _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 and died!", name _victim];
        _newVictimRespect = _oldVictimRespect - round ((abs _oldVictimRespect) / 100 * (getNumber (configFile >> "CfgSettings" >> "Respect" >> "Percentages" >> "crash")));
    };
    case 4:
    {
        _countDeath = true;
        _countKill = false;
        _npcDeath = selectRandom ["was killed", "was murdered"]; //Add more messages here to change the killed text
        _systemChat = format ["%1 %2 by an NPC!", name _victim, _npcDeath];
        _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:
    {
        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")));


        
        _weapon = currentWeapon _killer;
        _weaponDisplayName = getText (configfile >> "CfgWeapons" >> _weapon >> "displayName");
                
        if !((vehicle _killer) isEqualTo _killer) then
        {
            _weapon = vehicle _killer weaponsTurret (assignedVehicleRole _killer select 1);
            _weaponDisplayName = getText (configfile >> "CfgWeapons" >> _weapon select 0 >> "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 - _respectTransfer;
        _newKillerRespect = _oldKillerRespect + _respectTransfer;
        _killSummary pushBack ["ENEMY FRAGGED", _respectTransfer];
        if (_perks isEqualTo []) then
        {
            if !((vehicle _killer) isEqualTo _killer) then
            {
            _systemChat = format ["%1 was killed by %2", name _victim, name _killingPlayer];
            }
            else
            {
            _systemChat = format ["%1 was killed by %2 with a %3 (%4)!", name _victim, name _killingPlayer, _weaponDisplayName, _weaponScopeDisplayName];
            };
            
        }
        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 ["%1 was killed by %2! (%3)", name _victim, name _killingPlayer, _perkNames joinString ", "];
            }            
            else
            {
            _perkNames = [];
            {
                _perkNames pushBack (_x select 0);
                _killSummary pushBack _x;
                _newKillerRespect = _newKillerRespect + (_x select 1);
            }
            forEach _perks;
            _systemChat = format ["%1 was killed by %2 with a %3 (%4)! (%5)", name _victim, name _killingPlayer, _weaponDisplayName, _weaponScopeDisplayName, _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

 

Share this post


Link to post
Share on other sites

2 answers to this question

  • 0

Check this line..

The " _ " before the variable oldKillerRespect is crucial, denotes a private variable, without it, it becomes a public variable.

_oldKillerRespect = 0;
if !(isNull _killingPlayer) then
{
    oldKillerRespect = _killingPlayer getVariable ["ExileScore", 0];
};

should be...

_oldKillerRespect = 0;
if !(isNull _killingPlayer) then
{
    _oldKillerRespect = _killingPlayer getVariable ["ExileScore", 0];
};

 

Edited by geekm0nkey
  • Like 1

Share this post


Link to post
Share on other sites
  • 0
6 hours ago, geekm0nkey said:

Check this line..

The " _ " before the variable oldKillerRespect is crucial, denotes a private variable, without it, it becomes a public variable.


_oldKillerRespect = 0;
if !(isNull _killingPlayer) then
{
    oldKillerRespect = _killingPlayer getVariable ["ExileScore", 0];
};

should be...

_oldKillerRespect = 0;
if !(isNull _killingPlayer) then
{
    _oldKillerRespect = _killingPlayer getVariable ["ExileScore", 0];
};

 

thank you so much that fixed it

  • Like 1

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
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.