⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
SponsorSponsor

Level Tag Sorunu

Level Tag sorunu
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_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[^3Owner^4]^4 %s :^3 %s", say_team_info[is_user_alive(id)][g_team], get_user_level(id), 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[^3Owner^4]^4 %s :^3 %s", sayteam_team_info[is_user_alive(id)][g_team], get_user_level(id), 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)
        }
    }
} 
RE: Level Tag sorunu
kişiye özel tag derken STEAM ID üzerinden mi ?
Plugin İşleri İçin discord : polat_hastasi
RE: Level Tag sorunu
(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
RE: Level Tag sorunu
Bunlarla uğraşmayıp ocixcrom rank pluginini kurabilirsin.
RE: Level Tag sorunu
(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
RE: Level Tag sorunu
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
RE: Level Tag sorunu
(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
RE: Level Tag sorunu
(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.
RE: Level Tag sorunu
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
RE: Level Tag sorunu
(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
Konuyu Okuyanlar: 1 Ziyaretçi