⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
⚡ NVMe altyapı • 🛡️ DDoS Koruması • 🤖 Akıllı Otomasyon • 🕐 7/24 Destek
Sponsor Görsel 2
SponsorSponsor

Konu

#1
Selamın aleyküm
zp modunda kullanacağım bir admin chat level tag eklentisi söyle bir sorun var
örneğin full yetki admin yazıyorum otomatik olarak [OWNER] Tagı verıyor ben kişiye özel tag yapmak istiyorum 
ap_prefix.ini içerisinden denedim olmadı veya ben mi yanlış yapıyorum yardımcı olurmusunuz

PHP Kod:
#include <amxmodx>
#include <amxmisc>
#include <celltrie>
#include <cstrike>
#include <levels>

#define VERSION "4.0"
#define FLAG_LOAD ADMIN_CFG
#define MAX_PREFIXES 33
#define MAX_BAD_PREFIXES 100

new g_bad_prefixg_customg_custom_flagg_say_charactersg_prefix_characters;
new 
pre_ips_count 0pre_names_count 0pre_steamids_countpre_flags_count 0bad_prefix_count 0itemp_cvar[2];
new 
configs_dir[64], file_prefixes[128], file_bad_prefixes[128], text[128], prefix[32], type[2], key[32], lengthline 0error[256];
new 
g_saytxtg_maxplayersCsTeams:g_team;
new 
g_typed[192], g_message[192], g_name[32];
new 
Trie:pre_ips_collectTrie:pre_names_collectTrie:pre_steamids_collectTrie:pre_flags_collectTrie:bad_prefixes_collectTrie:client_prefix;
new 
str_id[16], temp_key[35], temp_prefix[32], temp_value;
new 
bool:g_toggle[33];

new const 
say_team_info[2][CsTeams][] =
{
    {
"*IZLEYICI* ""*OLU* ""*OLU* ""*IZLEYICI* "},
    {
""""""""}
}

new const 
sayteam_team_info[2][CsTeams][] =
{
    {
"(IZLEYICI) ""*OLU*(Terrorist) ""*OLU*(Counter-Terrorist) ""(IZLEYICI) "},
    {
"(IZLEYICI) ""(Terrorist) ""(Counter-Terrorist) ""(IZLEYICI) "}
}

new const 
forbidden_say_symbols[] = {
    
"/",
    
"!",
    
"%",
    
"$"
}

new const 
forbidden_prefixes_symbols[] = {
    
"/",
    
"\",
    "
%",
    "
$",
    "
.",
    "
:",
    "
?",
    "
!",
    "
@",
    "
#",
    
"%"
}

new const 
separator[] = "************************************************"
new const in_prefix[] = "[AdminPrefixes]"

#define MAX_WORDS 192

new g_swearsNames[MAX_WORDS][32]
new 
g_swearsNum

public plugin_init()
{
    
register_plugin("Admin Prefixes"VERSION"m0skVi4a ;]")

    
g_bad_prefix register_cvar("ap_bad_prefixes""1")
    
g_custom register_cvar("ap_custom_current""1")
    
g_custom_flag register_cvar("ap_custom_current_flag""b")
    
g_say_characters register_cvar("ap_say_characters""1")
    
g_prefix_characters register_cvar("ap_prefix_characters""1")

    
g_saytxt get_user_msgid ("SayText")
    
g_maxplayers get_maxplayers()

    
register_concmd("ap_reload_prefixes""LoadPrefixes")
    
register_concmd("ap_reload_badprefixes""LoadBadPrefixes")
    
register_concmd("ap_put""SetPlayerPrefix")
    
register_clcmd("say""HookSay")
    
register_clcmd("say_team""HookSayTeam")

    
pre_ips_collect TrieCreate()
    
pre_names_collect TrieCreate()
    
pre_steamids_collect TrieCreate()
    
pre_flags_collect TrieCreate()
    
bad_prefixes_collect TrieCreate()
    
client_prefix TrieCreate()

    
register_dictionary("admin_prefixes.txt")

    
get_configsdir(configs_dircharsmax(configs_dir))
    
formatex(file_prefixescharsmax(file_prefixes), "%s/ap_prefixes.ini"configs_dir)
    
formatex(file_bad_prefixescharsmax(file_bad_prefixes), "%s/ap_bad_prefixes.ini"configs_dir)

    
LoadPrefixes(0)
    
LoadBadPrefixes(0)
    
readList()
}

public 
LoadPrefixes(id)
{
    if(!(
get_user_flags(id) & FLAG_LOAD))
    {
        
console_print(id"%L"LANG_SERVER"PREFIX_PERMISSION"in_prefix)
        return 
PLUGIN_HANDLED
    
}

    
TrieClear(pre_ips_collect)
    
TrieClear(pre_names_collect)
    
TrieClear(pre_steamids_collect)
    
TrieClear(pre_flags_collect)

    
line 0length 0pre_flags_count 0pre_ips_count 0pre_names_count 0;

    if(!
file_exists(file_prefixes)) 
    {
        
formatex(errorcharsmax(error), "%L"LANG_SERVER"PREFIX_NOT_FOUND"in_prefixfile_prefixes)
        
set_fail_state(error)
    }

    
server_print(separator)

    while(
read_file(file_prefixesline++ , textcharsmax(text), length) && (pre_ips_count pre_names_count pre_steamids_count pre_flags_count) <= MAX_PREFIXES)
    {
        if(!
text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
            continue

        
parse(texttypecharsmax(type), keycharsmax(key), prefixcharsmax(prefix))
        
trim(prefix)

        if(!
type[0] || !prefix[0] || !key[0])
            continue

        
replace_all(prefixcharsmax(prefix), "!g""^x04")
        
replace_all(prefixcharsmax(prefix), "!t""^x03")
        
replace_all(prefixcharsmax(prefix), "!n""^x01")

        switch(
type[0])
        {
            case 
'f':
            {
                
pre_flags_count++
                
TrieSetString(pre_flags_collectkeyprefix)
                
server_print("%L"LANG_SERVER"PREFIX_LOAD_FLAG"in_prefixprefixkey[0])
            }
            case 
'i':
            {
                
pre_ips_count++
                
TrieSetString(pre_ips_collectkeyprefix)
                
server_print("%L"LANG_SERVER"PREFIX_LOAD_IP"in_prefixprefixkey)
            }
            case 
's':
            {
                
pre_steamids_count++
                
TrieSetString(pre_steamids_collectkeyprefix)
                
server_print("%L"LANG_SERVER"PREFIX_LOAD_STEAMID"in_prefixprefixkey)
            }
            case 
'n':
            {
                
pre_names_count++
                
TrieSetString(pre_names_collectkeyprefix)
                
server_print("%L"LANG_SERVER"PREFIX_LOAD_NAME"in_prefixprefixkey)
            }
            default:
            {
                continue
            }
        }
    }

    if(
pre_flags_count <= && pre_ips_count <= && pre_steamids_count <= && pre_names_count <= 0)
    {
        
server_print("%L"LANG_SERVER"PREFIX_NO"in_prefix)
    }

    
get_user_name(idg_namecharsmax(g_name))
    
server_print("%L"LANG_SERVER"PREFIX_LOADED_BY"in_prefixg_name)
    
console_print(id"%L"LANG_SERVER"PREFIX_LOADED"in_prefix)

    
server_print(separator)

    for(new 
1<= g_maxplayersi++)
    {
        
num_to_str(istr_idcharsmax(str_id))
        
TrieDeleteKey(client_prefixstr_id)
        
PutPrefix(i)
    }

    return 
PLUGIN_HANDLED
}

public 
LoadBadPrefixes(id)
{
    if(!
get_pcvar_num(g_bad_prefix))
    {
        
console_print(id"%L"LANG_SERVER"BADP_OFF"in_prefix)
        return 
PLUGIN_HANDLED
    
}

    if(!(
get_user_flags(id) & FLAG_LOAD))
    {
        
console_print(id"%L"LANG_SERVER"BADP_PERMISSION"in_prefix)
        return 
PLUGIN_HANDLED
    
}

    
TrieClear(bad_prefixes_collect)

    
line 0length 0bad_prefix_count 0;

    if(!
file_exists(file_bad_prefixes)) 
    {
        
console_print(id"%L"LANG_SERVER"BADP_NOT_FOUND"in_prefixfile_bad_prefixes)
        return 
PLUGIN_HANDLED        
    
}

    
server_print(separator)

    while(
read_file(file_bad_prefixesline++ , textcharsmax(text), length) && bad_prefix_count <= MAX_BAD_PREFIXES)
    {
        if(!
text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
            continue

        
parse(textprefixcharsmax(prefix))

        if(!
prefix[0])
            continue

        
bad_prefix_count++
        
TrieSetCell(bad_prefixes_collectprefix1)
        
server_print("%L"LANG_SERVER"BADP_LOAD"in_prefixprefix)
    }

    if(
bad_prefix_count <= 0)
    {
        
server_print("%L"LANG_SERVER"BADP_NO"in_prefix)
    }

    
get_user_name(idg_namecharsmax(g_name))
    
server_print("%L"LANG_SERVER"BADP_LOADED_BY"in_prefixg_name)
    
console_print(id"%L"LANG_SERVER"BADP_LOADED"in_prefix)

    
server_print(separator)

    return 
PLUGIN_HANDLED
}

readList()
{
    
// file to read words from 
    
new szCustomDir[64]
    new 
filename[64]
    
get_configsdirszCustomDir63 )
    
format(filename63"%s/swearwords.ini"szCustomDir )

    if(!
file_exists(filename) ){
        
log_message("Swear Filter: file %s not found"filename)
        return 
    } 
    new 
iLen 
    
while( g_swearsNum MAX_WORDS && read_file(filenameg_swearsNum ,g_swearsNames[g_swearsNum][1],30,iLen) ) 
    { 
    if( 
g_swearsNames[g_swearsNum][0] == ';') continue
    
g_swearsNames[g_swearsNum][0] = iLen 
    
++g_swearsNum 
    
}
    
log_message("Swear Filter: loaded %d words",g_swearsNum )
}

public 
client_putinserver(id)
{
    
g_toggle[id] = true
    num_to_str
(idstr_idcharsmax(str_id))
    
TrieSetString(client_prefixstr_id"")
    
PutPrefix(id)
}

public 
HookSay(id)
{
        new tag2[33];
        if(get_user_flags(id) & ADMIN_RCON)
        {
               tag2 "Administrator"
        }
        else if(get_user_flags(id) & ADMIN_BAN)
        {
               tag2 "Staff"
        }
        else if(get_user_flags(id) & ADMIN_MAP)
        {
               tag2 "Support"
        }
        else if(get_user_flags(id) & ADMIN_PASSWORD)
        {
               tag2 "Diamond VIP"
        }
        else if(get_user_flags(id) & ADMIN_CVAR)
        {
               tag2 "Gold VIP"
        }
        else if(get_user_flags(id) & ADMIN_KICK)
        {
               tag2 "VIP"
        }
    
    read_args
(g_typedcharsmax(g_typed))
    
remove_quotes(g_typed)

    
trim(g_typed)

    if(
equal(g_typed"") || !is_user_connected(id))
        return 
PLUGIN_HANDLED_MAIN

    
if(equal(g_typed"/prefix"))
    {
        if(
g_toggle[id])
        {
            
g_toggle[id] = false
            client_print
(idprint_chat"%L"LANG_SERVER"PREFIX_OFF"in_prefix)
        }
        else
        {
            
g_toggle[id] = true
            client_print
(idprint_chat"%L"LANG_SERVER"PREFIX_ON"in_prefix)
        }

        return 
PLUGIN_HANDLED_MAIN
    
}

    if(!
g_toggle[id])
        return 
PLUGIN_CONTINUE

    num_to_str
(idstr_idcharsmax(str_id))

    if((
TrieGetString(client_prefixstr_idtemp_prefixcharsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefixstr_idtemp_prefixcharsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
    {
        if(
check_say_characters(g_typed))
            return 
PLUGIN_HANDLED_MAIN
    
}

    
get_user_name(idg_namecharsmax(g_name))

    
g_team cs_get_user_team(id)

    new 
pos0
    
while ( g_swearsNum )
    {
    if ( (
pos containi(g_typed,g_swearsNames[i][1])) != -){ 
        new 
len g_swearsNames[i][0
        while(
len--)
        
g_typed[pos++] = '*'
        
continue
    }
    ++
i
    
}

        if(get_user_flags(id) & ADMIN_IMMUNITY)
        {
        
formatex(g_messagecharsmax(g_message), "^1%s^3[^4LVL %d^3] ^4[^3Owner^4]^4 %s :^3 %s"say_team_info[is_user_alive(id)][g_team], get_user_level(id), g_nameg_typed)
        }          
    
else if(get_user_flags(id) & ADMIN_RESERVATION)
    {
        
formatex(g_messagecharsmax(g_message), "^1%s^3[^4LVL %d^3] ^3[^4%s^3]^3 %s :^4 %s"say_team_info[is_user_alive(id)][g_team], get_user_level(id), tag2g_nameg_typed)
    }
    else if(
get_cvar_num("freevip_hour"))
        {
                formatex(g_messagecharsmax(g_message), "^1%s^3[^4LVL %d^3] ^3[^4FREE VIP^3] ^3%s :^1 %s"say_team_info[is_user_alive(id)][g_team], get_user_level(id), g_nameg_typed)
        }
    else 
    {
                formatex(g_messagecharsmax(g_message), "^1%s^3[^4LVL %d^3] ^3%s :^1 %s"say_team_info[is_user_alive(id)][g_team], get_user_level(id), g_nameg_typed)
        }

    for(new 
1<= g_maxplayersi++)
    {
        if(!
is_user_connected(i))
            continue
        
        
send_message(g_messageidi)
    }

    return 
PLUGIN_HANDLED_MAIN
}

public 
HookSayTeam(id)
{
        new tag2[33];
        if(get_user_flags(id) & ADMIN_RCON)
        {
               tag2 "Administrator"
        }
        else if(get_user_flags(id) & ADMIN_BAN)
        {
               tag2 "Staff"
        }
        else if(get_user_flags(id) & ADMIN_MAP)
        {
               tag2 "Support"
        }
        else if(get_user_flags(id) & ADMIN_PASSWORD)
        {
               tag2 "Diamond VIP"
        }
        else if(get_user_flags(id) & ADMIN_CVAR)
        {
               tag2 "Gold VIP"
        }
        else if(get_user_flags(id) & ADMIN_KICK)
        {
               tag2 "VIP"
        }

    
read_args(g_typedcharsmax(g_typed))
    
remove_quotes(g_typed)

    
trim(g_typed)

    if(
equal(g_typed"") || !is_user_connected(id))
        return 
PLUGIN_HANDLED_MAIN

    
if(equal(g_typed"/prefix"))
    {
        if(
g_toggle[id])
        {
            
g_toggle[id] = false
            client_print
(idprint_chat"%L"LANG_SERVER"PREFIX_OFF"in_prefix)
        }
        else
        {
            
g_toggle[id] = true
            client_print
(idprint_chat"%L"LANG_SERVER"PREFIX_ON"in_prefix)
        }

        return 
PLUGIN_HANDLED_MAIN
    
}

    if(!
g_toggle[id])
        return 
PLUGIN_CONTINUE

    num_to_str
(idstr_idcharsmax(str_id))

    if((
TrieGetString(client_prefixstr_idtemp_prefixcharsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefixstr_idtemp_prefixcharsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
    {
        if(
check_say_characters(g_typed))
            return 
PLUGIN_HANDLED_MAIN
    
}

    
get_user_name(idg_namecharsmax(g_name))

    
g_team cs_get_user_team(id)

    new 
pos0
    
while ( g_swearsNum )
    {
    if ( (
pos containi(g_typed,g_swearsNames[i][1])) != -){ 
        new 
len g_swearsNames[i][0
        while(
len--)
        
g_typed[pos++] = '*'
        
continue
    }
    ++
i
    
}

        if(get_user_flags(id) & ADMIN_IMMUNITY)
        {
        
formatex(g_messagecharsmax(g_message), "^1%s^3[^4LVL %d^3] ^4[^3Owner^4]^4 %s :^3 %s"sayteam_team_info[is_user_alive(id)][g_team], get_user_level(id), g_nameg_typed)
        }          
    
else if(get_user_flags(id) & ADMIN_RESERVATION)
    {
        
formatex(g_messagecharsmax(g_message), "^1%s^3[^4LVL %d^3]^3[^4%s^3] ^3 %s :^4 %s"sayteam_team_info[is_user_alive(id)][g_team], get_user_level(id), tag2g_nameg_typed)
    }
    else if(
get_cvar_num("freevip_hour"))
        {
                formatex(g_messagecharsmax(g_message), "^1%s^3[^4LVL %d^3] ^3[^4FREE VIP^3] ^3%s :^1 %s"sayteam_team_info[is_user_alive(id)][g_team], get_user_level(id), g_nameg_typed)
        }
    else 
    {
                formatex(g_messagecharsmax(g_message), "^1%s^3[^4LVL %d^3] ^3%s :^1 %s"sayteam_team_info[is_user_alive(id)][g_team], get_user_level(id), g_nameg_typed)
        }

    for(new 
1<= g_maxplayersi++)
    {
        if(!
is_user_connected(i))
            continue
        
        if(
get_user_team(id) == get_user_team(i))
        {
            
send_message(g_messageidi)
        }
    }

    return 
PLUGIN_HANDLED_MAIN
}

public 
SetPlayerPrefix(id)
{
    if(!
get_pcvar_num(g_custom) || !get_pcvar_string(g_custom_flagtemp_cvarcharsmax(temp_cvar)))
    {
        
console_print(id"%L"LANG_SERVER"CUSTOM_OFF"in_prefix)
        return 
PLUGIN_HANDLED
    
}

    if(!(
get_user_flags(id) & read_flags(temp_cvar)))
    {
        
console_print(id"%L"LANG_SERVER"CUSTOM_PERMISSION"in_prefix)
        return 
PLUGIN_HANDLED
    
}

    new 
input[128], target;
    new 
arg_type[2], arg_prefix[32], arg_key[35];
    new 
temp_str[16];

    
read_args(inputcharsmax(input))
    
remove_quotes(input)
    
parse(inputarg_typecharsmax(arg_type), arg_keycharsmax(arg_key), arg_prefixcharsmax(arg_prefix))
    
trim(arg_prefix)

    if(
get_pcvar_num(g_bad_prefix) && is_bad_prefix(arg_prefix) && !equali(arg_prefix""))
    {
        
console_print(id"%L"LANG_SERVER"CUSTOM_FORBIDDEN"in_prefixarg_prefix)
        return 
PLUGIN_HANDLED
    
}

    if(
get_pcvar_num(g_prefix_characters) && check_prefix_characters(arg_prefix))
    {
        
console_print(id"%L"LANG_SERVER"CUSTOM_SYMBOL"in_prefixarg_prefixforbidden_prefixes_symbols[i])
        return 
PLUGIN_HANDLED
    
}

    switch(
arg_type[0])
    {
        case 
'f':
        {
            
target 0
            temp_str 
"Flag"
        
}
        case 
'i':
        {
            
target find_player("d"arg_key)
            
temp_str "IP"
        
}
        case 
's':
        {
            
target find_player("c"arg_key)
            
temp_str "SteamID"
        
}
        case 
'n':
        {
            
target find_player("a"arg_key)
            
temp_str "Name"
        
}
        default:
        {
            
console_print(id"%L"LANG_SERVER"CUSTOM_INVALID"in_prefixarg_type)
            return 
PLUGIN_HANDLED
        
}
    }

    
get_user_name(idg_namecharsmax(g_name))

    if(
equali(arg_prefix""))
    {
        
find_and_delete(arg_typearg_key)

        if(
target)
        {
            
PutPrefix(target)
        }
        
        
console_print(id"%L"LANG_SERVER"CUSTOM_REMOVE"in_prefixtemp_strarg_key)
        
server_print("%L"LANG_SERVER"CUSTOM_REMOVE_INFO"in_prefixg_nametemp_strarg_key)
        return 
PLUGIN_HANDLED
    
}

    
find_and_delete(arg_typearg_key)

    
formatex(textcharsmax(text), "^"%s^" ^"%s^" ^"%s^""arg_typearg_keyarg_prefix)
    
write_file(file_prefixestext, -1)

    switch(
arg_type[0])
    {
        case 
'f':
        {
            
TrieSetString(pre_flags_collectarg_keyarg_prefix)
        }
        case 
'i':
        {
            
TrieSetString(pre_ips_collectarg_keyarg_prefix)
        }
        case 
's':
        {
            
TrieSetString(pre_steamids_collectarg_keyarg_prefix)
        }
        case 
'n':
        {
            
TrieSetString(pre_names_collectarg_keyarg_prefix)
        }
    }

    if(
target)
    {
        
num_to_str(targetstr_idcharsmax(str_id))
        
TrieSetString(client_prefixstr_idarg_prefix)
    }

    
console_print(id"%L"LANG_SERVER"CUSTOM_CHANGE"in_prefixtemp_strarg_keyarg_prefix)
    
server_print("%L"LANG_SERVER"CUSTOM_CHANGE_INFO"in_prefixg_nametemp_strarg_keyarg_prefix

    return 
PLUGIN_HANDLED
}

public 
client_infochanged(id)
{
    if(!
is_user_connected(id))
        return 
PLUGIN_CONTINUE

    
new g_old_name[32];

    
get_user_info(id"name"g_namecharsmax(g_name))
    
get_user_name(idg_old_namecharsmax(g_old_name))

    if(!
equal(g_nameg_old_name))
    {
        
num_to_str(idstr_idcharsmax(str_id))
        
TrieSetString(client_prefixstr_id"")
        
set_task(0.5"PutPrefix"id)
        return 
PLUGIN_HANDLED
    
}

    return 
PLUGIN_CONTINUE
}

public 
PutPrefix(id)
{
    
num_to_str(idstr_idcharsmax(str_id))
    
TrieSetString(client_prefixstr_id"")

    new 
sflags[32], temp_flag[2];
    
get_flags(get_user_flags(id), sflagscharsmax(sflags))

    for(new 
0<= charsmax(sflags); i++)
    {
        
formatex(temp_flagcharsmax(temp_flag), "%c"sflags[i])

        if(
TrieGetString(pre_flags_collecttemp_flagtemp_prefixcharsmax(temp_prefix)))
        {
            
TrieSetString(client_prefixstr_idtemp_prefix)
        }
    }

    
get_user_ip(idtemp_keycharsmax(temp_key), 1)

    if(
TrieGetString(pre_ips_collecttemp_keytemp_prefixcharsmax(temp_prefix)))
    {
        
TrieSetString(client_prefixstr_idtemp_prefix)
    }

    
get_user_authid(idtemp_keycharsmax(temp_key))

    if(
TrieGetString(pre_steamids_collecttemp_keytemp_prefixcharsmax(temp_prefix)))
    {
        
TrieSetString(client_prefixstr_idtemp_prefix)
    }

    
get_user_name(idtemp_keycharsmax(temp_key))

    if(
TrieGetString(pre_names_collecttemp_keytemp_prefixcharsmax(temp_prefix)))
    {
        
TrieSetString(client_prefixstr_idtemp_prefix)
    }

    return 
PLUGIN_HANDLED
}

send_message(const message[], const id, const i)
{
    
message_begin(MSG_ONEg_saytxt, {000}, i)
    
write_byte(id)
    
write_string(message)
    
message_end()
}

bool:check_say_characters(const check_message[])
{
    for(new 
0charsmax(forbidden_say_symbols); i++)
    {
        if(
check_message[0] == forbidden_say_symbols[i])
        {
            return 
true
        
}
    }
    return 
false
}

bool:check_prefix_characters(const check_prefix[])
{
    for(
0charsmax(forbidden_prefixes_symbols); i++)
    {
        if(
containi(check_prefixforbidden_prefixes_symbols[i]) != -1)
        {
            return 
true
        
}
    }
    return 
false
}

bool:is_bad_prefix(const check_prefix[])
{
    if(
TrieGetCell(bad_prefixes_collectcheck_prefixtemp_value))
    {
        return 
true
    
}
    return 
false
}

find_and_delete(const arg_type[], const arg_key[])
{
    
line 0length 0;

    while(
read_file(file_prefixesline++ , textcharsmax(text), length))
    {
        if(!
text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
            continue

        
parse(texttypecharsmax(type), keycharsmax(key), prefixcharsmax(prefix))
        
trim(prefix)

        if(!
type[0] || !prefix[0] || !key[0])
            continue
            
        if(!
equal(arg_typetype) || !equal(arg_keykey))
            continue
            
        
write_file(file_prefixes""line 1)
    }
    
    switch(
arg_type[0])
    {
        case 
'f':
        {
            
TrieDeleteKey(pre_flags_collectarg_key)
        }
        case 
'i':
        {
            
TrieDeleteKey(pre_ips_collectarg_key)
        }
        case 
's':
        {
            
TrieDeleteKey(pre_steamids_collectarg_key)
        }
        case 
'n':
        {
            
TrieDeleteKey(pre_names_collectarg_key)
        }
    }

#2
kişiye özel tag derken STEAM ID üzerinden mi ?
Plugin İşleri İçin discord : polat_hastasi
#3
(20-09-2025, 13:21)ahbet Adlı Kullanıcıdan Alıntı: kişiye özel tag derken STEAM ID üzerinden mi ?
hocam hocam ap_prefix üzerinden olmuyor mu eski sistem gibi ben yenisi pek beğenmedim ama işte o yüzden
herkese farklı farklı kendi istediğim tagı takmak istiyorum
#4
Bunlarla uğraşmayıp ocixcrom rank pluginini kurabilirsin.
#5
(20-09-2025, 16:25)Latinn Adlı Kullanıcıdan Alıntı: Bunlarla uğraşmayıp ocixcrom rank pluginini kurabilirsin.
hocam onu bilmiyorum yardımcı olurmusunuz
yani oyuncunu başında [%s level]  [TAG]  nick  ve bu tag kısmını kendin ayarlanabilir bir şekilde olmasın istiyorum ap_prefix veya ini dosyasından
#6
Dedikleriniz çoğundan anlamam plugin vs uraşmadığım işler. https://github.com/OciXCrom/RankSystem Buradan indirebilirsin zamanında kullandım baya detaylı. Chat tagı vs istiyorsanız ocixcrom chat pluginini ekstra indirmeniz gerekiyor. https://github.com/OciXCrom/ChatManager
#7
(20-09-2025, 16:33)Latinn Adlı Kullanıcıdan Alıntı: Dedikleriniz çoğundan anlamam plugin vs uraşmadığım işler. https://github.com/OciXCrom/RankSystem Buradan indirebilirsin zamanında kullandım baya detaylı. Chat tagı vs istiyorsanız ocixcrom chat pluginini ekstra indirmeniz gerekiyor. https://github.com/OciXCrom/ChatManager
anladım hocam bunlardan pek anlamam Üzgünüm
#8
(20-09-2025, 16:49)STAR FORGER Adlı Kullanıcıdan Alıntı:
(20-09-2025, 16:33)Latinn Adlı Kullanıcıdan Alıntı: Dedikleriniz çoğundan anlamam plugin vs uraşmadığım işler. https://github.com/OciXCrom/RankSystem Buradan indirebilirsin zamanında kullandım baya detaylı. Chat tagı vs istiyorsanız ocixcrom chat pluginini ekstra indirmeniz gerekiyor. https://github.com/OciXCrom/ChatManager
anladım hocam bunlardan pek anlamam Üzgünüm
kurulumu basit, sma indir yükle ve configs dosyalarını yükle düzenlemeleri configs içinden yapıyorsun. 1 aylık tag verme fln vardı diye hatırlıyorum.
#9
Konudaki herkes neden 2 satırlık kodu düzeltmek yerine ocixrom rank eklentisini önerdiniz ki? tamam belki daha optimizedir veya daha kolaydır ama bilmeyen birisi için konuyu daha zor konuma getiriyorsunuz.

Düzeltilmiş Kod;

Kod:
#include <amxmodx>
#include <amxmisc>
#include <celltrie>
#include <cstrike>
#include <levels>

#define VERSION "4.0"
#define FLAG_LOAD ADMIN_CFG
#define MAX_PREFIXES 33
#define MAX_BAD_PREFIXES 100

new g_bad_prefix, g_custom, g_custom_flag, g_say_characters, g_prefix_characters;
new pre_ips_count = 0, pre_names_count = 0, pre_steamids_count, pre_flags_count = 0, bad_prefix_count = 0, i, temp_cvar[2];
new configs_dir[64], file_prefixes[128], file_bad_prefixes[128], text[128], prefix[32], type[2], key[32], length, line = 0, error[256];
new g_saytxt, g_maxplayers, CsTeams:g_team;
new g_typed[192], g_message[192], g_name[32];
new Trie:pre_ips_collect, Trie:pre_names_collect, Trie:pre_steamids_collect, Trie:pre_flags_collect, Trie:bad_prefixes_collect, Trie:client_prefix;
new str_id[16], temp_key[35], temp_prefix[32], temp_value;
new bool:g_toggle[33];

new const say_team_info[2][CsTeams][] =
{
    {"*IZLEYICI* ", "*OLU* ", "*OLU* ", "*IZLEYICI* "},
    {"", "", "", ""}
}

new const sayteam_team_info[2][CsTeams][] =
{
    {"(IZLEYICI) ", "*OLU*(Terrorist) ", "*OLU*(Counter-Terrorist) ", "(IZLEYICI) "},
    {"(IZLEYICI) ", "(Terrorist) ", "(Counter-Terrorist) ", "(IZLEYICI) "}
}

new const forbidden_say_symbols[] = {
    "/",
    "!",
    "%",
    "$"
}

new const forbidden_prefixes_symbols[] = {
    "/",
    "\",
    "%",
    "$",
    ".",
    ":",
    "?",
    "!",
    "@",
    "#",
    "%"
}

new const separator[] = "************************************************"
new const in_prefix[] = "[AdminPrefixes]"

#define MAX_WORDS 192

new g_swearsNames[MAX_WORDS][32]
new g_swearsNum

public plugin_init()
{
    register_plugin("Admin Prefixes", VERSION, "m0skVi4a ;]")

    g_bad_prefix = register_cvar("ap_bad_prefixes", "1")
    g_custom = register_cvar("ap_custom_current", "1")
    g_custom_flag = register_cvar("ap_custom_current_flag", "b")
    g_say_characters = register_cvar("ap_say_characters", "1")
    g_prefix_characters = register_cvar("ap_prefix_characters", "1")

    g_saytxt = get_user_msgid ("SayText")
    g_maxplayers = get_maxplayers()

    register_concmd("ap_reload_prefixes", "LoadPrefixes")
    register_concmd("ap_reload_badprefixes", "LoadBadPrefixes")
    register_concmd("ap_put", "SetPlayerPrefix")
    register_clcmd("say", "HookSay")
    register_clcmd("say_team", "HookSayTeam")

    pre_ips_collect = TrieCreate()
    pre_names_collect = TrieCreate()
    pre_steamids_collect = TrieCreate()
    pre_flags_collect = TrieCreate()
    bad_prefixes_collect = TrieCreate()
    client_prefix = TrieCreate()

    register_dictionary("admin_prefixes.txt")

    get_configsdir(configs_dir, charsmax(configs_dir))
    formatex(file_prefixes, charsmax(file_prefixes), "%s/ap_prefixes.ini", configs_dir)
    formatex(file_bad_prefixes, charsmax(file_bad_prefixes), "%s/ap_bad_prefixes.ini", configs_dir)

    LoadPrefixes(0)
    LoadBadPrefixes(0)
    readList()
}

public LoadPrefixes(id)
{
    if(!(get_user_flags(id) & FLAG_LOAD))
    {
        console_print(id, "%L", LANG_SERVER, "PREFIX_PERMISSION", in_prefix)
        return PLUGIN_HANDLED
    }

    TrieClear(pre_ips_collect)
    TrieClear(pre_names_collect)
    TrieClear(pre_steamids_collect)
    TrieClear(pre_flags_collect)

    line = 0, length = 0, pre_flags_count = 0, pre_ips_count = 0, pre_names_count = 0;

    if(!file_exists(file_prefixes))
    {
        formatex(error, charsmax(error), "%L", LANG_SERVER, "PREFIX_NOT_FOUND", in_prefix, file_prefixes)
        set_fail_state(error)
    }

    server_print(separator)

    while(read_file(file_prefixes, line++ , text, charsmax(text), length) && (pre_ips_count + pre_names_count + pre_steamids_count + pre_flags_count) <= MAX_PREFIXES)
    {
        if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
            continue

        parse(text, type, charsmax(type), key, charsmax(key), prefix, charsmax(prefix))
        trim(prefix)

        if(!type[0] || !prefix[0] || !key[0])
            continue

        replace_all(prefix, charsmax(prefix), "!g", "^x04")
        replace_all(prefix, charsmax(prefix), "!t", "^x03")
        replace_all(prefix, charsmax(prefix), "!n", "^x01")

        switch(type[0])
        {
            case 'f':
            {
                pre_flags_count++
                TrieSetString(pre_flags_collect, key, prefix)
                server_print("%L", LANG_SERVER, "PREFIX_LOAD_FLAG", in_prefix, prefix, key[0])
            }
            case 'i':
            {
                pre_ips_count++
                TrieSetString(pre_ips_collect, key, prefix)
                server_print("%L", LANG_SERVER, "PREFIX_LOAD_IP", in_prefix, prefix, key)
            }
            case 's':
            {
                pre_steamids_count++
                TrieSetString(pre_steamids_collect, key, prefix)
                server_print("%L", LANG_SERVER, "PREFIX_LOAD_STEAMID", in_prefix, prefix, key)
            }
            case 'n':
            {
                pre_names_count++
                TrieSetString(pre_names_collect, key, prefix)
                server_print("%L", LANG_SERVER, "PREFIX_LOAD_NAME", in_prefix, prefix, key)
            }
            default:
            {
                continue
            }
        }
    }

    if(pre_flags_count <= 0 && pre_ips_count <= 0 && pre_steamids_count <= 0 && pre_names_count <= 0)
    {
        server_print("%L", LANG_SERVER, "PREFIX_NO", in_prefix)
    }

    get_user_name(id, g_name, charsmax(g_name))
    server_print("%L", LANG_SERVER, "PREFIX_LOADED_BY", in_prefix, g_name)
    console_print(id, "%L", LANG_SERVER, "PREFIX_LOADED", in_prefix)

    server_print(separator)

    for(new i = 1; i <= g_maxplayers; i++)
    {
        num_to_str(i, str_id, charsmax(str_id))
        TrieDeleteKey(client_prefix, str_id)
        PutPrefix(i)
    }

    return PLUGIN_HANDLED
}

public LoadBadPrefixes(id)
{
    if(!get_pcvar_num(g_bad_prefix))
    {
        console_print(id, "%L", LANG_SERVER, "BADP_OFF", in_prefix)
        return PLUGIN_HANDLED
    }

    if(!(get_user_flags(id) & FLAG_LOAD))
    {
        console_print(id, "%L", LANG_SERVER, "BADP_PERMISSION", in_prefix)
        return PLUGIN_HANDLED
    }

    TrieClear(bad_prefixes_collect)

    line = 0, length = 0, bad_prefix_count = 0;

    if(!file_exists(file_bad_prefixes))
    {
        console_print(id, "%L", LANG_SERVER, "BADP_NOT_FOUND", in_prefix, file_bad_prefixes)
        return PLUGIN_HANDLED       
    }

    server_print(separator)

    while(read_file(file_bad_prefixes, line++ , text, charsmax(text), length) && bad_prefix_count <= MAX_BAD_PREFIXES)
    {
        if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
            continue

        parse(text, prefix, charsmax(prefix))

        if(!prefix[0])
            continue

        bad_prefix_count++
        TrieSetCell(bad_prefixes_collect, prefix, 1)
        server_print("%L", LANG_SERVER, "BADP_LOAD", in_prefix, prefix)
    }

    if(bad_prefix_count <= 0)
    {
        server_print("%L", LANG_SERVER, "BADP_NO", in_prefix)
    }

    get_user_name(id, g_name, charsmax(g_name))
    server_print("%L", LANG_SERVER, "BADP_LOADED_BY", in_prefix, g_name)
    console_print(id, "%L", LANG_SERVER, "BADP_LOADED", in_prefix)

    server_print(separator)

    return PLUGIN_HANDLED
}

readList()
{
    // file to read words from
    new szCustomDir[64]
    new filename[64]
    get_configsdir( szCustomDir, 63 )
    format(filename, 63, "%s/swearwords.ini", szCustomDir )

    if(!file_exists(filename) ){
        log_message("Swear Filter: file %s not found", filename)
        return
    }
    new iLen
    while( g_swearsNum < MAX_WORDS && read_file(filename, g_swearsNum ,g_swearsNames[g_swearsNum][1],30,iLen) )
    {
    if( g_swearsNames[g_swearsNum][0] == ';') continue
    g_swearsNames[g_swearsNum][0] = iLen
    ++g_swearsNum
    }
    log_message("Swear Filter: loaded %d words",g_swearsNum )
}

public client_putinserver(id)
{
    g_toggle[id] = true
    num_to_str(id, str_id, charsmax(str_id))
    TrieSetString(client_prefix, str_id, "")
    PutPrefix(id)
}

public HookSay(id)
{
        new tag2[33];
        if(get_user_flags(id) & ADMIN_RCON)
        {
               tag2 = "Administrator"
        }
        else if(get_user_flags(id) & ADMIN_BAN)
        {
               tag2 = "Staff"
        }
        else if(get_user_flags(id) & ADMIN_MAP)
        {
               tag2 = "Support"
        }
        else if(get_user_flags(id) & ADMIN_PASSWORD)
        {
               tag2 = "Diamond VIP"
        }
        else if(get_user_flags(id) & ADMIN_CVAR)
        {
               tag2 = "Gold VIP"
        }
        else if(get_user_flags(id) & ADMIN_KICK)
        {
               tag2 = "VIP"
        }
   
    read_args(g_typed, charsmax(g_typed))
    remove_quotes(g_typed)

    trim(g_typed)

    if(equal(g_typed, "") || !is_user_connected(id))
        return PLUGIN_HANDLED_MAIN

    if(equal(g_typed, "/prefix"))
    {
        if(g_toggle[id])
        {
            g_toggle[id] = false
            client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_OFF", in_prefix)
        }
        else
        {
            g_toggle[id] = true
            client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_ON", in_prefix)
        }

        return PLUGIN_HANDLED_MAIN
    }

    if(!g_toggle[id])
        return PLUGIN_CONTINUE

    num_to_str(id, str_id, charsmax(str_id))

    if((TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
    {
        if(check_say_characters(g_typed))
            return PLUGIN_HANDLED_MAIN
    }

    get_user_name(id, g_name, charsmax(g_name))

    g_team = cs_get_user_team(id)

    new pos, i = 0
    while ( i < g_swearsNum )
    {
    if ( (pos = containi(g_typed,g_swearsNames[i][1])) != -1 ){
        new len = g_swearsNames[i][0]
        while(len--)
        g_typed[pos++] = '*'
        continue
    }
    ++i
    }

        if(get_user_flags(id) & ADMIN_IMMUNITY)
        {
        formatex(g_message, charsmax(g_message), "^1%s^3[^4LVL %d^3] ^4[^3%s^4]^4 %s :^3 %s", say_team_info[is_user_alive(id)][g_team], get_user_level(id),tag2, g_name, g_typed)
        }         
    else if(get_user_flags(id) & ADMIN_RESERVATION)
    {
        formatex(g_message, charsmax(g_message), "^1%s^3[^4LVL %d^3] ^3[^4%s^3]^3 %s :^4 %s", say_team_info[is_user_alive(id)][g_team], get_user_level(id), tag2, g_name, g_typed)
    }
    else if(get_cvar_num("freevip_hour"))
        {
                formatex(g_message, charsmax(g_message), "^1%s^3[^4LVL %d^3] ^3[^4FREE VIP^3] ^3%s :^1 %s", say_team_info[is_user_alive(id)][g_team], get_user_level(id), g_name, g_typed)
        }
    else
    {
                formatex(g_message, charsmax(g_message), "^1%s^3[^4LVL %d^3] ^3%s :^1 %s", say_team_info[is_user_alive(id)][g_team], get_user_level(id), g_name, g_typed)
        }

    for(new i = 1; i <= g_maxplayers; i++)
    {
        if(!is_user_connected(i))
            continue
       
        send_message(g_message, id, i)
    }

    return PLUGIN_HANDLED_MAIN
}

public HookSayTeam(id)
{
        new tag2[33];
        if(get_user_flags(id) & ADMIN_RCON)
        {
               tag2 = "Administrator"
        }
        else if(get_user_flags(id) & ADMIN_BAN)
        {
               tag2 = "Staff"
        }
        else if(get_user_flags(id) & ADMIN_MAP)
        {
               tag2 = "Support"
        }
        else if(get_user_flags(id) & ADMIN_PASSWORD)
        {
               tag2 = "Diamond VIP"
        }
        else if(get_user_flags(id) & ADMIN_CVAR)
        {
               tag2 = "Gold VIP"
        }
        else if(get_user_flags(id) & ADMIN_KICK)
        {
               tag2 = "VIP"
        }

    read_args(g_typed, charsmax(g_typed))
    remove_quotes(g_typed)

    trim(g_typed)

    if(equal(g_typed, "") || !is_user_connected(id))
        return PLUGIN_HANDLED_MAIN

    if(equal(g_typed, "/prefix"))
    {
        if(g_toggle[id])
        {
            g_toggle[id] = false
            client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_OFF", in_prefix)
        }
        else
        {
            g_toggle[id] = true
            client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_ON", in_prefix)
        }

        return PLUGIN_HANDLED_MAIN
    }

    if(!g_toggle[id])
        return PLUGIN_CONTINUE

    num_to_str(id, str_id, charsmax(str_id))

    if((TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
    {
        if(check_say_characters(g_typed))
            return PLUGIN_HANDLED_MAIN
    }

    get_user_name(id, g_name, charsmax(g_name))

    g_team = cs_get_user_team(id)

    new pos, i = 0
    while ( i < g_swearsNum )
    {
    if ( (pos = containi(g_typed,g_swearsNames[i][1])) != -1 ){
        new len = g_swearsNames[i][0]
        while(len--)
        g_typed[pos++] = '*'
        continue
    }
    ++i
    }

        if(get_user_flags(id) & ADMIN_IMMUNITY)
        {
        formatex(g_message, charsmax(g_message), "^1%s^3[^4LVL %d^3] ^4[^3%s^4]^4 %s :^3 %s", sayteam_team_info[is_user_alive(id)][g_team], get_user_level(id), tag2, g_name, g_typed)
        }         
    else if(get_user_flags(id) & ADMIN_RESERVATION)
    {
        formatex(g_message, charsmax(g_message), "^1%s^3[^4LVL %d^3]^3[^4%s^3] ^3 %s :^4 %s", sayteam_team_info[is_user_alive(id)][g_team], get_user_level(id), tag2, g_name, g_typed)
    }
    else if(get_cvar_num("freevip_hour"))
        {
                formatex(g_message, charsmax(g_message), "^1%s^3[^4LVL %d^3] ^3[^4FREE VIP^3] ^3%s :^1 %s", sayteam_team_info[is_user_alive(id)][g_team], get_user_level(id), g_name, g_typed)
        }
    else
    {
                formatex(g_message, charsmax(g_message), "^1%s^3[^4LVL %d^3] ^3%s :^1 %s", sayteam_team_info[is_user_alive(id)][g_team], get_user_level(id), g_name, g_typed)
        }

    for(new i = 1; i <= g_maxplayers; i++)
    {
        if(!is_user_connected(i))
            continue
       
        if(get_user_team(id) == get_user_team(i))
        {
            send_message(g_message, id, i)
        }
    }

    return PLUGIN_HANDLED_MAIN
}

public SetPlayerPrefix(id)
{
    if(!get_pcvar_num(g_custom) || !get_pcvar_string(g_custom_flag, temp_cvar, charsmax(temp_cvar)))
    {
        console_print(id, "%L", LANG_SERVER, "CUSTOM_OFF", in_prefix)
        return PLUGIN_HANDLED
    }

    if(!(get_user_flags(id) & read_flags(temp_cvar)))
    {
        console_print(id, "%L", LANG_SERVER, "CUSTOM_PERMISSION", in_prefix)
        return PLUGIN_HANDLED
    }

    new input[128], target;
    new arg_type[2], arg_prefix[32], arg_key[35];
    new temp_str[16];

    read_args(input, charsmax(input))
    remove_quotes(input)
    parse(input, arg_type, charsmax(arg_type), arg_key, charsmax(arg_key), arg_prefix, charsmax(arg_prefix))
    trim(arg_prefix)

    if(get_pcvar_num(g_bad_prefix) && is_bad_prefix(arg_prefix) && !equali(arg_prefix, ""))
    {
        console_print(id, "%L", LANG_SERVER, "CUSTOM_FORBIDDEN", in_prefix, arg_prefix)
        return PLUGIN_HANDLED
    }

    if(get_pcvar_num(g_prefix_characters) && check_prefix_characters(arg_prefix))
    {
        console_print(id, "%L", LANG_SERVER, "CUSTOM_SYMBOL", in_prefix, arg_prefix, forbidden_prefixes_symbols[i])
        return PLUGIN_HANDLED
    }

    switch(arg_type[0])
    {
        case 'f':
        {
            target = 0
            temp_str = "Flag"
        }
        case 'i':
        {
            target = find_player("d", arg_key)
            temp_str = "IP"
        }
        case 's':
        {
            target = find_player("c", arg_key)
            temp_str = "SteamID"
        }
        case 'n':
        {
            target = find_player("a", arg_key)
            temp_str = "Name"
        }
        default:
        {
            console_print(id, "%L", LANG_SERVER, "CUSTOM_INVALID", in_prefix, arg_type)
            return PLUGIN_HANDLED
        }
    }

    get_user_name(id, g_name, charsmax(g_name))

    if(equali(arg_prefix, ""))
    {
        find_and_delete(arg_type, arg_key)

        if(target)
        {
            PutPrefix(target)
        }
       
        console_print(id, "%L", LANG_SERVER, "CUSTOM_REMOVE", in_prefix, temp_str, arg_key)
        server_print("%L", LANG_SERVER, "CUSTOM_REMOVE_INFO", in_prefix, g_name, temp_str, arg_key)
        return PLUGIN_HANDLED
    }

    find_and_delete(arg_type, arg_key)

    formatex(text, charsmax(text), "^"%s^" ^"%s^" ^"%s^"", arg_type, arg_key, arg_prefix)
    write_file(file_prefixes, text, -1)

    switch(arg_type[0])
    {
        case 'f':
        {
            TrieSetString(pre_flags_collect, arg_key, arg_prefix)
        }
        case 'i':
        {
            TrieSetString(pre_ips_collect, arg_key, arg_prefix)
        }
        case 's':
        {
            TrieSetString(pre_steamids_collect, arg_key, arg_prefix)
        }
        case 'n':
        {
            TrieSetString(pre_names_collect, arg_key, arg_prefix)
        }
    }

    if(target)
    {
        num_to_str(target, str_id, charsmax(str_id))
        TrieSetString(client_prefix, str_id, arg_prefix)
    }

    console_print(id, "%L", LANG_SERVER, "CUSTOM_CHANGE", in_prefix, temp_str, arg_key, arg_prefix)
    server_print("%L", LANG_SERVER, "CUSTOM_CHANGE_INFO", in_prefix, g_name, temp_str, arg_key, arg_prefix)

    return PLUGIN_HANDLED
}

public client_infochanged(id)
{
    if(!is_user_connected(id))
        return PLUGIN_CONTINUE

    new g_old_name[32];

    get_user_info(id, "name", g_name, charsmax(g_name))
    get_user_name(id, g_old_name, charsmax(g_old_name))

    if(!equal(g_name, g_old_name))
    {
        num_to_str(id, str_id, charsmax(str_id))
        TrieSetString(client_prefix, str_id, "")
        set_task(0.5, "PutPrefix", id)
        return PLUGIN_HANDLED
    }

    return PLUGIN_CONTINUE
}

public PutPrefix(id)
{
    num_to_str(id, str_id, charsmax(str_id))
    TrieSetString(client_prefix, str_id, "")

    new sflags[32], temp_flag[2];
    get_flags(get_user_flags(id), sflags, charsmax(sflags))

    for(new i = 0; i <= charsmax(sflags); i++)
    {
        formatex(temp_flag, charsmax(temp_flag), "%c", sflags[i])

        if(TrieGetString(pre_flags_collect, temp_flag, temp_prefix, charsmax(temp_prefix)))
        {
            TrieSetString(client_prefix, str_id, temp_prefix)
        }
    }

    get_user_ip(id, temp_key, charsmax(temp_key), 1)

    if(TrieGetString(pre_ips_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
    {
        TrieSetString(client_prefix, str_id, temp_prefix)
    }

    get_user_authid(id, temp_key, charsmax(temp_key))

    if(TrieGetString(pre_steamids_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
    {
        TrieSetString(client_prefix, str_id, temp_prefix)
    }

    get_user_name(id, temp_key, charsmax(temp_key))

    if(TrieGetString(pre_names_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
    {
        TrieSetString(client_prefix, str_id, temp_prefix)
    }

    return PLUGIN_HANDLED
}

send_message(const message[], const id, const i)
{
    message_begin(MSG_ONE, g_saytxt, {0, 0, 0}, i)
    write_byte(id)
    write_string(message)
    message_end()
}

bool:check_say_characters(const check_message[])
{
    for(new i = 0; i < charsmax(forbidden_say_symbols); i++)
    {
        if(check_message[0] == forbidden_say_symbols[i])
        {
            return true
        }
    }
    return false
}

bool:check_prefix_characters(const check_prefix[])
{
    for(i = 0; i < charsmax(forbidden_prefixes_symbols); i++)
    {
        if(containi(check_prefix, forbidden_prefixes_symbols[i]) != -1)
        {
            return true
        }
    }
    return false
}

bool:is_bad_prefix(const check_prefix[])
{
    if(TrieGetCell(bad_prefixes_collect, check_prefix, temp_value))
    {
        return true
    }
    return false
}

find_and_delete(const arg_type[], const arg_key[])
{
    line = 0, length = 0;

    while(read_file(file_prefixes, line++ , text, charsmax(text), length))
    {
        if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
            continue

        parse(text, type, charsmax(type), key, charsmax(key), prefix, charsmax(prefix))
        trim(prefix)

        if(!type[0] || !prefix[0] || !key[0])
            continue
           
        if(!equal(arg_type, type) || !equal(arg_key, key))
            continue
           
        write_file(file_prefixes, "", line - 1)
    }
   
    switch(arg_type[0])
    {
        case 'f':
        {
            TrieDeleteKey(pre_flags_collect, arg_key)
        }
        case 'i':
        {
            TrieDeleteKey(pre_ips_collect, arg_key)
        }
        case 's':
        {
            TrieDeleteKey(pre_steamids_collect, arg_key)
        }
        case 'n':
        {
            TrieDeleteKey(pre_names_collect, arg_key)
        }
    }
}

Bilginiz icin ekteki eklenti orjinalinden değiştirilmiş eklentidir, eğer sorun yaşamamak isterseniz aynı eklentiyi Admin Prefixes V4.0 by m0skVi4a ;] linkinden indirebilirsiniz
Son Düzenleme: 20-09-2025, 17:26, Düzenleyen: Sentences.
#10
(20-09-2025, 17:25)Sentences Adlı Kullanıcıdan Alıntı: Konudaki herkes neden 2 satırlık kodu düzeltmek yerine ocixrom rank eklentisini önerdiniz ki? tamam belki daha optimizedir veya daha kolaydır ama bilmeyen birisi için konuyu daha zor konuma getiriyorsunuz.

Düzeltilmiş Kod;

Kod:
#include <amxmodx>
#include <amxmisc>
#include <celltrie>
#include <cstrike>
#include <levels>

#define VERSION "4.0"
#define FLAG_LOAD ADMIN_CFG
#define MAX_PREFIXES 33
#define MAX_BAD_PREFIXES 100

new g_bad_prefix, g_custom, g_custom_flag, g_say_characters, g_prefix_characters;
new pre_ips_count = 0, pre_names_count = 0, pre_steamids_count, pre_flags_count = 0, bad_prefix_count = 0, i, temp_cvar[2];
new configs_dir[64], file_prefixes[128], file_bad_prefixes[128], text[128], prefix[32], type[2], key[32], length, line = 0, error[256];
new g_saytxt, g_maxplayers, CsTeams:g_team;
new g_typed[192], g_message[192], g_name[32];
new Trie:pre_ips_collect, Trie:pre_names_collect, Trie:pre_steamids_collect, Trie:pre_flags_collect, Trie:bad_prefixes_collect, Trie:client_prefix;
new str_id[16], temp_key[35], temp_prefix[32], temp_value;
new bool:g_toggle[33];

new const say_team_info[2][CsTeams][] =
{
    {"*IZLEYICI* ", "*OLU* ", "*OLU* ", "*IZLEYICI* "},
    {"", "", "", ""}
}

new const sayteam_team_info[2][CsTeams][] =
{
    {"(IZLEYICI) ", "*OLU*(Terrorist) ", "*OLU*(Counter-Terrorist) ", "(IZLEYICI) "},
    {"(IZLEYICI) ", "(Terrorist) ", "(Counter-Terrorist) ", "(IZLEYICI) "}
}

new const forbidden_say_symbols[] = {
    "/",
    "!",
    "%",
    "$"
}

new const forbidden_prefixes_symbols[] = {
    "/",
    "\",
    "%",
    "$",
    ".",
    ":",
    "?",
    "!",
    "@",
    "#",
    "%"
}

new const separator[] = "************************************************"
new const in_prefix[] = "[AdminPrefixes]"

#define MAX_WORDS 192

new g_swearsNames[MAX_WORDS][32]
new g_swearsNum

public plugin_init()
{
    register_plugin("Admin Prefixes", VERSION, "m0skVi4a ;]")

    g_bad_prefix = register_cvar("ap_bad_prefixes", "1")
    g_custom = register_cvar("ap_custom_current", "1")
    g_custom_flag = register_cvar("ap_custom_current_flag", "b")
    g_say_characters = register_cvar("ap_say_characters", "1")
    g_prefix_characters = register_cvar("ap_prefix_characters", "1")

    g_saytxt = get_user_msgid ("SayText")
    g_maxplayers = get_maxplayers()

    register_concmd("ap_reload_prefixes", "LoadPrefixes")
    register_concmd("ap_reload_badprefixes", "LoadBadPrefixes")
    register_concmd("ap_put", "SetPlayerPrefix")
    register_clcmd("say", "HookSay")
    register_clcmd("say_team", "HookSayTeam")

    pre_ips_collect = TrieCreate()
    pre_names_collect = TrieCreate()
    pre_steamids_collect = TrieCreate()
    pre_flags_collect = TrieCreate()
    bad_prefixes_collect = TrieCreate()
    client_prefix = TrieCreate()

    register_dictionary("admin_prefixes.txt")

    get_configsdir(configs_dir, charsmax(configs_dir))
    formatex(file_prefixes, charsmax(file_prefixes), "%s/ap_prefixes.ini", configs_dir)
    formatex(file_bad_prefixes, charsmax(file_bad_prefixes), "%s/ap_bad_prefixes.ini", configs_dir)

    LoadPrefixes(0)
    LoadBadPrefixes(0)
    readList()
}

public LoadPrefixes(id)
{
    if(!(get_user_flags(id) & FLAG_LOAD))
    {
        console_print(id, "%L", LANG_SERVER, "PREFIX_PERMISSION", in_prefix)
        return PLUGIN_HANDLED
    }

    TrieClear(pre_ips_collect)
    TrieClear(pre_names_collect)
    TrieClear(pre_steamids_collect)
    TrieClear(pre_flags_collect)

    line = 0, length = 0, pre_flags_count = 0, pre_ips_count = 0, pre_names_count = 0;

    if(!file_exists(file_prefixes))
    {
        formatex(error, charsmax(error), "%L", LANG_SERVER, "PREFIX_NOT_FOUND", in_prefix, file_prefixes)
        set_fail_state(error)
    }

    server_print(separator)

    while(read_file(file_prefixes, line++ , text, charsmax(text), length) && (pre_ips_count + pre_names_count + pre_steamids_count + pre_flags_count) <= MAX_PREFIXES)
    {
        if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
            continue

        parse(text, type, charsmax(type), key, charsmax(key), prefix, charsmax(prefix))
        trim(prefix)

        if(!type[0] || !prefix[0] || !key[0])
            continue

        replace_all(prefix, charsmax(prefix), "!g", "^x04")
        replace_all(prefix, charsmax(prefix), "!t", "^x03")
        replace_all(prefix, charsmax(prefix), "!n", "^x01")

        switch(type[0])
        {
            case 'f':
            {
                pre_flags_count++
                TrieSetString(pre_flags_collect, key, prefix)
                server_print("%L", LANG_SERVER, "PREFIX_LOAD_FLAG", in_prefix, prefix, key[0])
            }
            case 'i':
            {
                pre_ips_count++
                TrieSetString(pre_ips_collect, key, prefix)
                server_print("%L", LANG_SERVER, "PREFIX_LOAD_IP", in_prefix, prefix, key)
            }
            case 's':
            {
                pre_steamids_count++
                TrieSetString(pre_steamids_collect, key, prefix)
                server_print("%L", LANG_SERVER, "PREFIX_LOAD_STEAMID", in_prefix, prefix, key)
            }
            case 'n':
            {
                pre_names_count++
                TrieSetString(pre_names_collect, key, prefix)
                server_print("%L", LANG_SERVER, "PREFIX_LOAD_NAME", in_prefix, prefix, key)
            }
            default:
            {
                continue
            }
        }
    }

    if(pre_flags_count <= 0 && pre_ips_count <= 0 && pre_steamids_count <= 0 && pre_names_count <= 0)
    {
        server_print("%L", LANG_SERVER, "PREFIX_NO", in_prefix)
    }

    get_user_name(id, g_name, charsmax(g_name))
    server_print("%L", LANG_SERVER, "PREFIX_LOADED_BY", in_prefix, g_name)
    console_print(id, "%L", LANG_SERVER, "PREFIX_LOADED", in_prefix)

    server_print(separator)

    for(new i = 1; i <= g_maxplayers; i++)
    {
        num_to_str(i, str_id, charsmax(str_id))
        TrieDeleteKey(client_prefix, str_id)
        PutPrefix(i)
    }

    return PLUGIN_HANDLED
}

public LoadBadPrefixes(id)
{
    if(!get_pcvar_num(g_bad_prefix))
    {
        console_print(id, "%L", LANG_SERVER, "BADP_OFF", in_prefix)
        return PLUGIN_HANDLED
    }

    if(!(get_user_flags(id) & FLAG_LOAD))
    {
        console_print(id, "%L", LANG_SERVER, "BADP_PERMISSION", in_prefix)
        return PLUGIN_HANDLED
    }

    TrieClear(bad_prefixes_collect)

    line = 0, length = 0, bad_prefix_count = 0;

    if(!file_exists(file_bad_prefixes))
    {
        console_print(id, "%L", LANG_SERVER, "BADP_NOT_FOUND", in_prefix, file_bad_prefixes)
        return PLUGIN_HANDLED       
    }

    server_print(separator)

    while(read_file(file_bad_prefixes, line++ , text, charsmax(text), length) && bad_prefix_count <= MAX_BAD_PREFIXES)
    {
        if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
            continue

        parse(text, prefix, charsmax(prefix))

        if(!prefix[0])
            continue

        bad_prefix_count++
        TrieSetCell(bad_prefixes_collect, prefix, 1)
        server_print("%L", LANG_SERVER, "BADP_LOAD", in_prefix, prefix)
    }

    if(bad_prefix_count <= 0)
    {
        server_print("%L", LANG_SERVER, "BADP_NO", in_prefix)
    }

    get_user_name(id, g_name, charsmax(g_name))
    server_print("%L", LANG_SERVER, "BADP_LOADED_BY", in_prefix, g_name)
    console_print(id, "%L", LANG_SERVER, "BADP_LOADED", in_prefix)

    server_print(separator)

    return PLUGIN_HANDLED
}

readList()
{
    // file to read words from
    new szCustomDir[64]
    new filename[64]
    get_configsdir( szCustomDir, 63 )
    format(filename, 63, "%s/swearwords.ini", szCustomDir )

    if(!file_exists(filename) ){
        log_message("Swear Filter: file %s not found", filename)
        return
    }
    new iLen
    while( g_swearsNum < MAX_WORDS && read_file(filename, g_swearsNum ,g_swearsNames[g_swearsNum][1],30,iLen) )
    {
    if( g_swearsNames[g_swearsNum][0] == ';') continue
    g_swearsNames[g_swearsNum][0] = iLen
    ++g_swearsNum
    }
    log_message("Swear Filter: loaded %d words",g_swearsNum )
}

public client_putinserver(id)
{
    g_toggle[id] = true
    num_to_str(id, str_id, charsmax(str_id))
    TrieSetString(client_prefix, str_id, "")
    PutPrefix(id)
}

public HookSay(id)
{
        new tag2[33];
        if(get_user_flags(id) & ADMIN_RCON)
        {
               tag2 = "Administrator"
        }
        else if(get_user_flags(id) & ADMIN_BAN)
        {
               tag2 = "Staff"
        }
        else if(get_user_flags(id) & ADMIN_MAP)
        {
               tag2 = "Support"
        }
        else if(get_user_flags(id) & ADMIN_PASSWORD)
        {
               tag2 = "Diamond VIP"
        }
        else if(get_user_flags(id) & ADMIN_CVAR)
        {
               tag2 = "Gold VIP"
        }
        else if(get_user_flags(id) & ADMIN_KICK)
        {
               tag2 = "VIP"
        }
   
    read_args(g_typed, charsmax(g_typed))
    remove_quotes(g_typed)

    trim(g_typed)

    if(equal(g_typed, "") || !is_user_connected(id))
        return PLUGIN_HANDLED_MAIN

    if(equal(g_typed, "/prefix"))
    {
        if(g_toggle[id])
        {
            g_toggle[id] = false
            client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_OFF", in_prefix)
        }
        else
        {
            g_toggle[id] = true
            client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_ON", in_prefix)
        }

        return PLUGIN_HANDLED_MAIN
    }

    if(!g_toggle[id])
        return PLUGIN_CONTINUE

    num_to_str(id, str_id, charsmax(str_id))

    if((TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
    {
        if(check_say_characters(g_typed))
            return PLUGIN_HANDLED_MAIN
    }

    get_user_name(id, g_name, charsmax(g_name))

    g_team = cs_get_user_team(id)

    new pos, i = 0
    while ( i < g_swearsNum )
    {
    if ( (pos = containi(g_typed,g_swearsNames[i][1])) != -1 ){
        new len = g_swearsNames[i][0]
        while(len--)
        g_typed[pos++] = '*'
        continue
    }
    ++i
    }

        if(get_user_flags(id) & ADMIN_IMMUNITY)
        {
        formatex(g_message, charsmax(g_message), "^1%s^3[^4LVL %d^3] ^4[^3%s^4]^4 %s :^3 %s", say_team_info[is_user_alive(id)][g_team], get_user_level(id),tag2, g_name, g_typed)
        }         
    else if(get_user_flags(id) & ADMIN_RESERVATION)
    {
        formatex(g_message, charsmax(g_message), "^1%s^3[^4LVL %d^3] ^3[^4%s^3]^3 %s :^4 %s", say_team_info[is_user_alive(id)][g_team], get_user_level(id), tag2, g_name, g_typed)
    }
    else if(get_cvar_num("freevip_hour"))
        {
                formatex(g_message, charsmax(g_message), "^1%s^3[^4LVL %d^3] ^3[^4FREE VIP^3] ^3%s :^1 %s", say_team_info[is_user_alive(id)][g_team], get_user_level(id), g_name, g_typed)
        }
    else
    {
                formatex(g_message, charsmax(g_message), "^1%s^3[^4LVL %d^3] ^3%s :^1 %s", say_team_info[is_user_alive(id)][g_team], get_user_level(id), g_name, g_typed)
        }

    for(new i = 1; i <= g_maxplayers; i++)
    {
        if(!is_user_connected(i))
            continue
       
        send_message(g_message, id, i)
    }

    return PLUGIN_HANDLED_MAIN
}

public HookSayTeam(id)
{
        new tag2[33];
        if(get_user_flags(id) & ADMIN_RCON)
        {
               tag2 = "Administrator"
        }
        else if(get_user_flags(id) & ADMIN_BAN)
        {
               tag2 = "Staff"
        }
        else if(get_user_flags(id) & ADMIN_MAP)
        {
               tag2 = "Support"
        }
        else if(get_user_flags(id) & ADMIN_PASSWORD)
        {
               tag2 = "Diamond VIP"
        }
        else if(get_user_flags(id) & ADMIN_CVAR)
        {
               tag2 = "Gold VIP"
        }
        else if(get_user_flags(id) & ADMIN_KICK)
        {
               tag2 = "VIP"
        }

    read_args(g_typed, charsmax(g_typed))
    remove_quotes(g_typed)

    trim(g_typed)

    if(equal(g_typed, "") || !is_user_connected(id))
        return PLUGIN_HANDLED_MAIN

    if(equal(g_typed, "/prefix"))
    {
        if(g_toggle[id])
        {
            g_toggle[id] = false
            client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_OFF", in_prefix)
        }
        else
        {
            g_toggle[id] = true
            client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_ON", in_prefix)
        }

        return PLUGIN_HANDLED_MAIN
    }

    if(!g_toggle[id])
        return PLUGIN_CONTINUE

    num_to_str(id, str_id, charsmax(str_id))

    if((TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
    {
        if(check_say_characters(g_typed))
            return PLUGIN_HANDLED_MAIN
    }

    get_user_name(id, g_name, charsmax(g_name))

    g_team = cs_get_user_team(id)

    new pos, i = 0
    while ( i < g_swearsNum )
    {
    if ( (pos = containi(g_typed,g_swearsNames[i][1])) != -1 ){
        new len = g_swearsNames[i][0]
        while(len--)
        g_typed[pos++] = '*'
        continue
    }
    ++i
    }

        if(get_user_flags(id) & ADMIN_IMMUNITY)
        {
        formatex(g_message, charsmax(g_message), "^1%s^3[^4LVL %d^3] ^4[^3%s^4]^4 %s :^3 %s", sayteam_team_info[is_user_alive(id)][g_team], get_user_level(id), tag2, g_name, g_typed)
        }         
    else if(get_user_flags(id) & ADMIN_RESERVATION)
    {
        formatex(g_message, charsmax(g_message), "^1%s^3[^4LVL %d^3]^3[^4%s^3] ^3 %s :^4 %s", sayteam_team_info[is_user_alive(id)][g_team], get_user_level(id), tag2, g_name, g_typed)
    }
    else if(get_cvar_num("freevip_hour"))
        {
                formatex(g_message, charsmax(g_message), "^1%s^3[^4LVL %d^3] ^3[^4FREE VIP^3] ^3%s :^1 %s", sayteam_team_info[is_user_alive(id)][g_team], get_user_level(id), g_name, g_typed)
        }
    else
    {
                formatex(g_message, charsmax(g_message), "^1%s^3[^4LVL %d^3] ^3%s :^1 %s", sayteam_team_info[is_user_alive(id)][g_team], get_user_level(id), g_name, g_typed)
        }

    for(new i = 1; i <= g_maxplayers; i++)
    {
        if(!is_user_connected(i))
            continue
       
        if(get_user_team(id) == get_user_team(i))
        {
            send_message(g_message, id, i)
        }
    }

    return PLUGIN_HANDLED_MAIN
}

public SetPlayerPrefix(id)
{
    if(!get_pcvar_num(g_custom) || !get_pcvar_string(g_custom_flag, temp_cvar, charsmax(temp_cvar)))
    {
        console_print(id, "%L", LANG_SERVER, "CUSTOM_OFF", in_prefix)
        return PLUGIN_HANDLED
    }

    if(!(get_user_flags(id) & read_flags(temp_cvar)))
    {
        console_print(id, "%L", LANG_SERVER, "CUSTOM_PERMISSION", in_prefix)
        return PLUGIN_HANDLED
    }

    new input[128], target;
    new arg_type[2], arg_prefix[32], arg_key[35];
    new temp_str[16];

    read_args(input, charsmax(input))
    remove_quotes(input)
    parse(input, arg_type, charsmax(arg_type), arg_key, charsmax(arg_key), arg_prefix, charsmax(arg_prefix))
    trim(arg_prefix)

    if(get_pcvar_num(g_bad_prefix) && is_bad_prefix(arg_prefix) && !equali(arg_prefix, ""))
    {
        console_print(id, "%L", LANG_SERVER, "CUSTOM_FORBIDDEN", in_prefix, arg_prefix)
        return PLUGIN_HANDLED
    }

    if(get_pcvar_num(g_prefix_characters) && check_prefix_characters(arg_prefix))
    {
        console_print(id, "%L", LANG_SERVER, "CUSTOM_SYMBOL", in_prefix, arg_prefix, forbidden_prefixes_symbols[i])
        return PLUGIN_HANDLED
    }

    switch(arg_type[0])
    {
        case 'f':
        {
            target = 0
            temp_str = "Flag"
        }
        case 'i':
        {
            target = find_player("d", arg_key)
            temp_str = "IP"
        }
        case 's':
        {
            target = find_player("c", arg_key)
            temp_str = "SteamID"
        }
        case 'n':
        {
            target = find_player("a", arg_key)
            temp_str = "Name"
        }
        default:
        {
            console_print(id, "%L", LANG_SERVER, "CUSTOM_INVALID", in_prefix, arg_type)
            return PLUGIN_HANDLED
        }
    }

    get_user_name(id, g_name, charsmax(g_name))

    if(equali(arg_prefix, ""))
    {
        find_and_delete(arg_type, arg_key)

        if(target)
        {
            PutPrefix(target)
        }
       
        console_print(id, "%L", LANG_SERVER, "CUSTOM_REMOVE", in_prefix, temp_str, arg_key)
        server_print("%L", LANG_SERVER, "CUSTOM_REMOVE_INFO", in_prefix, g_name, temp_str, arg_key)
        return PLUGIN_HANDLED
    }

    find_and_delete(arg_type, arg_key)

    formatex(text, charsmax(text), "^"%s^" ^"%s^" ^"%s^"", arg_type, arg_key, arg_prefix)
    write_file(file_prefixes, text, -1)

    switch(arg_type[0])
    {
        case 'f':
        {
            TrieSetString(pre_flags_collect, arg_key, arg_prefix)
        }
        case 'i':
        {
            TrieSetString(pre_ips_collect, arg_key, arg_prefix)
        }
        case 's':
        {
            TrieSetString(pre_steamids_collect, arg_key, arg_prefix)
        }
        case 'n':
        {
            TrieSetString(pre_names_collect, arg_key, arg_prefix)
        }
    }

    if(target)
    {
        num_to_str(target, str_id, charsmax(str_id))
        TrieSetString(client_prefix, str_id, arg_prefix)
    }

    console_print(id, "%L", LANG_SERVER, "CUSTOM_CHANGE", in_prefix, temp_str, arg_key, arg_prefix)
    server_print("%L", LANG_SERVER, "CUSTOM_CHANGE_INFO", in_prefix, g_name, temp_str, arg_key, arg_prefix)

    return PLUGIN_HANDLED
}

public client_infochanged(id)
{
    if(!is_user_connected(id))
        return PLUGIN_CONTINUE

    new g_old_name[32];

    get_user_info(id, "name", g_name, charsmax(g_name))
    get_user_name(id, g_old_name, charsmax(g_old_name))

    if(!equal(g_name, g_old_name))
    {
        num_to_str(id, str_id, charsmax(str_id))
        TrieSetString(client_prefix, str_id, "")
        set_task(0.5, "PutPrefix", id)
        return PLUGIN_HANDLED
    }

    return PLUGIN_CONTINUE
}

public PutPrefix(id)
{
    num_to_str(id, str_id, charsmax(str_id))
    TrieSetString(client_prefix, str_id, "")

    new sflags[32], temp_flag[2];
    get_flags(get_user_flags(id), sflags, charsmax(sflags))

    for(new i = 0; i <= charsmax(sflags); i++)
    {
        formatex(temp_flag, charsmax(temp_flag), "%c", sflags[i])

        if(TrieGetString(pre_flags_collect, temp_flag, temp_prefix, charsmax(temp_prefix)))
        {
            TrieSetString(client_prefix, str_id, temp_prefix)
        }
    }

    get_user_ip(id, temp_key, charsmax(temp_key), 1)

    if(TrieGetString(pre_ips_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
    {
        TrieSetString(client_prefix, str_id, temp_prefix)
    }

    get_user_authid(id, temp_key, charsmax(temp_key))

    if(TrieGetString(pre_steamids_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
    {
        TrieSetString(client_prefix, str_id, temp_prefix)
    }

    get_user_name(id, temp_key, charsmax(temp_key))

    if(TrieGetString(pre_names_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
    {
        TrieSetString(client_prefix, str_id, temp_prefix)
    }

    return PLUGIN_HANDLED
}

send_message(const message[], const id, const i)
{
    message_begin(MSG_ONE, g_saytxt, {0, 0, 0}, i)
    write_byte(id)
    write_string(message)
    message_end()
}

bool:check_say_characters(const check_message[])
{
    for(new i = 0; i < charsmax(forbidden_say_symbols); i++)
    {
        if(check_message[0] == forbidden_say_symbols[i])
        {
            return true
        }
    }
    return false
}

bool:check_prefix_characters(const check_prefix[])
{
    for(i = 0; i < charsmax(forbidden_prefixes_symbols); i++)
    {
        if(containi(check_prefix, forbidden_prefixes_symbols[i]) != -1)
        {
            return true
        }
    }
    return false
}

bool:is_bad_prefix(const check_prefix[])
{
    if(TrieGetCell(bad_prefixes_collect, check_prefix, temp_value))
    {
        return true
    }
    return false
}

find_and_delete(const arg_type[], const arg_key[])
{
    line = 0, length = 0;

    while(read_file(file_prefixes, line++ , text, charsmax(text), length))
    {
        if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
            continue

        parse(text, type, charsmax(type), key, charsmax(key), prefix, charsmax(prefix))
        trim(prefix)

        if(!type[0] || !prefix[0] || !key[0])
            continue
           
        if(!equal(arg_type, type) || !equal(arg_key, key))
            continue
           
        write_file(file_prefixes, "", line - 1)
    }
   
    switch(arg_type[0])
    {
        case 'f':
        {
            TrieDeleteKey(pre_flags_collect, arg_key)
        }
        case 'i':
        {
            TrieDeleteKey(pre_ips_collect, arg_key)
        }
        case 's':
        {
            TrieDeleteKey(pre_steamids_collect, arg_key)
        }
        case 'n':
        {
            TrieDeleteKey(pre_names_collect, arg_key)
        }
    }
}

Bilginiz icin ekteki eklenti orjinalinden değiştirilmiş eklentidir, eğer sorun yaşamamak isterseniz aynı eklentiyi Admin Prefixes V4.0 by m0skVi4a ;] linkinden indirebilirsiniz
hocam öncellikle teşekkürederim deneyeceğim şimdi tag işini nasıl yapacağım şimdi ap_prefix.ini ye mi eklyeceğim örnek verebilir misniz

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

Yorum yapmak için üye olmanız gerekiyor

ya da