⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
⭐ Buraya kendi metin reklamınızı vererek binlerce kişiye ulaşın! ⭐
Sponsor Görsel 2
SponsorSponsor

Gungame Kill Score

RE: Gungame Kill Score
(27-03-2025, 16:53)Lynchk Adlı Kullanıcıdan Alıntı: Düzenlemeniz gereken yerler;
Kod:
#define GungameMaxLevel 50 // Gungamede toplam kaç level varsa buraya onu giriniz.

new const g_szAllowedLevels[][] = {
    1, 2, 3, 4, 5
}; // Hangi levellerde calisacagi


@Merhabalarr Derlemeden konuya eklenti iletmeyiniz.
panel olmadıgı için yerel server açmadım uğraşmamak için zaten gungame modu kullanıyorsa ayarlayıp attıgım sekılde calısması gerek
RE: Gungame Kill Score
(27-03-2025, 17:16)Merhabalarr Adlı Kullanıcıdan Alıntı: panel olmadıgı için yerel server açmadım uğraşmamak için zaten gungame modu kullanıyorsa ayarlayıp attıgım sekılde calısması gerek
Kodunuzda derleme hatası var, çalışması için önce derlenmesi gerekiyor.
Bu yüzden atarken dikkatli olun.
Ayrıca derlemek için sunucuya gerek yok kendi bilgisayarına derleyici kurabilirsin.
Steam:Tıkla • Discord: lynchk
RE: Gungame Kill Score
Şu an skorları düzgün veriyor ama tab ekranında  isimler bu şekilde gözükmektedir.

ds-screenshot-74-14970
RE: Gungame Kill Score
(27-03-2025, 17:25)Lynchk Adlı Kullanıcıdan Alıntı:
(27-03-2025, 17:16)Merhabalarr Adlı Kullanıcıdan Alıntı: panel olmadıgı için yerel server açmadım uğraşmamak için zaten gungame modu kullanıyorsa ayarlayıp attıgım sekılde calısması gerek
Kodunuzda derleme hatası var, çalışması için önce derlenmesi gerekiyor.
Bu yüzden atarken dikkatli olun.
Ayrıca derlemek için sunucuya gerek yok kendi bilgisayarına derleyici kurabilirsin.
derelyicileri sevmiyorum ugrastırıyorlar ayrıca kendı yerel test sunucumuzda eklentıyı test de edebiliriz ama oneri için teşekkürler

(27-03-2025, 17:28)Serhat Öndeş Adlı Kullanıcıdan Alıntı: Şu an skorları düzgün veriyor ama tab ekranında  isimler bu şekilde gözükmektedir.
büyük ihtimalle eklentinin isim formatında bir sorun olmalı
Son Düzenleme: 27-03-2025, 19:13, Düzenleyen: Merhabalarr
RE: Gungame Kill Score
(27-03-2025, 17:28)Serhat Öndeş Adlı Kullanıcıdan Alıntı: Şu an skorları düzgün veriyor ama tab ekranında  isimler bu şekilde gözükmektedir.

ds-screenshot-74-14970
İsim olayı gungame mod ile çakışmış olmalı.
Hep öyle kalıp düzelmiyorsa isim sistemini kapatabilirim.
Sadece assiste skor verecek şekilde olacak.
Steam:Tıkla • Discord: lynchk
RE: Gungame Kill Score
(27-03-2025, 19:13)Lynchk Adlı Kullanıcıdan Alıntı:
(27-03-2025, 17:28)Serhat Öndeş Adlı Kullanıcıdan Alıntı: Şu an skorları düzgün veriyor ama tab ekranında  isimler bu şekilde gözükmektedir.

ds-screenshot-74-14970
İsim olayı gungame mod ile çakışmış olmalı.
Hep öyle kalıp düzelmiyorsa isim sistemini kapatabilirim.
Sadece assiste skor verecek şekilde olacak.

Evet hocam sürekli böyle kalıyor, bahsettiğiniz şekilde güncelleme sağlar mısınız?
RE: Gungame Kill Score
Bu şekilde deneyin;
PHP Kod:
#include <amxmodx>
#include <reapi>
#tryinclude <aes_v>

#define GungameMaxLevel 50 // Gungamede toplam kaç level varsa buraya onu giriniz.
native get_gungame_level(const id);
native add_gungame_score(const id);

#define CONFIG_FILE                    "adv_kill_assist.cfg"

#define NAMES_LENGTH                28
#define is_user_valid(%0)            (0 < %0 && %0 < g_iMaxPlayers)

#if AMXX_VERSION_NUM < 183
    #define client_disconnected client_disconnect
#endif

#if REAPI_VERSION < 52121
    #error This plugin supports ReAPI >=5.2.0.121
#endif

//#define DEBUG

enum
{
    
ALGORITHM_CSSTATSX,
    
ALGORITHM_ADVANCED
}

enum _:CVARS_DATA
{
    
CVAR_FRAG,
    
CVAR_MONEY,
    
CVAR_EXP,
    
CVAR_DAMAGE,
    
CVAR_ALGORITHM,
    
CVAR_MESSAGE
}

enum _:PLAYER_DATA
{
    
DAMAGE_ON[33],
    
Float:DAMAGE_ON_TIME[33],
    
NAME[32]
}
new 
g_ePlayerData[33][PLAYER_DATA], g_pCvars[CVARS_DATA], g_iMaxPlayers, g_iMsgScoreInfo
new HookChain:g_pCBasePlayer_Killed_Post, g_szDeathString[32], g_iAssistKiller
new g_pCvarAssistHp

new const g_szAllowedLevels[][] = {
    
1, 2, 3, 4, 5
};

public 
plugin_natives()
{
    
set_native_filter("plugin_native_filter")
}

public 
plugin_native_filter(szNative[], iIndex, bool:bTrap)
{
    return 
PLUGIN_HANDLED
}

public 
plugin_init()
{
    
register_plugin("Advanced Kill Assists", "1.3c", "Xelson")

    
RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn_Post", true)
    
RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed_Pre", false)
    
RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage_Pre", false)
    
DisableHookChain((g_pCBasePlayer_Killed_Post = RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed_Post", true)))
    
register_message(get_user_msgid("DeathMsg"), "Message_DeathMsg")

    
#if defined DEBUG
        
register_clcmd("assist", "ClCmd_Assist")
    
#endif

    
g_pCvarAssistHp = get_cvar_pointer("csstats_sql_assisthp")
    
g_iMsgScoreInfo = get_user_msgid("ScoreInfo")
    
g_iMaxPlayers = get_maxplayers() + 1
}

public 
plugin_cfg()
{
    
g_pCvars[CVAR_FRAG] = register_cvar("aka_frag", "1")
    
g_pCvars[CVAR_MONEY] = register_cvar("aka_money", "100")
    
g_pCvars[CVAR_EXP] = register_cvar("aka_exp", "0")
    
g_pCvars[CVAR_DAMAGE] = register_cvar("aka_damage", "30.0")
    
g_pCvars[CVAR_ALGORITHM] = register_cvar("aka_algorithm", "1")
    
g_pCvars[CVAR_MESSAGE] = register_cvar("aka_message", "!g[AKA]!y Вы получили !g[award]$!y за помощь !t[killer]!y в убийстве !t[victim]!y!")

    new 
szConfigFile[256]
    
get_localinfo("amxx_configsdir", szConfigFile, charsmax(szConfigFile))
    
formatex(szConfigFile, charsmax(szConfigFile), "%s/%s", szConfigFile, CONFIG_FILE)
    
server_cmd("exec ^"%s^"", szConfigFile)
}

public 
client_infochanged(id)
{
    
get_user_info(id, "name", g_ePlayerData[id][NAME], charsmax(g_ePlayerData[][NAME]))
}

public 
client_disconnected(id)
{
    
arrayset(g_ePlayerData[id][DAMAGE_ON], 0, sizeof g_ePlayerData[][DAMAGE_ON])
    for(new 
i = 1; i < g_iMaxPlayers; i++) g_ePlayerData[i][DAMAGE_ON][id] = 0
}

public 
CBasePlayer_Spawn_Post(id)
{
    
arrayset(g_ePlayerData[id][DAMAGE_ON], 0, sizeof g_ePlayerData[][DAMAGE_ON])
    for(new 
i = 1; i < g_iMaxPlayers; i++) g_ePlayerData[i][DAMAGE_ON][id] = 0
}

public 
CBasePlayer_TakeDamage_Pre(iVictim, iWeapon, iAttacker, Float:fDamage)
{
    if(
is_user_valid(iAttacker) && iVictim != iAttacker && rg_is_player_can_takedamage(iVictim, iAttacker))
    {
        if(
get_pcvar_num(g_pCvars[CVAR_ALGORITHM]) == ALGORITHM_ADVANCED)
        {
            new 
Float:fHealth; get_entvar(iVictim, var_health, fHealth)
            if(
fDamage > fHealth) fDamage = fHealth
        
}
        
g_ePlayerData[iAttacker][DAMAGE_ON][iVictim] += floatround(fDamage)
        
g_ePlayerData[iAttacker][DAMAGE_ON_TIME][iVictim] = get_gametime()
    }
}

public 
CBasePlayer_Killed_Pre(iVictim, iKiller)
{
    new 
iAssistant, iMaxDamage
    
new Float:fDamageForAssist = get_pcvar_float(g_pCvars[CVAR_DAMAGE])

    switch(
get_pcvar_num(g_pCvars[CVAR_ALGORITHM]))
    {
        case 
ALGORITHM_ADVANCED:
        {
            new 
iTotalDamage
            
for(new id = 1; id < g_iMaxPlayers; id++)
            {
                if(
is_user_connected(id))
                {
                    if(
id != iKiller && g_ePlayerData[id][DAMAGE_ON][iVictim] > 0)
                    {
                        if(
g_ePlayerData[id][DAMAGE_ON][iVictim] > iMaxDamage)
                        {
                            
iAssistant = id
                            iMaxDamage 
= g_ePlayerData[id][DAMAGE_ON][iVictim]
                        }
                        else if(
g_ePlayerData[id][DAMAGE_ON][iVictim] == iMaxDamage) 
                            
iAssistant = g_ePlayerData[id][DAMAGE_ON_TIME][iVictim] > g_ePlayerData[iAssistant][DAMAGE_ON_TIME][iVictim] ? id : iAssistant
                    
}
                    
iTotalDamage += g_ePlayerData[id][DAMAGE_ON][iVictim]
                }
            }
            if((
float(iMaxDamage) / float(iTotalDamage)) * 100.0 < fDamageForAssist) iAssistant = 0
        
}
        case 
ALGORITHM_CSSTATSX:
        {
            new 
iNeedDamage = g_pCvarAssistHp ? get_pcvar_num(g_pCvarAssistHp) : floatround(fDamageForAssist)
            for(new 
id = 1; id < g_iMaxPlayers; id++)
            {
                if(
is_user_connected(id) && id != iKiller && g_ePlayerData[id][DAMAGE_ON][iVictim] > iMaxDamage)
                {
                    if(
g_ePlayerData[id][DAMAGE_ON][iVictim] > iNeedDamage)
                    {
                        
iAssistant = id
                        iMaxDamage 
= g_ePlayerData[id][DAMAGE_ON][iVictim]
                    }
                    else if(
g_ePlayerData[id][DAMAGE_ON][iVictim] == iNeedDamage)
                        
iAssistant = g_ePlayerData[id][DAMAGE_ON_TIME][iVictim] > g_ePlayerData[iAssistant][DAMAGE_ON_TIME][iVictim] ? id : iAssistant
                
}
            }
        }
    }

    if(!
iAssistant || iKiller == iVictim) return HC_CONTINUE

    
new szName[2][32], iLen[2], iExcess
    copy
(szName[1], charsmax(szName[]), g_ePlayerData[iAssistant][NAME])
    
iLen[1] = strlen(szName[1])
    
    static const 
szWorldName[] = "world"
    
new bool:bIsAssistantConnected = bool:is_user_connected(iAssistant)

    if(!
is_user_valid(iKiller))
    {
        if(
bIsAssistantConnected)
        {
            
iExcess = iLen[1] - NAMES_LENGTH - (sizeof szWorldName)
            if(
iExcess > 0) strclip(szName[1], iExcess)
            
formatex(g_szDeathString, charsmax(g_szDeathString), "%s + %s", szWorldName, szName[1])

            
g_iAssistKiller = iAssistant
            rh_update_user_info
(iAssistant)
        }
    }
    else if(
is_user_connected(iKiller))
    {
        
g_ePlayerData[iKiller][DAMAGE_ON][iVictim] = 0
        
        copy
(szName[0], charsmax(szName[]), g_ePlayerData[iKiller][NAME])
        
iLen[0] = strlen(szName[0])

        new 
iLenSum = (iLen[0] + iLen[1])
        
iExcess = iLenSum - NAMES_LENGTH

        
if(iExcess > 0)
        {
            new 
iLongest = iLen[0] > iLen[1] ? 0 : 1
            
new iShortest = iLongest == 1 ? 0 : 1

            
if(float(iExcess) / float(iLen[iLongest]) > 0.60)
            {
                new 
iNewLongest = floatround(float(iLen[iLongest]) / float(iLenSum) * float(iExcess))
                
strclip(szName[iLongest], iNewLongest)
                
strclip(szName[iShortest], iExcess - iNewLongest)
            }
            else 
strclip(szName[iLongest], iExcess)
        }
        
formatex(g_szDeathString, charsmax(g_szDeathString), "%s + %s", szName[0], szName[1])

        
g_iAssistKiller = iKiller
        rh_update_user_info
(g_iAssistKiller)
    }
    if(
bIsAssistantConnected)
    {
   
        g_ePlayerData
[iAssistant][DAMAGE_ON][iVictim] = 0

        
new iAddMoney = get_pcvar_num(g_pCvars[CVAR_MONEY])
        new 
iAddExp = get_pcvar_num(g_pCvars[CVAR_EXP])

        for(new 
i = 0; i <= GungameMaxLevel; i++)
        {
            if(
get_gungame_level(iAssistant) != g_szAllowedLevels[i][0])
            {
                continue;
            }

            
add_gungame_score(iAssistant);
            
client_print_color(iAssistant, iAssistant, "^1[^3Assist^1] ^4Assist yaptigin icin^3 1 ^4skor kazandin.")
        }

        if(
iAddMoney > 0 || iAddExp > 0) 
        {
            if(
iAddMoney > 0) rg_add_account(iAssistant, iAddMoney)
            
#if defined aes_add_player_exp_f
                
if(iAddExp > 0) aes_add_player_exp_f(iAssistant, float(iAddExp))
            
#endif

            
new szMessage[192], szMoney[16], szExp[16], szKillerName[32]
            
get_pcvar_string(g_pCvars[CVAR_MESSAGE], szMessage, charsmax(szMessage))
            if(
szMessage[0])
            {
                
num_to_str(iAddMoney, szMoney, charsmax(szMoney))
                
num_to_str(iAddExp, szExp, charsmax(szExp))
                if(
is_user_valid(iKiller)) copy(szKillerName, charsmax(szKillerName), g_ePlayerData[iKiller][NAME])

                
replace_all(szMessage, charsmax(szMessage), "[award]", szMoney)
                
replace_all(szMessage, charsmax(szMessage), "[exp]", szExp)
                
replace_all(szMessage, charsmax(szMessage), "[killer]", szKillerName)
                
replace_all(szMessage, charsmax(szMessage), "[victim]", g_ePlayerData[iVictim][NAME])

                
UTIL_SayText(iAssistant, szMessage)
            }
        }

        if(
get_pcvar_num(g_pCvars[CVAR_FRAG]))
        {
            new 
Float:fNewFrags; get_entvar(iAssistant, var_frags, fNewFrags)
            
fNewFrags++
            
set_entvar(iAssistant, var_frags, fNewFrags)

            
message_begin(MSG_ALL, g_iMsgScoreInfo)
            
write_byte(iAssistant)
            
write_short(floatround(fNewFrags))
            
write_short(get_member(iAssistant, m_iDeaths))
            
write_short(0)
            
write_short(get_member(iAssistant, m_iTeam))
            
message_end()
        }
    }
    
    if(
g_iAssistKiller) EnableHookChain(g_pCBasePlayer_Killed_Post)

    return 
HC_CONTINUE
}

public 
Message_DeathMsg()
{
    new 
iWorld = get_msg_arg_int(1)
    if(
iWorld == 0 && g_iAssistKiller)
        
set_msg_arg_int(1, ARG_BYTE, g_iAssistKiller)
}

public 
CBasePlayer_Killed_Post(iVictim, iKiller)
{
    
DisableHookChain(g_pCBasePlayer_Killed_Post)

    new 
iAssistKiller = g_iAssistKiller; g_iAssistKiller = 0
    rh_update_user_info
(iAssistKiller)
}

strclip(szString[], iClip, szEnding[] = "..")
{
    new 
iLen = strlen(szString) - 1 - strlen(szEnding) - iClip
    format
(szString[iLen], iLen, szEnding)
}

UTIL_SayText(id, const szMessage[], any:...)
{
    new 
szBuffer[190];
    static 
iMsgSayText
    
if(!iMsgSayText) iMsgSayText = get_user_msgid("SayText")
    if(
numargs() > 2) vformat(szBuffer, charsmax(szBuffer), szMessage, 3);
    else 
copy(szBuffer, charsmax(szBuffer), szMessage);
    while(
replace(szBuffer, charsmax(szBuffer), "!y", "^1")) {}
    while(
replace(szBuffer, charsmax(szBuffer), "!t", "^3")) {}
    while(
replace(szBuffer, charsmax(szBuffer), "!g", "^4")) {}
    switch(
id)
    {
        case 
0:
        {
            for(new 
i = 1; i < g_iMaxPlayers; i++)
            {
                if(!
is_user_connected(i)) continue
                
message_begin(MSG_ONE_UNRELIABLE, iMsgSayText, .player = i)
                
write_byte(i);
                
write_string(szBuffer);
                
message_end();
            }
        }
        default:
        {
            
message_begin(MSG_ONE_UNRELIABLE, iMsgSayText, .player = id)
            
write_byte(id);
            
write_string(szBuffer);
            
message_end();
        }
    }
    return 
0
}

#if defined DEBUG
#include <hamsandwich>
public ClCmd_Assist()
{
    new 
id[4], szArg[64]
    for(new 
i; i < 4; i++)
    {
        
read_argv(i + 1, szArg, charsmax(szArg))
        
id[i] = str_to_num(szArg)
    }
    
g_ePlayerData[id[1]][DAMAGE_ON][id[2]] = id[3] ? id[3] : 100
    ExecuteHamB
(Ham_Killed, id[2], id[0], 0)
    
ExecuteHamB(Ham_CS_RoundRespawn, id[2])
}
#endif 
Steam:Tıkla • Discord: lynchk
RE: Gungame Kill Score
(27-03-2025, 20:14)Lynchk Adlı Kullanıcıdan Alıntı: Bu şekilde deneyin;
PHP Kod:
#include <amxmodx>
#include <reapi>
#tryinclude <aes_v>

#define GungameMaxLevel 50 // Gungamede toplam kaç level varsa buraya onu giriniz.
native get_gungame_level(const id);
native add_gungame_score(const id);

#define CONFIG_FILE                    "adv_kill_assist.cfg"

#define NAMES_LENGTH                28
#define is_user_valid(%0)            (0 < %0 && %0 < g_iMaxPlayers)

#if AMXX_VERSION_NUM < 183
    #define client_disconnected client_disconnect
#endif

#if REAPI_VERSION < 52121
    #error This plugin supports ReAPI >=5.2.0.121
#endif

//#define DEBUG

enum
{
    
ALGORITHM_CSSTATSX,
    
ALGORITHM_ADVANCED
}

enum _:CVARS_DATA
{
    
CVAR_FRAG,
    
CVAR_MONEY,
    
CVAR_EXP,
    
CVAR_DAMAGE,
    
CVAR_ALGORITHM,
    
CVAR_MESSAGE
}

enum _:PLAYER_DATA
{
    
DAMAGE_ON[33],
    
Float:DAMAGE_ON_TIME[33],
    
NAME[32]
}
new 
g_ePlayerData[33][PLAYER_DATA], g_pCvars[CVARS_DATA], g_iMaxPlayers, g_iMsgScoreInfo
new HookChain:g_pCBasePlayer_Killed_Post, g_szDeathString[32], g_iAssistKiller
new g_pCvarAssistHp

new const g_szAllowedLevels[][] = {
    
1, 2, 3, 4, 5
};

public 
plugin_natives()
{
    
set_native_filter("plugin_native_filter")
}

public 
plugin_native_filter(szNative[], iIndex, bool:bTrap)
{
    return 
PLUGIN_HANDLED
}

public 
plugin_init()
{
    
register_plugin("Advanced Kill Assists", "1.3c", "Xelson")

    
RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn_Post", true)
    
RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed_Pre", false)
    
RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage_Pre", false)
    
DisableHookChain((g_pCBasePlayer_Killed_Post = RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed_Post", true)))
    
register_message(get_user_msgid("DeathMsg"), "Message_DeathMsg")

    
#if defined DEBUG
        
register_clcmd("assist", "ClCmd_Assist")
    
#endif

    
g_pCvarAssistHp = get_cvar_pointer("csstats_sql_assisthp")
    
g_iMsgScoreInfo = get_user_msgid("ScoreInfo")
    
g_iMaxPlayers = get_maxplayers() + 1
}

public 
plugin_cfg()
{
    
g_pCvars[CVAR_FRAG] = register_cvar("aka_frag", "1")
    
g_pCvars[CVAR_MONEY] = register_cvar("aka_money", "100")
    
g_pCvars[CVAR_EXP] = register_cvar("aka_exp", "0")
    
g_pCvars[CVAR_DAMAGE] = register_cvar("aka_damage", "30.0")
    
g_pCvars[CVAR_ALGORITHM] = register_cvar("aka_algorithm", "1")
    
g_pCvars[CVAR_MESSAGE] = register_cvar("aka_message", "!g[AKA]!y Вы получили !g[award]$!y за помощь !t[killer]!y в убийстве !t[victim]!y!")

    new 
szConfigFile[256]
    
get_localinfo("amxx_configsdir", szConfigFile, charsmax(szConfigFile))
    
formatex(szConfigFile, charsmax(szConfigFile), "%s/%s", szConfigFile, CONFIG_FILE)
    
server_cmd("exec ^"%s^"", szConfigFile)
}

public 
client_infochanged(id)
{
    
get_user_info(id, "name", g_ePlayerData[id][NAME], charsmax(g_ePlayerData[][NAME]))
}

public 
client_disconnected(id)
{
    
arrayset(g_ePlayerData[id][DAMAGE_ON], 0, sizeof g_ePlayerData[][DAMAGE_ON])
    for(new 
i = 1; i < g_iMaxPlayers; i++) g_ePlayerData[i][DAMAGE_ON][id] = 0
}

public 
CBasePlayer_Spawn_Post(id)
{
    
arrayset(g_ePlayerData[id][DAMAGE_ON], 0, sizeof g_ePlayerData[][DAMAGE_ON])
    for(new 
i = 1; i < g_iMaxPlayers; i++) g_ePlayerData[i][DAMAGE_ON][id] = 0
}

public 
CBasePlayer_TakeDamage_Pre(iVictim, iWeapon, iAttacker, Float:fDamage)
{
    if(
is_user_valid(iAttacker) && iVictim != iAttacker && rg_is_player_can_takedamage(iVictim, iAttacker))
    {
        if(
get_pcvar_num(g_pCvars[CVAR_ALGORITHM]) == ALGORITHM_ADVANCED)
        {
            new 
Float:fHealth; get_entvar(iVictim, var_health, fHealth)
            if(
fDamage > fHealth) fDamage = fHealth
        
}
        
g_ePlayerData[iAttacker][DAMAGE_ON][iVictim] += floatround(fDamage)
        
g_ePlayerData[iAttacker][DAMAGE_ON_TIME][iVictim] = get_gametime()
    }
}

public 
CBasePlayer_Killed_Pre(iVictim, iKiller)
{
    new 
iAssistant, iMaxDamage
    
new Float:fDamageForAssist = get_pcvar_float(g_pCvars[CVAR_DAMAGE])

    switch(
get_pcvar_num(g_pCvars[CVAR_ALGORITHM]))
    {
        case 
ALGORITHM_ADVANCED:
        {
            new 
iTotalDamage
            
for(new id = 1; id < g_iMaxPlayers; id++)
            {
                if(
is_user_connected(id))
                {
                    if(
id != iKiller && g_ePlayerData[id][DAMAGE_ON][iVictim] > 0)
                    {
                        if(
g_ePlayerData[id][DAMAGE_ON][iVictim] > iMaxDamage)
                        {
                            
iAssistant = id
                            iMaxDamage 
= g_ePlayerData[id][DAMAGE_ON][iVictim]
                        }
                        else if(
g_ePlayerData[id][DAMAGE_ON][iVictim] == iMaxDamage) 
                            
iAssistant = g_ePlayerData[id][DAMAGE_ON_TIME][iVictim] > g_ePlayerData[iAssistant][DAMAGE_ON_TIME][iVictim] ? id : iAssistant
                    
}
                    
iTotalDamage += g_ePlayerData[id][DAMAGE_ON][iVictim]
                }
            }
            if((
float(iMaxDamage) / float(iTotalDamage)) * 100.0 < fDamageForAssist) iAssistant = 0
        
}
        case 
ALGORITHM_CSSTATSX:
        {
            new 
iNeedDamage = g_pCvarAssistHp ? get_pcvar_num(g_pCvarAssistHp) : floatround(fDamageForAssist)
            for(new 
id = 1; id < g_iMaxPlayers; id++)
            {
                if(
is_user_connected(id) && id != iKiller && g_ePlayerData[id][DAMAGE_ON][iVictim] > iMaxDamage)
                {
                    if(
g_ePlayerData[id][DAMAGE_ON][iVictim] > iNeedDamage)
                    {
                        
iAssistant = id
                        iMaxDamage 
= g_ePlayerData[id][DAMAGE_ON][iVictim]
                    }
                    else if(
g_ePlayerData[id][DAMAGE_ON][iVictim] == iNeedDamage)
                        
iAssistant = g_ePlayerData[id][DAMAGE_ON_TIME][iVictim] > g_ePlayerData[iAssistant][DAMAGE_ON_TIME][iVictim] ? id : iAssistant
                
}
            }
        }
    }

    if(!
iAssistant || iKiller == iVictim) return HC_CONTINUE

    
new szName[2][32], iLen[2], iExcess
    copy
(szName[1], charsmax(szName[]), g_ePlayerData[iAssistant][NAME])
    
iLen[1] = strlen(szName[1])
    
    static const 
szWorldName[] = "world"
    
new bool:bIsAssistantConnected = bool:is_user_connected(iAssistant)

    if(!
is_user_valid(iKiller))
    {
        if(
bIsAssistantConnected)
        {
            
iExcess = iLen[1] - NAMES_LENGTH - (sizeof szWorldName)
            if(
iExcess > 0) strclip(szName[1], iExcess)
            
formatex(g_szDeathString, charsmax(g_szDeathString), "%s + %s", szWorldName, szName[1])

            
g_iAssistKiller = iAssistant
            rh_update_user_info
(iAssistant)
        }
    }
    else if(
is_user_connected(iKiller))
    {
        
g_ePlayerData[iKiller][DAMAGE_ON][iVictim] = 0
        
        copy
(szName[0], charsmax(szName[]), g_ePlayerData[iKiller][NAME])
        
iLen[0] = strlen(szName[0])

        new 
iLenSum = (iLen[0] + iLen[1])
        
iExcess = iLenSum - NAMES_LENGTH

        
if(iExcess > 0)
        {
            new 
iLongest = iLen[0] > iLen[1] ? 0 : 1
            
new iShortest = iLongest == 1 ? 0 : 1

            
if(float(iExcess) / float(iLen[iLongest]) > 0.60)
            {
                new 
iNewLongest = floatround(float(iLen[iLongest]) / float(iLenSum) * float(iExcess))
                
strclip(szName[iLongest], iNewLongest)
                
strclip(szName[iShortest], iExcess - iNewLongest)
            }
            else 
strclip(szName[iLongest], iExcess)
        }
        
formatex(g_szDeathString, charsmax(g_szDeathString), "%s + %s", szName[0], szName[1])

        
g_iAssistKiller = iKiller
        rh_update_user_info
(g_iAssistKiller)
    }
    if(
bIsAssistantConnected)
    {
   
        g_ePlayerData
[iAssistant][DAMAGE_ON][iVictim] = 0

        
new iAddMoney = get_pcvar_num(g_pCvars[CVAR_MONEY])
        new 
iAddExp = get_pcvar_num(g_pCvars[CVAR_EXP])

        for(new 
i = 0; i <= GungameMaxLevel; i++)
        {
            if(
get_gungame_level(iAssistant) != g_szAllowedLevels[i][0])
            {
                continue;
            }

            
add_gungame_score(iAssistant);
            
client_print_color(iAssistant, iAssistant, "^1[^3Assist^1] ^4Assist yaptigin icin^3 1 ^4skor kazandin.")
        }

        if(
iAddMoney > 0 || iAddExp > 0) 
        {
            if(
iAddMoney > 0) rg_add_account(iAssistant, iAddMoney)
            
#if defined aes_add_player_exp_f
                
if(iAddExp > 0) aes_add_player_exp_f(iAssistant, float(iAddExp))
            
#endif

            
new szMessage[192], szMoney[16], szExp[16], szKillerName[32]
            
get_pcvar_string(g_pCvars[CVAR_MESSAGE], szMessage, charsmax(szMessage))
            if(
szMessage[0])
            {
                
num_to_str(iAddMoney, szMoney, charsmax(szMoney))
                
num_to_str(iAddExp, szExp, charsmax(szExp))
                if(
is_user_valid(iKiller)) copy(szKillerName, charsmax(szKillerName), g_ePlayerData[iKiller][NAME])

                
replace_all(szMessage, charsmax(szMessage), "[award]", szMoney)
                
replace_all(szMessage, charsmax(szMessage), "[exp]", szExp)
                
replace_all(szMessage, charsmax(szMessage), "[killer]", szKillerName)
                
replace_all(szMessage, charsmax(szMessage), "[victim]", g_ePlayerData[iVictim][NAME])

                
UTIL_SayText(iAssistant, szMessage)
            }
        }

        if(
get_pcvar_num(g_pCvars[CVAR_FRAG]))
        {
            new 
Float:fNewFrags; get_entvar(iAssistant, var_frags, fNewFrags)
            
fNewFrags++
            
set_entvar(iAssistant, var_frags, fNewFrags)

            
message_begin(MSG_ALL, g_iMsgScoreInfo)
            
write_byte(iAssistant)
            
write_short(floatround(fNewFrags))
            
write_short(get_member(iAssistant, m_iDeaths))
            
write_short(0)
            
write_short(get_member(iAssistant, m_iTeam))
            
message_end()
        }
    }
    
    if(
g_iAssistKiller) EnableHookChain(g_pCBasePlayer_Killed_Post)

    return 
HC_CONTINUE
}

public 
Message_DeathMsg()
{
    new 
iWorld = get_msg_arg_int(1)
    if(
iWorld == 0 && g_iAssistKiller)
        
set_msg_arg_int(1, ARG_BYTE, g_iAssistKiller)
}

public 
CBasePlayer_Killed_Post(iVictim, iKiller)
{
    
DisableHookChain(g_pCBasePlayer_Killed_Post)

    new 
iAssistKiller = g_iAssistKiller; g_iAssistKiller = 0
    rh_update_user_info
(iAssistKiller)
}

strclip(szString[], iClip, szEnding[] = "..")
{
    new 
iLen = strlen(szString) - 1 - strlen(szEnding) - iClip
    format
(szString[iLen], iLen, szEnding)
}

UTIL_SayText(id, const szMessage[], any:...)
{
    new 
szBuffer[190];
    static 
iMsgSayText
    
if(!iMsgSayText) iMsgSayText = get_user_msgid("SayText")
    if(
numargs() > 2) vformat(szBuffer, charsmax(szBuffer), szMessage, 3);
    else 
copy(szBuffer, charsmax(szBuffer), szMessage);
    while(
replace(szBuffer, charsmax(szBuffer), "!y", "^1")) {}
    while(
replace(szBuffer, charsmax(szBuffer), "!t", "^3")) {}
    while(
replace(szBuffer, charsmax(szBuffer), "!g", "^4")) {}
    switch(
id)
    {
        case 
0:
        {
            for(new 
i = 1; i < g_iMaxPlayers; i++)
            {
                if(!
is_user_connected(i)) continue
                
message_begin(MSG_ONE_UNRELIABLE, iMsgSayText, .player = i)
                
write_byte(i);
                
write_string(szBuffer);
                
message_end();
            }
        }
        default:
        {
            
message_begin(MSG_ONE_UNRELIABLE, iMsgSayText, .player = id)
            
write_byte(id);
            
write_string(szBuffer);
            
message_end();
        }
    }
    return 
0
}

#if defined DEBUG
#include <hamsandwich>
public ClCmd_Assist()
{
    new 
id[4], szArg[64]
    for(new 
i; i < 4; i++)
    {
        
read_argv(i + 1, szArg, charsmax(szArg))
        
id[i] = str_to_num(szArg)
    }
    
g_ePlayerData[id[1]][DAMAGE_ON][id[2]] = id[3] ? id[3] : 100
    ExecuteHamB
(Ham_Killed, id[2], id[0], 0)
    
ExecuteHamB(Ham_CS_RoundRespawn, id[2])
}
#endif 

Eline sağlık kayra hocam tam istediğim şekilde çalışmaktadır.
RE: Gungame Kill Score
İstek konusu, @Lynchk adlı kullanıcı tarafından 1 gün içinde çözülmüştür.
İsteği çözdüğü için Lynchk Adlı kullanıcıya 1 rep puanı ve 1 yardım etme puanı otomatik olarak verilmiştir.
Lynchk Adlı kullanıcı sizin dışınızda toplam 1023 kişiye yardım etmiştir.

Herhangi bir konuda hata olduğunu düşünüyorsanız destek sistemi üzerinden iletişim kurabilirsiniz.

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Konuyu Okuyanlar: 1 Ziyaretçi
Task