HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2.  
  3. #define PLUGIN_NAME "IP Shower"
  4. #define PLUGIN_VERSION "1.0"
  5. #define PLUGIN_AUTHOR "OciXCrom"
  6.  
  7. new const szPrefix[] = "[IP Megtekinto]"
  8.  
  9. enum Color
  10. {
  11. NORMAL = 1, // clients scr_concolor cvar color
  12. GREEN, // Green Color
  13. TEAM_COLOR, // Red, grey, blue
  14. GREY, // grey
  15. RED, // Red
  16. BLUE, // Blue
  17. }
  18.  
  19. new TeamName[][] =
  20. {
  21. "",
  22. "TERRORIST",
  23. "CT",
  24. "SPECTATOR"
  25. }
  26.  
  27. new cvar_adminonly, cvar_adminflag, cvar_hideadmins, cvar_showport
  28.  
  29. public plugin_init()
  30. {
  31. register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
  32.  
  33. cvar_adminonly = register_cvar("showip_adminonly", "0")
  34. cvar_adminflag = register_cvar("showip_adminflag", "e")
  35. cvar_hideadmins = register_cvar("showip_hideadmins", "1")
  36. cvar_showport = register_cvar("showip_showport", "0")
  37.  
  38. register_concmd("amx_showip", "cmd_showip", ADMIN_ALL, "shows users' IP adresses")
  39. register_clcmd("say /showip", "cmd_ipmenu")
  40. register_clcmd("say_team /showip", "cmd_ipmenu")
  41. }
  42.  
  43. public cmd_showip(id)
  44. {
  45. if(get_pcvar_num(cvar_adminonly) == 1)
  46. {
  47. if(!user_has_flag(id, cvar_adminflag))
  48. {
  49. new adminflag[2]
  50. get_pcvar_string(cvar_adminflag, adminflag, charsmax(adminflag))
  51. client_print(id, print_console, "%s Ehez a parancshoz szukseged van az ^"%s^" jogosultsagra.", szPrefix, adminflag)
  52. return PLUGIN_HANDLED
  53. }
  54. }
  55.  
  56. new g_players[32], num, player
  57. get_players(g_players, num)
  58.  
  59. new time[32]
  60. get_time("%d.%m.%Y - %X", time, charsmax(time))
  61.  
  62. client_print(id, print_console, "< ----- < IP Megtekinto > ----- < Ideje: %s > ----- < IP Megtekinto > ----- >^n", time)
  63.  
  64. new info[100], name[32], ip[32]
  65. new showport = (get_pcvar_num(cvar_showport) == 1) ? 0 : 1
  66.  
  67. for(new i = 0; i < num; i++)
  68. {
  69. player = g_players[i]
  70. get_user_name(player, name, charsmax(name))
  71. if(get_pcvar_num(cvar_hideadmins) == 1)
  72. {
  73. if(user_has_flag(player, cvar_adminflag)) formatex(ip, charsmax(ip), "REJTETT IP")
  74. else get_user_ip(player, ip, charsmax(ip), showport)
  75. }
  76. else get_user_ip(player, ip, charsmax(ip), showport)
  77. formatex(info, charsmax(info), "%s [ %s ]", name, ip)
  78. client_print(id, print_console, info)
  79. }
  80.  
  81. client_print(id, print_console, "^n< ----- < IP Megtekinto > ----- < Ideje: %s > ----- < IP Megtekinto > ----- >", time)
  82. return PLUGIN_HANDLED
  83. }
  84.  
  85.  
  86. public cmd_ipmenu(id)
  87. {
  88. if(get_pcvar_num(cvar_adminonly) == 1)
  89. {
  90. if(!user_has_flag(id, cvar_adminflag))
  91. {
  92. new adminflag[2]
  93. get_pcvar_string(cvar_adminflag, adminflag, charsmax(adminflag))
  94. ColorChat(id, TEAM_COLOR, "^4%s ^1Ehez a parancshoz szukseged van az^3 ^"%s^" ^1jogosultsagra.", szPrefix, adminflag)
  95. return PLUGIN_HANDLED
  96. }
  97. }
  98.  
  99. new title[100]
  100. formatex(title, charsmax(title), "\y%s \wValassz Jatekost:\r", szPrefix)
  101.  
  102. new ipmenu = menu_create(title, "ipmenu_handler")
  103.  
  104. new players[32], num, player
  105. new name[32], userid[32]
  106.  
  107. get_players(players, num)
  108.  
  109. for(new i = 0; i < num; i++)
  110. {
  111. player = players[i]
  112. get_user_name(player, name, charsmax(name))
  113. formatex(userid, charsmax(userid), "%d", get_user_userid(player))
  114. menu_additem(ipmenu, name, userid, 0)
  115. }
  116.  
  117. menu_setprop(ipmenu, MPROP_BACKNAME, "\yElozo Oldal")
  118. menu_setprop(ipmenu, MPROP_NEXTNAME, "\yKovetkezo Oldal")
  119. menu_setprop(ipmenu, MPROP_EXITNAME, "\yKilepes")
  120.  
  121. menu_display(id, ipmenu, 0)
  122. return PLUGIN_HANDLED
  123. }
  124.  
  125. public ipmenu_handler(id, ipmenu, item)
  126. {
  127. new data[6], name[64]
  128. new item_access, item_callback
  129.  
  130. menu_item_getinfo(ipmenu, item, item_access, data, charsmax(data), name, charsmax(name), item_callback)
  131. new userid = str_to_num(data)
  132.  
  133. new player = find_player("k", userid)
  134. new showport = (get_pcvar_num(cvar_showport) == 1) ? 0 : 1
  135.  
  136. new time[32]
  137. get_time("%d.%m.%Y - %X", time, charsmax(time))
  138.  
  139. if(player)
  140. {
  141. new name[32], ip[32]
  142. get_user_name(player, name, charsmax(name))
  143. if(get_pcvar_num(cvar_hideadmins) == 1)
  144. {
  145. if(user_has_flag(player, cvar_adminflag)) formatex(ip, charsmax(ip), "REJTETT")
  146. else get_user_ip(player, ip, charsmax(ip), showport)
  147. }
  148. else get_user_ip(player, ip, charsmax(ip), showport)
  149. ColorChat(id, TEAM_COLOR, "^4%s ^1Jatekos ^4%s ^3IP Cime ^1a kovetkezo ^4%s^1. Az ido ^3%s", szPrefix, name, ip, time)
  150. }
  151.  
  152. menu_destroy(ipmenu)
  153. return PLUGIN_HANDLED
  154. }
  155.  
  156. stock user_has_flag(id, cvar)
  157. {
  158. new flags[32]
  159. get_flags(get_user_flags(id), flags, charsmax(flags))
  160.  
  161. new vip_flag[2]
  162. get_pcvar_string(cvar, vip_flag, charsmax(vip_flag))
  163.  
  164. return (contain(flags, vip_flag) != -1) ? true : false
  165. }
  166.  
  167. /* ColorChat */
  168.  
  169. ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
  170. {
  171. static message[256];
  172.  
  173. switch(type)
  174. {
  175. case NORMAL: // clients scr_concolor cvar color
  176. {
  177. message[0] = 0x01;
  178. }
  179. case GREEN: // Green
  180. {
  181. message[0] = 0x04;
  182. }
  183. default: // White, Red, Blue
  184. {
  185. message[0] = 0x03;
  186. }
  187. }
  188.  
  189. vformat(message[1], 251, msg, 4);
  190.  
  191. // Make sure message is not longer than 192 character. Will crash the server.
  192. message[192] = '^0';
  193.  
  194. static team, ColorChange, index, MSG_Type;
  195.  
  196. if(id)
  197. {
  198. MSG_Type = MSG_ONE;
  199. index = id;
  200. } else {
  201. index = FindPlayer();
  202. MSG_Type = MSG_ALL;
  203. }
  204.  
  205. team = get_user_team(index);
  206. ColorChange = ColorSelection(index, MSG_Type, type);
  207.  
  208. ShowColorMessage(index, MSG_Type, message);
  209.  
  210. if(ColorChange)
  211. {
  212. Team_Info(index, MSG_Type, TeamName[team]);
  213. }
  214. }
  215.  
  216. ShowColorMessage(id, type, message[])
  217. {
  218. message_begin(type, get_user_msgid("SayText"), _, id);
  219. write_byte(id)
  220. write_string(message);
  221. message_end();
  222. }
  223.  
  224. Team_Info(id, type, team[])
  225. {
  226. message_begin(type, get_user_msgid("TeamInfo"), _, id);
  227. write_byte(id);
  228. write_string(team);
  229. message_end();
  230.  
  231. return 1;
  232. }
  233.  
  234. ColorSelection(index, type, Color:Type)
  235. {
  236. switch(Type)
  237. {
  238. case RED:
  239. {
  240. return Team_Info(index, type, TeamName[1]);
  241. }
  242. case BLUE:
  243. {
  244. return Team_Info(index, type, TeamName[2]);
  245. }
  246. case GREY:
  247. {
  248. return Team_Info(index, type, TeamName[0]);
  249. }
  250. }
  251.  
  252. return 0;
  253. }
  254.  
  255. FindPlayer()
  256. {
  257. static i;
  258. i = -1;
  259.  
  260. while(i <= get_maxplayers())
  261. {
  262. if(is_user_connected(++i))
  263. {
  264. return i;
  265. }
  266. }
  267.  
  268. return -1;
  269. }