Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <amxmisc>
- #include <nvault>
- #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 /sikayet", "ShowComplainMenu")
- register_clcmd("Sikayet Sebebiniz Nedir", "ComplaintReason")
- register_clcmd("say /sikayetgoster", "ViewComplaintsMenu", ADMIN_RCON)
- cvar_MaxComplaints = register_cvar("ac_maxcomplaints", "1")
- nVault = nvault_open("Sikayet Listesi")
- 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;
- client_print(id, print_chat, "Sikayetiniz Dikkate Alindi.")
- }
- 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) {
- client_print(id, print_chat, "Suan Hicbir Admin Aktif Degil.")
- return PLUGIN_HANDLED;
- }
- new menu = menu_create("Sikayet Listesi", "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)) {
- client_print(id, print_chat, "Max Sikayet Sayisina Ulasti Artik Sikayet Edemezsiniz")
- ShowComplainMenu(id)
- }
- else if(is_user_admin(adminid)) {
- iComplaining[id] = adminid;
- client_cmd(id, "messagemode ^"Sikayet Sebebiniz Nedir^"")
- }
- 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))) {
- client_print(id, print_chat, "Hicbir Sikayet Yoktur")
- close_dir(dir)
- return PLUGIN_HANDLED;
- }
- new menu = menu_create("See complaints by date", "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)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement