HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2.  
  3. #define PLUGIN "Cheater Report System"
  4. #define VERSION "1.0"
  5. #define AUTHOR "mforce"
  6.  
  7. new const PREFIX[] = "ReportSystem"
  8.  
  9. // A megadott másodperc múlva lehet újra jelenteni. ( tizedestört )
  10. #define JELENT_IDOKOZ 120.0
  11.  
  12. // HA SQL-t szeretnél használni, vedd ki a # elől a //-t és írd be az adatokat lentebb. ( alapból logba ment. )
  13. //#define SQL
  14.  
  15. #if defined SQL
  16. #include <sqlx>
  17. new Handle:g_SqlTuple
  18.  
  19. new const SQL_INFO[][] = {
  20. "127.0.0.1", // Host
  21. "username", // User
  22. "password", // Password
  23. "database" // Database
  24. }
  25. #endif
  26.  
  27. new csalo;
  28. new bool:jelenthet[33] = true;
  29.  
  30. public plugin_init() {
  31. register_plugin(PLUGIN, VERSION, AUTHOR)
  32. register_cvar("cheater_report_system", AUTHOR, FCVAR_SERVER | FCVAR_SPONLY);
  33. register_clcmd("say /jelent", "playermenu")
  34. register_clcmd("say_team /jelent", "playermenu")
  35. register_clcmd("Indok", "jelentok");
  36. set_task(172.0, "jelenteshez", 0, _, _, "b");
  37. }
  38.  
  39. public jelenteshez() {
  40. ChatColor(0, "^4[%s]^1 A csalók jelentéséhez írd be: ^3/jelent", PREFIX)
  41. }
  42.  
  43. public client_authorized(id) {
  44. jelenthet[id] = true;
  45. }
  46.  
  47. public client_disconnect(id) {
  48. if(task_exists(id)) remove_task(id);
  49. }
  50.  
  51. public playermenu(id) {
  52. if(jelenthet[id]) {
  53. new temp[128]
  54. formatex(temp, charsmax(temp), "\r[%s] \wCsaló jelentése by %s^nVálassz játékost!\y", AUTHOR, PREFIX)
  55. new menu = menu_create( temp, "playermenu_handler" );
  56.  
  57. new players[32], pnum, tempid;
  58. new szName[32], szUserId[32];
  59.  
  60. get_players( players, pnum, "ch" );
  61.  
  62. for ( new i; i<pnum; i++ ) {
  63. tempid = players[i];
  64. if(tempid != id) {
  65. get_user_name( tempid, szName, charsmax( szName ) );
  66. formatex( szUserId, charsmax( szUserId ), "%d", get_user_userid( tempid ) );
  67.  
  68. menu_additem( menu, szName, szUserId, 0 );
  69. }
  70. }
  71.  
  72. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  73. menu_setprop(menu, MPROP_BACKNAME, "Vissza");
  74. menu_setprop(menu, MPROP_NEXTNAME, "Következő");
  75. menu_setprop(menu, MPROP_EXITNAME, "Kilépés");
  76. menu_display( id, menu, 0 );
  77. }
  78.  
  79. else ChatColor(id, "^4[%s]^1 Várnod kell még, hogy újra tudj jelenteni.", PREFIX)
  80. }
  81.  
  82. public playermenu_handler( id, menu, item ) {
  83. if ( item == MENU_EXIT ) {
  84. menu_destroy( menu );
  85. return PLUGIN_HANDLED;
  86. }
  87.  
  88. new szData[6], szName[64];
  89. new _access, item_callback;
  90. menu_item_getinfo( menu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
  91.  
  92. new userid = str_to_num( szData );
  93. csalo = find_player( "k", userid ); // flag "k" : find player from userid
  94.  
  95. client_cmd(id, "messagemode Indok")
  96.  
  97. menu_destroy( menu );
  98. return PLUGIN_HANDLED;
  99. }
  100.  
  101. public jelentok(id) {
  102. new indok[32]
  103. read_args(indok, charsmax(indok))
  104. remove_quotes(indok)
  105.  
  106. if(strlen(indok) < 2) {
  107. ChatColor(id, "^4[%s]^1 Az indoknak legalább 2 karakternek kell lennie.", PREFIX)
  108. }
  109. else {
  110. new kuldo[32], jelentett[32], jelentettid[32], jelentettip[32]
  111. get_user_name(id, kuldo, charsmax(kuldo))
  112. get_user_name(csalo, jelentett, charsmax(jelentett))
  113. get_user_authid(csalo, jelentettid, charsmax(jelentettid))
  114. get_user_ip(csalo, jelentettip, charsmax(jelentettip), 1)
  115.  
  116. #if defined SQL
  117. new text[512], ido[64];
  118. get_time("%Y.%m.%d %H:%M:%S", ido, charsmax(ido));
  119. formatex(text, charsmax(text), "INSERT INTO `jelentesek` (`ido`, `kuldo`, `jelentett`, `steamid`, `ip`, `indok`) VALUES (^"%s^", ^"%s^", ^"%s^", ^"%s^", ^"%s^", ^"%s^");", ido, kuldo, jelentett, jelentettid, jelentettip, indok)
  120. SQL_ThreadQuery(g_SqlTuple, "QuerySetData", text)
  121. #else
  122. log_to_file("jelentesek.txt", "%s jelentette %s-t. Indok: %s. SteamID: %s IP: %s", kuldo, jelentett, indok, jelentettid, jelentettip);
  123. #endif
  124. ChatColor(id, "^4[%s]^1 Sikeresen jelentetted^3 %s ^1-t,^3 %s^1 indokkal.", PREFIX, jelentett, indok)
  125. jelenthet[id] = false;
  126. set_task(JELENT_IDOKOZ, "jelentenged", id)
  127.  
  128. new players[32], pnum, tempid;
  129. get_players( players, pnum, "ch" );
  130. for ( new i; i<pnum; i++ ) {
  131. tempid = players[i];
  132. if(get_user_flags(tempid) & ADMIN_KICK) {
  133. ChatColor(tempid, "^4* %s ^1jelentette ^3%s ^1-t. Indok: ^3%s ^4*", kuldo, jelentett, indok)
  134. ChatColor(tempid, "^4*^1 Kötelességed megnézni! ^4*")
  135. }
  136. }
  137. }
  138. }
  139.  
  140. public jelentenged(id) {
  141. jelenthet[id] = true;
  142. }
  143.  
  144. stock ChatColor(const id, const szMessage[], any:...) {
  145. static pnum, players[32], szMsg[190], IdMsg;
  146. vformat(szMsg, charsmax(szMsg), szMessage, 3);
  147.  
  148. if(!IdMsg) IdMsg = get_user_msgid("SayText");
  149.  
  150. if(id) {
  151. if(!is_user_connected(id)) return;
  152. players[0] = id;
  153. pnum = 1;
  154. }
  155. else get_players(players, pnum, "ch");
  156.  
  157. for(new i; i < pnum; i++) {
  158. message_begin(MSG_ONE, IdMsg, .player = players[i]);
  159. write_byte(players[i]);
  160. write_string(szMsg);
  161. message_end();
  162. }
  163. }
  164.  
  165. #if defined SQL
  166. public plugin_cfg() {
  167. new Query[512];
  168. g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0],SQL_INFO[1],SQL_INFO[2],SQL_INFO[3])
  169.  
  170. formatex(Query, charsmax(Query), "CREATE TABLE IF NOT EXISTS `jelentesek` (`ido` varchar(64) NOT NULL,`kuldo` varchar(32) NOT NULL,`jelentett` varchar(32) NOT NULL,`steamid` varchar(32) NOT NULL,`ip` varchar(32) NOT NULL,`indok` varchar(32) NOT NULL,`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)")
  171. SQL_ThreadQuery(g_SqlTuple,"createTableThread", Query)
  172. }
  173.  
  174. public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
  175. if(FailState == TQUERY_CONNECT_FAILED)
  176. set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
  177. else if(FailState == TQUERY_QUERY_FAILED)
  178. set_fail_state("Query Error");
  179. if(Errcode)
  180. log_amx("Hibat dobtam: %s",Error);
  181. }
  182.  
  183. public QuerySetData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
  184. if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
  185. log_amx("%s", Error)
  186. return
  187. }
  188. }
  189.  
  190. public plugin_end() {
  191. SQL_FreeHandle(g_SqlTuple)
  192. }
  193. #endif