PHP- Kodu:
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#define ADMIN_LEVEL ADMIN_LEVEL_B
new g_iSeviye[22] = {
ADMIN_IMMUNITY, // a
ADMIN_RESERVATION, // b
ADMIN_KICK, // c
ADMIN_BAN, // d
ADMIN_SLAY, // e
ADMIN_MAP, // f
ADMIN_CVAR, // g
ADMIN_CFG, // h
ADMIN_CHAT, // i
ADMIN_VOTE, // j
ADMIN_PASSWORD, // k
ADMIN_RCON, // l
ADMIN_LEVEL_A, // m
ADMIN_LEVEL_B, // n
ADMIN_LEVEL_C, // o
ADMIN_LEVEL_D, // p
ADMIN_LEVEL_E, // q
ADMIN_LEVEL_F, // r
ADMIN_LEVEL_G, // s
ADMIN_LEVEL_H, // t
ADMIN_MENU, // u
ADMIN_USER // z
}
new bool: g_OyucuOylama[33][33]
new nVault
public plugin_init()
{
register_plugin("Admini Sikayet Et", "1.1", "Bilinmiyor")
register_clcmd("say /adminsikayet", "SikayetMenuGoster")
nVault = nvault_open("AdminSikayet")
}
public client_disconnect(id) {
for(new i; i < 33; i++) {
g_OyucuOylama[id][i] = false;
}
}
public SikayetMenuGoster(id) {
new players[32], num, admins[33], adminsnum
get_players(players, num)
for(new i; i < num; i++) {
if(user_top_flag(players[i]) == ADMIN_LEVEL) {
admins[adminsnum] = players[i];
adminsnum++;
}
}
if(adminsnum < 1) {
client_print(id, print_chat, "[AMXX] Sikayet edecegin hicbir admin yok.")
return PLUGIN_HANDLED;
}
new menu = menu_create("Admin Sikayet", "MenuOlustur")
for(new i; i < adminsnum; i++) {
new szName[42], szID[2], szFinal[42], iSikayetNumarasi = SikayetSayisi(admins[i]);
get_user_name(admins[i], szName, charsmax(szName))
num_to_str(admins[i], szID, charsmax(szID))
if(g_OyucuOylama[id][admins[i]] == true)
formatex(szFinal, charsmax(szFinal), "\d%s \r(%i)", szName, iSikayetNumarasi)
else
formatex(szFinal, charsmax(szFinal), "%s \r(%i)", szName, iSikayetNumarasi)
menu_additem(menu, szFinal, szID)
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public MenuOlustur(id, menu, item)
{
if(item == MENU_EXIT) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new adminid = str_to_num(data);
if(g_OyucuOylama[id][adminid] == true) {
client_print(id, print_chat, "[AMXX] Herhangi bir admin icin sadece 1 kez sikayette bulunabilirsiniz.")
SikayetMenuGoster(id)
}
else if(user_top_flag(adminid) == ADMIN_LEVEL) {
new szNum[3], authid[32]
get_user_authid(id, authid, charsmax(authid))
if(nvault_get(nVault, authid, szNum, charsmax(szNum))) {
new iNum = str_to_num(szNum)
num_to_str((iNum+1), szNum, charsmax(szNum))
nvault_set(nVault, authid, szNum)
}
else
nvault_set(nVault, authid, "1")
g_OyucuOylama[id][adminid] = true;
CheckComplaints();
}
return PLUGIN_HANDLED;
}
CheckComplaints() {
new players[32], num
get_players(players, num)
for(new i; i < num; i++) {
if(user_top_flag(players[i]) == ADMIN_LEVEL) {
new complaints = SikayetSayisi(players[i])
if(complaints == 30) {
new saat[] = "0", authid[32]
get_user_authid(players[i], authid, charsmax(authid))
server_cmd("kick #%d ^"Cok sayida sikayet aldigi icin serverdan kalici olarak uzaklastirildi^"", i)
server_cmd("banid %s %s", saat, authid)
server_cmd("idyaz")
}
else if(complaints == 20) {
new saat[] = "300", authid[32]
get_user_authid(players[i], authid, charsmax(authid))
server_cmd("kick #%d ^"Cok sayida sikayet aldigi icin serverdan 5 saatligine uzaklastirildi^"", i)
server_cmd("banid %s %s", saat, authid)
server_cmd("idyaz")
}
else if(complaints == 10) {
new saat[] = "60", authid[32]
get_user_authid(players[i], authid, charsmax(authid))
server_cmd("kick #%d ^"Cok sayida sikayet aldigi icin serverdan 1 saatligine uzaklastirildi^"", i)
server_cmd("banid %s %s", saat, authid)
server_cmd("idyaz")
}
}
}
}
SikayetSayisi(id) {
new szNum[3], authid[32]
get_user_authid(id, authid, charsmax(authid))
if(nvault_get(nVault, authid, szNum, charsmax(szNum)))
return str_to_num(szNum);
return 0;
}
user_top_flag(id) {
new flags = get_user_flags(id)
for(new i; i < 22; i++)
if(flags & g_iSeviye[i])
return (flags & g_iSeviye[i]);
return 0;
}