Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <colorchat>
#define PLUGIN "Admin Complaint"
#define AUTHOR "thony"
#define VERSION "1.0"
new szComplaintsDir[] = "addons/amxmodx/logs/complaints/";
new g_PlayerVotes[33][33]
new iComplaining[33]
new nVault
new iMaxPlayers
new cvar_MaxComplaints
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /@U", "ShowComplainMenu")
register_clcmd("Reason why you're complaining", "ComplaintReason")
register_clcmd("say /@uview", "ViewComplaintsMenu", ADMIN_RCON)
cvar_MaxComplaints = register_cvar("ac_maxcomplaints", "3")
nVault = nvault_open("AdminComplain")
iMaxPlayers = get_maxplayers();
}
public ComplaintReason(id) {
if(iComplaining[id] == 0)
return PLUGIN_HANDLED;
if(is_user_admin(iComplaining[id])) {
new szNum[3], authid[32]
get_user_authid(iComplaining[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_PlayerVotes[id][iComplaining[id]]++;
new szReason[246]
read_argv(6, szReason, charsmax(szReason))
LogComplain(id, iComplaining[id], szReason);
iComplaining[id] = 0;
ColorChat(id, GREY, "^4[Admin Complaint] ^3Vasheto oplakvane beshe izprateno do nas.")
}
return PLUGIN_HANDLED;
}
public client_disconnect(id) {
for(new i; i < iMaxPlayers; i++) {
g_PlayerVotes[id][i] = 0;
}
iComplaining[id] = 0;
}
public ShowComplainMenu(id) {
new admins[33], adminsnum
for(new i; i < iMaxPlayers; i++) {
if(is_user_admin(i)) {
admins[adminsnum] = i;
adminsnum++;
}
}
if(adminsnum < 1) {
ColorChat(id, GREY, "^4[Admin Complaint] ^3Sazhalyavame, no tazi optsiya v momenta ne e aktivna.")
return PLUGIN_HANDLED;
}
new menu = menu_create("Admin Complain", "ComplainMenuHandler")
for(new i; i < adminsnum; i++) {
new szName[42], szID[2], szFinal[42], iComplaintsNum = getComplaintsNum(admins[i]);
get_user_name(admins[i], szName, charsmax(szName))
num_to_str(admins[i], szID, charsmax(szID))
if(g_PlayerVotes[id][admins[i]] >= get_pcvar_num(cvar_MaxComplaints))
formatex(szFinal, charsmax(szFinal), "\d%s \r(%i)", szName, iComplaintsNum)
else
formatex(szFinal, charsmax(szFinal), "%s \r(%i)", szName, iComplaintsNum)
menu_additem(menu, szFinal, szID)
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public ComplainMenuHandler(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_PlayerVotes[id][adminid] >= get_pcvar_num(cvar_MaxComplaints)) {
ColorChat(id, GREY, "^4[Admin Complaint] ^3Maksimumat za oplakvane ot administrator e dostignat, veche ne mozhe da se oplachete ot edin i sasht administrator.")
ShowComplainMenu(id)
}
else if(is_user_admin(adminid)) {
iComplaining[id] = adminid;
client_cmd(id, "messagemode ^"Posochete prichina:^"")
}
return PLUGIN_HANDLED;
}
public ViewComplaintsMenu(id, level, cid) {
if(!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED;
new fileName[32], dir;
dir = open_dir(szComplaintsDir, fileName, charsmax(fileName))
next_file(dir, fileName, charsmax(fileName))
if(!next_file(dir, fileName, charsmax(fileName))) {
ColorChat(id, GREY, "^4[Admin Complaint] ^3Nyama oplakvaniya.")
close_dir(dir)
return PLUGIN_HANDLED;
}
new menu = menu_create("Vizhte oplakvaniyata po data", "ViewComplaintsMenuHandler")
do {
menu_additem(menu, fileName, fileName)
}
while(next_file(dir, fileName, charsmax(fileName)))
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
close_dir(dir)
return PLUGIN_HANDLED;
}
public ViewComplaintsMenuHandler(id, menu, item) {
if(item == MENU_EXIT) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], szName[64], fullDir[100];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
formatex(fullDir, charsmax(fullDir), "%s%s", szComplaintsDir, szName)
show_motd(id, fullDir, szName)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
getComplaintsNum(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;
}
LogComplain(id, adminid, const reason[]) {
new szDate[40], szFile[50]
get_time("%d-%m-%Y", szDate, charsmax(szDate))
formatex(szFile, charsmax(szFile), "%s%s.txt", szComplaintsDir, szDate)
if(!file_exists(szFile)) {
write_file(szFile, "<style> body {background: black; color: white; font-size: 10px; font-family: arial;} </style>")
}
new szAuthid[32], szAuthid2[32], szTime[32], szName[42], szName2[42], szLog[200]
get_time( "%H:%M:%S", szTime, charsmax(szTime))
get_user_authid(id, szAuthid, charsmax(szAuthid))
get_user_authid(adminid, szAuthid2, charsmax(szAuthid2))
get_user_name(id, szName, charsmax(szName))
get_user_name(adminid, szName2, charsmax(szName2))
formatex(szLog, charsmax(szLog), "<b>Complainant:</b> %s (%s)<br/><b>Admin:</b> %s (%s).<br/><b>Reason:</b> %s<br/> <b>Time:</b> %s<br/><hr/>", szName, szAuthid, szName2, szAuthid2, reason, szTime)
write_file(szFile, szLog)
}
Забелязвам, че се използва Nvalt , което в някой плъгини мои, които имам играе много лоша шега.
Може ли да го преработите да работи. Не виждам нищо в кода, което да не е нередно.