Hali.
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#define PLUGIN "Cheaters"
#define VERSION "1.1"
#define AUTHOR "BS"
#define ADMIN_FLAG ADMIN_BAN
static const COLOR[] = "^x04"
new const list[] = "addons/amxmodx/configs/citeri.ini"
new Trie: Citeri
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar("cheaters","1",(FCVAR_SERVER|FCVAR_SPONLY))
register_clcmd("amx_cheatersmenu","lista")
register_clcmd("say /cheaters","ko_su")
register_clcmd("say","sayy")
}
public plugin_precache()
{
if(!file_exists(list))
{
write_file(list,"U ovom fajlu nalaze se Steam ID-ovi mogucih citera na serveru")
write_file(list,"Postavljanjem citera na ovu listu, admini ce obracati vecu paznju na moguce citere")
write_file(list,"Ovaj fajl radi preko plugina cheaters.amxx")
write_file(list,"==================================================================================")
write_file(list," ")
}
}
public plugin_cfg()
{
Citeri = TrieCreate()
new Data[35],File
File = fopen(list, "rt")
while (!feof(File)) {
fgets(File, Data, charsmax(Data))
trim(Data)
if (Data[0] == ';' || !Data[0])
continue;
remove_quotes(Data)
TrieSetCell(Citeri, Data, true)
}
fclose(File)
}
bool:Cheater(id)
{
new steam[33]
get_user_authid(id,steam,charsmax(steam))
if(TrieKeyExists(Citeri,steam))
return true
return false
}
public lista(id)
{
if(!(get_user_flags(id) & ADMIN_FLAG))
return PLUGIN_HANDLED
new menu = menu_create ("\rIzaberi igraca", "handler")
new num, players[32], meta, szTempID[31], ime[32]
get_players (players, num, "a")
for (new i = 0; i < num; i++)
{
meta = players[i]
get_user_name(meta,ime, charsmax(ime))
num_to_str (meta,szTempID,charsmax(szTempID))
menu_additem (menu,ime,szTempID, 0)
}
menu_display(id,menu)
return PLUGIN_HANDLED
}
public handler(id,menu,item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_CONTINUE
}
new data[6], name[64], access, callback
menu_item_getinfo (menu, item, access, data, 5, name, 63, callback)
new igrac = str_to_num(data)
if(get_user_flags(igrac) & ADMIN_IMMUNITY)
return PLUGIN_HANDLED
new steam[33],ime[32],datum[64],vreme[54],ime_admin[32]
new nesto[192],neki[191]
get_time("%d/%m",datum,charsmax(datum))
get_time("%H:%M",vreme,charsmax(vreme))
get_user_name(id,ime_admin,charsmax(ime_admin))
get_user_name(igrac,ime,charsmax(ime))
get_user_authid(igrac,steam,charsmax(steam))
formatex(nesto, charsmax(nesto), "%s",steam)
formatex(neki, charsmax(neki), "; Nick: %s | postavio admin: %s | Datum: %s | Vreme: %s", ime, ime_admin, datum, vreme)
write_file(list, nesto)
write_file(list, neki)
write_file(list," ")
client_cmd(id,"amx_chat ^"Postavio sam %s na listu citera^"",ime)
return PLUGIN_CONTINUE;
}
public sayy(id)
{
if(Cheater(id))
{
new admini[32], broj,ime[33],kaze[191]
get_user_name(id,ime,charsmax(ime))
read_args(kaze,charsmax(kaze))
remove_quotes(kaze)
get_players(admini,broj)
for(new i = 0; i < broj; ++i)
if(admini[i] && get_user_flags(admini[i]) & ADMIN_FLAG)
ColorChat(admini[i],TEAM_COLOR,"^4[CITER]^3 %s^1 : %s",ime,kaze)
else
ColorChat(0,TEAM_COLOR,"^3 %s^1 : %s",ime,kaze)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public client_putinserver(id)
if(Cheater(id))
set_task(3.0,"dosao",id)
public dosao(id)
{
new admini[32], broj
get_players(admini,broj)
for(new i = 0; i < broj; ++i)
if(admini[i] && get_user_flags(admini[i]) & ADMIN_FLAG)
{
new ime[33],steam[32],ip[31]
get_user_name(id,ime,charsmax(ime))
get_user_authid(id,steam,charsmax(steam))
get_user_ip(id,ip,charsmax(ip))
set_hudmessage(255, 0, 0, 0.07, 0.64, 0, 6.0, 12.0)
show_hudmessage(i, "Citer je dosao na server! ^nNick: %s ^nSteam: %s ^nIP: %s",ime,steam,ip)
}
}
public ko_su(user)
{
if(!(get_user_flags(user) & ADMIN_FLAG))
return PLUGIN_HANDLED
new adminnames[33][32], message[256], id, count, x, len
for(id = 1 ; id <= get_maxplayers() ; id++)
if(is_user_connected(id))
{
if(Cheater(id))
get_user_name(id, adminnames[count++], 31)
len = format(message, 255, "%s Citeri: ", COLOR)
if(count > 0)
{
for(x = 0 ; x < count ; x++)
{
len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
if(len > 96 )
{
print_message(user, message)
len = format(message, 255, "%s ",COLOR)
}
}
print_message(user, message)
}
else
{
len += format(message[len], 255-len, "Nema citera na serveru")
print_message(user, message)
}
}
return PLUGIN_CONTINUE;
}
print_message(id, msg[])
{
message_begin(MSG_ONE, get_user_msgid("SayText"), {0,0,0}, id)
write_byte(id)
write_string(msg)
message_end()
}
public plugin_end()
TrieDestroy(Citeri)