Advertisement
Guest User

Untitled

a guest
May 11th, 2015
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.41 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <nvault>
  4.  
  5. #define PLUGIN "Admin Complaint"
  6. #define AUTHOR "thony"
  7. #define VERSION "1.0"
  8.  
  9. new szComplaintsDir[] = "addons/amxmodx/logs/complaints/";
  10. new g_PlayerVotes[33][33]
  11. new iComplaining[33]
  12. new nVault
  13. new iMaxPlayers
  14.  
  15. new cvar_MaxComplaints
  16.  
  17. public plugin_init()
  18. {
  19. register_plugin(PLUGIN, VERSION, AUTHOR)
  20.  
  21. register_clcmd("say /sikayet", "ShowComplainMenu")
  22. register_clcmd("Sikayet Sebebiniz Nedir", "ComplaintReason")
  23. register_clcmd("say /sikayetgoster", "ViewComplaintsMenu", ADMIN_RCON)
  24.  
  25. cvar_MaxComplaints = register_cvar("ac_maxcomplaints", "1")
  26.  
  27. nVault = nvault_open("Sikayet Listesi")
  28. iMaxPlayers = get_maxplayers();
  29. }
  30. public ComplaintReason(id) {
  31. if(iComplaining[id] == 0)
  32. return PLUGIN_HANDLED;
  33.  
  34. if(is_user_admin(iComplaining[id])) {
  35. new szNum[3], authid[32]
  36. get_user_authid(iComplaining[id], authid, charsmax(authid))
  37. if(nvault_get(nVault, authid, szNum, charsmax(szNum))) {
  38. new iNum = str_to_num(szNum)
  39. num_to_str((iNum+1), szNum, charsmax(szNum))
  40. nvault_set(nVault, authid, szNum)
  41. }
  42. else
  43. nvault_set(nVault, authid, "1")
  44.  
  45. g_PlayerVotes[id][iComplaining[id]]++;
  46.  
  47. new szReason[246]
  48. read_argv(6, szReason, charsmax(szReason))
  49. LogComplain(id, iComplaining[id], szReason);
  50. iComplaining[id] = 0;
  51.  
  52. client_print(id, print_chat, "Sikayetiniz Dikkate Alindi.")
  53. }
  54. return PLUGIN_HANDLED;
  55. }
  56. public client_disconnect(id) {
  57. for(new i; i < iMaxPlayers; i++) {
  58. g_PlayerVotes[id][i] = 0;
  59. }
  60. iComplaining[id] = 0;
  61. }
  62. public ShowComplainMenu(id) {
  63. new admins[33], adminsnum
  64. for(new i; i < iMaxPlayers; i++) {
  65. if(is_user_admin(i)) {
  66. admins[adminsnum] = i;
  67. adminsnum++;
  68. }
  69. }
  70. if(adminsnum < 1) {
  71. client_print(id, print_chat, "Suan Hicbir Admin Aktif Degil.")
  72. return PLUGIN_HANDLED;
  73. }
  74. new menu = menu_create("Sikayet Listesi", "ComplainMenuHandler")
  75.  
  76. for(new i; i < adminsnum; i++) {
  77. new szName[42], szID[2], szFinal[42], iComplaintsNum = getComplaintsNum(admins[i]);
  78. get_user_name(admins[i], szName, charsmax(szName))
  79. num_to_str(admins[i], szID, charsmax(szID))
  80.  
  81. if(g_PlayerVotes[id][admins[i]] >= get_pcvar_num(cvar_MaxComplaints))
  82. formatex(szFinal, charsmax(szFinal), "\d%s \r(%i)", szName, iComplaintsNum)
  83. else
  84. formatex(szFinal, charsmax(szFinal), "%s \r(%i)", szName, iComplaintsNum)
  85.  
  86. menu_additem(menu, szFinal, szID)
  87. }
  88.  
  89. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  90. menu_display(id, menu, 0);
  91. return PLUGIN_HANDLED;
  92. }
  93. public ComplainMenuHandler(id, menu, item)
  94. {
  95. if(item == MENU_EXIT) {
  96. menu_destroy(menu);
  97. return PLUGIN_HANDLED;
  98. }
  99.  
  100. new data[6], szName[64];
  101. new access, callback;
  102. menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  103.  
  104. new adminid = str_to_num(data);
  105.  
  106. if(g_PlayerVotes[id][adminid] >= get_pcvar_num(cvar_MaxComplaints)) {
  107. client_print(id, print_chat, "Max Sikayet Sayisina Ulasti Artik Sikayet Edemezsiniz")
  108. ShowComplainMenu(id)
  109. }
  110.  
  111. else if(is_user_admin(adminid)) {
  112. iComplaining[id] = adminid;
  113. client_cmd(id, "messagemode ^"Sikayet Sebebiniz Nedir^"")
  114. }
  115.  
  116. return PLUGIN_HANDLED;
  117. }
  118. public ViewComplaintsMenu(id, level, cid) {
  119. if(!cmd_access(id, level, cid, 1))
  120. return PLUGIN_HANDLED;
  121.  
  122. new fileName[32], dir;
  123. dir = open_dir(szComplaintsDir, fileName, charsmax(fileName))
  124. next_file(dir, fileName, charsmax(fileName))
  125.  
  126. if(!next_file(dir, fileName, charsmax(fileName))) {
  127. client_print(id, print_chat, "Hicbir Sikayet Yoktur")
  128. close_dir(dir)
  129. return PLUGIN_HANDLED;
  130. }
  131. new menu = menu_create("See complaints by date", "ViewComplaintsMenuHandler")
  132.  
  133. do {
  134. menu_additem(menu, fileName, fileName)
  135. }
  136. while(next_file(dir, fileName, charsmax(fileName)))
  137.  
  138. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  139. menu_display(id, menu, 0);
  140. close_dir(dir)
  141. return PLUGIN_HANDLED;
  142. }
  143. public ViewComplaintsMenuHandler(id, menu, item) {
  144. if(item == MENU_EXIT) {
  145. menu_destroy(menu);
  146. return PLUGIN_HANDLED;
  147. }
  148.  
  149. new data[6], szName[64], fullDir[100];
  150. new access, callback;
  151. menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  152.  
  153. formatex(fullDir, charsmax(fullDir), "%s%s", szComplaintsDir, szName)
  154.  
  155. show_motd(id, fullDir, szName)
  156.  
  157. menu_destroy(menu);
  158. return PLUGIN_HANDLED;
  159. }
  160. getComplaintsNum(id) {
  161. new szNum[3], authid[32]
  162. get_user_authid(id, authid, charsmax(authid))
  163. if(nvault_get(nVault, authid, szNum, charsmax(szNum)))
  164. return str_to_num(szNum);
  165.  
  166. return 0;
  167. }
  168. LogComplain(id, adminid, const reason[]) {
  169. new szDate[40], szFile[50]
  170. get_time("%d-%m-%Y", szDate, charsmax(szDate))
  171. formatex(szFile, charsmax(szFile), "%s%s.txt", szComplaintsDir, szDate)
  172. if(!file_exists(szFile)) {
  173. write_file(szFile, "<style> body {background: black; color: white; font-size: 10px; font-family: arial;} </style>")
  174. }
  175. new szAuthid[32], szAuthid2[32], szTime[32], szName[42], szName2[42], szLog[200]
  176. get_time( "%H:%M:%S", szTime, charsmax(szTime))
  177. get_user_authid(id, szAuthid, charsmax(szAuthid))
  178. get_user_authid(adminid, szAuthid2, charsmax(szAuthid2))
  179. get_user_name(id, szName, charsmax(szName))
  180. get_user_name(adminid, szName2, charsmax(szName2))
  181. 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)
  182. write_file(szFile, szLog)
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement