⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
⭐Kurumsal web sitesi barındırma, VDS ve sanal sunucu çözümleri. Name SSD altyapısı, yüksek performans, kesintisiz erişim ve profesyonel teknik destekle hizmetinizde.⭐
Sponsor Görsel 2
SponsorSponsor

Konu

#21
(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
#22
(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
#24
(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.
#25
(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
#26
(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?
#27
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_iMaxPlayersg_iMsgScoreInfo
new HookChain:g_pCBasePlayer_Killed_Postg_szDeathString[32], g_iAssistKiller
new g_pCvarAssistHp

new const g_szAllowedLevels[][] = {
    
12345
};

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

public 
plugin_native_filter(szNative[], iIndexbool: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"szConfigFilecharsmax(szConfigFile))
    
formatex(szConfigFilecharsmax(szConfigFile), "%s/%s"szConfigFileCONFIG_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], 0sizeof g_ePlayerData[][DAMAGE_ON])
    for(new 
1g_iMaxPlayersi++) g_ePlayerData[i][DAMAGE_ON][id] = 0
}

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

public 
CBasePlayer_TakeDamage_Pre(iVictimiWeaponiAttackerFloat:fDamage)
{
    if(
is_user_valid(iAttacker) && iVictim != iAttacker && rg_is_player_can_takedamage(iVictimiAttacker))
    {
        if(
get_pcvar_num(g_pCvars[CVAR_ALGORITHM]) == ALGORITHM_ADVANCED)
        {
            new 
Float:fHealthget_entvar(iVictimvar_healthfHealth)
            if(
fDamage fHealthfDamage fHealth
        
}
        
g_ePlayerData[iAttacker][DAMAGE_ON][iVictim] += floatround(fDamage)
        
g_ePlayerData[iAttacker][DAMAGE_ON_TIME][iVictim] = get_gametime()
    }
}

public 
CBasePlayer_Killed_Pre(iVictimiKiller)
{
    new 
iAssistantiMaxDamage
    
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 1id g_iMaxPlayersid++)
            {
                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 fDamageForAssistiAssistant 0
        
}
        case 
ALGORITHM_CSSTATSX:
        {
            new 
iNeedDamage g_pCvarAssistHp get_pcvar_num(g_pCvarAssistHp) : floatround(fDamageForAssist)
            for(new 
id 1id g_iMaxPlayersid++)
            {
                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 0strclip(szName[1], iExcess)
            
formatex(g_szDeathStringcharsmax(g_szDeathString), "%s + %s"szWorldNameszName[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] ? 1
            
new iShortest iLongest == 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_szDeathStringcharsmax(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 
0<= GungameMaxLeveli++)
        {
            if(
get_gungame_level(iAssistant) != g_szAllowedLevels[i][0])
            {
                continue;
            }

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

        if(
iAddMoney || iAddExp 0
        {
            if(
iAddMoney 0rg_add_account(iAssistantiAddMoney)
            
#if defined aes_add_player_exp_f
                
if(iAddExp 0aes_add_player_exp_f(iAssistantfloat(iAddExp))
            
#endif

            
new szMessage[192], szMoney[16], szExp[16], szKillerName[32]
            
get_pcvar_string(g_pCvars[CVAR_MESSAGE], szMessagecharsmax(szMessage))
            if(
szMessage[0])
            {
                
num_to_str(iAddMoneyszMoneycharsmax(szMoney))
                
num_to_str(iAddExpszExpcharsmax(szExp))
                if(
is_user_valid(iKiller)) copy(szKillerNamecharsmax(szKillerName), g_ePlayerData[iKiller][NAME])

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

                
UTIL_SayText(iAssistantszMessage)
            }
        }

        if(
get_pcvar_num(g_pCvars[CVAR_FRAG]))
        {
            new 
Float:fNewFragsget_entvar(iAssistantvar_fragsfNewFrags)
            
fNewFrags++
            
set_entvar(iAssistantvar_fragsfNewFrags)

            
message_begin(MSG_ALLg_iMsgScoreInfo)
            
write_byte(iAssistant)
            
write_short(floatround(fNewFrags))
            
write_short(get_member(iAssistantm_iDeaths))
            
write_short(0)
            
write_short(get_member(iAssistantm_iTeam))
            
message_end()
        }
    }
    
    if(
g_iAssistKillerEnableHookChain(g_pCBasePlayer_Killed_Post)

    return 
HC_CONTINUE
}

public 
Message_DeathMsg()
{
    new 
iWorld get_msg_arg_int(1)
    if(
iWorld == && g_iAssistKiller)
        
set_msg_arg_int(1ARG_BYTEg_iAssistKiller)
}

public 
CBasePlayer_Killed_Post(iVictimiKiller)
{
    
DisableHookChain(g_pCBasePlayer_Killed_Post)

    new 
iAssistKiller g_iAssistKillerg_iAssistKiller 0
    rh_update_user_info
(iAssistKiller)
}

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

UTIL_SayText(id, const szMessage[], any:...)
{
    new 
szBuffer[190];
    static 
iMsgSayText
    
if(!iMsgSayTextiMsgSayText get_user_msgid("SayText")
    if(
numargs() > 2vformat(szBuffercharsmax(szBuffer), szMessage3);
    else 
copy(szBuffercharsmax(szBuffer), szMessage);
    while(
replace(szBuffercharsmax(szBuffer), "!y""^1")) {}
    while(
replace(szBuffercharsmax(szBuffer), "!t""^3")) {}
    while(
replace(szBuffercharsmax(szBuffer), "!g""^4")) {}
    switch(
id)
    {
        case 
0:
        {
            for(new 
1g_iMaxPlayersi++)
            {
                if(!
is_user_connected(i)) continue
                
message_begin(MSG_ONE_UNRELIABLEiMsgSayText, .player i)
                
write_byte(i);
                
write_string(szBuffer);
                
message_end();
            }
        }
        default:
        {
            
message_begin(MSG_ONE_UNRELIABLEiMsgSayText, .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 
i4i++)
    {
        
read_argv(1szArgcharsmax(szArg))
        
id[i] = str_to_num(szArg)
    }
    
g_ePlayerData[id[1]][DAMAGE_ON][id[2]] = id[3] ? id[3] : 100
    ExecuteHamB
(Ham_Killedid[2], id[0], 0)
    
ExecuteHamB(Ham_CS_RoundRespawnid[2])
}
#endif 
Steam:Tıkla • Discord: lynchk
#28
(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_iMaxPlayersg_iMsgScoreInfo
new HookChain:g_pCBasePlayer_Killed_Postg_szDeathString[32], g_iAssistKiller
new g_pCvarAssistHp

new const g_szAllowedLevels[][] = {
    
12345
};

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

public 
plugin_native_filter(szNative[], iIndexbool: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"szConfigFilecharsmax(szConfigFile))
    
formatex(szConfigFilecharsmax(szConfigFile), "%s/%s"szConfigFileCONFIG_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], 0sizeof g_ePlayerData[][DAMAGE_ON])
    for(new 
1g_iMaxPlayersi++) g_ePlayerData[i][DAMAGE_ON][id] = 0
}

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

public 
CBasePlayer_TakeDamage_Pre(iVictimiWeaponiAttackerFloat:fDamage)
{
    if(
is_user_valid(iAttacker) && iVictim != iAttacker && rg_is_player_can_takedamage(iVictimiAttacker))
    {
        if(
get_pcvar_num(g_pCvars[CVAR_ALGORITHM]) == ALGORITHM_ADVANCED)
        {
            new 
Float:fHealthget_entvar(iVictimvar_healthfHealth)
            if(
fDamage fHealthfDamage fHealth
        
}
        
g_ePlayerData[iAttacker][DAMAGE_ON][iVictim] += floatround(fDamage)
        
g_ePlayerData[iAttacker][DAMAGE_ON_TIME][iVictim] = get_gametime()
    }
}

public 
CBasePlayer_Killed_Pre(iVictimiKiller)
{
    new 
iAssistantiMaxDamage
    
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 1id g_iMaxPlayersid++)
            {
                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 fDamageForAssistiAssistant 0
        
}
        case 
ALGORITHM_CSSTATSX:
        {
            new 
iNeedDamage g_pCvarAssistHp get_pcvar_num(g_pCvarAssistHp) : floatround(fDamageForAssist)
            for(new 
id 1id g_iMaxPlayersid++)
            {
                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 0strclip(szName[1], iExcess)
            
formatex(g_szDeathStringcharsmax(g_szDeathString), "%s + %s"szWorldNameszName[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] ? 1
            
new iShortest iLongest == 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_szDeathStringcharsmax(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 
0<= GungameMaxLeveli++)
        {
            if(
get_gungame_level(iAssistant) != g_szAllowedLevels[i][0])
            {
                continue;
            }

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

        if(
iAddMoney || iAddExp 0
        {
            if(
iAddMoney 0rg_add_account(iAssistantiAddMoney)
            
#if defined aes_add_player_exp_f
                
if(iAddExp 0aes_add_player_exp_f(iAssistantfloat(iAddExp))
            
#endif

            
new szMessage[192], szMoney[16], szExp[16], szKillerName[32]
            
get_pcvar_string(g_pCvars[CVAR_MESSAGE], szMessagecharsmax(szMessage))
            if(
szMessage[0])
            {
                
num_to_str(iAddMoneyszMoneycharsmax(szMoney))
                
num_to_str(iAddExpszExpcharsmax(szExp))
                if(
is_user_valid(iKiller)) copy(szKillerNamecharsmax(szKillerName), g_ePlayerData[iKiller][NAME])

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

                
UTIL_SayText(iAssistantszMessage)
            }
        }

        if(
get_pcvar_num(g_pCvars[CVAR_FRAG]))
        {
            new 
Float:fNewFragsget_entvar(iAssistantvar_fragsfNewFrags)
            
fNewFrags++
            
set_entvar(iAssistantvar_fragsfNewFrags)

            
message_begin(MSG_ALLg_iMsgScoreInfo)
            
write_byte(iAssistant)
            
write_short(floatround(fNewFrags))
            
write_short(get_member(iAssistantm_iDeaths))
            
write_short(0)
            
write_short(get_member(iAssistantm_iTeam))
            
message_end()
        }
    }
    
    if(
g_iAssistKillerEnableHookChain(g_pCBasePlayer_Killed_Post)

    return 
HC_CONTINUE
}

public 
Message_DeathMsg()
{
    new 
iWorld get_msg_arg_int(1)
    if(
iWorld == && g_iAssistKiller)
        
set_msg_arg_int(1ARG_BYTEg_iAssistKiller)
}

public 
CBasePlayer_Killed_Post(iVictimiKiller)
{
    
DisableHookChain(g_pCBasePlayer_Killed_Post)

    new 
iAssistKiller g_iAssistKillerg_iAssistKiller 0
    rh_update_user_info
(iAssistKiller)
}

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

UTIL_SayText(id, const szMessage[], any:...)
{
    new 
szBuffer[190];
    static 
iMsgSayText
    
if(!iMsgSayTextiMsgSayText get_user_msgid("SayText")
    if(
numargs() > 2vformat(szBuffercharsmax(szBuffer), szMessage3);
    else 
copy(szBuffercharsmax(szBuffer), szMessage);
    while(
replace(szBuffercharsmax(szBuffer), "!y""^1")) {}
    while(
replace(szBuffercharsmax(szBuffer), "!t""^3")) {}
    while(
replace(szBuffercharsmax(szBuffer), "!g""^4")) {}
    switch(
id)
    {
        case 
0:
        {
            for(new 
1g_iMaxPlayersi++)
            {
                if(!
is_user_connected(i)) continue
                
message_begin(MSG_ONE_UNRELIABLEiMsgSayText, .player i)
                
write_byte(i);
                
write_string(szBuffer);
                
message_end();
            }
        }
        default:
        {
            
message_begin(MSG_ONE_UNRELIABLEiMsgSayText, .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 
i4i++)
    {
        
read_argv(1szArgcharsmax(szArg))
        
id[i] = str_to_num(szArg)
    }
    
g_ePlayerData[id[1]][DAMAGE_ON][id[2]] = id[3] ? id[3] : 100
    ExecuteHamB
(Ham_Killedid[2], id[0], 0)
    
ExecuteHamB(Ham_CS_RoundRespawnid[2])
}
#endif 

Eline sağlık kayra hocam tam istediğim şekilde çalışmaktadır.
#29
İ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