hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.27. 12:04



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: Bing [Bot] 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  [ 2 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Plugin Egybeírás
HozzászólásElküldve: 2013.12.20. 18:13 
Offline
Félisten

Csatlakozott: 2012.06.19. 15:12
Hozzászólások: 926
Megköszönt másnak: 109 alkalommal
Megköszönték neki: 31 alkalommal
Valaki egybe írná az admin perfix plugin és egy hirdetés tiltót.

Hirdetés Tiltó
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <colorchat>
  4. public plugin_init()
  5. {
  6. register_plugin("Hirdetes", "Petrik", "1.0")
  7. register_forward(FM_ClientUserInfoChanged, "ClientInfoChanged")
  8. register_clcmd ("say", "msgControl")
  9. register_clcmd ("say_team", "msgControl")
  10. }
  11. public msgControl(id){
  12. new message[192]
  13. read_args (message, 191)
  14. remove_quotes (message)
  15. new Bnum = strlen(message)
  16. new Nnum = 0
  17. new i = 0
  18. while(i < Bnum)
  19. {
  20. if(message[i] == '1' || message[i] == '2' || message[i] == '3' || message[i] == '4' || message[i] == '5' || message[i] == '6' || message[i] == '7' || message[i] == '8' || message[i] == '9' || message[i] == '0')
  21. Nnum++
  22. ++i
  23. }
  24. if( Nnum >= 7)
  25. {
  26. //client_print(id, print_chat, "[L.o.L] A szerveren TILOS a szerverek HIRDETÉSE!")
  27. ColorChat(id,GREEN,"[Hirdetes] A szerveren ^3TILOS a ^3HIRDETÉS!")
  28. return PLUGIN_HANDLED
  29. }
  30. return PLUGIN_CONTINUE
  31. }
  32. public client_connect(id)
  33. set_task(3.0, "NameConrol",id)
  34.  
  35.  
  36.  
  37. public ClientInfoChanged(id)
  38. set_task(3.0, "NameConrol",id)
  39. public NameConrol(id){
  40. if(!is_user_connected(id))
  41. return PLUGIN_CONTINUE
  42. new name[31]
  43. get_user_name(id, name, 30)
  44. new Bnum = strlen(name);
  45. new i=0
  46. new Nnum=0
  47. while(i < Bnum)
  48. {
  49. if(name[i] == '1' || name[i] == '2' || name[i] == '3' || name[i] == '4' || name[i] == '5' || name[i] == '6' || name[i] == '7' || name[i] == '8' || name[i] == '9' || name[i] == '0')
  50. Nnum++;
  51. ++i;
  52. }
  53. if( Nnum >= 7)
  54. {
  55. client_cmd(id, "name ^"TILOS HIRDETNI!^"")
  56. client_cmd(id, "retry")
  57. return PLUGIN_CONTINUE
  58. }
  59. return PLUGIN_CONTINUE
  60. }
  61. stock print_color(const id, const input[], any:...)
  62. {
  63. new count = 1, players[32]
  64. static msg[191]
  65. vformat(msg, 190, input, 3)
  66.  
  67. replace_all(msg, 190, "!g", "^4")
  68. replace_all(msg, 190, "!y", "^1")
  69. replace_all(msg, 190, "!t", "^3")
  70. replace_all(msg, 190, "á", "á")
  71. replace_all(msg, 190, "é", "Ă©")
  72. replace_all(msg, 190, "í", "Ă")
  73. replace_all(msg, 190, "ó", "Ăł")
  74. replace_all(msg, 190, "ö", "ö")
  75. replace_all(msg, 190, "ő", "Ĺ‘")
  76. replace_all(msg, 190, "ú", "Ăş")
  77. replace_all(msg, 190, "ü", "ĂĽ")
  78. replace_all(msg, 190, "ű", "ű")
  79. replace_all(msg, 190, "Á", "Á")
  80. replace_all(msg, 190, "É", "É")
  81. replace_all(msg, 190, "Í", "ĂŤ")
  82. replace_all(msg, 190, "Ó", "Ă“")
  83. replace_all(msg, 190, "Ö", "Ă–")
  84. replace_all(msg, 190, "Ő", "Ő")
  85. replace_all(msg, 190, "Ú", "Ăš")
  86. replace_all(msg, 190, "Ü", "Ăś")
  87. replace_all(msg, 190, "Ű", "Ĺ°")
  88.  
  89. if (id) players[0] = id; else get_players(players, count, "ch")
  90. {
  91. for (new i = 0; i < count; i++)
  92. {
  93. if (is_user_connected(players[i]))
  94. {
  95. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
  96. write_byte(players[i])
  97. write_string(msg)
  98. message_end()
  99. }
  100. }
  101. }
  102. return PLUGIN_HANDLED
  103. }


Admin Perfix
SMA Forráskód: [ Mindet kijelol ]
  1. /* AMX Mod X script
  2. * ______ __ __ __ ________
  3. * / ____ \ \ \ / / / | |______ |
  4. * / / \ \ \ \ / / / | __ | |
  5. * | / \ | \ \ / / / /| | |__| | |
  6. * | | | | ______ _ __ \ \ / / _ / / | | ______ | |
  7. * _ _____ _____ | | | | / ____ \ | | / / \ \ / / |_| / / | | / ____ \ | |
  8. * | | / __ | / __ | | | | | | / \_\ | | / / \ \ / / _ / / | | /_/ \ \ | |
  9. * | |/ / | |/ / | | | | | | | \_____ | |/ / \ \ / / | | / /____| |__ ______| | | |
  10. * | | / | | / | | | | | | \_____ \ | | / \ \ / / | | /_______ |__| / _____ | | |
  11. * | |/ | |/ | | | | | | \ | | |/\ \ \ / / | | | | / / | | __ | |
  12. * | | | | | | | \ / | __ | | | |\ \ \ \/ / | | | | | | /| | | | | |
  13. * | | | | | | \ \____/ / \ \____/ | | | \ \ \ / | | | | \ \___/ /\ \ / / _____| |
  14. * |_| |_| |_| \______/ \______/ |_| \_\ \/ |_| |_| \_____/ \_\ /_/ |_______|
  15. *
  16. *
  17. *
  18. *** Copyright 2011 - 2013, m0skVi4a ;]
  19. *** Plugin created in Rousse, Bulgaria
  20. *
  21. *
  22. *** Plugin thread 1:
  23. *
  24. *** Plugin thread 2:
  25. *
  26. *
  27. *** Description:
  28. *
  29. * With this plugin you can set prefixes to Admins with special flags. Also Admins can put custom prefixes to them or to other players if they want, but only if they have the required flag.
  30. *
  31. *
  32. *** Commands:
  33. *
  34. * ap_reload_prefixes
  35. * Reloads Prefixes' file from console without restarting the server.
  36. *
  37. * ap_reload_badprefixes
  38. * Reloads Bad Prefixes' file from console without restarting the server.
  39. *
  40. * ap_put_player "name" "prefix"
  41. * Puts prefix to the name you type if you have the special flag. Or if there is no prefix typed, removes the prefix which the player has.
  42. *
  43. *
  44. *** CVARS:
  45. *
  46. * "ap_bad_prefixes" - Is the Bad Prefixes option on(1) or off(0). Default: 1
  47. * "ap_listen" - Is the Admin Listen option on(1) or off(0). Default: 1
  48. * "ap_listen_flag" - The flag, needed for Listen option. Default: a
  49. * "ap_custom" - Is the Custom Prefix option for each Admin is on(1) or off(0). Default: 1
  50. * "ap_custom_flag" - The flag, needed for setting custom prefix. Default: b
  51. * "ap_say_characters" - Is the Start Say Characters option on(1) or off(0). Default: 1
  52. * "ap_prefix_characters" - Is the Checker for Characters in Custom Prefixes' Options on(1) or off(0). Default: 1
  53. *
  54. * All CVARS are without quotes!
  55. *
  56. *
  57. *** Credits:
  58. *
  59. * m0skVi4a ;] - for the idea, making and testing the plugin
  60. * SpeeDeeR - for little help with the plugin
  61. * Ant1Lamer - for testing the plugin
  62. * Vasilii-Zaicev - for testing the plugin
  63. *
  64. *
  65. *** Changelog:
  66. *
  67. * April 22, 2012 - V1.0:
  68. * - First Release
  69. *
  70. * May 19, 2012 - V2.0:
  71. * - Full optimization
  72. * - Added Bad Prefixes' file
  73. * - Added Multi-Lingual file
  74. * - Added IP and Name support in ap_prefixes.ini
  75. * - Added Forbidden Say characters
  76. * - New CVARS for setting the flags for each of the options
  77. *
  78. * May 29, 2012 - V2.1:
  79. * - Fixed bug with some say or say_team commands are not executed
  80. *
  81. * January 17, 2013 - V3.0:
  82. * - Full optimization
  83. * - Fixed bug when typing spaces and in tha chat is showing an empty message
  84. * - SteamID support
  85. * - Removed nvault
  86. * - Removed ap_put_player command
  87. * - ap_put_player command is combined with ap_put command
  88. * - Removed some CVARs
  89. *
  90. * August 18, 2013 - V4.0:
  91. * - Small code changes and little bug fixes
  92. * - Added Prefux Toggle command
  93. * - Fixed bug with the supporting of the plugin on AMXX 1.8.2
  94. * - AMXX 1.8.2 Supprot!
  95. * - SQL Version!
  96. *
  97. *
  98. *** Contact me on:
  99. * SKYPE: pa7ohin
  100. */
  101.  
  102.  
  103. #include <amxmodx>
  104. #include <amxmisc>
  105. #include <celltrie>
  106. #include <cstrike>
  107.  
  108. #define VERSION "4.0"
  109. #define FLAG_LOAD ADMIN_CFG
  110. #define MAX_PREFIXES 33
  111. #define MAX_BAD_PREFIXES 100
  112.  
  113. new g_bad_prefix, g_listen, g_listen_flag, g_custom, g_custom_flag, g_say_characters, g_prefix_characters;
  114. new pre_ips_count = 0, pre_names_count = 0, pre_steamids_count, pre_flags_count = 0, bad_prefix_count = 0, i, temp_cvar[2];
  115. new configs_dir[64], file_prefixes[128], file_bad_prefixes[128], text[128], prefix[32], type[2], key[32], length, line = 0, error[256];
  116. new g_saytxt, g_maxplayers, CsTeams:g_team;
  117. new g_typed[192], g_message[192], g_name[32];
  118. new Trie:pre_ips_collect, Trie:pre_names_collect, Trie:pre_steamids_collect, Trie:pre_flags_collect, Trie:bad_prefixes_collect, Trie:client_prefix;
  119. new str_id[16], temp_key[35], temp_prefix[32], temp_value;
  120. new bool:g_toggle[33];
  121.  
  122. new const say_team_info[2][CsTeams][] =
  123. {
  124. {"*SPEC* ", "*DEAD* ", "*DEAD* ", "*SPEC* "},
  125. {"", "", "", ""}
  126. }
  127.  
  128. new const sayteam_team_info[2][CsTeams][] =
  129. {
  130. {"(Spectator) ", "*DEAD*(Terrorist) ", "*DEAD*(Counter-Terrorist) ", "(Spectator) "},
  131. {"(Spectator) ", "(Terrorist) ", "(Counter-Terrorist) ", "(Spectator) "}
  132. }
  133.  
  134. new const forbidden_say_symbols[] = {
  135. "/",
  136. "!",
  137. "%",
  138. "$"
  139. }
  140.  
  141. new const forbidden_prefixes_symbols[] = {
  142. "/",
  143. "\",
  144. "%",
  145. "$",
  146. ".",
  147. ":",
  148. "?",
  149. "!",
  150. "@",
  151. "#",
  152. "%"
  153. }
  154.  
  155. new const separator[] = "************************************************"
  156. new const in_prefix[] = "[AdminPrefixes]"
  157.  
  158. public plugin_init()
  159. {
  160. register_plugin("Admin Prefixes", VERSION, "m0skVi4a ;]")
  161.  
  162. g_bad_prefix = register_cvar("ap_bad_prefixes", "1")
  163. g_listen = register_cvar("ap_listen", "1")
  164. g_listen_flag = register_cvar("ap_listen_flag", "a")
  165. g_custom = register_cvar("ap_custom_current", "1")
  166. g_custom_flag = register_cvar("ap_custom_current_flag", "b")
  167. g_say_characters = register_cvar("ap_say_characters", "1")
  168. g_prefix_characters = register_cvar("ap_prefix_characters", "1")
  169.  
  170. g_saytxt = get_user_msgid ("SayText")
  171. g_maxplayers = get_maxplayers()
  172.  
  173. register_concmd("ap_reload_prefixes", "LoadPrefixes")
  174. register_concmd("ap_reload_badprefixes", "LoadBadPrefixes")
  175. register_concmd("ap_put", "SetPlayerPrefix")
  176. register_clcmd("say", "HookSay")
  177. register_clcmd("say_team", "HookSayTeam")
  178.  
  179. pre_ips_collect = TrieCreate()
  180. pre_names_collect = TrieCreate()
  181. pre_steamids_collect = TrieCreate()
  182. pre_flags_collect = TrieCreate()
  183. bad_prefixes_collect = TrieCreate()
  184. client_prefix = TrieCreate()
  185.  
  186. register_dictionary("admin_prefixes.txt")
  187.  
  188. get_configsdir(configs_dir, charsmax(configs_dir))
  189. formatex(file_prefixes, charsmax(file_prefixes), "%s/ap_prefixes.ini", configs_dir)
  190. formatex(file_bad_prefixes, charsmax(file_bad_prefixes), "%s/ap_bad_prefixes.ini", configs_dir)
  191.  
  192. LoadPrefixes(0)
  193. LoadBadPrefixes(0)
  194. }
  195.  
  196. public LoadPrefixes(id)
  197. {
  198. if(!(get_user_flags(id) & FLAG_LOAD))
  199. {
  200. console_print(id, "%L", LANG_SERVER, "PREFIX_PERMISSION", in_prefix)
  201. return PLUGIN_HANDLED
  202. }
  203.  
  204. TrieClear(pre_ips_collect)
  205. TrieClear(pre_names_collect)
  206. TrieClear(pre_steamids_collect)
  207. TrieClear(pre_flags_collect)
  208.  
  209. line = 0, length = 0, pre_flags_count = 0, pre_ips_count = 0, pre_names_count = 0;
  210.  
  211. if(!file_exists(file_prefixes))
  212. {
  213. formatex(error, charsmax(error), "%L", LANG_SERVER, "PREFIX_NOT_FOUND", in_prefix, file_prefixes)
  214. set_fail_state(error)
  215. }
  216.  
  217. server_print(separator)
  218.  
  219. while(read_file(file_prefixes, line++ , text, charsmax(text), length) && (pre_ips_count + pre_names_count + pre_steamids_count + pre_flags_count) <= MAX_PREFIXES)
  220. {
  221. if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
  222. continue
  223.  
  224. parse(text, type, charsmax(type), key, charsmax(key), prefix, charsmax(prefix))
  225. trim(prefix)
  226.  
  227. if(!type[0] || !prefix[0] || !key[0])
  228. continue
  229.  
  230. replace_all(prefix, charsmax(prefix), "!g", "^x04")
  231. replace_all(prefix, charsmax(prefix), "!t", "^x03")
  232. replace_all(prefix, charsmax(prefix), "!n", "^x01")
  233.  
  234. switch(type[0])
  235. {
  236. case 'f':
  237. {
  238. pre_flags_count++
  239. TrieSetString(pre_flags_collect, key, prefix)
  240. server_print("%L", LANG_SERVER, "PREFIX_LOAD_FLAG", in_prefix, prefix, key[0])
  241. }
  242. case 'i':
  243. {
  244. pre_ips_count++
  245. TrieSetString(pre_ips_collect, key, prefix)
  246. server_print("%L", LANG_SERVER, "PREFIX_LOAD_IP", in_prefix, prefix, key)
  247. }
  248. case 's':
  249. {
  250. pre_steamids_count++
  251. TrieSetString(pre_steamids_collect, key, prefix)
  252. server_print("%L", LANG_SERVER, "PREFIX_LOAD_STEAMID", in_prefix, prefix, key)
  253. }
  254. case 'n':
  255. {
  256. pre_names_count++
  257. TrieSetString(pre_names_collect, key, prefix)
  258. server_print("%L", LANG_SERVER, "PREFIX_LOAD_NAME", in_prefix, prefix, key)
  259. }
  260. default:
  261. {
  262. continue
  263. }
  264. }
  265. }
  266.  
  267. if(pre_flags_count <= 0 && pre_ips_count <= 0 && pre_steamids_count <= 0 && pre_names_count <= 0)
  268. {
  269. server_print("%L", LANG_SERVER, "PREFIX_NO", in_prefix)
  270. }
  271.  
  272. get_user_name(id, g_name, charsmax(g_name))
  273. server_print("%L", LANG_SERVER, "PREFIX_LOADED_BY", in_prefix, g_name)
  274. console_print(id, "%L", LANG_SERVER, "PREFIX_LOADED", in_prefix)
  275.  
  276. server_print(separator)
  277.  
  278. for(new i = 1; i <= g_maxplayers; i++)
  279. {
  280. num_to_str(i, str_id, charsmax(str_id))
  281. TrieDeleteKey(client_prefix, str_id)
  282. PutPrefix(i)
  283. }
  284.  
  285. return PLUGIN_HANDLED
  286. }
  287.  
  288. public LoadBadPrefixes(id)
  289. {
  290. if(!get_pcvar_num(g_bad_prefix))
  291. {
  292. console_print(id, "%L", LANG_SERVER, "BADP_OFF", in_prefix)
  293. return PLUGIN_HANDLED
  294. }
  295.  
  296. if(!(get_user_flags(id) & FLAG_LOAD))
  297. {
  298. console_print(id, "%L", LANG_SERVER, "BADP_PERMISSION", in_prefix)
  299. return PLUGIN_HANDLED
  300. }
  301.  
  302. TrieClear(bad_prefixes_collect)
  303.  
  304. line = 0, length = 0, bad_prefix_count = 0;
  305.  
  306. if(!file_exists(file_bad_prefixes))
  307. {
  308. console_print(id, "%L", LANG_SERVER, "BADP_NOT_FOUND", in_prefix, file_bad_prefixes)
  309. return PLUGIN_HANDLED
  310. }
  311.  
  312. server_print(separator)
  313.  
  314. while(read_file(file_bad_prefixes, line++ , text, charsmax(text), length) && bad_prefix_count <= MAX_BAD_PREFIXES)
  315. {
  316. if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
  317. continue
  318.  
  319. parse(text, prefix, charsmax(prefix))
  320.  
  321. if(!prefix[0])
  322. continue
  323.  
  324. bad_prefix_count++
  325. TrieSetCell(bad_prefixes_collect, prefix, 1)
  326. server_print("%L", LANG_SERVER, "BADP_LOAD", in_prefix, prefix)
  327. }
  328.  
  329. if(bad_prefix_count <= 0)
  330. {
  331. server_print("%L", LANG_SERVER, "BADP_NO", in_prefix)
  332. }
  333.  
  334. get_user_name(id, g_name, charsmax(g_name))
  335. server_print("%L", LANG_SERVER, "BADP_LOADED_BY", in_prefix, g_name)
  336. console_print(id, "%L", LANG_SERVER, "BADP_LOADED", in_prefix)
  337.  
  338. server_print(separator)
  339.  
  340. return PLUGIN_HANDLED
  341. }
  342.  
  343. public client_putinserver(id)
  344. {
  345. g_toggle[id] = true
  346. num_to_str(id, str_id, charsmax(str_id))
  347. TrieSetString(client_prefix, str_id, "")
  348. PutPrefix(id)
  349. }
  350.  
  351. public HookSay(id)
  352. {
  353. read_args(g_typed, charsmax(g_typed))
  354. remove_quotes(g_typed)
  355.  
  356. trim(g_typed)
  357.  
  358. if(equal(g_typed, "") || !is_user_connected(id))
  359. return PLUGIN_HANDLED_MAIN
  360.  
  361. if(equal(g_typed, "/prefix"))
  362. {
  363. if(g_toggle[id])
  364. {
  365. g_toggle[id] = false
  366. client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_OFF", in_prefix)
  367. }
  368. else
  369. {
  370. g_toggle[id] = true
  371. client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_ON", in_prefix)
  372. }
  373.  
  374. return PLUGIN_HANDLED_MAIN
  375. }
  376.  
  377. if(!g_toggle[id])
  378. return PLUGIN_CONTINUE
  379.  
  380. num_to_str(id, str_id, charsmax(str_id))
  381.  
  382. if((TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
  383. {
  384. if(check_say_characters(g_typed))
  385. return PLUGIN_HANDLED_MAIN
  386. }
  387.  
  388. get_user_name(id, g_name, charsmax(g_name))
  389.  
  390. g_team = cs_get_user_team(id)
  391.  
  392. if(temp_prefix[0])
  393. {
  394. formatex(g_message, charsmax(g_message), "^1%s^4%s^3 %s :^4 %s", say_team_info[is_user_alive(id)][g_team], temp_prefix, g_name, g_typed)
  395. }
  396. else
  397. {
  398. formatex(g_message, charsmax(g_message), "^1%s^3%s :^1 %s", say_team_info[is_user_alive(id)][g_team], g_name, g_typed)
  399. }
  400.  
  401. get_pcvar_string(g_listen_flag, temp_cvar, charsmax(temp_cvar))
  402.  
  403. for(new i = 1; i <= g_maxplayers; i++)
  404. {
  405. if(!is_user_connected(i))
  406. continue
  407.  
  408. if(is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i) || get_pcvar_num(g_listen) && get_user_flags(i) & read_flags(temp_cvar))
  409. {
  410. send_message(g_message, id, i)
  411. }
  412. }
  413.  
  414. return PLUGIN_HANDLED_MAIN
  415. }
  416.  
  417. public HookSayTeam(id)
  418. {
  419. read_args(g_typed, charsmax(g_typed))
  420. remove_quotes(g_typed)
  421.  
  422. trim(g_typed)
  423.  
  424. if(equal(g_typed, "") || !is_user_connected(id))
  425. return PLUGIN_HANDLED_MAIN
  426.  
  427. if(equal(g_typed, "/prefix"))
  428. {
  429. if(g_toggle[id])
  430. {
  431. g_toggle[id] = false
  432. client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_OFF", in_prefix)
  433. }
  434. else
  435. {
  436. g_toggle[id] = true
  437. client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_ON", in_prefix)
  438. }
  439.  
  440. return PLUGIN_HANDLED_MAIN
  441. }
  442.  
  443. if(!g_toggle[id])
  444. return PLUGIN_CONTINUE
  445.  
  446. num_to_str(id, str_id, charsmax(str_id))
  447.  
  448. if((TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
  449. {
  450. if(check_say_characters(g_typed))
  451. return PLUGIN_HANDLED_MAIN
  452. }
  453.  
  454. get_user_name(id, g_name, charsmax(g_name))
  455.  
  456. g_team = cs_get_user_team(id)
  457.  
  458. if(temp_prefix[0])
  459. {
  460. formatex(g_message, charsmax(g_message), "^1%s^4%s^3 %s :^4 %s", sayteam_team_info[is_user_alive(id)][g_team], temp_prefix, g_name, g_typed)
  461. }
  462. else
  463. {
  464. formatex(g_message, charsmax(g_message), "^1%s^3%s :^1 %s", sayteam_team_info[is_user_alive(id)][g_team], g_name, g_typed)
  465. }
  466.  
  467. get_pcvar_string(g_listen_flag, temp_cvar, charsmax(temp_cvar))
  468.  
  469. for(new i = 1; i <= g_maxplayers; i++)
  470. {
  471. if(!is_user_connected(i))
  472. continue
  473.  
  474. if(get_user_team(id) == get_user_team(i) || get_pcvar_num(g_listen) && get_user_flags(i) & read_flags(temp_cvar))
  475. {
  476. if(is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i) || get_pcvar_num(g_listen) && get_user_flags(i) & read_flags(temp_cvar))
  477. {
  478. send_message(g_message, id, i)
  479. }
  480. }
  481. }
  482.  
  483. return PLUGIN_HANDLED_MAIN
  484. }
  485.  
  486. public SetPlayerPrefix(id)
  487. {
  488. if(!get_pcvar_num(g_custom) || !get_pcvar_string(g_custom_flag, temp_cvar, charsmax(temp_cvar)))
  489. {
  490. console_print(id, "%L", LANG_SERVER, "CUSTOM_OFF", in_prefix)
  491. return PLUGIN_HANDLED
  492. }
  493.  
  494. if(!(get_user_flags(id) & read_flags(temp_cvar)))
  495. {
  496. console_print(id, "%L", LANG_SERVER, "CUSTOM_PERMISSION", in_prefix)
  497. return PLUGIN_HANDLED
  498. }
  499.  
  500. new input[128], target;
  501. new arg_type[2], arg_prefix[32], arg_key[35];
  502. new temp_str[16];
  503.  
  504. read_args(input, charsmax(input))
  505. remove_quotes(input)
  506. parse(input, arg_type, charsmax(arg_type), arg_key, charsmax(arg_key), arg_prefix, charsmax(arg_prefix))
  507. trim(arg_prefix)
  508.  
  509. if(get_pcvar_num(g_bad_prefix) && is_bad_prefix(arg_prefix) && !equali(arg_prefix, ""))
  510. {
  511. console_print(id, "%L", LANG_SERVER, "CUSTOM_FORBIDDEN", in_prefix, arg_prefix)
  512. return PLUGIN_HANDLED
  513. }
  514.  
  515. if(get_pcvar_num(g_prefix_characters) && check_prefix_characters(arg_prefix))
  516. {
  517. console_print(id, "%L", LANG_SERVER, "CUSTOM_SYMBOL", in_prefix, arg_prefix, forbidden_prefixes_symbols[i])
  518. return PLUGIN_HANDLED
  519. }
  520.  
  521. switch(arg_type[0])
  522. {
  523. case 'f':
  524. {
  525. target = 0
  526. temp_str = "Flag"
  527. }
  528. case 'i':
  529. {
  530. target = find_player("d", arg_key)
  531. temp_str = "IP"
  532. }
  533. case 's':
  534. {
  535. target = find_player("c", arg_key)
  536. temp_str = "SteamID"
  537. }
  538. case 'n':
  539. {
  540. target = find_player("a", arg_key)
  541. temp_str = "Name"
  542. }
  543. default:
  544. {
  545. console_print(id, "%L", LANG_SERVER, "CUSTOM_INVALID", in_prefix, arg_type)
  546. return PLUGIN_HANDLED
  547. }
  548. }
  549.  
  550. get_user_name(id, g_name, charsmax(g_name))
  551.  
  552. if(equali(arg_prefix, ""))
  553. {
  554. find_and_delete(arg_type, arg_key)
  555.  
  556. if(target)
  557. {
  558. PutPrefix(target)
  559. }
  560.  
  561. console_print(id, "%L", LANG_SERVER, "CUSTOM_REMOVE", in_prefix, temp_str, arg_key)
  562. server_print("%L", LANG_SERVER, "CUSTOM_REMOVE_INFO", in_prefix, g_name, temp_str, arg_key)
  563. return PLUGIN_HANDLED
  564. }
  565.  
  566. find_and_delete(arg_type, arg_key)
  567.  
  568. formatex(text, charsmax(text), "^"%s^" ^"%s^" ^"%s^"", arg_type, arg_key, arg_prefix)
  569. write_file(file_prefixes, text, -1)
  570.  
  571. switch(arg_type[0])
  572. {
  573. case 'f':
  574. {
  575. TrieSetString(pre_flags_collect, arg_key, arg_prefix)
  576. }
  577. case 'i':
  578. {
  579. TrieSetString(pre_ips_collect, arg_key, arg_prefix)
  580. }
  581. case 's':
  582. {
  583. TrieSetString(pre_steamids_collect, arg_key, arg_prefix)
  584. }
  585. case 'n':
  586. {
  587. TrieSetString(pre_names_collect, arg_key, arg_prefix)
  588. }
  589. }
  590.  
  591. if(target)
  592. {
  593. num_to_str(target, str_id, charsmax(str_id))
  594. TrieSetString(client_prefix, str_id, arg_prefix)
  595. }
  596.  
  597. console_print(id, "%L", LANG_SERVER, "CUSTOM_CHANGE", in_prefix, temp_str, arg_key, arg_prefix)
  598. server_print("%L", LANG_SERVER, "CUSTOM_CHANGE_INFO", in_prefix, g_name, temp_str, arg_key, arg_prefix)
  599.  
  600. return PLUGIN_HANDLED
  601. }
  602.  
  603. public client_infochanged(id)
  604. {
  605. if(!is_user_connected(id))
  606. return PLUGIN_CONTINUE
  607.  
  608. new g_old_name[32];
  609.  
  610. get_user_info(id, "name", g_name, charsmax(g_name))
  611. get_user_name(id, g_old_name, charsmax(g_old_name))
  612.  
  613. if(!equal(g_name, g_old_name))
  614. {
  615. num_to_str(id, str_id, charsmax(str_id))
  616. TrieSetString(client_prefix, str_id, "")
  617. set_task(0.5, "PutPrefix", id)
  618. return PLUGIN_HANDLED
  619. }
  620.  
  621. return PLUGIN_CONTINUE
  622. }
  623.  
  624. public PutPrefix(id)
  625. {
  626. num_to_str(id, str_id, charsmax(str_id))
  627. TrieSetString(client_prefix, str_id, "")
  628.  
  629. new sflags[32], temp_flag[2];
  630. get_flags(get_user_flags(id), sflags, charsmax(sflags))
  631.  
  632. for(new i = 0; i <= charsmax(sflags); i++)
  633. {
  634. formatex(temp_flag, charsmax(temp_flag), "%c", sflags[i])
  635.  
  636. if(TrieGetString(pre_flags_collect, temp_flag, temp_prefix, charsmax(temp_prefix)))
  637. {
  638. TrieSetString(client_prefix, str_id, temp_prefix)
  639. }
  640. }
  641.  
  642. get_user_ip(id, temp_key, charsmax(temp_key), 1)
  643.  
  644. if(TrieGetString(pre_ips_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
  645. {
  646. TrieSetString(client_prefix, str_id, temp_prefix)
  647. }
  648.  
  649. get_user_authid(id, temp_key, charsmax(temp_key))
  650.  
  651. if(TrieGetString(pre_steamids_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
  652. {
  653. TrieSetString(client_prefix, str_id, temp_prefix)
  654. }
  655.  
  656. get_user_name(id, temp_key, charsmax(temp_key))
  657.  
  658. if(TrieGetString(pre_names_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
  659. {
  660. TrieSetString(client_prefix, str_id, temp_prefix)
  661. }
  662.  
  663. return PLUGIN_HANDLED
  664. }
  665.  
  666. send_message(const message[], const id, const i)
  667. {
  668. message_begin(MSG_ONE, g_saytxt, {0, 0, 0}, i)
  669. write_byte(id)
  670. write_string(message)
  671. message_end()
  672. }
  673.  
  674. bool:check_say_characters(const check_message[])
  675. {
  676. for(new i = 0; i < charsmax(forbidden_say_symbols); i++)
  677. {
  678. if(check_message[0] == forbidden_say_symbols[i])
  679. {
  680. return true
  681. }
  682. }
  683. return false
  684. }
  685.  
  686. bool:check_prefix_characters(const check_prefix[])
  687. {
  688. for(i = 0; i < charsmax(forbidden_prefixes_symbols); i++)
  689. {
  690. if(containi(check_prefix, forbidden_prefixes_symbols[i]) != -1)
  691. {
  692. return true
  693. }
  694. }
  695. return false
  696. }
  697.  
  698. bool:is_bad_prefix(const check_prefix[])
  699. {
  700. if(TrieGetCell(bad_prefixes_collect, check_prefix, temp_value))
  701. {
  702. return true
  703. }
  704. return false
  705. }
  706.  
  707. find_and_delete(const arg_type[], const arg_key[])
  708. {
  709. line = 0, length = 0;
  710.  
  711. while(read_file(file_prefixes, line++ , text, charsmax(text), length))
  712. {
  713. if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
  714. continue
  715.  
  716. parse(text, type, charsmax(type), key, charsmax(key), prefix, charsmax(prefix))
  717. trim(prefix)
  718.  
  719. if(!type[0] || !prefix[0] || !key[0])
  720. continue
  721.  
  722. if(!equal(arg_type, type) || !equal(arg_key, key))
  723. continue
  724.  
  725. write_file(file_prefixes, "", line - 1)
  726. }
  727.  
  728. switch(arg_type[0])
  729. {
  730. case 'f':
  731. {
  732. TrieDeleteKey(pre_flags_collect, arg_key)
  733. }
  734. case 'i':
  735. {
  736. TrieDeleteKey(pre_ips_collect, arg_key)
  737. }
  738. case 's':
  739. {
  740. TrieDeleteKey(pre_steamids_collect, arg_key)
  741. }
  742. case 'n':
  743. {
  744. TrieDeleteKey(pre_names_collect, arg_key)
  745. }
  746. }
  747. }
  748.  

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Plugin Egybeírás
HozzászólásElküldve: 2013.12.20. 18:35 
Offline
Jómunkásember
Avatar

Csatlakozott: 2013.10.27. 23:13
Hozzászólások: 412
Megköszönt másnak: 21 alkalommal
Megköszönték neki: 68 alkalommal
Nesze :

SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <colorchat>
  4. #include <amxmisc>
  5. #include <celltrie>
  6. #include <cstrike>
  7.  
  8.  
  9. #define VERSION "4.0"
  10. #define FLAG_LOAD ADMIN_CFG
  11. #define MAX_PREFIXES 33
  12. #define MAX_BAD_PREFIXES 100
  13.  
  14. new g_bad_prefix, g_listen, g_listen_flag, g_custom, g_custom_flag, g_say_characters, g_prefix_characters;
  15. new pre_ips_count = 0, pre_names_count = 0, pre_steamids_count, pre_flags_count = 0, bad_prefix_count = 0, i, temp_cvar[2];
  16. new configs_dir[64], file_prefixes[128], file_bad_prefixes[128], text[128], prefix[32], type[2], key[32], length, line = 0, error[256];
  17. new g_saytxt, g_maxplayers, CsTeams:g_team;
  18. new g_typed[192], g_message[192], g_name[32];
  19. new Trie:pre_ips_collect, Trie:pre_names_collect, Trie:pre_steamids_collect, Trie:pre_flags_collect, Trie:bad_prefixes_collect, Trie:client_prefix;
  20. new str_id[16], temp_key[35], temp_prefix[32], temp_value;
  21. new bool:g_toggle[33];
  22.  
  23. new const say_team_info[2][CsTeams][] =
  24. {
  25. {"*SPEC* ", "*DEAD* ", "*DEAD* ", "*SPEC* "},
  26. {"", "", "", ""}
  27. }
  28.  
  29. new const sayteam_team_info[2][CsTeams][] =
  30. {
  31. {"(Spectator) ", "*DEAD*(Terrorist) ", "*DEAD*(Counter-Terrorist) ", "(Spectator) "},
  32. {"(Spectator) ", "(Terrorist) ", "(Counter-Terrorist) ", "(Spectator) "}
  33. }
  34.  
  35. new const forbidden_say_symbols[] = {
  36. "/",
  37. "!",
  38. "%",
  39. "$"
  40. }
  41.  
  42. new const forbidden_prefixes_symbols[] = {
  43. "/",
  44. "\",
  45. "%",
  46. "$",
  47. ".",
  48. ":",
  49. "?",
  50. "!",
  51. "@",
  52. "#",
  53. "%"
  54. }
  55.  
  56. new const separator[] = "************************************************"
  57. new const in_prefix[] = "[AdminPrefixes]"
  58.  
  59. public plugin_init()
  60. {
  61. register_forward(FM_ClientUserInfoChanged, "ClientInfoChanged")
  62. register_clcmd ("say", "msgControl")
  63. register_clcmd ("say_team", "msgControl")
  64. g_bad_prefix = register_cvar("ap_bad_prefixes", "1")
  65. g_listen = register_cvar("ap_listen", "1")
  66. g_listen_flag = register_cvar("ap_listen_flag", "a")
  67. g_custom = register_cvar("ap_custom_current", "1")
  68. g_custom_flag = register_cvar("ap_custom_current_flag", "b")
  69. g_say_characters = register_cvar("ap_say_characters", "1")
  70. g_prefix_characters = register_cvar("ap_prefix_characters", "1")
  71.  
  72. g_saytxt = get_user_msgid ("SayText")
  73. g_maxplayers = get_maxplayers()
  74.  
  75. register_concmd("ap_reload_prefixes", "LoadPrefixes")
  76. register_concmd("ap_reload_badprefixes", "LoadBadPrefixes")
  77. register_concmd("ap_put", "SetPlayerPrefix")
  78. register_clcmd("say", "HookSay")
  79. register_clcmd("say_team", "HookSayTeam")
  80.  
  81. pre_ips_collect = TrieCreate()
  82. pre_names_collect = TrieCreate()
  83. pre_steamids_collect = TrieCreate()
  84. pre_flags_collect = TrieCreate()
  85. bad_prefixes_collect = TrieCreate()
  86. client_prefix = TrieCreate()
  87.  
  88. register_dictionary("admin_prefixes.txt")
  89.  
  90. get_configsdir(configs_dir, charsmax(configs_dir))
  91. formatex(file_prefixes, charsmax(file_prefixes), "%s/ap_prefixes.ini", configs_dir)
  92. formatex(file_bad_prefixes, charsmax(file_bad_prefixes), "%s/ap_bad_prefixes.ini", configs_dir)
  93.  
  94. LoadPrefixes(0)
  95. LoadBadPrefixes(0)
  96. }
  97. public msgControl(id){
  98. new message[192]
  99. read_args (message, 191)
  100. remove_quotes (message)
  101. new Bnum = strlen(message)
  102. new Nnum = 0
  103. new i = 0
  104. while(i < Bnum)
  105. {
  106. if(message[i] == '1' || message[i] == '2' || message[i] == '3' || message[i] == '4' || message[i] == '5' || message[i] == '6' || message[i] == '7' || message[i] == '8' || message[i] == '9' || message[i] == '0')
  107. Nnum++
  108. ++i
  109. }
  110. if( Nnum >= 7)
  111. {
  112. //client_print(id, print_chat, "[L.o.L] A szerveren TILOS a szerverek HIRDETÉSE!")
  113. ColorChat(id,GREEN,"[Hirdetes] A szerveren ^3TILOS a ^3HIRDETÉS!")
  114. return PLUGIN_HANDLED
  115. }
  116. return PLUGIN_CONTINUE
  117. }
  118. public client_connect(id)
  119. set_task(3.0, "NameConrol",id)
  120.  
  121.  
  122.  
  123. public ClientInfoChanged(id)
  124. set_task(3.0, "NameConrol",id)
  125. public NameConrol(id){
  126. if(!is_user_connected(id))
  127. return PLUGIN_CONTINUE
  128. new name[31]
  129. get_user_name(id, name, 30)
  130. new Bnum = strlen(name);
  131. new i=0
  132. new Nnum=0
  133. while(i < Bnum)
  134. {
  135. if(name[i] == '1' || name[i] == '2' || name[i] == '3' || name[i] == '4' || name[i] == '5' || name[i] == '6' || name[i] == '7' || name[i] == '8' || name[i] == '9' || name[i] == '0')
  136. Nnum++;
  137. ++i;
  138. }
  139. if( Nnum >= 7)
  140. {
  141. client_cmd(id, "name ^"TILOS HIRDETNI!^"")
  142. client_cmd(id, "retry")
  143. return PLUGIN_CONTINUE
  144. }
  145. return PLUGIN_CONTINUE
  146. }
  147. stock print_color(const id, const input[], any:...)
  148. {
  149. new count = 1, players[32]
  150. static msg[191]
  151. vformat(msg, 190, input, 3)
  152.  
  153. replace_all(msg, 190, "!g", "^4")
  154. replace_all(msg, 190, "!y", "^1")
  155. replace_all(msg, 190, "!t", "^3")
  156. replace_all(msg, 190, "á", "á")
  157. replace_all(msg, 190, "é", "Ă©")
  158. replace_all(msg, 190, "í", "Ă")
  159. replace_all(msg, 190, "ó", "Ăł")
  160. replace_all(msg, 190, "ö", "ö")
  161. replace_all(msg, 190, "ő", "Ĺ‘")
  162. replace_all(msg, 190, "ú", "Ăş")
  163. replace_all(msg, 190, "ü", "ĂĽ")
  164. replace_all(msg, 190, "ű", "ű")
  165. replace_all(msg, 190, "Á", "Á")
  166. replace_all(msg, 190, "É", "É")
  167. replace_all(msg, 190, "Í", "ĂŤ")
  168. replace_all(msg, 190, "Ó", "Ă“")
  169. replace_all(msg, 190, "Ö", "Ă–")
  170. replace_all(msg, 190, "Ő", "Ő")
  171. replace_all(msg, 190, "Ú", "Ăš")
  172. replace_all(msg, 190, "Ü", "Ăś")
  173. replace_all(msg, 190, "Ű", "Ĺ°")
  174.  
  175. if (id) players[0] = id; else get_players(players, count, "ch")
  176. {
  177. for (new i = 0; i < count; i++)
  178. {
  179. if (is_user_connected(players[i]))
  180. {
  181. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
  182. write_byte(players[i])
  183. write_string(msg)
  184. message_end()
  185. }
  186. }
  187. }
  188. return PLUGIN_HANDLED
  189. }
  190. public LoadPrefixes(id)
  191. {
  192. if(!(get_user_flags(id) & FLAG_LOAD))
  193. {
  194. console_print(id, "%L", LANG_SERVER, "PREFIX_PERMISSION", in_prefix)
  195. return PLUGIN_HANDLED
  196. }
  197.  
  198. TrieClear(pre_ips_collect)
  199. TrieClear(pre_names_collect)
  200. TrieClear(pre_steamids_collect)
  201. TrieClear(pre_flags_collect)
  202.  
  203. line = 0, length = 0, pre_flags_count = 0, pre_ips_count = 0, pre_names_count = 0;
  204.  
  205. if(!file_exists(file_prefixes))
  206. {
  207. formatex(error, charsmax(error), "%L", LANG_SERVER, "PREFIX_NOT_FOUND", in_prefix, file_prefixes)
  208. set_fail_state(error)
  209. }
  210.  
  211. server_print(separator)
  212.  
  213. while(read_file(file_prefixes, line++ , text, charsmax(text), length) && (pre_ips_count + pre_names_count + pre_steamids_count + pre_flags_count) <= MAX_PREFIXES)
  214. {
  215. if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
  216. continue
  217.  
  218. parse(text, type, charsmax(type), key, charsmax(key), prefix, charsmax(prefix))
  219. trim(prefix)
  220.  
  221. if(!type[0] || !prefix[0] || !key[0])
  222. continue
  223.  
  224. replace_all(prefix, charsmax(prefix), "!g", "^x04")
  225. replace_all(prefix, charsmax(prefix), "!t", "^x03")
  226. replace_all(prefix, charsmax(prefix), "!n", "^x01")
  227.  
  228. switch(type[0])
  229. {
  230. case 'f':
  231. {
  232. pre_flags_count++
  233. TrieSetString(pre_flags_collect, key, prefix)
  234. server_print("%L", LANG_SERVER, "PREFIX_LOAD_FLAG", in_prefix, prefix, key[0])
  235. }
  236. case 'i':
  237. {
  238. pre_ips_count++
  239. TrieSetString(pre_ips_collect, key, prefix)
  240. server_print("%L", LANG_SERVER, "PREFIX_LOAD_IP", in_prefix, prefix, key)
  241. }
  242. case 's':
  243. {
  244. pre_steamids_count++
  245. TrieSetString(pre_steamids_collect, key, prefix)
  246. server_print("%L", LANG_SERVER, "PREFIX_LOAD_STEAMID", in_prefix, prefix, key)
  247. }
  248. case 'n':
  249. {
  250. pre_names_count++
  251. TrieSetString(pre_names_collect, key, prefix)
  252. server_print("%L", LANG_SERVER, "PREFIX_LOAD_NAME", in_prefix, prefix, key)
  253. }
  254. default:
  255. {
  256. continue
  257. }
  258. }
  259. }
  260.  
  261. if(pre_flags_count <= 0 && pre_ips_count <= 0 && pre_steamids_count <= 0 && pre_names_count <= 0)
  262. {
  263. server_print("%L", LANG_SERVER, "PREFIX_NO", in_prefix)
  264. }
  265.  
  266. get_user_name(id, g_name, charsmax(g_name))
  267. server_print("%L", LANG_SERVER, "PREFIX_LOADED_BY", in_prefix, g_name)
  268. console_print(id, "%L", LANG_SERVER, "PREFIX_LOADED", in_prefix)
  269.  
  270. server_print(separator)
  271.  
  272. for(new i = 1; i <= g_maxplayers; i++)
  273. {
  274. num_to_str(i, str_id, charsmax(str_id))
  275. TrieDeleteKey(client_prefix, str_id)
  276. PutPrefix(i)
  277. }
  278.  
  279. return PLUGIN_HANDLED
  280. }
  281.  
  282. public LoadBadPrefixes(id)
  283. {
  284. if(!get_pcvar_num(g_bad_prefix))
  285. {
  286. console_print(id, "%L", LANG_SERVER, "BADP_OFF", in_prefix)
  287. return PLUGIN_HANDLED
  288. }
  289.  
  290. if(!(get_user_flags(id) & FLAG_LOAD))
  291. {
  292. console_print(id, "%L", LANG_SERVER, "BADP_PERMISSION", in_prefix)
  293. return PLUGIN_HANDLED
  294. }
  295.  
  296. TrieClear(bad_prefixes_collect)
  297.  
  298. line = 0, length = 0, bad_prefix_count = 0;
  299.  
  300. if(!file_exists(file_bad_prefixes))
  301. {
  302. console_print(id, "%L", LANG_SERVER, "BADP_NOT_FOUND", in_prefix, file_bad_prefixes)
  303. return PLUGIN_HANDLED
  304. }
  305.  
  306. server_print(separator)
  307.  
  308. while(read_file(file_bad_prefixes, line++ , text, charsmax(text), length) && bad_prefix_count <= MAX_BAD_PREFIXES)
  309. {
  310. if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
  311. continue
  312.  
  313. parse(text, prefix, charsmax(prefix))
  314.  
  315. if(!prefix[0])
  316. continue
  317.  
  318. bad_prefix_count++
  319. TrieSetCell(bad_prefixes_collect, prefix, 1)
  320. server_print("%L", LANG_SERVER, "BADP_LOAD", in_prefix, prefix)
  321. }
  322.  
  323. if(bad_prefix_count <= 0)
  324. {
  325. server_print("%L", LANG_SERVER, "BADP_NO", in_prefix)
  326. }
  327.  
  328. get_user_name(id, g_name, charsmax(g_name))
  329. server_print("%L", LANG_SERVER, "BADP_LOADED_BY", in_prefix, g_name)
  330. console_print(id, "%L", LANG_SERVER, "BADP_LOADED", in_prefix)
  331.  
  332. server_print(separator)
  333.  
  334. return PLUGIN_HANDLED
  335. }
  336.  
  337. public client_putinserver(id)
  338. {
  339. g_toggle[id] = true
  340. num_to_str(id, str_id, charsmax(str_id))
  341. TrieSetString(client_prefix, str_id, "")
  342. PutPrefix(id)
  343. }
  344.  
  345. public HookSay(id)
  346. {
  347. read_args(g_typed, charsmax(g_typed))
  348. remove_quotes(g_typed)
  349.  
  350. trim(g_typed)
  351.  
  352. if(equal(g_typed, "") || !is_user_connected(id))
  353. return PLUGIN_HANDLED_MAIN
  354.  
  355. if(equal(g_typed, "/prefix"))
  356. {
  357. if(g_toggle[id])
  358. {
  359. g_toggle[id] = false
  360. client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_OFF", in_prefix)
  361. }
  362. else
  363. {
  364. g_toggle[id] = true
  365. client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_ON", in_prefix)
  366. }
  367.  
  368. return PLUGIN_HANDLED_MAIN
  369. }
  370.  
  371. if(!g_toggle[id])
  372. return PLUGIN_CONTINUE
  373.  
  374. num_to_str(id, str_id, charsmax(str_id))
  375.  
  376. if((TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
  377. {
  378. if(check_say_characters(g_typed))
  379. return PLUGIN_HANDLED_MAIN
  380. }
  381.  
  382. get_user_name(id, g_name, charsmax(g_name))
  383.  
  384. g_team = cs_get_user_team(id)
  385.  
  386. if(temp_prefix[0])
  387. {
  388. formatex(g_message, charsmax(g_message), "^1%s^4%s^3 %s :^4 %s", say_team_info[is_user_alive(id)][g_team], temp_prefix, g_name, g_typed)
  389. }
  390. else
  391. {
  392. formatex(g_message, charsmax(g_message), "^1%s^3%s :^1 %s", say_team_info[is_user_alive(id)][g_team], g_name, g_typed)
  393. }
  394.  
  395. get_pcvar_string(g_listen_flag, temp_cvar, charsmax(temp_cvar))
  396.  
  397. for(new i = 1; i <= g_maxplayers; i++)
  398. {
  399. if(!is_user_connected(i))
  400. continue
  401.  
  402. if(is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i) || get_pcvar_num(g_listen) && get_user_flags(i) & read_flags(temp_cvar))
  403. {
  404. send_message(g_message, id, i)
  405. }
  406. }
  407.  
  408. return PLUGIN_HANDLED_MAIN
  409. }
  410.  
  411. public HookSayTeam(id)
  412. {
  413. read_args(g_typed, charsmax(g_typed))
  414. remove_quotes(g_typed)
  415.  
  416. trim(g_typed)
  417.  
  418. if(equal(g_typed, "") || !is_user_connected(id))
  419. return PLUGIN_HANDLED_MAIN
  420.  
  421. if(equal(g_typed, "/prefix"))
  422. {
  423. if(g_toggle[id])
  424. {
  425. g_toggle[id] = false
  426. client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_OFF", in_prefix)
  427. }
  428. else
  429. {
  430. g_toggle[id] = true
  431. client_print(id, print_chat, "%L", LANG_SERVER, "PREFIX_ON", in_prefix)
  432. }
  433.  
  434. return PLUGIN_HANDLED_MAIN
  435. }
  436.  
  437. if(!g_toggle[id])
  438. return PLUGIN_CONTINUE
  439.  
  440. num_to_str(id, str_id, charsmax(str_id))
  441.  
  442. if((TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 1) || (!TrieGetString(client_prefix, str_id, temp_prefix, charsmax(temp_prefix)) && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
  443. {
  444. if(check_say_characters(g_typed))
  445. return PLUGIN_HANDLED_MAIN
  446. }
  447.  
  448. get_user_name(id, g_name, charsmax(g_name))
  449.  
  450. g_team = cs_get_user_team(id)
  451.  
  452. if(temp_prefix[0])
  453. {
  454. formatex(g_message, charsmax(g_message), "^1%s^4%s^3 %s :^4 %s", sayteam_team_info[is_user_alive(id)][g_team], temp_prefix, g_name, g_typed)
  455. }
  456. else
  457. {
  458. formatex(g_message, charsmax(g_message), "^1%s^3%s :^1 %s", sayteam_team_info[is_user_alive(id)][g_team], g_name, g_typed)
  459. }
  460.  
  461. get_pcvar_string(g_listen_flag, temp_cvar, charsmax(temp_cvar))
  462.  
  463. for(new i = 1; i <= g_maxplayers; i++)
  464. {
  465. if(!is_user_connected(i))
  466. continue
  467.  
  468. if(get_user_team(id) == get_user_team(i) || get_pcvar_num(g_listen) && get_user_flags(i) & read_flags(temp_cvar))
  469. {
  470. if(is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i) || get_pcvar_num(g_listen) && get_user_flags(i) & read_flags(temp_cvar))
  471. {
  472. send_message(g_message, id, i)
  473. }
  474. }
  475. }
  476.  
  477. return PLUGIN_HANDLED_MAIN
  478. }
  479.  
  480. public SetPlayerPrefix(id)
  481. {
  482. if(!get_pcvar_num(g_custom) || !get_pcvar_string(g_custom_flag, temp_cvar, charsmax(temp_cvar)))
  483. {
  484. console_print(id, "%L", LANG_SERVER, "CUSTOM_OFF", in_prefix)
  485. return PLUGIN_HANDLED
  486. }
  487.  
  488. if(!(get_user_flags(id) & read_flags(temp_cvar)))
  489. {
  490. console_print(id, "%L", LANG_SERVER, "CUSTOM_PERMISSION", in_prefix)
  491. return PLUGIN_HANDLED
  492. }
  493.  
  494. new input[128], target;
  495. new arg_type[2], arg_prefix[32], arg_key[35];
  496. new temp_str[16];
  497.  
  498. read_args(input, charsmax(input))
  499. remove_quotes(input)
  500. parse(input, arg_type, charsmax(arg_type), arg_key, charsmax(arg_key), arg_prefix, charsmax(arg_prefix))
  501. trim(arg_prefix)
  502.  
  503. if(get_pcvar_num(g_bad_prefix) && is_bad_prefix(arg_prefix) && !equali(arg_prefix, ""))
  504. {
  505. console_print(id, "%L", LANG_SERVER, "CUSTOM_FORBIDDEN", in_prefix, arg_prefix)
  506. return PLUGIN_HANDLED
  507. }
  508.  
  509. if(get_pcvar_num(g_prefix_characters) && check_prefix_characters(arg_prefix))
  510. {
  511. console_print(id, "%L", LANG_SERVER, "CUSTOM_SYMBOL", in_prefix, arg_prefix, forbidden_prefixes_symbols[i])
  512. return PLUGIN_HANDLED
  513. }
  514.  
  515. switch(arg_type[0])
  516. {
  517. case 'f':
  518. {
  519. target = 0
  520. temp_str = "Flag"
  521. }
  522. case 'i':
  523. {
  524. target = find_player("d", arg_key)
  525. temp_str = "IP"
  526. }
  527. case 's':
  528. {
  529. target = find_player("c", arg_key)
  530. temp_str = "SteamID"
  531. }
  532. case 'n':
  533. {
  534. target = find_player("a", arg_key)
  535. temp_str = "Name"
  536. }
  537. default:
  538. {
  539. console_print(id, "%L", LANG_SERVER, "CUSTOM_INVALID", in_prefix, arg_type)
  540. return PLUGIN_HANDLED
  541. }
  542. }
  543.  
  544. get_user_name(id, g_name, charsmax(g_name))
  545.  
  546. if(equali(arg_prefix, ""))
  547. {
  548. find_and_delete(arg_type, arg_key)
  549.  
  550. if(target)
  551. {
  552. PutPrefix(target)
  553. }
  554.  
  555. console_print(id, "%L", LANG_SERVER, "CUSTOM_REMOVE", in_prefix, temp_str, arg_key)
  556. server_print("%L", LANG_SERVER, "CUSTOM_REMOVE_INFO", in_prefix, g_name, temp_str, arg_key)
  557. return PLUGIN_HANDLED
  558. }
  559.  
  560. find_and_delete(arg_type, arg_key)
  561.  
  562. formatex(text, charsmax(text), "^"%s^" ^"%s^" ^"%s^"", arg_type, arg_key, arg_prefix)
  563. write_file(file_prefixes, text, -1)
  564.  
  565. switch(arg_type[0])
  566. {
  567. case 'f':
  568. {
  569. TrieSetString(pre_flags_collect, arg_key, arg_prefix)
  570. }
  571. case 'i':
  572. {
  573. TrieSetString(pre_ips_collect, arg_key, arg_prefix)
  574. }
  575. case 's':
  576. {
  577. TrieSetString(pre_steamids_collect, arg_key, arg_prefix)
  578. }
  579. case 'n':
  580. {
  581. TrieSetString(pre_names_collect, arg_key, arg_prefix)
  582. }
  583. }
  584.  
  585. if(target)
  586. {
  587. num_to_str(target, str_id, charsmax(str_id))
  588. TrieSetString(client_prefix, str_id, arg_prefix)
  589. }
  590.  
  591. console_print(id, "%L", LANG_SERVER, "CUSTOM_CHANGE", in_prefix, temp_str, arg_key, arg_prefix)
  592. server_print("%L", LANG_SERVER, "CUSTOM_CHANGE_INFO", in_prefix, g_name, temp_str, arg_key, arg_prefix)
  593.  
  594. return PLUGIN_HANDLED
  595. }
  596.  
  597. public client_infochanged(id)
  598. {
  599. if(!is_user_connected(id))
  600. return PLUGIN_CONTINUE
  601.  
  602. new g_old_name[32];
  603.  
  604. get_user_info(id, "name", g_name, charsmax(g_name))
  605. get_user_name(id, g_old_name, charsmax(g_old_name))
  606.  
  607. if(!equal(g_name, g_old_name))
  608. {
  609. num_to_str(id, str_id, charsmax(str_id))
  610. TrieSetString(client_prefix, str_id, "")
  611. set_task(0.5, "PutPrefix", id)
  612. return PLUGIN_HANDLED
  613. }
  614.  
  615. return PLUGIN_CONTINUE
  616. }
  617.  
  618. public PutPrefix(id)
  619. {
  620. num_to_str(id, str_id, charsmax(str_id))
  621. TrieSetString(client_prefix, str_id, "")
  622.  
  623. new sflags[32], temp_flag[2];
  624. get_flags(get_user_flags(id), sflags, charsmax(sflags))
  625.  
  626. for(new i = 0; i <= charsmax(sflags); i++)
  627. {
  628. formatex(temp_flag, charsmax(temp_flag), "%c", sflags[i])
  629.  
  630. if(TrieGetString(pre_flags_collect, temp_flag, temp_prefix, charsmax(temp_prefix)))
  631. {
  632. TrieSetString(client_prefix, str_id, temp_prefix)
  633. }
  634. }
  635.  
  636. get_user_ip(id, temp_key, charsmax(temp_key), 1)
  637.  
  638. if(TrieGetString(pre_ips_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
  639. {
  640. TrieSetString(client_prefix, str_id, temp_prefix)
  641. }
  642.  
  643. get_user_authid(id, temp_key, charsmax(temp_key))
  644.  
  645. if(TrieGetString(pre_steamids_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
  646. {
  647. TrieSetString(client_prefix, str_id, temp_prefix)
  648. }
  649.  
  650. get_user_name(id, temp_key, charsmax(temp_key))
  651.  
  652. if(TrieGetString(pre_names_collect, temp_key, temp_prefix, charsmax(temp_prefix)))
  653. {
  654. TrieSetString(client_prefix, str_id, temp_prefix)
  655. }
  656.  
  657. return PLUGIN_HANDLED
  658. }
  659.  
  660. send_message(const message[], const id, const i)
  661. {
  662. message_begin(MSG_ONE, g_saytxt, {0, 0, 0}, i)
  663. write_byte(id)
  664. write_string(message)
  665. message_end()
  666. }
  667.  
  668. bool:check_say_characters(const check_message[])
  669. {
  670. for(new i = 0; i < charsmax(forbidden_say_symbols); i++)
  671. {
  672. if(check_message[0] == forbidden_say_symbols[i])
  673. {
  674. return true
  675. }
  676. }
  677. return false
  678. }
  679.  
  680. bool:check_prefix_characters(const check_prefix[])
  681. {
  682. for(i = 0; i < charsmax(forbidden_prefixes_symbols); i++)
  683. {
  684. if(containi(check_prefix, forbidden_prefixes_symbols[i]) != -1)
  685. {
  686. return true
  687. }
  688. }
  689. return false
  690. }
  691.  
  692. bool:is_bad_prefix(const check_prefix[])
  693. {
  694. if(TrieGetCell(bad_prefixes_collect, check_prefix, temp_value))
  695. {
  696. return true
  697. }
  698. return false
  699. }
  700.  
  701. find_and_delete(const arg_type[], const arg_key[])
  702. {
  703. line = 0, length = 0;
  704.  
  705. while(read_file(file_prefixes, line++ , text, charsmax(text), length))
  706. {
  707. if(!text[0] || text[0] == '^n' || text[0] == ';' || (text[0] == '/' && text[1] == '/'))
  708. continue
  709.  
  710. parse(text, type, charsmax(type), key, charsmax(key), prefix, charsmax(prefix))
  711. trim(prefix)
  712.  
  713. if(!type[0] || !prefix[0] || !key[0])
  714. continue
  715.  
  716. if(!equal(arg_type, type) || !equal(arg_key, key))
  717. continue
  718.  
  719. write_file(file_prefixes, "", line - 1)
  720. }
  721.  
  722. switch(arg_type[0])
  723. {
  724. case 'f':
  725. {
  726. TrieDeleteKey(pre_flags_collect, arg_key)
  727. }
  728. case 'i':
  729. {
  730. TrieDeleteKey(pre_ips_collect, arg_key)
  731. }
  732. case 's':
  733. {
  734. TrieDeleteKey(pre_steamids_collect, arg_key)
  735. }
  736. case 'n':
  737. {
  738. TrieDeleteKey(pre_names_collect, arg_key)
  739. }
  740. }
  741. }

_________________
Kép

Ők köszönték meg NiGGeR-BorZ nek ezt a hozzászólást: Tomos (2013.12.20. 18:51)
  Népszerűség: 2.27%


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  [ 2 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 58 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