hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.26. 05:55



Jelenlévő felhasználók

Jelenleg 313 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 313 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 3 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Admin kick színezése
HozzászólásElküldve: 2015.07.28. 13:09 
Offline
Senior Tag

Csatlakozott: 2015.06.28. 13:00
Hozzászólások: 295
Megköszönt másnak: 20 alkalommal
Megköszönték neki: 10 alkalommal
Üdv!

Valaki meg csinálja nekem hogy mikor Kickelek valakit akkor színessel írja ki? Előre is köszönöm :)

SMA
SMA Forráskód: [ Mindet kijelol ]
  1. /* AMX Mod X
  2. * Admin Commands Plugin
  3. *
  4. * by the AMX Mod X Development Team
  5. * originally developed by OLO
  6. *
  7. * This file is part of AMX Mod X.
  8. *
  9. *
  10. * This program is free software; you can redistribute it and/or modify it
  11. * under the terms of the GNU General Public License as published by the
  12. * Free Software Foundation; either version 2 of the License, or (at
  13. * your option) any later version.
  14. *
  15. * This program is distributed in the hope that it will be useful, but
  16. * WITHOUT ANY WARRANTY; without even the implied warranty of
  17. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  18. * General Public License for more details.
  19. *
  20. * You should have received a copy of the GNU General Public License
  21. * along with this program; if not, write to the Free Software Foundation,
  22. * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  23. *
  24. * In addition, as a special exception, the author gives permission to
  25. * link the code of this program with the Half-Life Game Engine ("HL
  26. * Engine") and Modified Game Libraries ("MODs") developed by Valve,
  27. * L.L.C ("Valve"). You must obey the GNU General Public License in all
  28. * respects for all of the code used other than the HL Engine and MODs
  29. * from Valve. If you modify this file, you may extend this exception
  30. * to your version of the file, but you are not obligated to do so. If
  31. * you do not wish to do so, delete this exception statement from your
  32. * version.
  33. */
  34.  
  35. #include <amxmodx>
  36. #include <amxmisc>
  37.  
  38. // This is not a dynamic array because it would be bad for 24/7 map servers.
  39. #define OLD_CONNECTION_QUEUE 10
  40.  
  41. new g_pauseCon
  42. new Float:g_pausAble
  43. new bool:g_Paused
  44. new bool:g_PauseAllowed = false
  45. new g_addCvar[] = "amx_cvar add %s"
  46.  
  47. new pausable;
  48. new rcon_password;
  49.  
  50. // Old connection queue
  51. new g_Names[OLD_CONNECTION_QUEUE][32];
  52. new g_SteamIDs[OLD_CONNECTION_QUEUE][32];
  53. new g_IPs[OLD_CONNECTION_QUEUE][32];
  54. new g_Access[OLD_CONNECTION_QUEUE];
  55. new g_Tracker;
  56. new g_Size;
  57.  
  58. stock InsertInfo(id)
  59. {
  60.  
  61. // Scan to see if this entry is the last entry in the list
  62. // If it is, then update the name and access
  63. // If it is not, then insert it again.
  64.  
  65. if (g_Size > 0)
  66. {
  67. new ip[32]
  68. new auth[32];
  69.  
  70. get_user_authid(id, auth, charsmax(auth));
  71. get_user_ip(id, ip, charsmax(ip), 1/*no port*/);
  72.  
  73. new last = 0;
  74.  
  75. if (g_Size < sizeof(g_SteamIDs))
  76. {
  77. last = g_Size - 1;
  78. }
  79. else
  80. {
  81. last = g_Tracker - 1;
  82.  
  83. if (last < 0)
  84. {
  85. last = g_Size - 1;
  86. }
  87. }
  88.  
  89. if (equal(auth, g_SteamIDs[last]) &&
  90. equal(ip, g_IPs[last])) // need to check ip too, or all the nosteams will while it doesn't work with their illegitimate server
  91. {
  92. get_user_name(id, g_Names[last], charsmax(g_Names[]));
  93. g_Access[last] = get_user_flags(id);
  94.  
  95. return;
  96. }
  97. }
  98.  
  99. // Need to insert the entry
  100.  
  101. new target = 0; // the slot to save the info at
  102.  
  103. // Queue is not yet full
  104. if (g_Size < sizeof(g_SteamIDs))
  105. {
  106. target = g_Size;
  107.  
  108. ++g_Size;
  109.  
  110. }
  111. else
  112. {
  113. target = g_Tracker;
  114.  
  115. ++g_Tracker;
  116. // If we reached the end of the array, then move to the front
  117. if (g_Tracker == sizeof(g_SteamIDs))
  118. {
  119. g_Tracker = 0;
  120. }
  121. }
  122.  
  123. get_user_authid(id, g_SteamIDs[target], charsmax(g_SteamIDs[]));
  124. get_user_name(id, g_Names[target], charsmax(g_Names[]));
  125. get_user_ip(id, g_IPs[target], charsmax(g_IPs[]), 1/*no port*/);
  126.  
  127. g_Access[target] = get_user_flags(id);
  128.  
  129. }
  130. stock GetInfo(i, name[], namesize, auth[], authsize, ip[], ipsize, &access)
  131. {
  132. if (i >= g_Size)
  133. {
  134. abort(AMX_ERR_NATIVE, "GetInfo: Out of bounds (%d:%d)", i, g_Size);
  135. }
  136.  
  137. new target = (g_Tracker + i) % sizeof(g_SteamIDs);
  138.  
  139. copy(name, namesize, g_Names[target]);
  140. copy(auth, authsize, g_SteamIDs[target]);
  141. copy(ip, ipsize, g_IPs[target]);
  142. access = g_Access[target];
  143.  
  144. }
  145. public client_disconnect(id)
  146. {
  147. if (!is_user_bot(id))
  148. {
  149. InsertInfo(id);
  150. }
  151. }
  152.  
  153. public plugin_init()
  154. {
  155. register_plugin("Admin Commands", AMXX_VERSION_STR, "AMXX Dev Team")
  156.  
  157. register_dictionary("admincmd.txt")
  158. register_dictionary("common.txt")
  159. register_dictionary("adminhelp.txt")
  160.  
  161.  
  162. register_concmd("amx_kick", "cmdKick", ADMIN_KICK, "<name or #userid> [reason]")
  163. register_concmd("amx_ban", "cmdBan", ADMIN_BAN, "<name or #userid> <minutes> [reason]")
  164. register_concmd("amx_banip", "cmdBanIP", ADMIN_BAN, "<name or #userid> <minutes> [reason]")
  165. register_concmd("amx_addban", "cmdAddBan", ADMIN_BAN, "<^"authid^" or ip> <minutes> [reason]")
  166. register_concmd("amx_unban", "cmdUnban", ADMIN_BAN, "<^"authid^" or ip>")
  167. register_concmd("amx_slay", "cmdSlay", ADMIN_SLAY, "<name or #userid>")
  168. register_concmd("amx_slap", "cmdSlap", ADMIN_SLAY, "<name or #userid> [power]")
  169. register_concmd("amx_leave", "cmdLeave", ADMIN_KICK, "<tag> [tag] [tag] [tag]")
  170. register_concmd("amx_pause", "cmdPause", ADMIN_CVAR, "- pause or unpause the game")
  171. register_concmd("amx_who", "cmdWho", ADMIN_ADMIN, "- displays who is on server")
  172. register_concmd("amx_cvar", "cmdCvar", ADMIN_CVAR, "<cvar> [value]")
  173. register_concmd("amx_plugins", "cmdPlugins", ADMIN_ADMIN)
  174. register_concmd("amx_modules", "cmdModules", ADMIN_ADMIN)
  175. register_concmd("amx_map", "cmdMap", ADMIN_MAP, "<mapname>")
  176. register_concmd("amx_cfg", "cmdCfg", ADMIN_CFG, "<filename>")
  177. register_concmd("amx_nick", "cmdNick", ADMIN_SLAY, "<name or #userid> <new nick>")
  178. register_concmd("amx_last", "cmdLast", ADMIN_BAN, "- list the last few disconnected clients info");
  179. register_clcmd("amx_rcon", "cmdRcon", ADMIN_RCON, "<command line>")
  180. register_clcmd("amx_showrcon", "cmdShowRcon", ADMIN_RCON, "<command line>")
  181. register_clcmd("pauseAck", "cmdLBack")
  182.  
  183.  
  184. rcon_password=get_cvar_pointer("rcon_password");
  185. pausable=get_cvar_pointer("pausable");
  186.  
  187.  
  188. }
  189.  
  190. public plugin_cfg()
  191. {
  192. // Cvars which can be changed only with rcon access
  193. server_cmd(g_addCvar, "rcon_password")
  194. server_cmd(g_addCvar, "amx_show_activity")
  195. server_cmd(g_addCvar, "amx_mode")
  196. server_cmd(g_addCvar, "amx_password_field")
  197. server_cmd(g_addCvar, "amx_default_access")
  198. server_cmd(g_addCvar, "amx_reserved_slots")
  199. server_cmd(g_addCvar, "amx_reservation")
  200. server_cmd(g_addCvar, "amx_sql_table");
  201. server_cmd(g_addCvar, "amx_sql_host");
  202. server_cmd(g_addCvar, "amx_sql_user");
  203. server_cmd(g_addCvar, "amx_sql_pass");
  204. server_cmd(g_addCvar, "amx_sql_db");
  205. server_cmd(g_addCvar, "amx_sql_type");
  206.  
  207. }
  208.  
  209. public cmdKick(id, level, cid)
  210. {
  211. if (!cmd_access(id, level, cid, 2))
  212. return PLUGIN_HANDLED
  213.  
  214. new arg[32]
  215. read_argv(1, arg, 31)
  216. new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF)
  217.  
  218. if (!player)
  219. return PLUGIN_HANDLED
  220.  
  221. new authid[32], authid2[32], name2[32], name[32], userid2, reason[32]
  222.  
  223. get_user_authid(id, authid, 31)
  224. get_user_authid(player, authid2, 31)
  225. get_user_name(player, name2, 31)
  226. get_user_name(id, name, 31)
  227. userid2 = get_user_userid(player)
  228. read_argv(2, reason, 31)
  229. remove_quotes(reason)
  230.  
  231. log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^" (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, reason)
  232.  
  233. show_activity_key("ADMIN_KICK_1", "ADMIN_KICK_2", name, name2);
  234.  
  235. if (is_user_bot(player))
  236. server_cmd("kick #%d", userid2)
  237. else
  238. {
  239. if (reason[0])
  240. server_cmd("kick #%d ^"%s^"", userid2, reason)
  241. else
  242. server_cmd("kick #%d", userid2)
  243. }
  244.  
  245. console_print(id, "[AMXX] Client ^"%s^" kicked", name2)
  246.  
  247. return PLUGIN_HANDLED
  248. }
  249.  
  250. public cmdUnban(id, level, cid)
  251. {
  252. if (!cmd_access(id, level, cid, 2))
  253. return PLUGIN_HANDLED
  254.  
  255. new arg[32], authid[32], name[32]
  256.  
  257. read_argv(1, arg, 31)
  258.  
  259. if (contain(arg, ".") != -1)
  260. {
  261. server_cmd("removeip ^"%s^";writeip", arg)
  262. console_print(id, "[AMXX] %L", id, "IP_REMOVED", arg)
  263. } else {
  264. server_cmd("removeid %s;writeid", arg)
  265. console_print(id, "[AMXX] %L", id, "AUTHID_REMOVED", arg)
  266. }
  267.  
  268. get_user_name(id, name, 31)
  269.  
  270. show_activity_key("ADMIN_UNBAN_1", "ADMIN_UNBAN_2", name, arg);
  271.  
  272. get_user_authid(id, authid, 31)
  273. log_amx("Cmd: ^"%s<%d><%s><>^" unban ^"%s^"", name, get_user_userid(id), authid, arg)
  274.  
  275. return PLUGIN_HANDLED
  276. }
  277.  
  278. /* amx_addban is a special command now.
  279.  * If a user with rcon uses it, it bans the user. No questions asked.
  280.  * If a user without rcon but with ADMIN_BAN uses it, it will scan the old
  281.  * connection queue, and if it finds the info for a player in it, it will
  282.  * check their old access. If they have immunity, it will not ban.
  283.  * If they do not have immunity, it will ban. If the user is not found,
  284.  * it will refuse to ban the target.
  285.  */
  286.  
  287. public cmdAddBan(id, level, cid)
  288. {
  289. if (!cmd_access(id, level, cid, 3, true)) // check for ADMIN_BAN access
  290. {
  291. if (get_user_flags(id) & level) // Getting here means they didn't input enough args
  292. {
  293. return PLUGIN_HANDLED;
  294. }
  295. if (!cmd_access(id, ADMIN_RCON, cid, 3)) // If somehow they have ADMIN_RCON without ADMIN_BAN, continue
  296. {
  297. return PLUGIN_HANDLED;
  298. }
  299. }
  300.  
  301. new arg[32], authid[32], name[32], minutes[32], reason[32]
  302.  
  303. read_argv(1, arg, 31)
  304. read_argv(2, minutes, 31)
  305. read_argv(3, reason, 31)
  306.  
  307.  
  308. if (!(get_user_flags(id) & ADMIN_RCON))
  309. {
  310. new bool:canban = false;
  311. new bool:isip = false;
  312. // Limited access to this command
  313. if (equali(arg, "STEAM_ID_PENDING") ||
  314. equali(arg, "STEAM_ID_LAN") ||
  315. equali(arg, "HLTV") ||
  316. equali(arg, "4294967295") ||
  317. equali(arg, "VALVE_ID_LAN") ||
  318. equali(arg, "VALVE_ID_PENDING"))
  319. {
  320. // Hopefully we never get here, so ML shouldn't be needed
  321. console_print(id, "Cannot ban %s", arg);
  322. return PLUGIN_HANDLED;
  323. }
  324.  
  325. if (contain(arg, ".") != -1)
  326. {
  327. isip = true;
  328. }
  329.  
  330. // Scan the disconnection queue
  331. if (isip)
  332. {
  333. new IP[32];
  334. new Name[32];
  335. new dummy[1];
  336. new Access;
  337. for (new i = 0; i < g_Size; i++)
  338. {
  339. GetInfo(i, Name, charsmax(Name), dummy, 0, IP, charsmax(IP), Access);
  340.  
  341. if (equal(IP, arg))
  342. {
  343. if (Access & ADMIN_IMMUNITY)
  344. {
  345. console_print(id, "[AMXX] %s : %L", IP, id, "CLIENT_IMM", Name);
  346.  
  347. return PLUGIN_HANDLED;
  348. }
  349. // User did not have immunity
  350. canban = true;
  351. }
  352. }
  353. }
  354. else
  355. {
  356. new Auth[32];
  357. new Name[32];
  358. new dummy[1];
  359. new Access;
  360. for (new i = 0; i < g_Size; i++)
  361. {
  362. GetInfo(i, Name, charsmax(Name), Auth, charsmax(Auth), dummy, 0, Access);
  363.  
  364. if (equal(Auth, arg))
  365. {
  366. if (Access & ADMIN_IMMUNITY)
  367. {
  368. console_print(id, "[AMXX] %s : %L", Auth, id, "CLIENT_IMM", Name);
  369.  
  370. return PLUGIN_HANDLED;
  371. }
  372. // User did not have immunity
  373. canban = true;
  374. }
  375. }
  376. }
  377.  
  378. if (!canban)
  379. {
  380. console_print(id, "[AMXX] You may only ban recently disconnected clients. Use ^"amx_last^" to view.");
  381.  
  382. return PLUGIN_HANDLED;
  383. }
  384.  
  385. }
  386.  
  387. // User has access to ban their target
  388. if (contain(arg, ".") != -1)
  389. {
  390. server_cmd("addip ^"%s^" ^"%s^";wait;writeip", minutes, arg)
  391. console_print(id, "[AMXX] Ip ^"%s^" added to ban list", arg)
  392. } else {
  393. server_cmd("banid %s %s;wait;writeid", minutes, arg)
  394. console_print(id, "[AMXX] Authid ^"%s^" added to ban list", arg)
  395. }
  396.  
  397. get_user_name(id, name, 31)
  398.  
  399. show_activity_key("ADMIN_ADDBAN_1", "ADMIN_ADDBAN_2", name, arg);
  400.  
  401. get_user_authid(id, authid, 31)
  402. log_amx("Cmd: ^"%s<%d><%s><>^" ban ^"%s^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, arg, minutes, reason)
  403.  
  404. return PLUGIN_HANDLED
  405. }
  406.  
  407. public cmdBan(id, level, cid)
  408. {
  409. if (!cmd_access(id, level, cid, 3))
  410. return PLUGIN_HANDLED
  411.  
  412. new target[32], minutes[8], reason[64]
  413.  
  414. read_argv(1, target, 31)
  415. read_argv(2, minutes, 7)
  416. read_argv(3, reason, 63)
  417.  
  418. new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS | CMDTARGET_ALLOW_SELF)
  419.  
  420. if (!player)
  421. return PLUGIN_HANDLED
  422.  
  423. new authid[32], name2[32], authid2[32], name[32]
  424. new userid2 = get_user_userid(player)
  425.  
  426. get_user_authid(player, authid2, 31)
  427. get_user_authid(id, authid, 31)
  428. get_user_name(player, name2, 31)
  429. get_user_name(id, name, 31)
  430.  
  431. log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, minutes, reason)
  432.  
  433. new temp[64], banned[16], nNum = str_to_num(minutes)
  434. if (nNum)
  435. format(temp, 63, "%L", player, "FOR_MIN", minutes)
  436. else
  437. format(temp, 63, "%L", player, "PERM")
  438.  
  439. format(banned, 15, "%L", player, "BANNED")
  440.  
  441. if (reason[0])
  442. server_cmd("kick #%d ^"%s (%s %s)^";wait;banid %s %s;wait;writeid", userid2, reason, banned, temp, minutes, authid2)
  443. else
  444. server_cmd("kick #%d ^"%s %s^";wait;banid %s %s;wait;writeid", userid2, banned, temp, minutes, authid2)
  445.  
  446.  
  447. // Display the message to all clients
  448.  
  449. new msg[256];
  450. new len;
  451. new maxpl = get_maxplayers();
  452. for (new i = 1; i <= maxpl; i++)
  453. {
  454. if (is_user_connected(i) && !is_user_bot(i))
  455. {
  456. len = formatex(msg, charsmax(msg), "%L", i, "BAN");
  457. len += formatex(msg[len], charsmax(msg) - len, " %s ", name2);
  458. if (nNum)
  459. {
  460. len += formatex(msg[len], charsmax(msg) - len, "%L", i, "FOR_MIN", minutes);
  461. }
  462. else
  463. {
  464. len += formatex(msg[len], charsmax(msg) - len, "%L", i, "PERM");
  465. }
  466. if (strlen(reason) > 0)
  467. {
  468. formatex(msg[len], charsmax(msg) - len, " (%L: %s)", i, "REASON", reason);
  469. }
  470. show_activity_id(i, id, name, msg);
  471. }
  472. }
  473.  
  474. console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
  475.  
  476. return PLUGIN_HANDLED
  477. }
  478.  
  479. public cmdBanIP(id, level, cid)
  480. {
  481. if (!cmd_access(id, level, cid, 3))
  482. return PLUGIN_HANDLED
  483.  
  484. new target[32], minutes[8], reason[64]
  485.  
  486. read_argv(1, target, 31)
  487. read_argv(2, minutes, 7)
  488. read_argv(3, reason, 63)
  489.  
  490. new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS | CMDTARGET_ALLOW_SELF)
  491.  
  492. if (!player)
  493. {
  494. // why is this here?
  495. // no idea
  496. // player = cmd_target(id, target, 9);
  497. return PLUGIN_HANDLED
  498. }
  499.  
  500. new authid[32], name2[32], authid2[32], name[32]
  501. new userid2 = get_user_userid(player)
  502.  
  503. get_user_authid(player, authid2, 31)
  504. get_user_authid(id, authid, 31)
  505. get_user_name(player, name2, 31)
  506. get_user_name(id, name, 31)
  507.  
  508. log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, minutes, reason)
  509.  
  510. new temp[64], banned[16], nNum = str_to_num(minutes)
  511. if (nNum)
  512. format(temp, 63, "%L", player, "FOR_MIN", minutes)
  513. else
  514. format(temp, 63, "%L", player, "PERM")
  515. format(banned, 15, "%L", player, "BANNED")
  516.  
  517. new address[32]
  518. get_user_ip(player, address, 31, 1)
  519.  
  520. if (reason[0])
  521. server_cmd("kick #%d ^"%s (%s %s)^";wait;addip ^"%s^" ^"%s^";wait;writeip", userid2, reason, banned, temp, minutes, address)
  522. else
  523. server_cmd("kick #%d ^"%s %s^";wait;addip ^"%s^" ^"%s^";wait;writeip", userid2, banned, temp, minutes, address)
  524.  
  525. // Display the message to all clients
  526.  
  527. new msg[256];
  528. new len;
  529. new maxpl = get_maxplayers();
  530. for (new i = 1; i <= maxpl; i++)
  531. {
  532. if (is_user_connected(i) && !is_user_bot(i))
  533. {
  534. len = formatex(msg, charsmax(msg), "%L", i, "BAN");
  535. len += formatex(msg[len], charsmax(msg) - len, " %s ", name2);
  536. if (nNum)
  537. {
  538. formatex(msg[len], charsmax(msg) - len, "%L", i, "FOR_MIN", minutes);
  539. }
  540. else
  541. {
  542. formatex(msg[len], charsmax(msg) - len, "%L", i, "PERM");
  543. }
  544. if (strlen(reason) > 0)
  545. {
  546. formatex(msg[len], charsmax(msg) - len, " (%L: %s)", i, "REASON", reason);
  547. }
  548. show_activity_id(i, id, name, msg);
  549. }
  550. }
  551.  
  552. console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
  553.  
  554. return PLUGIN_HANDLED
  555. }
  556.  
  557. public cmdSlay(id, level, cid)
  558. {
  559. if (!cmd_access(id, level, cid, 2))
  560. return PLUGIN_HANDLED
  561.  
  562. new arg[32]
  563.  
  564. read_argv(1, arg, 31)
  565.  
  566. new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF | CMDTARGET_ONLY_ALIVE)
  567.  
  568. if (!player)
  569. return PLUGIN_HANDLED
  570.  
  571. user_kill(player)
  572.  
  573. new authid[32], name2[32], authid2[32], name[32]
  574.  
  575. get_user_authid(id, authid, 31)
  576. get_user_name(id, name, 31)
  577. get_user_authid(player, authid2, 31)
  578. get_user_name(player, name2, 31)
  579.  
  580. log_amx("Cmd: ^"%s<%d><%s><>^" slay ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2)
  581.  
  582. show_activity_key("ADMIN_SLAY_1", "ADMIN_SLAY_2", name, name2);
  583.  
  584. console_print(id, "[AMXX] %L", id, "CLIENT_SLAYED", name2)
  585.  
  586. return PLUGIN_HANDLED
  587. }
  588.  
  589. public cmdSlap(id, level, cid)
  590. {
  591. if (!cmd_access(id, level, cid, 2))
  592. return PLUGIN_HANDLED
  593.  
  594. new arg[32]
  595.  
  596. read_argv(1, arg, 31)
  597. new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF | CMDTARGET_ONLY_ALIVE)
  598.  
  599. if (!player)
  600. return PLUGIN_HANDLED
  601.  
  602. new spower[32], authid[32], name2[32], authid2[32], name[32]
  603.  
  604. read_argv(2, spower, 31)
  605.  
  606. new damage = str_to_num(spower)
  607.  
  608. user_slap(player, damage)
  609.  
  610. get_user_authid(id, authid, 31)
  611. get_user_name(id, name, 31)
  612. get_user_authid(player, authid2, 31)
  613. get_user_name(player, name2, 31)
  614.  
  615. log_amx("Cmd: ^"%s<%d><%s><>^" slap with %d damage ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, damage, name2, get_user_userid(player), authid2)
  616.  
  617. show_activity_key("ADMIN_SLAP_1", "ADMIN_SLAP_2", name, name2, damage);
  618.  
  619. console_print(id, "[AMXX] %L", id, "CLIENT_SLAPED", name2, damage)
  620.  
  621. return PLUGIN_HANDLED
  622. }
  623.  
  624. public chMap(map[])
  625. {
  626. server_cmd("changelevel %s", map)
  627. }
  628.  
  629. public cmdMap(id, level, cid)
  630. {
  631. if (!cmd_access(id, level, cid, 2))
  632. return PLUGIN_HANDLED
  633.  
  634. new arg[32]
  635. new arglen = read_argv(1, arg, 31)
  636.  
  637. if (!is_map_valid(arg))
  638. {
  639. console_print(id, "[AMXX] %L", id, "MAP_NOT_FOUND")
  640. return PLUGIN_HANDLED
  641. }
  642.  
  643. new authid[32], name[32]
  644.  
  645. get_user_authid(id, authid, 31)
  646. get_user_name(id, name, 31)
  647.  
  648. show_activity_key("ADMIN_MAP_1", "ADMIN_MAP_2", name, arg);
  649.  
  650. log_amx("Cmd: ^"%s<%d><%s><>^" changelevel ^"%s^"", name, get_user_userid(id), authid, arg)
  651.  
  652. new _modName[10]
  653. get_modname(_modName, 9)
  654.  
  655. if (!equal(_modName, "zp"))
  656. {
  657. message_begin(MSG_ALL, SVC_INTERMISSION)
  658. message_end()
  659. }
  660.  
  661. set_task(2.0, "chMap", 0, arg, arglen + 1)
  662.  
  663. return PLUGIN_HANDLED
  664. }
  665.  
  666. stock bool:onlyRcon(const name[])
  667. {
  668. new ptr=get_cvar_pointer(name);
  669. if (ptr && get_pcvar_flags(ptr) & FCVAR_PROTECTED)
  670. {
  671. return true;
  672. }
  673. return false;
  674. }
  675.  
  676. public cmdCvar(id, level, cid)
  677. {
  678. if (!cmd_access(id, level, cid, 2))
  679. return PLUGIN_HANDLED
  680.  
  681. new arg[32], arg2[64]
  682.  
  683. read_argv(1, arg, 31)
  684. read_argv(2, arg2, 63)
  685.  
  686. new pointer;
  687.  
  688. if (equal(arg, "add") && (get_user_flags(id) & ADMIN_RCON))
  689. {
  690. if ((pointer=get_cvar_pointer(arg2))!=0)
  691. {
  692. new flags=get_pcvar_flags(pointer);
  693.  
  694. if (!(flags & FCVAR_PROTECTED))
  695. {
  696. set_pcvar_flags(pointer,flags | FCVAR_PROTECTED);
  697. }
  698. }
  699. return PLUGIN_HANDLED
  700. }
  701.  
  702. if ((pointer=get_cvar_pointer(arg))==0)
  703. {
  704. console_print(id, "[AMXX] %L", id, "UNKNOWN_CVAR", arg)
  705. return PLUGIN_HANDLED
  706. }
  707.  
  708. if (onlyRcon(arg) && !(get_user_flags(id) & ADMIN_RCON))
  709. {
  710. // Exception for the new onlyRcon rules:
  711. // sv_password is allowed to be modified by ADMIN_PASSWORD
  712. if (!(equali(arg,"sv_password") && (get_user_flags(id) & ADMIN_PASSWORD)))
  713. {
  714. console_print(id, "[AMXX] %L", id, "CVAR_NO_ACC")
  715. return PLUGIN_HANDLED
  716. }
  717. }
  718.  
  719. if (read_argc() < 3)
  720. {
  721. get_pcvar_string(pointer, arg2, 63)
  722. console_print(id, "[AMXX] %L", id, "CVAR_IS", arg, arg2)
  723. return PLUGIN_HANDLED
  724. }
  725.  
  726. new authid[32], name[32]
  727.  
  728. get_user_authid(id, authid, 31)
  729. get_user_name(id, name, 31)
  730.  
  731. log_amx("Cmd: ^"%s<%d><%s><>^" set cvar (name ^"%s^") (value ^"%s^")", name, get_user_userid(id), authid, arg, arg2)
  732. set_cvar_string(arg, arg2)
  733.  
  734.  
  735. // Display the message to all clients
  736.  
  737. new cvar_val[64];
  738. new maxpl = get_maxplayers();
  739. for (new i = 1; i <= maxpl; i++)
  740. {
  741. if (is_user_connected(i) && !is_user_bot(i))
  742. {
  743. if (get_pcvar_flags(pointer) & FCVAR_PROTECTED || equali(arg, "rcon_password"))
  744. {
  745. formatex(cvar_val, charsmax(cvar_val), "*** %L ***", i, "PROTECTED");
  746. }
  747. else
  748. {
  749. copy(cvar_val, charsmax(cvar_val), arg2);
  750. }
  751. show_activity_id(i, id, name, "%L", i, "SET_CVAR_TO", "", arg, cvar_val);
  752. }
  753. }
  754.  
  755. console_print(id, "[AMXX] %L", id, "CVAR_CHANGED", arg, arg2)
  756.  
  757. return PLUGIN_HANDLED
  758. }
  759.  
  760. public cmdPlugins(id, level, cid)
  761. {
  762. if (!cmd_access(id, level, cid, 1))
  763. return PLUGIN_HANDLED
  764.  
  765. if (id==0) // If server executes redirect this to "amxx plugins" for more in depth output
  766. {
  767. server_cmd("amxx plugins");
  768. server_exec();
  769. return PLUGIN_HANDLED;
  770. }
  771.  
  772. new name[32], version[32], author[32], filename[32], status[32]
  773. new lName[32], lVersion[32], lAuthor[32], lFile[32], lStatus[32]
  774.  
  775. format(lName, 31, "%L", id, "NAME")
  776. format(lVersion, 31, "%L", id, "VERSION")
  777. format(lAuthor, 31, "%L", id, "AUTHOR")
  778. format(lFile, 31, "%L", id, "FILE")
  779. format(lStatus, 31, "%L", id, "STATUS")
  780.  
  781. new StartPLID=0;
  782. new EndPLID;
  783.  
  784. new Temp[96]
  785.  
  786. new num = get_pluginsnum()
  787.  
  788. if (read_argc() > 1)
  789. {
  790. read_argv(1,Temp,sizeof(Temp)-1);
  791. StartPLID=str_to_num(Temp)-1; // zero-based
  792. }
  793.  
  794. EndPLID=min(StartPLID + 10, num);
  795.  
  796. new running = 0
  797.  
  798. console_print(id, "----- %L -----", id, "LOADED_PLUGINS")
  799. console_print(id, "%-18.17s %-11.10s %-17.16s %-16.15s %-9.8s", lName, lVersion, lAuthor, lFile, lStatus)
  800.  
  801. new i=StartPLID;
  802. while (i <EndPLID)
  803. {
  804. get_plugin(i++, filename, 31, name, 31, version, 31, author, 31, status, 31)
  805. console_print(id, "%-18.17s %-11.10s %-17.16s %-16.15s %-9.8s", name, version, author, filename, status)
  806.  
  807. if (status[0]=='d' || status[0]=='r') // "debug" or "running"
  808. running++
  809. }
  810. console_print(id, "%L", id, "PLUGINS_RUN", EndPLID-StartPLID, running)
  811. console_print(id, "----- %L -----",id,"HELP_ENTRIES",StartPLID + 1,EndPLID,num);
  812.  
  813. if (EndPLID < num)
  814. {
  815. formatex(Temp,sizeof(Temp)-1,"----- %L -----",id,"HELP_USE_MORE", EndPLID + 1);
  816. replace_all(Temp,sizeof(Temp)-1,"amx_help","amx_plugins");
  817. console_print(id,"%s",Temp);
  818. }
  819. else
  820. {
  821. formatex(Temp,sizeof(Temp)-1,"----- %L -----",id,"HELP_USE_BEGIN");
  822. replace_all(Temp,sizeof(Temp)-1,"amx_help","amx_plugins");
  823. console_print(id,"%s",Temp);
  824. }
  825.  
  826. return PLUGIN_HANDLED
  827. }
  828.  
  829. public cmdModules(id, level, cid)
  830. {
  831. if (!cmd_access(id, level, cid, 1))
  832. return PLUGIN_HANDLED
  833.  
  834. new name[32], version[32], author[32], status, sStatus[16]
  835. new lName[32], lVersion[32], lAuthor[32], lStatus[32];
  836.  
  837. format(lName, 31, "%L", id, "NAME")
  838. format(lVersion, 31, "%L", id, "VERSION")
  839. format(lAuthor, 31, "%L", id, "AUTHOR")
  840. format(lStatus, charsmax(lStatus), "%L", id, "STATUS")
  841.  
  842. new num = get_modulesnum()
  843.  
  844. console_print(id, "%L:", id, "LOADED_MODULES")
  845. console_print(id, "%-23.22s %-11.10s %-20.19s %-11.10s", lName, lVersion, lAuthor, lStatus)
  846.  
  847. for (new i = 0; i < num; i++)
  848. {
  849. get_module(i, name, 31, author, 31, version, 31, status)
  850.  
  851. switch (status)
  852. {
  853. case module_loaded: copy(sStatus, 15, "running")
  854. default:
  855. {
  856. copy(sStatus, 15, "bad load");
  857. copy(name, charsmax(name), "unknown");
  858. copy(author, charsmax(author), "unknown");
  859. copy(version, charsmax(version), "unknown");
  860. }
  861. }
  862.  
  863. console_print(id, "%-23.22s %-11.10s %-20.19s %-11.10s", name, version, author, sStatus)
  864. }
  865. console_print(id, "%L", id, "NUM_MODULES", num)
  866.  
  867. return PLUGIN_HANDLED
  868. }
  869.  
  870. public cmdCfg(id, level, cid)
  871. {
  872. if (!cmd_access(id, level, cid, 2))
  873. return PLUGIN_HANDLED
  874.  
  875. new arg[128]
  876. read_argv(1, arg, 127)
  877.  
  878. if (!file_exists(arg))
  879. {
  880. console_print(id, "[AMXX] %L", id, "FILE_NOT_FOUND", arg)
  881. return PLUGIN_HANDLED
  882. }
  883.  
  884. new authid[32], name[32]
  885.  
  886. get_user_authid(id, authid, 31)
  887. get_user_name(id, name, 31)
  888.  
  889. log_amx("Cmd: ^"%s<%d><%s><>^" execute cfg (file ^"%s^")", name, get_user_userid(id), authid, arg)
  890.  
  891. console_print(id, "[AMXX] Executing file ^"%s^"", arg)
  892. server_cmd("exec %s", arg)
  893.  
  894. show_activity_key("ADMIN_CONF_1", "ADMIN_CONF_2", name, arg);
  895.  
  896. return PLUGIN_HANDLED
  897. }
  898.  
  899. public cmdLBack()
  900. {
  901. if (!g_PauseAllowed)
  902. return PLUGIN_CONTINUE
  903.  
  904. new paused[25]
  905.  
  906. format(paused, 24, "%L", g_pauseCon, g_Paused ? "UNPAUSED" : "PAUSED")
  907. set_cvar_float("pausable", g_pausAble)
  908. console_print(g_pauseCon, "[AMXX] Server %s", paused)
  909. g_PauseAllowed = false
  910.  
  911. if (g_Paused)
  912. g_Paused = false
  913. else
  914. g_Paused = true
  915.  
  916. return PLUGIN_HANDLED
  917. }
  918.  
  919. public cmdPause(id, level, cid)
  920. {
  921. if (!cmd_access(id, level, cid, 1))
  922. return PLUGIN_HANDLED
  923.  
  924. new authid[32], name[32], slayer = id
  925.  
  926. get_user_authid(id, authid, 31)
  927. get_user_name(id, name, 31)
  928. if (pausable!=0)
  929. {
  930. g_pausAble = get_pcvar_float(pausable)
  931. }
  932.  
  933. if (!slayer)
  934. slayer = find_player("h")
  935.  
  936. if (!slayer)
  937. {
  938. console_print(id, "[AMXX] %L", id, "UNABLE_PAUSE")
  939. return PLUGIN_HANDLED
  940. }
  941.  
  942. set_cvar_float("pausable", 1.0)
  943. g_PauseAllowed = true
  944. client_cmd(slayer, "pause;pauseAck")
  945.  
  946. log_amx("Cmd: ^"%s<%d><%s><>^" %s server", name, get_user_userid(id), authid, g_Paused ? "unpause" : "pause")
  947.  
  948. console_print(id, "[AMXX] %L", id, g_Paused ? "UNPAUSING" : "PAUSING")
  949.  
  950. // Display the message to all clients
  951.  
  952. new maxpl = get_maxplayers();
  953. for (new i = 1; i <= maxpl; i++)
  954. {
  955. if (is_user_connected(i) && !is_user_bot(i))
  956. {
  957. show_activity_id(i, id, name, "%L server", i, g_Paused ? "UNPAUSE" : "PAUSE");
  958. }
  959. }
  960.  
  961. g_pauseCon = id
  962.  
  963. return PLUGIN_HANDLED
  964. }
  965.  
  966. public cmdShowRcon(id, level, cid)
  967. {
  968. if (!cmd_access(id, level, cid, 2))
  969. return PLUGIN_HANDLED
  970.  
  971. new password[64]
  972.  
  973. get_pcvar_string(rcon_password, password, 63)
  974.  
  975. if (!password[0])
  976. {
  977. cmdRcon(id, level, cid)
  978. } else {
  979. new args[128]
  980.  
  981. read_args(args, 127)
  982. client_cmd(id, "rcon_password %s", password)
  983. client_cmd(id, "rcon %s", args)
  984. }
  985.  
  986. return PLUGIN_HANDLED
  987. }
  988.  
  989. public cmdRcon(id, level, cid)
  990. {
  991. if (!cmd_access(id, level, cid, 2))
  992. return PLUGIN_HANDLED
  993.  
  994. new arg[128], authid[32], name[32]
  995.  
  996. read_args(arg, 127)
  997. get_user_authid(id, authid, 31)
  998. get_user_name(id, name, 31)
  999.  
  1000. log_amx("Cmd: ^"%s<%d><%s><>^" server console (cmdline ^"%s^")", name, get_user_userid(id), authid, arg)
  1001.  
  1002. console_print(id, "[AMXX] %L", id, "COM_SENT_SERVER", arg)
  1003. server_cmd("%s", arg)
  1004.  
  1005. return PLUGIN_HANDLED
  1006. }
  1007.  
  1008. public cmdWho(id, level, cid)
  1009. {
  1010. if (!cmd_access(id, level, cid, 1))
  1011. return PLUGIN_HANDLED
  1012.  
  1013. new players[32], inum, cl_on_server[64], authid[32], name[32], flags, sflags[32]
  1014. new lImm[16], lRes[16], lAccess[16], lYes[16], lNo[16]
  1015.  
  1016. format(lImm, 15, "%L", id, "IMMU")
  1017. format(lRes, 15, "%L", id, "RESERV")
  1018. format(lAccess, 15, "%L", id, "ACCESS")
  1019. format(lYes, 15, "%L", id, "YES")
  1020. format(lNo, 15, "%L", id, "NO")
  1021.  
  1022. get_players(players, inum)
  1023. format(cl_on_server, 63, "%L", id, "CLIENTS_ON_SERVER")
  1024. console_print(id, "^n%s:^n # %-16.15s %-20s %-8s %-4.3s %-4.3s %s", cl_on_server, "nick", "authid", "userid", lImm, lRes, lAccess)
  1025.  
  1026. for (new a = 0; a < inum; ++a)
  1027. {
  1028. get_user_authid(players[a], authid, 31)
  1029. get_user_name(players[a], name, 31)
  1030. flags = get_user_flags(players[a])
  1031. get_flags(flags, sflags, 31)
  1032. console_print(id, "%2d %-16.15s %-20s %-8d %-6.5s %-6.5s %s", players[a], name, authid,
  1033. get_user_userid(players[a]), (flags&ADMIN_IMMUNITY) ? lYes : lNo, (flags&ADMIN_RESERVATION) ? lYes : lNo, sflags)
  1034. }
  1035.  
  1036. console_print(id, "%L", id, "TOTAL_NUM", inum)
  1037. get_user_authid(id, authid, 31)
  1038. get_user_name(id, name, 31)
  1039. log_amx("Cmd: ^"%s<%d><%s><>^" ask for players list", name, get_user_userid(id), authid)
  1040.  
  1041. return PLUGIN_HANDLED
  1042. }
  1043.  
  1044. hasTag(name[], tags[4][32], tagsNum)
  1045. {
  1046. for (new a = 0; a < tagsNum; ++a)
  1047. if (contain(name, tags[a]) != -1)
  1048. return a
  1049. return -1
  1050. }
  1051.  
  1052. public cmdLeave(id, level, cid)
  1053. {
  1054. if (!cmd_access(id, level, cid, 2))
  1055. return PLUGIN_HANDLED
  1056.  
  1057. new argnum = read_argc()
  1058. new ltags[4][32]
  1059. new ltagsnum = 0
  1060.  
  1061. for (new a = 1; a < 5; ++a)
  1062. {
  1063. if (a < argnum)
  1064. read_argv(a, ltags[ltagsnum++], 31)
  1065. else
  1066. ltags[ltagsnum++][0] = 0
  1067. }
  1068.  
  1069. new nick[32], ires, pnum = get_maxplayers() + 1, count = 0, lReason[128]
  1070.  
  1071. for (new b = 1; b < pnum; ++b)
  1072. {
  1073. if (!is_user_connected(b) && !is_user_connecting(b)) continue
  1074.  
  1075. get_user_name(b, nick, 31)
  1076. ires = hasTag(nick, ltags, ltagsnum)
  1077.  
  1078. if (ires != -1)
  1079. {
  1080. console_print(id, "[AMXX] %L", id, "SKIP_MATCH", nick, ltags[ires])
  1081. continue
  1082. }
  1083.  
  1084. if (get_user_flags(b) & ADMIN_IMMUNITY)
  1085. {
  1086. console_print(id, "[AMXX] %L", id, "SKIP_IMM", nick)
  1087. continue
  1088. }
  1089.  
  1090. console_print(id, "[AMXX] %L", id, "KICK_PL", nick)
  1091.  
  1092. if (is_user_bot(b))
  1093. server_cmd("kick #%d", get_user_userid(b))
  1094. else
  1095. {
  1096. format(lReason, 127, "%L", b, "YOU_DROPPED")
  1097. server_cmd("kick #%d ^"%s^"", get_user_userid(b), lReason)
  1098. }
  1099. count++
  1100. }
  1101.  
  1102. console_print(id, "[AMXX] %L", id, "KICKED_CLIENTS", count)
  1103.  
  1104. new authid[32], name[32]
  1105.  
  1106. get_user_authid(id, authid, 31)
  1107. get_user_name(id, name, 31)
  1108. log_amx("Kick: ^"%s<%d><%s><>^" leave some group (tag1 ^"%s^") (tag2 ^"%s^") (tag3 ^"%s^") (tag4 ^"%s^")", name, get_user_userid(id), authid, ltags[0], ltags[1], ltags[2], ltags[3])
  1109.  
  1110. show_activity_key("ADMIN_LEAVE_1", "ADMIN_LEAVE_2", name, ltags[0], ltags[1], ltags[2], ltags[3]);
  1111.  
  1112. return PLUGIN_HANDLED
  1113. }
  1114.  
  1115. public cmdNick(id, level, cid)
  1116. {
  1117. if (!cmd_access(id, level, cid, 3))
  1118. return PLUGIN_HANDLED
  1119.  
  1120. new arg1[32], arg2[32], authid[32], name[32], authid2[32], name2[32]
  1121.  
  1122. read_argv(1, arg1, 31)
  1123. read_argv(2, arg2, 31)
  1124.  
  1125. new player = cmd_target(id, arg1, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF)
  1126.  
  1127. if (!player)
  1128. return PLUGIN_HANDLED
  1129.  
  1130. get_user_authid(id, authid, 31)
  1131. get_user_name(id, name, 31)
  1132. get_user_authid(player, authid2, 31)
  1133. get_user_name(player, name2, 31)
  1134.  
  1135. client_cmd(player, "name ^"%s^"", arg2)
  1136.  
  1137. log_amx("Cmd: ^"%s<%d><%s><>^" change nick to ^"%s^" ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, arg2, name2, get_user_userid(player), authid2)
  1138.  
  1139. show_activity_key("ADMIN_NICK_1", "ADMIN_NICK_2", name, name2, arg2);
  1140.  
  1141. console_print(id, "[AMXX] %L", id, "CHANGED_NICK", name2, arg2)
  1142.  
  1143. return PLUGIN_HANDLED
  1144. }
  1145.  
  1146. public cmdLast(id, level, cid)
  1147. {
  1148. if (!cmd_access(id, level, cid, 1))
  1149. {
  1150. return PLUGIN_HANDLED;
  1151. }
  1152.  
  1153. new name[32];
  1154. new authid[32];
  1155. new ip[32];
  1156. new flags[32];
  1157. new access;
  1158.  
  1159.  
  1160. // This alignment is a bit weird (it should grow if the name is larger)
  1161. // but otherwise for the more common shorter name, it'll wrap in server console
  1162. // Steam client display is all skewed anyway because of the non fixed font.
  1163. console_print(id, "%19s %20s %15s %s", "name", "authid", "ip", "access");
  1164.  
  1165. for (new i = 0; i < g_Size; i++)
  1166. {
  1167. GetInfo(i, name, charsmax(name), authid, charsmax(authid), ip, charsmax(ip), access);
  1168.  
  1169. get_flags(access, flags, charsmax(flags));
  1170.  
  1171. console_print(id, "%19s %20s %15s %s", name, authid, ip, flags);
  1172. }
  1173.  
  1174. console_print(id, "%d old connections saved.", g_Size);
  1175.  
  1176. return PLUGIN_HANDLED;
  1177. }
  1178.  

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Admin kick színezése
HozzászólásElküldve: 2015.07.28. 18:21 
Offline
Beavatott

Csatlakozott: 2014.11.12. 18:02
Hozzászólások: 72
Megköszönt másnak: 1 alkalommal
Megköszönték neki: 5 alkalommal
Milyen színnel írja az üzenetet?


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Admin kick színezése
HozzászólásElküldve: 2015.07.28. 18:34 
Offline
Senior Tag

Csatlakozott: 2015.06.28. 13:00
Hozzászólások: 295
Megköszönt másnak: 20 alkalommal
Megköszönték neki: 10 alkalommal
electronic írta:
Milyen színnel írja az üzenetet?

Megoldva!

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 3 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 15 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole