hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.05.24. 14:09



Jelenlévő felhasználók

Jelenleg 432 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 432 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  [ 13 hozzászólás ]  Oldal 1 2 Következő
Szerző Üzenet
 Hozzászólás témája: JAVITÁS - Swear filter + Prefix
HozzászólásElküldve: 2013.06.10. 20:44 
Offline
Jómunkásember
Avatar

Csatlakozott: 2012.08.24. 19:42
Hozzászólások: 320
Megköszönt másnak: 11 alkalommal
Megköszönték neki: 30 alkalommal
[s]Sziasztok, lenne 1 kérésem. Az Admin prefix és a Swear filter plugint kellene összeirni, hogy mindekettő tökéletesen működjön. Én próbálkoztam, dehát nem igazán sikerült xd... Előre is köszönöm, hogy segitetek ;).[/s]

UP: Sikerült összeirnom, csak javitani kéne mert ha csúnya szavat irok igy irja ki:
[ADMIN]TysON: csunyaszó
TysON: *********

A játékosnak pedig:
Player: csunyaszó
Player: *********

Azt kellene javitani, hogy csak 1-szer irja a csillagozva, de az adminnak legyen perfixe is, előre is köszönöm...
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <nvault>
  4.  
  5. #define FLAG_LOAD ADMIN_CFG
  6. #define MAX_PREFIXES 33
  7. #define MAX_BAD_PREFIXES 100
  8.  
  9. #define MAX_WORDS 192
  10.  
  11. new g_bad_prefix, g_listen, g_listen_flag, g_custom_current, g_custom_current_flag, g_custom_others, g_custom_others_flag, g_say_characters, g_prefix_characters;
  12. new pre_ips_count = 0, pre_names_count = 0, pre_flags_count = 0, bad_prefix_count = 0, i, temp_cvar[2];
  13. new configs_dir[64], file[128], text[128], prefix[32], type[2], acc_type[32], length, line = 0, error[256];
  14. new g_saytxt, g_maxplayers, g_nvault, g_team;
  15. new g_typed[192], g_message[192], g_name[32], typed_prefix[33];
  16. new pre_ips_collect[MAX_PREFIXES][33], ips_collect[MAX_PREFIXES][32], pre_names_collect[MAX_PREFIXES][33], names_collect[MAX_PREFIXES][33], pre_flags_collect[MAX_PREFIXES][33], flags_collect[MAX_PREFIXES][2], bad_prefixes_collect[MAX_BAD_PREFIXES][33], client_prefix[33][33];
  17. new g_swearsNames[MAX_WORDS][32]
  18. new g_swearsNum
  19.  
  20. new const forbidden_say_symbols[] = {
  21. "/",
  22. "!",
  23. "%",
  24. "$"
  25. }
  26.  
  27. new const forbidden_prefixes_symbols[] = {
  28. "/",
  29. "\",
  30. "%",
  31. "$",
  32. ".",
  33. ":",
  34. "?",
  35. "!",
  36. "@",
  37. "#",
  38. "%"
  39. }
  40.  
  41. new const separator[] = "************************************************"
  42. new const in_prefix[] = "[AdminPrefixes]"
  43.  
  44. public plugin_init()
  45. {
  46. register_plugin("Admin Prefixes", "2.2", "m0skVi4a ;]")
  47.  
  48. g_bad_prefix = register_cvar("ap_bad_prefixes", "1")
  49. g_listen = register_cvar("ap_listen", "1")
  50. g_listen_flag = register_cvar("ap_listen_flag", "a")
  51. g_custom_current = register_cvar("ap_custom_current", "1")
  52. g_custom_current_flag = register_cvar("ap_custom_current_flag", "b")
  53. g_custom_others = register_cvar("ap_custom_others", "1")
  54. g_custom_others_flag = register_cvar("ap_custom_others_flag", "c")
  55. g_say_characters = register_cvar("ap_say_characters", "1")
  56. g_prefix_characters = register_cvar("ap_prefix_characters", "1")
  57.  
  58. g_saytxt = get_user_msgid ("SayText")
  59. g_maxplayers = get_maxplayers()
  60. g_nvault = nvault_open("CustomAdminPrefixes")
  61.  
  62. register_concmd("ap_reload_prefixes", "LoadPrefixes")
  63. register_concmd("ap_reload_badprefixes", "LoadBadPrefixes")
  64. register_concmd("ap_put", "SetPrefix")
  65. register_concmd("ap_put_player", "SetPlayerPrefix")
  66. register_clcmd("say", "HookSay")
  67. register_clcmd("say_team", "HookSayTeam")
  68.  
  69. register_plugin("Swear Filter","1.0a","SuicideDog")
  70. register_clcmd("say","swearcheck")
  71. register_clcmd("say_team","swearcheck")
  72. readList()
  73.  
  74. register_dictionary("admin_prefixes.txt")
  75.  
  76. get_configsdir(configs_dir, charsmax(configs_dir))
  77.  
  78. LoadPrefixes(0)
  79. LoadBadPrefixes(0)
  80. }
  81.  
  82. public LoadPrefixes(id)
  83. {
  84. if(!(get_user_flags(id) & FLAG_LOAD))
  85. {
  86. console_print(id, "%L", LANG_SERVER, "PREFIX_PERMISSION", in_prefix)
  87. return PLUGIN_HANDLED
  88. }
  89.  
  90. line = 0, pre_flags_count = 0, pre_ips_count = 0, pre_names_count = 0;
  91. formatex(file, charsmax(file), "%s/ap_prefixes.ini", configs_dir)
  92.  
  93. if(!file_exists(file))
  94. {
  95. formatex(error, charsmax(error), "%L", LANG_SERVER, "PREFIX_NOT_FOUND", in_prefix, file)
  96. set_fail_state(error)
  97. }
  98.  
  99. server_print(separator)
  100.  
  101. while(read_file(file, line++ , text, charsmax(text), length) && pre_flags_count <= MAX_PREFIXES)
  102. {
  103. if(!text[0] || text[0] == '^n' || text[0] == ';')
  104. continue
  105.  
  106. parse(text, type, charsmax(type), prefix, charsmax(prefix), acc_type, charsmax(acc_type))
  107. trim(prefix)
  108.  
  109. if(!type[0] || !prefix[0] || !acc_type[0])
  110. continue
  111.  
  112. replace_all(prefix, charsmax(prefix), "!g", "^x04")
  113. replace_all(prefix, charsmax(prefix), "!t", "^x03")
  114. replace_all(prefix, charsmax(prefix), "!n", "^x01")
  115.  
  116. switch(type[0])
  117. {
  118. case 'i':
  119. {
  120. pre_ips_count++
  121. pre_ips_collect[pre_ips_count] = prefix
  122. ips_collect[pre_ips_count] = acc_type
  123. server_print("%L", LANG_SERVER, "PREFIX_LOAD_IP", in_prefix, prefix, acc_type)
  124. }
  125. case 'n':
  126. {
  127. pre_names_count++
  128. pre_names_collect[pre_names_count] = prefix
  129. names_collect[pre_names_count] = acc_type
  130. server_print("%L", LANG_SERVER, "PREFIX_LOAD_NAME", in_prefix, prefix, acc_type)
  131. }
  132. case 'f':
  133. {
  134. pre_flags_count++
  135. pre_flags_collect[pre_flags_count] = prefix
  136. flags_collect[pre_flags_count][0] = acc_type[0]
  137. server_print("%L", LANG_SERVER, "PREFIX_LOAD_FLAG", in_prefix, prefix, acc_type[0])
  138. }
  139. default:
  140. {
  141. continue
  142. }
  143. }
  144. }
  145.  
  146. if(pre_flags_count <= 0 && pre_ips_count <= 0 && pre_names_count <= 0)
  147. {
  148. server_print("%L", LANG_SERVER, "PREFIX_NO", in_prefix)
  149. }
  150.  
  151. get_user_name(id, g_name, charsmax(g_name))
  152. server_print("%L", LANG_SERVER, "PREFIX_LOADED_BY", in_prefix, g_name)
  153. console_print(id, "%L", LANG_SERVER, "PREFIX_LOADED", in_prefix)
  154.  
  155. server_print(separator)
  156.  
  157. for(new i = 1; i <= g_maxplayers; i++)
  158. {
  159. client_prefix[id] = ""
  160. CheckNvaultPrefix(i)
  161. }
  162.  
  163. return PLUGIN_HANDLED
  164. }
  165.  
  166. public LoadBadPrefixes(id)
  167. {
  168. if(!get_pcvar_num(g_bad_prefix))
  169. {
  170. console_print(id, "%L", LANG_SERVER, "BADP_OFF", in_prefix)
  171. return PLUGIN_HANDLED
  172. }
  173.  
  174. if(!(get_user_flags(id) & FLAG_LOAD))
  175. {
  176. console_print(id, "%L", LANG_SERVER, "BADP_PERMISSION", in_prefix)
  177. return PLUGIN_HANDLED
  178. }
  179.  
  180. line = 0, bad_prefix_count = 0;
  181.  
  182. formatex(file, charsmax(file), "%s/ap_bad_prefixes.ini", configs_dir)
  183.  
  184. if(!file_exists(file))
  185. {
  186. console_print(id, "%L", LANG_SERVER, "BADP_NOT_FOUND", in_prefix, file)
  187. return PLUGIN_HANDLED
  188. }
  189.  
  190.  
  191. server_print(separator)
  192.  
  193. while(read_file(file, line++ , text, charsmax(text), length) && bad_prefix_count <= MAX_BAD_PREFIXES)
  194. {
  195. if(!text[0] || text[0] == '^n' || text[0] == ';')
  196. continue
  197.  
  198. parse(text, prefix, charsmax(prefix))
  199.  
  200. if(!prefix[0])
  201. continue
  202.  
  203. bad_prefix_count++
  204. bad_prefixes_collect[bad_prefix_count] = prefix
  205. server_print("%L", LANG_SERVER, "BADP_LOAD", in_prefix, prefix)
  206. }
  207.  
  208. if(bad_prefix_count <= 0)
  209. {
  210. server_print("%L", LANG_SERVER, "BADP_LOAD", in_prefix)
  211. }
  212.  
  213. get_user_name(id, g_name, charsmax(g_name))
  214. server_print("%L", LANG_SERVER, "BADP_LOADED_BY", in_prefix, g_name)
  215. console_print(id, "%L", LANG_SERVER, "BADP_LOADED", in_prefix)
  216.  
  217. server_print(separator)
  218.  
  219. for(new i = 1; i <= g_maxplayers; i++)
  220. {
  221. CheckNvaultPrefix(i)
  222. }
  223.  
  224. return PLUGIN_HANDLED
  225. }
  226.  
  227. public client_putinserver(id)
  228. {
  229. client_prefix[id] = ""
  230. CheckNvaultPrefix(id)
  231. }
  232.  
  233. public HookSay(id)
  234. {
  235. read_args(g_typed, charsmax(g_typed))
  236. remove_quotes(g_typed)
  237.  
  238. if(equal(g_typed, "") || !is_user_connected(id))
  239. return PLUGIN_HANDLED_MAIN
  240.  
  241. if((client_prefix[id][0] && get_pcvar_num(g_say_characters) == 1) || (!client_prefix[id][0] && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
  242. {
  243. if(check_say_characters(g_typed))
  244. return PLUGIN_HANDLED_MAIN
  245. }
  246.  
  247. get_user_name(id, g_name, charsmax(g_name))
  248.  
  249. g_team = get_user_team(id)
  250.  
  251. new const team_info[2][][] = {
  252. {"*SPEC* ", "*DEAD* ", "*DEAD* ", "*SPEC* "},
  253. {"", "", "", ""}
  254. }
  255.  
  256. if(client_prefix[id][0])
  257. {
  258. formatex(g_message, charsmax(g_message), "^1%s^4%s^3 %s :^4 %s", team_info[is_user_alive(id)][g_team], client_prefix[id], g_name, g_typed)
  259. }
  260. else
  261. {
  262. formatex(g_message, charsmax(g_message), "^1%s^3%s :^1 %s", team_info[is_user_alive(id)][g_team], g_name, g_typed)
  263. }
  264.  
  265. get_pcvar_string(g_listen_flag, temp_cvar, charsmax(temp_cvar))
  266.  
  267. for(new i = 1; i <= g_maxplayers; i++)
  268. {
  269. if(!is_user_connected(i))
  270. continue
  271.  
  272. 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))
  273. {
  274. send_message(g_message, id, i)
  275. }
  276. }
  277.  
  278. return PLUGIN_HANDLED_MAIN
  279. }
  280.  
  281. public HookSayTeam(id)
  282. {
  283. read_args(g_typed, charsmax(g_typed))
  284. remove_quotes(g_typed)
  285.  
  286. if(equal(g_typed, "") || !is_user_connected(id))
  287. return PLUGIN_HANDLED_MAIN
  288.  
  289. if((client_prefix[id][0] && get_pcvar_num(g_say_characters) == 1) || (!client_prefix[id][0] && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
  290. {
  291. if(check_say_characters(g_typed))
  292. return PLUGIN_HANDLED_MAIN
  293. }
  294.  
  295. get_user_name(id, g_name, charsmax(g_name))
  296.  
  297. g_team = get_user_team(id)
  298.  
  299. new const team_info[2][][] = {
  300. {"(Spectator) ", "*DEAD*(Terrorist) ", "*DEAD*(Counter-Terrorist) ", "(Spectator) "},
  301. {"(Spectator) ", "(Terrorist) ", "(Counter-Terrorist) ", "(Spectator) "}
  302. }
  303.  
  304. if(client_prefix[id][0])
  305. {
  306. formatex(g_message, charsmax(g_message), "^1%s^4%s^3 %s :^4 %s", team_info[is_user_alive(id)][g_team], client_prefix[id], g_name, g_typed)
  307. }
  308. else
  309. {
  310. formatex(g_message, charsmax(g_message), "^1%s^3%s :^1 %s", team_info[is_user_alive(id)][g_team], g_name, g_typed)
  311. }
  312.  
  313. get_pcvar_string(g_listen_flag, temp_cvar, charsmax(temp_cvar))
  314.  
  315. for(new i = 1; i <= g_maxplayers; i++)
  316. {
  317. if(!is_user_connected(i))
  318. continue
  319.  
  320. if(get_user_team(id) == get_user_team(i) || get_pcvar_num(g_listen) && get_user_flags(i) & read_flags(temp_cvar))
  321. {
  322. 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))
  323. {
  324. send_message(g_message, id, i)
  325. }
  326. }
  327. }
  328.  
  329. return PLUGIN_HANDLED_MAIN
  330. }
  331.  
  332. public SetPrefix(id)
  333. {
  334. if(!get_pcvar_num(g_custom_current) || !get_pcvar_string(g_custom_current_flag, temp_cvar, charsmax(temp_cvar)))
  335. {
  336. console_print(id, "%L", LANG_SERVER, "CUSTOM_OFF", in_prefix)
  337. return PLUGIN_HANDLED
  338. }
  339.  
  340. if(!(get_user_flags(id) & read_flags(temp_cvar)))
  341. {
  342. console_print(id, "%L", LANG_SERVER, "CUSTOM_PERMISSION", in_prefix)
  343. return PLUGIN_HANDLED
  344. }
  345.  
  346. read_args(typed_prefix, charsmax(typed_prefix))
  347. remove_quotes(typed_prefix)
  348. trim(typed_prefix)
  349.  
  350. if(get_pcvar_num(g_bad_prefix) && is_bad_prefix(typed_prefix))
  351. {
  352. console_print(id, "%L", LANG_SERVER, "CUSTOM_FORBIDDEN", in_prefix, typed_prefix)
  353. return PLUGIN_HANDLED
  354. }
  355.  
  356. if(get_pcvar_num(g_prefix_characters) && check_prefix_characters(typed_prefix))
  357. {
  358. console_print(id, "%L", LANG_SERVER, "CUSTOM_SYMBOL", in_prefix, typed_prefix, forbidden_prefixes_symbols[i])
  359. return PLUGIN_HANDLED
  360. }
  361.  
  362. get_user_name(id, g_name, charsmax(g_name))
  363.  
  364. if(equal(typed_prefix, ""))
  365. {
  366. nvault_remove(g_nvault, g_name)
  367. console_print(id, "%L", LANG_SERVER, "CUSTOM_REMOVE", in_prefix)
  368. server_print("%L", LANG_SERVER, "CUSTOM_REMOVE_INFO", in_prefix, g_name)
  369. PutPrefix(id)
  370.  
  371. return PLUGIN_HANDLED
  372. }
  373.  
  374. nvault_set(g_nvault, g_name, typed_prefix)
  375.  
  376. client_prefix[id] = typed_prefix
  377.  
  378. console_print(id, "%L", LANG_SERVER, "CUSTOM_CHANGE", in_prefix, typed_prefix)
  379. server_print("%L", LANG_SERVER, "CUSTOM_CHANGE_INFO", in_prefix, g_name, typed_prefix)
  380.  
  381. return PLUGIN_HANDLED
  382. }
  383.  
  384. public SetPlayerPrefix(id)
  385. {
  386. if(!get_pcvar_num(g_custom_current) || !get_pcvar_string(g_custom_current_flag, temp_cvar, charsmax(temp_cvar)) || !get_pcvar_num(g_custom_others) || !get_pcvar_string(g_custom_others_flag, temp_cvar, charsmax(temp_cvar)))
  387. {
  388. console_print(id, "%L", LANG_SERVER, "CO_OFF", in_prefix)
  389. return PLUGIN_HANDLED
  390. }
  391.  
  392. if(!(get_user_flags(id) & read_flags(temp_cvar)))
  393. {
  394. console_print(id, "%L", LANG_SERVER, "CO_FORBIDDEN", in_prefix)
  395. return PLUGIN_HANDLED
  396. }
  397.  
  398. new name_tag[64], typed_name[32];
  399.  
  400. read_args(name_tag, charsmax(name_tag))
  401. remove_quotes(name_tag)
  402. parse(name_tag, typed_name, charsmax(typed_name), typed_prefix, charsmax(typed_prefix))
  403. trim(typed_prefix)
  404.  
  405. if(get_pcvar_num(g_bad_prefix) && is_bad_prefix(typed_prefix))
  406. {
  407. console_print(id, "%L", LANG_SERVER, "CUSTOM_FORBIDDEN", in_prefix, typed_prefix)
  408. return PLUGIN_HANDLED
  409. }
  410.  
  411. if(get_pcvar_num(g_prefix_characters) && check_prefix_characters(typed_prefix))
  412. {
  413. console_print(id, "%L", LANG_SERVER, "CUSTOM_SYMBOL", in_prefix, typed_prefix, forbidden_prefixes_symbols[i])
  414. return PLUGIN_HANDLED
  415. }
  416.  
  417. get_user_name(id, g_name, charsmax(g_name))
  418.  
  419. new target = cmd_target(id, typed_name, 1)
  420.  
  421. if(!target)
  422. return PLUGIN_HANDLED
  423.  
  424. if(equal(typed_prefix, ""))
  425. {
  426. nvault_remove(g_nvault, typed_name)
  427. console_print(id, "%L", LANG_SERVER, "CO_REMOVE", in_prefix, typed_name)
  428. server_print("%L", LANG_SERVER, "CO_REMOVE_INFO", in_prefix, g_name, typed_name)
  429. PutPrefix(target)
  430.  
  431. return PLUGIN_HANDLED
  432. }
  433.  
  434. nvault_set(g_nvault, typed_name, typed_prefix)
  435.  
  436. client_prefix[id] = typed_prefix
  437.  
  438. console_print(id, "%L", LANG_SERVER, "CO_CHANGE", in_prefix, typed_name, typed_prefix)
  439. server_print("%L", LANG_SERVER, "CO_CHANGE_INFO", in_prefix, g_name, typed_name, typed_prefix)
  440.  
  441. return PLUGIN_HANDLED
  442. }
  443.  
  444. public client_infochanged(id)
  445. {
  446. if(!is_user_connected(id))
  447. return PLUGIN_CONTINUE
  448.  
  449. new g_old_name[32];
  450.  
  451. get_user_info(id, "name", g_name, charsmax(g_name))
  452. get_user_name(id, g_old_name, charsmax(g_old_name))
  453.  
  454. if(!equal(g_name, g_old_name))
  455. {
  456. client_prefix[id] = ""
  457. set_task(0.5, "CheckNvaultPrefix", id)
  458. return PLUGIN_HANDLED
  459. }
  460.  
  461. return PLUGIN_CONTINUE
  462. }
  463.  
  464. public CheckNvaultPrefix(const id)
  465. {
  466. new nvault_prefix[33];
  467. get_user_name(id, g_name, charsmax(g_name))
  468. get_pcvar_string(g_custom_current_flag, temp_cvar, charsmax(temp_cvar))
  469.  
  470. new data = nvault_get(g_nvault, g_name, nvault_prefix, charsmax(nvault_prefix))
  471.  
  472. if(data && get_pcvar_num(g_custom_current) && get_user_flags(id) & read_flags(temp_cvar))
  473. {
  474. if((get_pcvar_num(g_bad_prefix) && is_bad_prefix(nvault_prefix)) || (get_pcvar_num(g_prefix_characters) && check_prefix_characters(nvault_prefix)))
  475. {
  476. PutPrefix(id)
  477. return PLUGIN_HANDLED
  478. }
  479. client_prefix[id] = nvault_prefix
  480. return PLUGIN_HANDLED
  481. }
  482. else
  483. {
  484. PutPrefix(id)
  485. return PLUGIN_HANDLED
  486. }
  487. return PLUGIN_HANDLED
  488. }
  489.  
  490. stock PutPrefix(const id)
  491. {
  492. new temp_ip[16];
  493.  
  494. get_user_ip(id, temp_ip, charsmax(temp_ip), 1)
  495.  
  496. for(new i = 0; i <= pre_ips_count; i++)
  497. {
  498. if(equal(temp_ip, ips_collect[i]))
  499. {
  500. client_prefix[id] = pre_ips_collect[i]
  501.  
  502. return PLUGIN_HANDLED
  503. }
  504. }
  505.  
  506. get_user_name(id, g_name, charsmax(g_name))
  507.  
  508. for(new i = 0; i <= pre_names_count; i++)
  509. {
  510. if(equal(g_name, names_collect[i]))
  511. {
  512. client_prefix[id] = pre_names_collect[i]
  513.  
  514. return PLUGIN_HANDLED
  515. }
  516. }
  517.  
  518. for(new i = 0; i <= pre_flags_count; i++)
  519. {
  520. if(get_user_flags(id) & read_flags(flags_collect[i]))
  521. {
  522. client_prefix[id] = pre_flags_collect[i]
  523.  
  524. return PLUGIN_HANDLED
  525. }
  526. }
  527. return PLUGIN_HANDLED
  528. }
  529.  
  530. stock send_message(const message[], const id, const i)
  531. {
  532. message_begin(MSG_ONE, g_saytxt, {0, 0, 0}, i)
  533. write_byte(id)
  534. write_string(message)
  535. message_end()
  536. }
  537.  
  538. bool:check_say_characters(const check_message[])
  539. {
  540. for(new i = 0; i < charsmax(forbidden_say_symbols); i++)
  541. {
  542. if(check_message[0] == forbidden_say_symbols[i])
  543. {
  544. return true
  545. }
  546. }
  547. return false
  548. }
  549.  
  550. bool:check_prefix_characters(const check_prefix[])
  551. {
  552. for(i = 0; i < charsmax(forbidden_prefixes_symbols); i++)
  553. {
  554. if(containi(check_prefix, forbidden_prefixes_symbols[i]) != -1)
  555. {
  556. return true
  557. }
  558. }
  559. return false
  560. }
  561.  
  562. bool:is_bad_prefix(const check_prefix[])
  563. {
  564. for(new i = 0; i <= bad_prefix_count; i++)
  565. {
  566. if(equali(check_prefix, bad_prefixes_collect[i]))
  567. {
  568. return true
  569. }
  570. }
  571. return false
  572. }
  573. readList()
  574. {
  575. // file to read words from
  576. new szCustomDir[64]
  577. new filename[64]
  578. get_customdir( szCustomDir, 63 )
  579. format(filename, 63, "%s/swear/swearwords.ini", szCustomDir )
  580.  
  581. if(!file_exists(filename) ){
  582. log_message("Swear Filter: file %s not found", filename)
  583. return
  584. }
  585. new iLen
  586. while( g_swearsNum < MAX_WORDS && read_file(filename, g_swearsNum ,g_swearsNames[g_swearsNum][1],30,iLen) )
  587. {
  588. if( g_swearsNames[g_swearsNum][0] == ';') continue
  589. g_swearsNames[g_swearsNum][0] = iLen
  590. ++g_swearsNum
  591. }
  592. log_message("Swear Filter: loaded %d words",g_swearsNum )
  593. }
  594.  
  595. public swearcheck(id)
  596. {
  597. new szSaid[192]
  598. read_args(szSaid,191)
  599. new bool:found = false
  600.  
  601. new name[32],ip[32]
  602. get_user_name(id,name,31)
  603. get_user_ip(id,ip,31)
  604.  
  605. new pos, i = 0
  606. while ( i < g_swearsNum )
  607. {
  608. if ( (pos = containi(szSaid,g_swearsNames[i][1])) != -1 ){
  609. new len = g_swearsNames[i][0]
  610. while(len--)
  611. szSaid[pos++] = '*'
  612. log_amx("%s (%s) karomkodas",name,ip)
  613. found = true
  614. continue
  615. }
  616. ++i
  617. }
  618. if ( found ){
  619. new cmd[32]
  620. read_argv(0,cmd,31)
  621. engclient_cmd(id,cmd,szSaid)
  622. }
  623. return PLUGIN_CONTINUE
  624. }
  625.  
  626.  
  627.  
  628.  


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: JAVITÁS - Swear filter + Prefix
HozzászólásElküldve: 2013.06.10. 21:47 
Offline
Tiszteletbeli

Csatlakozott: 2010.02.04. 19:12
Hozzászólások: 3528
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 180 alkalommal
hi, azt így nem lehet, csak ha egybeírod a prefixes pluginnal

_________________
http://www.ebateam.eu/


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: JAVITÁS - Swear filter + Prefix
HozzászólásElküldve: 2013.06.11. 16:18 
Offline
Jómunkásember
Avatar

Csatlakozott: 2012.08.24. 19:42
Hozzászólások: 320
Megköszönt másnak: 11 alkalommal
Megköszönték neki: 30 alkalommal
IrOn123 írta:
hi, azt így nem lehet, csak ha egybeírod a prefixes pluginnal

Igen, amit én oda irtam (kódot) ott már egybe van irva a kettő, csak még mindig úgy működik, mintha külön lenne, és azt kell javitani.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: JAVITÁS - Swear filter + Prefix
HozzászólásElküldve: 2013.06.11. 17:35 
Offline
Tiszteletbeli

Csatlakozott: 2010.02.04. 19:12
Hozzászólások: 3528
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 180 alkalommal
TysOn írta:
IrOn123 írta:
hi, azt így nem lehet, csak ha egybeírod a prefixes pluginnal

Igen, amit én oda irtam (kódot) ott már egybe van irva a kettő, csak még mindig úgy működik, mintha külön lenne, és azt kell javitani.

1 sayhook kell, nem külön a 2, így is még 2x fut le :D

_________________
http://www.ebateam.eu/


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: JAVITÁS - Swear filter + Prefix
HozzászólásElküldve: 2013.06.11. 18:13 
Offline
Jómunkásember
Avatar

Csatlakozott: 2012.08.24. 19:42
Hozzászólások: 320
Megköszönt másnak: 11 alkalommal
Megköszönték neki: 30 alkalommal
hmm, szóval igy ?

SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <nvault>
  4.  
  5. #define FLAG_LOAD ADMIN_CFG
  6. #define MAX_PREFIXES 33
  7. #define MAX_BAD_PREFIXES 100
  8.  
  9. #define MAX_WORDS 192
  10.  
  11. new g_bad_prefix, g_listen, g_listen_flag, g_custom_current, g_custom_current_flag, g_custom_others, g_custom_others_flag, g_say_characters, g_prefix_characters;
  12. new pre_ips_count = 0, pre_names_count = 0, pre_flags_count = 0, bad_prefix_count = 0, i, temp_cvar[2];
  13. new configs_dir[64], file[128], text[128], prefix[32], type[2], acc_type[32], length, line = 0, error[256];
  14. new g_saytxt, g_maxplayers, g_nvault, g_team;
  15. new g_typed[192], g_message[192], g_name[32], typed_prefix[33];
  16. new pre_ips_collect[MAX_PREFIXES][33], ips_collect[MAX_PREFIXES][32], pre_names_collect[MAX_PREFIXES][33], names_collect[MAX_PREFIXES][33], pre_flags_collect[MAX_PREFIXES][33], flags_collect[MAX_PREFIXES][2], bad_prefixes_collect[MAX_BAD_PREFIXES][33], client_prefix[33][33];
  17. new g_swearsNames[MAX_WORDS][32]
  18. new g_swearsNum
  19.  
  20. new const forbidden_say_symbols[] = {
  21. "/",
  22. "!",
  23. "%",
  24. "$"
  25. }
  26.  
  27. new const forbidden_prefixes_symbols[] = {
  28. "/",
  29. "\",
  30. "%",
  31. "$",
  32. ".",
  33. ":",
  34. "?",
  35. "!",
  36. "@",
  37. "#",
  38. "%"
  39. }
  40.  
  41. new const separator[] = "************************************************"
  42. new const in_prefix[] = "[AdminPrefixes]"
  43.  
  44. public plugin_init()
  45. {
  46. register_plugin("Admin Prefixes", "2.2", "m0skVi4a ;]")
  47.  
  48. g_bad_prefix = register_cvar("ap_bad_prefixes", "1")
  49. g_listen = register_cvar("ap_listen", "1")
  50. g_listen_flag = register_cvar("ap_listen_flag", "a")
  51. g_custom_current = register_cvar("ap_custom_current", "1")
  52. g_custom_current_flag = register_cvar("ap_custom_current_flag", "b")
  53. g_custom_others = register_cvar("ap_custom_others", "1")
  54. g_custom_others_flag = register_cvar("ap_custom_others_flag", "c")
  55. g_say_characters = register_cvar("ap_say_characters", "1")
  56. g_prefix_characters = register_cvar("ap_prefix_characters", "1")
  57.  
  58. g_saytxt = get_user_msgid ("SayText")
  59. g_maxplayers = get_maxplayers()
  60. g_nvault = nvault_open("CustomAdminPrefixes")
  61.  
  62. register_concmd("ap_reload_prefixes", "LoadPrefixes")
  63. register_concmd("ap_reload_badprefixes", "LoadBadPrefixes")
  64. register_concmd("ap_put", "SetPrefix")
  65. register_concmd("ap_put_player", "SetPlayerPrefix")
  66. register_clcmd("say", "HookSay")
  67. register_clcmd("say_team", "HookSayTeam")
  68.  
  69. register_plugin("Swear Filter","1.0a","SuicideDog")
  70. register_clcmd("say","swearcheck")
  71. register_clcmd("say_team","swearcheck")
  72. readList()
  73.  
  74. register_dictionary("admin_prefixes.txt")
  75.  
  76. get_configsdir(configs_dir, charsmax(configs_dir))
  77.  
  78. LoadPrefixes(0)
  79. LoadBadPrefixes(0)
  80. }
  81.  
  82. public LoadPrefixes(id)
  83. {
  84. if(!(get_user_flags(id) & FLAG_LOAD))
  85. {
  86. console_print(id, "%L", LANG_SERVER, "PREFIX_PERMISSION", in_prefix)
  87. return PLUGIN_HANDLED
  88. }
  89.  
  90. line = 0, pre_flags_count = 0, pre_ips_count = 0, pre_names_count = 0;
  91. formatex(file, charsmax(file), "%s/ap_prefixes.ini", configs_dir)
  92.  
  93. if(!file_exists(file))
  94. {
  95. formatex(error, charsmax(error), "%L", LANG_SERVER, "PREFIX_NOT_FOUND", in_prefix, file)
  96. set_fail_state(error)
  97. }
  98.  
  99. server_print(separator)
  100.  
  101. while(read_file(file, line++ , text, charsmax(text), length) && pre_flags_count <= MAX_PREFIXES)
  102. {
  103. if(!text[0] || text[0] == '^n' || text[0] == ';')
  104. continue
  105.  
  106. parse(text, type, charsmax(type), prefix, charsmax(prefix), acc_type, charsmax(acc_type))
  107. trim(prefix)
  108.  
  109. if(!type[0] || !prefix[0] || !acc_type[0])
  110. continue
  111.  
  112. replace_all(prefix, charsmax(prefix), "!g", "^x04")
  113. replace_all(prefix, charsmax(prefix), "!t", "^x03")
  114. replace_all(prefix, charsmax(prefix), "!n", "^x01")
  115.  
  116. switch(type[0])
  117. {
  118. case 'i':
  119. {
  120. pre_ips_count++
  121. pre_ips_collect[pre_ips_count] = prefix
  122. ips_collect[pre_ips_count] = acc_type
  123. server_print("%L", LANG_SERVER, "PREFIX_LOAD_IP", in_prefix, prefix, acc_type)
  124. }
  125. case 'n':
  126. {
  127. pre_names_count++
  128. pre_names_collect[pre_names_count] = prefix
  129. names_collect[pre_names_count] = acc_type
  130. server_print("%L", LANG_SERVER, "PREFIX_LOAD_NAME", in_prefix, prefix, acc_type)
  131. }
  132. case 'f':
  133. {
  134. pre_flags_count++
  135. pre_flags_collect[pre_flags_count] = prefix
  136. flags_collect[pre_flags_count][0] = acc_type[0]
  137. server_print("%L", LANG_SERVER, "PREFIX_LOAD_FLAG", in_prefix, prefix, acc_type[0])
  138. }
  139. default:
  140. {
  141. continue
  142. }
  143. }
  144. }
  145.  
  146. if(pre_flags_count <= 0 && pre_ips_count <= 0 && pre_names_count <= 0)
  147. {
  148. server_print("%L", LANG_SERVER, "PREFIX_NO", in_prefix)
  149. }
  150.  
  151. get_user_name(id, g_name, charsmax(g_name))
  152. server_print("%L", LANG_SERVER, "PREFIX_LOADED_BY", in_prefix, g_name)
  153. console_print(id, "%L", LANG_SERVER, "PREFIX_LOADED", in_prefix)
  154.  
  155. server_print(separator)
  156.  
  157. for(new i = 1; i <= g_maxplayers; i++)
  158. {
  159. client_prefix[id] = ""
  160. CheckNvaultPrefix(i)
  161. }
  162.  
  163. return PLUGIN_HANDLED
  164. }
  165.  
  166. public LoadBadPrefixes(id)
  167. {
  168. if(!get_pcvar_num(g_bad_prefix))
  169. {
  170. console_print(id, "%L", LANG_SERVER, "BADP_OFF", in_prefix)
  171. return PLUGIN_HANDLED
  172. }
  173.  
  174. if(!(get_user_flags(id) & FLAG_LOAD))
  175. {
  176. console_print(id, "%L", LANG_SERVER, "BADP_PERMISSION", in_prefix)
  177. return PLUGIN_HANDLED
  178. }
  179.  
  180. line = 0, bad_prefix_count = 0;
  181.  
  182. formatex(file, charsmax(file), "%s/ap_bad_prefixes.ini", configs_dir)
  183.  
  184. if(!file_exists(file))
  185. {
  186. console_print(id, "%L", LANG_SERVER, "BADP_NOT_FOUND", in_prefix, file)
  187. return PLUGIN_HANDLED
  188. }
  189.  
  190.  
  191. server_print(separator)
  192.  
  193. while(read_file(file, line++ , text, charsmax(text), length) && bad_prefix_count <= MAX_BAD_PREFIXES)
  194. {
  195. if(!text[0] || text[0] == '^n' || text[0] == ';')
  196. continue
  197.  
  198. parse(text, prefix, charsmax(prefix))
  199.  
  200. if(!prefix[0])
  201. continue
  202.  
  203. bad_prefix_count++
  204. bad_prefixes_collect[bad_prefix_count] = prefix
  205. server_print("%L", LANG_SERVER, "BADP_LOAD", in_prefix, prefix)
  206. }
  207.  
  208. if(bad_prefix_count <= 0)
  209. {
  210. server_print("%L", LANG_SERVER, "BADP_LOAD", in_prefix)
  211. }
  212.  
  213. get_user_name(id, g_name, charsmax(g_name))
  214. server_print("%L", LANG_SERVER, "BADP_LOADED_BY", in_prefix, g_name)
  215. console_print(id, "%L", LANG_SERVER, "BADP_LOADED", in_prefix)
  216.  
  217. server_print(separator)
  218.  
  219. for(new i = 1; i <= g_maxplayers; i++)
  220. {
  221. CheckNvaultPrefix(i)
  222. }
  223.  
  224. return PLUGIN_HANDLED
  225. }
  226.  
  227. public client_putinserver(id)
  228. {
  229. client_prefix[id] = ""
  230. CheckNvaultPrefix(id)
  231. }
  232.  
  233. public HookSay(id)
  234. {
  235. read_args(g_typed, charsmax(g_typed))
  236. remove_quotes(g_typed)
  237.  
  238. if(equal(g_typed, "") || !is_user_connected(id))
  239. return PLUGIN_HANDLED_MAIN
  240.  
  241. if((client_prefix[id][0] && get_pcvar_num(g_say_characters) == 1) || (!client_prefix[id][0] && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
  242. {
  243. if(check_say_characters(g_typed))
  244. return PLUGIN_HANDLED_MAIN
  245. }
  246.  
  247. get_user_name(id, g_name, charsmax(g_name))
  248.  
  249. g_team = get_user_team(id)
  250.  
  251. new const team_info[2][][] = {
  252. {"*SPEC* ", "*DEAD* ", "*DEAD* ", "*SPEC* "},
  253. {"", "", "", ""}
  254. }
  255.  
  256. if(client_prefix[id][0])
  257. {
  258. formatex(g_message, charsmax(g_message), "^1%s^4%s^3 %s :^4 %s", team_info[is_user_alive(id)][g_team], client_prefix[id], g_name, g_typed)
  259. }
  260. else
  261. {
  262. formatex(g_message, charsmax(g_message), "^1%s^3%s :^1 %s", team_info[is_user_alive(id)][g_team], g_name, g_typed)
  263. }
  264.  
  265. get_pcvar_string(g_listen_flag, temp_cvar, charsmax(temp_cvar))
  266.  
  267. for(new i = 1; i <= g_maxplayers; i++)
  268. {
  269. if(!is_user_connected(i))
  270. continue
  271.  
  272. 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))
  273. {
  274. send_message(g_message, id, i)
  275. }
  276. }
  277. {
  278. new szSaid[192]
  279. read_args(szSaid,191)
  280. new bool:found = false
  281.  
  282. new name[32],ip[32]
  283. get_user_name(id,name,31)
  284. get_user_ip(id,ip,31)
  285.  
  286. new pos, i = 0
  287. while ( i < g_swearsNum )
  288. {
  289. if ( (pos = containi(szSaid,g_swearsNames[i][1])) != -1 ){
  290. new len = g_swearsNames[i][0]
  291. while(len--)
  292. szSaid[pos++] = '*'
  293. log_amx("%s (%s) karomkodas",name,ip)
  294. found = true
  295. continue
  296. }
  297. ++i
  298. }
  299. if ( found ){
  300. new cmd[32]
  301. read_argv(0,cmd,31)
  302. engclient_cmd(id,cmd,szSaid)
  303. }
  304. return PLUGIN_CONTINUE
  305. }
  306.  
  307. return PLUGIN_HANDLED_MAIN
  308. }
  309.  
  310. public HookSayTeam(id)
  311. {
  312. read_args(g_typed, charsmax(g_typed))
  313. remove_quotes(g_typed)
  314.  
  315. if(equal(g_typed, "") || !is_user_connected(id))
  316. return PLUGIN_HANDLED_MAIN
  317.  
  318. if((client_prefix[id][0] && get_pcvar_num(g_say_characters) == 1) || (!client_prefix[id][0] && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
  319. {
  320. if(check_say_characters(g_typed))
  321. return PLUGIN_HANDLED_MAIN
  322. }
  323.  
  324. get_user_name(id, g_name, charsmax(g_name))
  325.  
  326. g_team = get_user_team(id)
  327.  
  328. new const team_info[2][][] = {
  329. {"(Spectator) ", "*DEAD*(Terrorist) ", "*DEAD*(Counter-Terrorist) ", "(Spectator) "},
  330. {"(Spectator) ", "(Terrorist) ", "(Counter-Terrorist) ", "(Spectator) "}
  331. }
  332.  
  333. if(client_prefix[id][0])
  334. {
  335. formatex(g_message, charsmax(g_message), "^1%s^4%s^3 %s :^4 %s", team_info[is_user_alive(id)][g_team], client_prefix[id], g_name, g_typed)
  336. }
  337. else
  338. {
  339. formatex(g_message, charsmax(g_message), "^1%s^3%s :^1 %s", team_info[is_user_alive(id)][g_team], g_name, g_typed)
  340. }
  341.  
  342. get_pcvar_string(g_listen_flag, temp_cvar, charsmax(temp_cvar))
  343.  
  344. for(new i = 1; i <= g_maxplayers; i++)
  345. {
  346. if(!is_user_connected(i))
  347. continue
  348.  
  349. if(get_user_team(id) == get_user_team(i) || get_pcvar_num(g_listen) && get_user_flags(i) & read_flags(temp_cvar))
  350. {
  351. 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))
  352. {
  353. send_message(g_message, id, i)
  354. }
  355. }
  356. }
  357.  
  358. return PLUGIN_HANDLED_MAIN
  359. }
  360.  
  361. public SetPrefix(id)
  362. {
  363. if(!get_pcvar_num(g_custom_current) || !get_pcvar_string(g_custom_current_flag, temp_cvar, charsmax(temp_cvar)))
  364. {
  365. console_print(id, "%L", LANG_SERVER, "CUSTOM_OFF", in_prefix)
  366. return PLUGIN_HANDLED
  367. }
  368.  
  369. if(!(get_user_flags(id) & read_flags(temp_cvar)))
  370. {
  371. console_print(id, "%L", LANG_SERVER, "CUSTOM_PERMISSION", in_prefix)
  372. return PLUGIN_HANDLED
  373. }
  374.  
  375. read_args(typed_prefix, charsmax(typed_prefix))
  376. remove_quotes(typed_prefix)
  377. trim(typed_prefix)
  378.  
  379. if(get_pcvar_num(g_bad_prefix) && is_bad_prefix(typed_prefix))
  380. {
  381. console_print(id, "%L", LANG_SERVER, "CUSTOM_FORBIDDEN", in_prefix, typed_prefix)
  382. return PLUGIN_HANDLED
  383. }
  384.  
  385. if(get_pcvar_num(g_prefix_characters) && check_prefix_characters(typed_prefix))
  386. {
  387. console_print(id, "%L", LANG_SERVER, "CUSTOM_SYMBOL", in_prefix, typed_prefix, forbidden_prefixes_symbols[i])
  388. return PLUGIN_HANDLED
  389. }
  390.  
  391. get_user_name(id, g_name, charsmax(g_name))
  392.  
  393. if(equal(typed_prefix, ""))
  394. {
  395. nvault_remove(g_nvault, g_name)
  396. console_print(id, "%L", LANG_SERVER, "CUSTOM_REMOVE", in_prefix)
  397. server_print("%L", LANG_SERVER, "CUSTOM_REMOVE_INFO", in_prefix, g_name)
  398. PutPrefix(id)
  399.  
  400. return PLUGIN_HANDLED
  401. }
  402.  
  403. nvault_set(g_nvault, g_name, typed_prefix)
  404.  
  405. client_prefix[id] = typed_prefix
  406.  
  407. console_print(id, "%L", LANG_SERVER, "CUSTOM_CHANGE", in_prefix, typed_prefix)
  408. server_print("%L", LANG_SERVER, "CUSTOM_CHANGE_INFO", in_prefix, g_name, typed_prefix)
  409.  
  410. return PLUGIN_HANDLED
  411. }
  412.  
  413. public SetPlayerPrefix(id)
  414. {
  415. if(!get_pcvar_num(g_custom_current) || !get_pcvar_string(g_custom_current_flag, temp_cvar, charsmax(temp_cvar)) || !get_pcvar_num(g_custom_others) || !get_pcvar_string(g_custom_others_flag, temp_cvar, charsmax(temp_cvar)))
  416. {
  417. console_print(id, "%L", LANG_SERVER, "CO_OFF", in_prefix)
  418. return PLUGIN_HANDLED
  419. }
  420.  
  421. if(!(get_user_flags(id) & read_flags(temp_cvar)))
  422. {
  423. console_print(id, "%L", LANG_SERVER, "CO_FORBIDDEN", in_prefix)
  424. return PLUGIN_HANDLED
  425. }
  426.  
  427. new name_tag[64], typed_name[32];
  428.  
  429. read_args(name_tag, charsmax(name_tag))
  430. remove_quotes(name_tag)
  431. parse(name_tag, typed_name, charsmax(typed_name), typed_prefix, charsmax(typed_prefix))
  432. trim(typed_prefix)
  433.  
  434. if(get_pcvar_num(g_bad_prefix) && is_bad_prefix(typed_prefix))
  435. {
  436. console_print(id, "%L", LANG_SERVER, "CUSTOM_FORBIDDEN", in_prefix, typed_prefix)
  437. return PLUGIN_HANDLED
  438. }
  439.  
  440. if(get_pcvar_num(g_prefix_characters) && check_prefix_characters(typed_prefix))
  441. {
  442. console_print(id, "%L", LANG_SERVER, "CUSTOM_SYMBOL", in_prefix, typed_prefix, forbidden_prefixes_symbols[i])
  443. return PLUGIN_HANDLED
  444. }
  445.  
  446. get_user_name(id, g_name, charsmax(g_name))
  447.  
  448. new target = cmd_target(id, typed_name, 1)
  449.  
  450. if(!target)
  451. return PLUGIN_HANDLED
  452.  
  453. if(equal(typed_prefix, ""))
  454. {
  455. nvault_remove(g_nvault, typed_name)
  456. console_print(id, "%L", LANG_SERVER, "CO_REMOVE", in_prefix, typed_name)
  457. server_print("%L", LANG_SERVER, "CO_REMOVE_INFO", in_prefix, g_name, typed_name)
  458. PutPrefix(target)
  459.  
  460. return PLUGIN_HANDLED
  461. }
  462.  
  463. nvault_set(g_nvault, typed_name, typed_prefix)
  464.  
  465. client_prefix[id] = typed_prefix
  466.  
  467. console_print(id, "%L", LANG_SERVER, "CO_CHANGE", in_prefix, typed_name, typed_prefix)
  468. server_print("%L", LANG_SERVER, "CO_CHANGE_INFO", in_prefix, g_name, typed_name, typed_prefix)
  469.  
  470. return PLUGIN_HANDLED
  471. }
  472.  
  473. public client_infochanged(id)
  474. {
  475. if(!is_user_connected(id))
  476. return PLUGIN_CONTINUE
  477.  
  478. new g_old_name[32];
  479.  
  480. get_user_info(id, "name", g_name, charsmax(g_name))
  481. get_user_name(id, g_old_name, charsmax(g_old_name))
  482.  
  483. if(!equal(g_name, g_old_name))
  484. {
  485. client_prefix[id] = ""
  486. set_task(0.5, "CheckNvaultPrefix", id)
  487. return PLUGIN_HANDLED
  488. }
  489.  
  490. return PLUGIN_CONTINUE
  491. }
  492.  
  493. public CheckNvaultPrefix(const id)
  494. {
  495. new nvault_prefix[33];
  496. get_user_name(id, g_name, charsmax(g_name))
  497. get_pcvar_string(g_custom_current_flag, temp_cvar, charsmax(temp_cvar))
  498.  
  499. new data = nvault_get(g_nvault, g_name, nvault_prefix, charsmax(nvault_prefix))
  500.  
  501. if(data && get_pcvar_num(g_custom_current) && get_user_flags(id) & read_flags(temp_cvar))
  502. {
  503. if((get_pcvar_num(g_bad_prefix) && is_bad_prefix(nvault_prefix)) || (get_pcvar_num(g_prefix_characters) && check_prefix_characters(nvault_prefix)))
  504. {
  505. PutPrefix(id)
  506. return PLUGIN_HANDLED
  507. }
  508. client_prefix[id] = nvault_prefix
  509. return PLUGIN_HANDLED
  510. }
  511. else
  512. {
  513. PutPrefix(id)
  514. return PLUGIN_HANDLED
  515. }
  516. return PLUGIN_HANDLED
  517. }
  518.  
  519. stock PutPrefix(const id)
  520. {
  521. new temp_ip[16];
  522.  
  523. get_user_ip(id, temp_ip, charsmax(temp_ip), 1)
  524.  
  525. for(new i = 0; i <= pre_ips_count; i++)
  526. {
  527. if(equal(temp_ip, ips_collect[i]))
  528. {
  529. client_prefix[id] = pre_ips_collect[i]
  530.  
  531. return PLUGIN_HANDLED
  532. }
  533. }
  534.  
  535. get_user_name(id, g_name, charsmax(g_name))
  536.  
  537. for(new i = 0; i <= pre_names_count; i++)
  538. {
  539. if(equal(g_name, names_collect[i]))
  540. {
  541. client_prefix[id] = pre_names_collect[i]
  542.  
  543. return PLUGIN_HANDLED
  544. }
  545. }
  546.  
  547. for(new i = 0; i <= pre_flags_count; i++)
  548. {
  549. if(get_user_flags(id) & read_flags(flags_collect[i]))
  550. {
  551. client_prefix[id] = pre_flags_collect[i]
  552.  
  553. return PLUGIN_HANDLED
  554. }
  555. }
  556. return PLUGIN_HANDLED
  557. }
  558.  
  559. stock send_message(const message[], const id, const i)
  560. {
  561. message_begin(MSG_ONE, g_saytxt, {0, 0, 0}, i)
  562. write_byte(id)
  563. write_string(message)
  564. message_end()
  565. }
  566.  
  567. bool:check_say_characters(const check_message[])
  568. {
  569. for(new i = 0; i < charsmax(forbidden_say_symbols); i++)
  570. {
  571. if(check_message[0] == forbidden_say_symbols[i])
  572. {
  573. return true
  574. }
  575. }
  576. return false
  577. }
  578.  
  579. bool:check_prefix_characters(const check_prefix[])
  580. {
  581. for(i = 0; i < charsmax(forbidden_prefixes_symbols); i++)
  582. {
  583. if(containi(check_prefix, forbidden_prefixes_symbols[i]) != -1)
  584. {
  585. return true
  586. }
  587. }
  588. return false
  589. }
  590.  
  591. bool:is_bad_prefix(const check_prefix[])
  592. {
  593. for(new i = 0; i <= bad_prefix_count; i++)
  594. {
  595. if(equali(check_prefix, bad_prefixes_collect[i]))
  596. {
  597. return true
  598. }
  599. }
  600. return false
  601. }
  602. readList()
  603. {
  604. // file to read words from
  605. new szCustomDir[64]
  606. new filename[64]
  607. get_customdir( szCustomDir, 63 )
  608. format(filename, 63, "%s/swear/swearwords.ini", szCustomDir )
  609.  
  610. if(!file_exists(filename) ){
  611. log_message("Swear Filter: file %s not found", filename)
  612. return
  613. }
  614. new iLen
  615. while( g_swearsNum < MAX_WORDS && read_file(filename, g_swearsNum ,g_swearsNames[g_swearsNum][1],30,iLen) )
  616. {
  617. if( g_swearsNames[g_swearsNum][0] == ';') continue
  618. g_swearsNames[g_swearsNum][0] = iLen
  619. ++g_swearsNum
  620. }
  621. log_message("Swear Filter: loaded %d words",g_swearsNum )
  622. }


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: JAVITÁS - Swear filter + Prefix
HozzászólásElküldve: 2013.06.11. 18:49 
Offline
Tiszteletbeli

Csatlakozott: 2010.02.04. 19:12
Hozzászólások: 3528
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 180 alkalommal
SMA Forráskód: [ Mindet kijelol ]
  1. register_clcmd("say", "HookSay")
  2. register_clcmd("say_team", "HookSayTeam")
  3.  
  4. register_clcmd("say","swearcheck")
  5. register_clcmd("say_team","swearcheck")


ezt a 2-t kell egybe

_________________
http://www.ebateam.eu/


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: JAVITÁS - Swear filter + Prefix
HozzászólásElküldve: 2013.06.11. 18:52 
Offline
Jómunkásember
Avatar

Csatlakozott: 2012.08.24. 19:42
Hozzászólások: 320
Megköszönt másnak: 11 alkalommal
Megköszönték neki: 30 alkalommal
Aha, igy ?

SMA Forráskód: [ Mindet kijelol ]
  1. register_clcmd("say", "HookSay, swearcheck")
  2. register_clcmd("say_team", "HookSayTeam, swearcheck")


vagy igy ?

SMA Forráskód: [ Mindet kijelol ]
  1. register_clcmd("say", "HookSay", "swearcheck")
  2. register_clcmd("say_team", "HookSayTeam", "swearcheck")


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: JAVITÁS - Swear filter + Prefix
HozzászólásElküldve: 2013.06.11. 18:54 
Offline
Tiszteletbeli

Csatlakozott: 2010.02.04. 19:12
Hozzászólások: 3528
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 180 alkalommal
TysOn írta:
Aha, igy ?

SMA Forráskód: [ Mindet kijelol ]
  1. register_clcmd("say", "HookSay, swearcheck")
  2. register_clcmd("say_team", "HookSayTeam, swearcheck")


vagy igy ?

SMA Forráskód: [ Mindet kijelol ]
  1. register_clcmd("say", "HookSay", "swearcheck")
  2. register_clcmd("say_team", "HookSayTeam", "swearcheck")

egyikse, egyiket kiszeded, és az egyik tartalmát beírod a másikba, csak kell hozzá logika mi kell belőle és mi nem

_________________
http://www.ebateam.eu/


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: JAVITÁS - Swear filter + Prefix
HozzászólásElküldve: 2013.06.11. 18:59 
Offline
Jómunkásember
Avatar

Csatlakozott: 2012.08.24. 19:42
Hozzászólások: 320
Megköszönt másnak: 11 alkalommal
Megköszönték neki: 30 alkalommal
Na szóval, egybe raktam a kettőt, azt már nemtudom mi kell, mi nem. Ha kiszednéd belőle ami nem kell, nagyon hálás lennék ;)

SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <nvault>
  4.  
  5. #define FLAG_LOAD ADMIN_CFG
  6. #define MAX_PREFIXES 33
  7. #define MAX_BAD_PREFIXES 100
  8.  
  9. #define MAX_WORDS 192
  10.  
  11. new g_bad_prefix, g_listen, g_listen_flag, g_custom_current, g_custom_current_flag, g_custom_others, g_custom_others_flag, g_say_characters, g_prefix_characters;
  12. new pre_ips_count = 0, pre_names_count = 0, pre_flags_count = 0, bad_prefix_count = 0, i, temp_cvar[2];
  13. new configs_dir[64], file[128], text[128], prefix[32], type[2], acc_type[32], length, line = 0, error[256];
  14. new g_saytxt, g_maxplayers, g_nvault, g_team;
  15. new g_typed[192], g_message[192], g_name[32], typed_prefix[33];
  16. new pre_ips_collect[MAX_PREFIXES][33], ips_collect[MAX_PREFIXES][32], pre_names_collect[MAX_PREFIXES][33], names_collect[MAX_PREFIXES][33], pre_flags_collect[MAX_PREFIXES][33], flags_collect[MAX_PREFIXES][2], bad_prefixes_collect[MAX_BAD_PREFIXES][33], client_prefix[33][33];
  17. new g_swearsNames[MAX_WORDS][32]
  18. new g_swearsNum
  19.  
  20. new const forbidden_say_symbols[] = {
  21. "/",
  22. "!",
  23. "%",
  24. "$"
  25. }
  26.  
  27. new const forbidden_prefixes_symbols[] = {
  28. "/",
  29. "\",
  30. "%",
  31. "$",
  32. ".",
  33. ":",
  34. "?",
  35. "!",
  36. "@",
  37. "#",
  38. "%"
  39. }
  40.  
  41. new const separator[] = "************************************************"
  42. new const in_prefix[] = "[AdminPrefixes]"
  43.  
  44. public plugin_init()
  45. {
  46. register_plugin("Admin Prefixes", "2.2", "m0skVi4a ;]")
  47.  
  48. g_bad_prefix = register_cvar("ap_bad_prefixes", "1")
  49. g_listen = register_cvar("ap_listen", "1")
  50. g_listen_flag = register_cvar("ap_listen_flag", "a")
  51. g_custom_current = register_cvar("ap_custom_current", "1")
  52. g_custom_current_flag = register_cvar("ap_custom_current_flag", "b")
  53. g_custom_others = register_cvar("ap_custom_others", "1")
  54. g_custom_others_flag = register_cvar("ap_custom_others_flag", "c")
  55. g_say_characters = register_cvar("ap_say_characters", "1")
  56. g_prefix_characters = register_cvar("ap_prefix_characters", "1")
  57.  
  58. g_saytxt = get_user_msgid ("SayText")
  59. g_maxplayers = get_maxplayers()
  60. g_nvault = nvault_open("CustomAdminPrefixes")
  61.  
  62. register_concmd("ap_reload_prefixes", "LoadPrefixes")
  63. register_concmd("ap_reload_badprefixes", "LoadBadPrefixes")
  64. register_concmd("ap_put", "SetPrefix")
  65. register_concmd("ap_put_player", "SetPlayerPrefix")
  66. register_clcmd("say", "HookSay")
  67. register_clcmd("say_team", "HookSayTeam")
  68. readList()
  69.  
  70. register_dictionary("admin_prefixes.txt")
  71.  
  72. get_configsdir(configs_dir, charsmax(configs_dir))
  73.  
  74. LoadPrefixes(0)
  75. LoadBadPrefixes(0)
  76. }
  77.  
  78. public LoadPrefixes(id)
  79. {
  80. if(!(get_user_flags(id) & FLAG_LOAD))
  81. {
  82. console_print(id, "%L", LANG_SERVER, "PREFIX_PERMISSION", in_prefix)
  83. return PLUGIN_HANDLED
  84. }
  85.  
  86. line = 0, pre_flags_count = 0, pre_ips_count = 0, pre_names_count = 0;
  87. formatex(file, charsmax(file), "%s/ap_prefixes.ini", configs_dir)
  88.  
  89. if(!file_exists(file))
  90. {
  91. formatex(error, charsmax(error), "%L", LANG_SERVER, "PREFIX_NOT_FOUND", in_prefix, file)
  92. set_fail_state(error)
  93. }
  94.  
  95. server_print(separator)
  96.  
  97. while(read_file(file, line++ , text, charsmax(text), length) && pre_flags_count <= MAX_PREFIXES)
  98. {
  99. if(!text[0] || text[0] == '^n' || text[0] == ';')
  100. continue
  101.  
  102. parse(text, type, charsmax(type), prefix, charsmax(prefix), acc_type, charsmax(acc_type))
  103. trim(prefix)
  104.  
  105. if(!type[0] || !prefix[0] || !acc_type[0])
  106. continue
  107.  
  108. replace_all(prefix, charsmax(prefix), "!g", "^x04")
  109. replace_all(prefix, charsmax(prefix), "!t", "^x03")
  110. replace_all(prefix, charsmax(prefix), "!n", "^x01")
  111.  
  112. switch(type[0])
  113. {
  114. case 'i':
  115. {
  116. pre_ips_count++
  117. pre_ips_collect[pre_ips_count] = prefix
  118. ips_collect[pre_ips_count] = acc_type
  119. server_print("%L", LANG_SERVER, "PREFIX_LOAD_IP", in_prefix, prefix, acc_type)
  120. }
  121. case 'n':
  122. {
  123. pre_names_count++
  124. pre_names_collect[pre_names_count] = prefix
  125. names_collect[pre_names_count] = acc_type
  126. server_print("%L", LANG_SERVER, "PREFIX_LOAD_NAME", in_prefix, prefix, acc_type)
  127. }
  128. case 'f':
  129. {
  130. pre_flags_count++
  131. pre_flags_collect[pre_flags_count] = prefix
  132. flags_collect[pre_flags_count][0] = acc_type[0]
  133. server_print("%L", LANG_SERVER, "PREFIX_LOAD_FLAG", in_prefix, prefix, acc_type[0])
  134. }
  135. default:
  136. {
  137. continue
  138. }
  139. }
  140. }
  141.  
  142. if(pre_flags_count <= 0 && pre_ips_count <= 0 && pre_names_count <= 0)
  143. {
  144. server_print("%L", LANG_SERVER, "PREFIX_NO", in_prefix)
  145. }
  146.  
  147. get_user_name(id, g_name, charsmax(g_name))
  148. server_print("%L", LANG_SERVER, "PREFIX_LOADED_BY", in_prefix, g_name)
  149. console_print(id, "%L", LANG_SERVER, "PREFIX_LOADED", in_prefix)
  150.  
  151. server_print(separator)
  152.  
  153. for(new i = 1; i <= g_maxplayers; i++)
  154. {
  155. client_prefix[id] = ""
  156. CheckNvaultPrefix(i)
  157. }
  158.  
  159. return PLUGIN_HANDLED
  160. }
  161.  
  162. public LoadBadPrefixes(id)
  163. {
  164. if(!get_pcvar_num(g_bad_prefix))
  165. {
  166. console_print(id, "%L", LANG_SERVER, "BADP_OFF", in_prefix)
  167. return PLUGIN_HANDLED
  168. }
  169.  
  170. if(!(get_user_flags(id) & FLAG_LOAD))
  171. {
  172. console_print(id, "%L", LANG_SERVER, "BADP_PERMISSION", in_prefix)
  173. return PLUGIN_HANDLED
  174. }
  175.  
  176. line = 0, bad_prefix_count = 0;
  177.  
  178. formatex(file, charsmax(file), "%s/ap_bad_prefixes.ini", configs_dir)
  179.  
  180. if(!file_exists(file))
  181. {
  182. console_print(id, "%L", LANG_SERVER, "BADP_NOT_FOUND", in_prefix, file)
  183. return PLUGIN_HANDLED
  184. }
  185.  
  186.  
  187. server_print(separator)
  188.  
  189. while(read_file(file, line++ , text, charsmax(text), length) && bad_prefix_count <= MAX_BAD_PREFIXES)
  190. {
  191. if(!text[0] || text[0] == '^n' || text[0] == ';')
  192. continue
  193.  
  194. parse(text, prefix, charsmax(prefix))
  195.  
  196. if(!prefix[0])
  197. continue
  198.  
  199. bad_prefix_count++
  200. bad_prefixes_collect[bad_prefix_count] = prefix
  201. server_print("%L", LANG_SERVER, "BADP_LOAD", in_prefix, prefix)
  202. }
  203.  
  204. if(bad_prefix_count <= 0)
  205. {
  206. server_print("%L", LANG_SERVER, "BADP_LOAD", in_prefix)
  207. }
  208.  
  209. get_user_name(id, g_name, charsmax(g_name))
  210. server_print("%L", LANG_SERVER, "BADP_LOADED_BY", in_prefix, g_name)
  211. console_print(id, "%L", LANG_SERVER, "BADP_LOADED", in_prefix)
  212.  
  213. server_print(separator)
  214.  
  215. for(new i = 1; i <= g_maxplayers; i++)
  216. {
  217. CheckNvaultPrefix(i)
  218. }
  219.  
  220. return PLUGIN_HANDLED
  221. }
  222.  
  223. public client_putinserver(id)
  224. {
  225. client_prefix[id] = ""
  226. CheckNvaultPrefix(id)
  227. }
  228.  
  229. public HookSay(id)
  230. {
  231. read_args(g_typed, charsmax(g_typed))
  232. remove_quotes(g_typed)
  233.  
  234. if(equal(g_typed, "") || !is_user_connected(id))
  235. return PLUGIN_HANDLED_MAIN
  236.  
  237. if((client_prefix[id][0] && get_pcvar_num(g_say_characters) == 1) || (!client_prefix[id][0] && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
  238. {
  239. if(check_say_characters(g_typed))
  240. return PLUGIN_HANDLED_MAIN
  241. }
  242.  
  243. get_user_name(id, g_name, charsmax(g_name))
  244.  
  245. g_team = get_user_team(id)
  246.  
  247. new const team_info[2][][] = {
  248. {"*SPEC* ", "*DEAD* ", "*DEAD* ", "*SPEC* "},
  249. {"", "", "", ""}
  250. }
  251.  
  252. if(client_prefix[id][0])
  253. {
  254. formatex(g_message, charsmax(g_message), "^1%s^4%s^3 %s :^4 %s", team_info[is_user_alive(id)][g_team], client_prefix[id], g_name, g_typed)
  255. }
  256. else
  257. {
  258. formatex(g_message, charsmax(g_message), "^1%s^3%s :^1 %s", team_info[is_user_alive(id)][g_team], g_name, g_typed)
  259. }
  260.  
  261. get_pcvar_string(g_listen_flag, temp_cvar, charsmax(temp_cvar))
  262.  
  263. for(new i = 1; i <= g_maxplayers; i++)
  264. {
  265. if(!is_user_connected(i))
  266. continue
  267.  
  268. 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))
  269. {
  270. send_message(g_message, id, i)
  271. }
  272. }
  273. {
  274. new szSaid[192]
  275. read_args(szSaid,191)
  276. new bool:found = false
  277.  
  278. new name[32],ip[32]
  279. get_user_name(id,name,31)
  280. get_user_ip(id,ip,31)
  281.  
  282. new pos, i = 0
  283. while ( i < g_swearsNum )
  284. {
  285. if ( (pos = containi(szSaid,g_swearsNames[i][1])) != -1 ){
  286. new len = g_swearsNames[i][0]
  287. while(len--)
  288. szSaid[pos++] = '*'
  289. log_amx("%s (%s) karomkodas",name,ip)
  290. found = true
  291. continue
  292. }
  293. ++i
  294. }
  295. if ( found ){
  296. new cmd[32]
  297. read_argv(0,cmd,31)
  298. engclient_cmd(id,cmd,szSaid)
  299. }
  300. return PLUGIN_CONTINUE
  301. }
  302.  
  303. return PLUGIN_HANDLED_MAIN
  304. }
  305.  
  306. public HookSayTeam(id)
  307. {
  308. read_args(g_typed, charsmax(g_typed))
  309. remove_quotes(g_typed)
  310.  
  311. if(equal(g_typed, "") || !is_user_connected(id))
  312. return PLUGIN_HANDLED_MAIN
  313.  
  314. if((client_prefix[id][0] && get_pcvar_num(g_say_characters) == 1) || (!client_prefix[id][0] && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
  315. {
  316. if(check_say_characters(g_typed))
  317. return PLUGIN_HANDLED_MAIN
  318. }
  319.  
  320. get_user_name(id, g_name, charsmax(g_name))
  321.  
  322. g_team = get_user_team(id)
  323.  
  324. new const team_info[2][][] = {
  325. {"(Spectator) ", "*DEAD*(Terrorist) ", "*DEAD*(Counter-Terrorist) ", "(Spectator) "},
  326. {"(Spectator) ", "(Terrorist) ", "(Counter-Terrorist) ", "(Spectator) "}
  327. }
  328.  
  329. if(client_prefix[id][0])
  330. {
  331. formatex(g_message, charsmax(g_message), "^1%s^4%s^3 %s :^4 %s", team_info[is_user_alive(id)][g_team], client_prefix[id], g_name, g_typed)
  332. }
  333. else
  334. {
  335. formatex(g_message, charsmax(g_message), "^1%s^3%s :^1 %s", team_info[is_user_alive(id)][g_team], g_name, g_typed)
  336. }
  337.  
  338. get_pcvar_string(g_listen_flag, temp_cvar, charsmax(temp_cvar))
  339.  
  340. for(new i = 1; i <= g_maxplayers; i++)
  341. {
  342. if(!is_user_connected(i))
  343. continue
  344.  
  345. if(get_user_team(id) == get_user_team(i) || get_pcvar_num(g_listen) && get_user_flags(i) & read_flags(temp_cvar))
  346. {
  347. 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))
  348. {
  349. send_message(g_message, id, i)
  350. }
  351. }
  352. }
  353.  
  354. return PLUGIN_HANDLED_MAIN
  355. }
  356.  
  357. public SetPrefix(id)
  358. {
  359. if(!get_pcvar_num(g_custom_current) || !get_pcvar_string(g_custom_current_flag, temp_cvar, charsmax(temp_cvar)))
  360. {
  361. console_print(id, "%L", LANG_SERVER, "CUSTOM_OFF", in_prefix)
  362. return PLUGIN_HANDLED
  363. }
  364.  
  365. if(!(get_user_flags(id) & read_flags(temp_cvar)))
  366. {
  367. console_print(id, "%L", LANG_SERVER, "CUSTOM_PERMISSION", in_prefix)
  368. return PLUGIN_HANDLED
  369. }
  370.  
  371. read_args(typed_prefix, charsmax(typed_prefix))
  372. remove_quotes(typed_prefix)
  373. trim(typed_prefix)
  374.  
  375. if(get_pcvar_num(g_bad_prefix) && is_bad_prefix(typed_prefix))
  376. {
  377. console_print(id, "%L", LANG_SERVER, "CUSTOM_FORBIDDEN", in_prefix, typed_prefix)
  378. return PLUGIN_HANDLED
  379. }
  380.  
  381. if(get_pcvar_num(g_prefix_characters) && check_prefix_characters(typed_prefix))
  382. {
  383. console_print(id, "%L", LANG_SERVER, "CUSTOM_SYMBOL", in_prefix, typed_prefix, forbidden_prefixes_symbols[i])
  384. return PLUGIN_HANDLED
  385. }
  386.  
  387. get_user_name(id, g_name, charsmax(g_name))
  388.  
  389. if(equal(typed_prefix, ""))
  390. {
  391. nvault_remove(g_nvault, g_name)
  392. console_print(id, "%L", LANG_SERVER, "CUSTOM_REMOVE", in_prefix)
  393. server_print("%L", LANG_SERVER, "CUSTOM_REMOVE_INFO", in_prefix, g_name)
  394. PutPrefix(id)
  395.  
  396. return PLUGIN_HANDLED
  397. }
  398.  
  399. nvault_set(g_nvault, g_name, typed_prefix)
  400.  
  401. client_prefix[id] = typed_prefix
  402.  
  403. console_print(id, "%L", LANG_SERVER, "CUSTOM_CHANGE", in_prefix, typed_prefix)
  404. server_print("%L", LANG_SERVER, "CUSTOM_CHANGE_INFO", in_prefix, g_name, typed_prefix)
  405.  
  406. return PLUGIN_HANDLED
  407. }
  408.  
  409. public SetPlayerPrefix(id)
  410. {
  411. if(!get_pcvar_num(g_custom_current) || !get_pcvar_string(g_custom_current_flag, temp_cvar, charsmax(temp_cvar)) || !get_pcvar_num(g_custom_others) || !get_pcvar_string(g_custom_others_flag, temp_cvar, charsmax(temp_cvar)))
  412. {
  413. console_print(id, "%L", LANG_SERVER, "CO_OFF", in_prefix)
  414. return PLUGIN_HANDLED
  415. }
  416.  
  417. if(!(get_user_flags(id) & read_flags(temp_cvar)))
  418. {
  419. console_print(id, "%L", LANG_SERVER, "CO_FORBIDDEN", in_prefix)
  420. return PLUGIN_HANDLED
  421. }
  422.  
  423. new name_tag[64], typed_name[32];
  424.  
  425. read_args(name_tag, charsmax(name_tag))
  426. remove_quotes(name_tag)
  427. parse(name_tag, typed_name, charsmax(typed_name), typed_prefix, charsmax(typed_prefix))
  428. trim(typed_prefix)
  429.  
  430. if(get_pcvar_num(g_bad_prefix) && is_bad_prefix(typed_prefix))
  431. {
  432. console_print(id, "%L", LANG_SERVER, "CUSTOM_FORBIDDEN", in_prefix, typed_prefix)
  433. return PLUGIN_HANDLED
  434. }
  435.  
  436. if(get_pcvar_num(g_prefix_characters) && check_prefix_characters(typed_prefix))
  437. {
  438. console_print(id, "%L", LANG_SERVER, "CUSTOM_SYMBOL", in_prefix, typed_prefix, forbidden_prefixes_symbols[i])
  439. return PLUGIN_HANDLED
  440. }
  441.  
  442. get_user_name(id, g_name, charsmax(g_name))
  443.  
  444. new target = cmd_target(id, typed_name, 1)
  445.  
  446. if(!target)
  447. return PLUGIN_HANDLED
  448.  
  449. if(equal(typed_prefix, ""))
  450. {
  451. nvault_remove(g_nvault, typed_name)
  452. console_print(id, "%L", LANG_SERVER, "CO_REMOVE", in_prefix, typed_name)
  453. server_print("%L", LANG_SERVER, "CO_REMOVE_INFO", in_prefix, g_name, typed_name)
  454. PutPrefix(target)
  455.  
  456. return PLUGIN_HANDLED
  457. }
  458.  
  459. nvault_set(g_nvault, typed_name, typed_prefix)
  460.  
  461. client_prefix[id] = typed_prefix
  462.  
  463. console_print(id, "%L", LANG_SERVER, "CO_CHANGE", in_prefix, typed_name, typed_prefix)
  464. server_print("%L", LANG_SERVER, "CO_CHANGE_INFO", in_prefix, g_name, typed_name, typed_prefix)
  465.  
  466. return PLUGIN_HANDLED
  467. }
  468.  
  469. public client_infochanged(id)
  470. {
  471. if(!is_user_connected(id))
  472. return PLUGIN_CONTINUE
  473.  
  474. new g_old_name[32];
  475.  
  476. get_user_info(id, "name", g_name, charsmax(g_name))
  477. get_user_name(id, g_old_name, charsmax(g_old_name))
  478.  
  479. if(!equal(g_name, g_old_name))
  480. {
  481. client_prefix[id] = ""
  482. set_task(0.5, "CheckNvaultPrefix", id)
  483. return PLUGIN_HANDLED
  484. }
  485.  
  486. return PLUGIN_CONTINUE
  487. }
  488.  
  489. public CheckNvaultPrefix(const id)
  490. {
  491. new nvault_prefix[33];
  492. get_user_name(id, g_name, charsmax(g_name))
  493. get_pcvar_string(g_custom_current_flag, temp_cvar, charsmax(temp_cvar))
  494.  
  495. new data = nvault_get(g_nvault, g_name, nvault_prefix, charsmax(nvault_prefix))
  496.  
  497. if(data && get_pcvar_num(g_custom_current) && get_user_flags(id) & read_flags(temp_cvar))
  498. {
  499. if((get_pcvar_num(g_bad_prefix) && is_bad_prefix(nvault_prefix)) || (get_pcvar_num(g_prefix_characters) && check_prefix_characters(nvault_prefix)))
  500. {
  501. PutPrefix(id)
  502. return PLUGIN_HANDLED
  503. }
  504. client_prefix[id] = nvault_prefix
  505. return PLUGIN_HANDLED
  506. }
  507. else
  508. {
  509. PutPrefix(id)
  510. return PLUGIN_HANDLED
  511. }
  512. return PLUGIN_HANDLED
  513. }
  514.  
  515. stock PutPrefix(const id)
  516. {
  517. new temp_ip[16];
  518.  
  519. get_user_ip(id, temp_ip, charsmax(temp_ip), 1)
  520.  
  521. for(new i = 0; i <= pre_ips_count; i++)
  522. {
  523. if(equal(temp_ip, ips_collect[i]))
  524. {
  525. client_prefix[id] = pre_ips_collect[i]
  526.  
  527. return PLUGIN_HANDLED
  528. }
  529. }
  530.  
  531. get_user_name(id, g_name, charsmax(g_name))
  532.  
  533. for(new i = 0; i <= pre_names_count; i++)
  534. {
  535. if(equal(g_name, names_collect[i]))
  536. {
  537. client_prefix[id] = pre_names_collect[i]
  538.  
  539. return PLUGIN_HANDLED
  540. }
  541. }
  542.  
  543. for(new i = 0; i <= pre_flags_count; i++)
  544. {
  545. if(get_user_flags(id) & read_flags(flags_collect[i]))
  546. {
  547. client_prefix[id] = pre_flags_collect[i]
  548.  
  549. return PLUGIN_HANDLED
  550. }
  551. }
  552. return PLUGIN_HANDLED
  553. }
  554.  
  555. stock send_message(const message[], const id, const i)
  556. {
  557. message_begin(MSG_ONE, g_saytxt, {0, 0, 0}, i)
  558. write_byte(id)
  559. write_string(message)
  560. message_end()
  561. }
  562.  
  563. bool:check_say_characters(const check_message[])
  564. {
  565. for(new i = 0; i < charsmax(forbidden_say_symbols); i++)
  566. {
  567. if(check_message[0] == forbidden_say_symbols[i])
  568. {
  569. return true
  570. }
  571. }
  572. return false
  573. }
  574.  
  575. bool:check_prefix_characters(const check_prefix[])
  576. {
  577. for(i = 0; i < charsmax(forbidden_prefixes_symbols); i++)
  578. {
  579. if(containi(check_prefix, forbidden_prefixes_symbols[i]) != -1)
  580. {
  581. return true
  582. }
  583. }
  584. return false
  585. }
  586.  
  587. bool:is_bad_prefix(const check_prefix[])
  588. {
  589. for(new i = 0; i <= bad_prefix_count; i++)
  590. {
  591. if(equali(check_prefix, bad_prefixes_collect[i]))
  592. {
  593. return true
  594. }
  595. }
  596. return false
  597. }
  598. readList()
  599. {
  600. // file to read words from
  601. new szCustomDir[64]
  602. new filename[64]
  603. get_customdir( szCustomDir, 63 )
  604. format(filename, 63, "%s/swear/swearwords.ini", szCustomDir )
  605.  
  606. if(!file_exists(filename) ){
  607. log_message("Swear Filter: file %s not found", filename)
  608. return
  609. }
  610. new iLen
  611. while( g_swearsNum < MAX_WORDS && read_file(filename, g_swearsNum ,g_swearsNames[g_swearsNum][1],30,iLen) )
  612. {
  613. if( g_swearsNames[g_swearsNum][0] == ';') continue
  614. g_swearsNames[g_swearsNum][0] = iLen
  615. ++g_swearsNum
  616. }
  617. log_message("Swear Filter: loaded %d words",g_swearsNum )
  618. }


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: JAVITÁS - Swear filter + Prefix
HozzászólásElküldve: 2013.06.11. 19:04 
Offline
Tiszteletbeli

Csatlakozott: 2010.02.04. 19:12
Hozzászólások: 3528
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 180 alkalommal
inkább így
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <nvault>
  4.  
  5. #define FLAG_LOAD ADMIN_CFG
  6. #define MAX_PREFIXES 33
  7. #define MAX_BAD_PREFIXES 100
  8.  
  9. #define MAX_WORDS 192
  10.  
  11. new g_bad_prefix, g_listen, g_listen_flag, g_custom_current, g_custom_current_flag, g_custom_others, g_custom_others_flag, g_say_characters, g_prefix_characters;
  12. new pre_ips_count = 0, pre_names_count = 0, pre_flags_count = 0, bad_prefix_count = 0, i, temp_cvar[2];
  13. new configs_dir[64], file[128], text[128], prefix[32], type[2], acc_type[32], length, line = 0, error[256];
  14. new g_saytxt, g_maxplayers, g_nvault, g_team;
  15. new g_typed[192], g_message[192], g_name[32], typed_prefix[33];
  16. new pre_ips_collect[MAX_PREFIXES][33], ips_collect[MAX_PREFIXES][32], pre_names_collect[MAX_PREFIXES][33], names_collect[MAX_PREFIXES][33], pre_flags_collect[MAX_PREFIXES][33], flags_collect[MAX_PREFIXES][2], bad_prefixes_collect[MAX_BAD_PREFIXES][33], client_prefix[33][33];
  17. new g_swearsNames[MAX_WORDS][32]
  18. new g_swearsNum
  19.  
  20. new const forbidden_say_symbols[] = {
  21. "/",
  22. "!",
  23. "%",
  24. "$"
  25. }
  26.  
  27. new const forbidden_prefixes_symbols[] = {
  28. "/",
  29. "\",
  30. "%",
  31. "$",
  32. ".",
  33. ":",
  34. "?",
  35. "!",
  36. "@",
  37. "#",
  38. "%"
  39. }
  40.  
  41. new const separator[] = "************************************************"
  42. new const in_prefix[] = "[AdminPrefixes]"
  43.  
  44. public plugin_init()
  45. {
  46. register_plugin("Admin Prefixes", "2.2", "m0skVi4a ;]")
  47.  
  48. g_bad_prefix = register_cvar("ap_bad_prefixes", "1")
  49. g_listen = register_cvar("ap_listen", "1")
  50. g_listen_flag = register_cvar("ap_listen_flag", "a")
  51. g_custom_current = register_cvar("ap_custom_current", "1")
  52. g_custom_current_flag = register_cvar("ap_custom_current_flag", "b")
  53. g_custom_others = register_cvar("ap_custom_others", "1")
  54. g_custom_others_flag = register_cvar("ap_custom_others_flag", "c")
  55. g_say_characters = register_cvar("ap_say_characters", "1")
  56. g_prefix_characters = register_cvar("ap_prefix_characters", "1")
  57.  
  58. g_saytxt = get_user_msgid ("SayText")
  59. g_maxplayers = get_maxplayers()
  60. g_nvault = nvault_open("CustomAdminPrefixes")
  61.  
  62. register_concmd("ap_reload_prefixes", "LoadPrefixes")
  63. register_concmd("ap_reload_badprefixes", "LoadBadPrefixes")
  64. register_concmd("ap_put", "SetPrefix")
  65. register_concmd("ap_put_player", "SetPlayerPrefix")
  66. register_clcmd("say", "HookSay")
  67. register_clcmd("say_team", "HookSayTeam")
  68. readList()
  69.  
  70. register_dictionary("admin_prefixes.txt")
  71.  
  72. get_configsdir(configs_dir, charsmax(configs_dir))
  73.  
  74. LoadPrefixes(0)
  75. LoadBadPrefixes(0)
  76. }
  77.  
  78. public LoadPrefixes(id)
  79. {
  80. if(!(get_user_flags(id) & FLAG_LOAD))
  81. {
  82. console_print(id, "%L", LANG_SERVER, "PREFIX_PERMISSION", in_prefix)
  83. return PLUGIN_HANDLED
  84. }
  85.  
  86. line = 0, pre_flags_count = 0, pre_ips_count = 0, pre_names_count = 0;
  87. formatex(file, charsmax(file), "%s/ap_prefixes.ini", configs_dir)
  88.  
  89. if(!file_exists(file))
  90. {
  91. formatex(error, charsmax(error), "%L", LANG_SERVER, "PREFIX_NOT_FOUND", in_prefix, file)
  92. set_fail_state(error)
  93. }
  94.  
  95. server_print(separator)
  96.  
  97. while(read_file(file, line++ , text, charsmax(text), length) && pre_flags_count <= MAX_PREFIXES)
  98. {
  99. if(!text[0] || text[0] == '^n' || text[0] == ';')
  100. continue
  101.  
  102. parse(text, type, charsmax(type), prefix, charsmax(prefix), acc_type, charsmax(acc_type))
  103. trim(prefix)
  104.  
  105. if(!type[0] || !prefix[0] || !acc_type[0])
  106. continue
  107.  
  108. replace_all(prefix, charsmax(prefix), "!g", "^x04")
  109. replace_all(prefix, charsmax(prefix), "!t", "^x03")
  110. replace_all(prefix, charsmax(prefix), "!n", "^x01")
  111.  
  112. switch(type[0])
  113. {
  114. case 'i':
  115. {
  116. pre_ips_count++
  117. pre_ips_collect[pre_ips_count] = prefix
  118. ips_collect[pre_ips_count] = acc_type
  119. server_print("%L", LANG_SERVER, "PREFIX_LOAD_IP", in_prefix, prefix, acc_type)
  120. }
  121. case 'n':
  122. {
  123. pre_names_count++
  124. pre_names_collect[pre_names_count] = prefix
  125. names_collect[pre_names_count] = acc_type
  126. server_print("%L", LANG_SERVER, "PREFIX_LOAD_NAME", in_prefix, prefix, acc_type)
  127. }
  128. case 'f':
  129. {
  130. pre_flags_count++
  131. pre_flags_collect[pre_flags_count] = prefix
  132. flags_collect[pre_flags_count][0] = acc_type[0]
  133. server_print("%L", LANG_SERVER, "PREFIX_LOAD_FLAG", in_prefix, prefix, acc_type[0])
  134. }
  135. default:
  136. {
  137. continue
  138. }
  139. }
  140. }
  141.  
  142. if(pre_flags_count <= 0 && pre_ips_count <= 0 && pre_names_count <= 0)
  143. {
  144. server_print("%L", LANG_SERVER, "PREFIX_NO", in_prefix)
  145. }
  146.  
  147. get_user_name(id, g_name, charsmax(g_name))
  148. server_print("%L", LANG_SERVER, "PREFIX_LOADED_BY", in_prefix, g_name)
  149. console_print(id, "%L", LANG_SERVER, "PREFIX_LOADED", in_prefix)
  150.  
  151. server_print(separator)
  152.  
  153. for(new i = 1; i <= g_maxplayers; i++)
  154. {
  155. client_prefix[id] = ""
  156. CheckNvaultPrefix(i)
  157. }
  158.  
  159. return PLUGIN_HANDLED
  160. }
  161.  
  162. public LoadBadPrefixes(id)
  163. {
  164. if(!get_pcvar_num(g_bad_prefix))
  165. {
  166. console_print(id, "%L", LANG_SERVER, "BADP_OFF", in_prefix)
  167. return PLUGIN_HANDLED
  168. }
  169.  
  170. if(!(get_user_flags(id) & FLAG_LOAD))
  171. {
  172. console_print(id, "%L", LANG_SERVER, "BADP_PERMISSION", in_prefix)
  173. return PLUGIN_HANDLED
  174. }
  175.  
  176. line = 0, bad_prefix_count = 0;
  177.  
  178. formatex(file, charsmax(file), "%s/ap_bad_prefixes.ini", configs_dir)
  179.  
  180. if(!file_exists(file))
  181. {
  182. console_print(id, "%L", LANG_SERVER, "BADP_NOT_FOUND", in_prefix, file)
  183. return PLUGIN_HANDLED
  184. }
  185.  
  186.  
  187. server_print(separator)
  188.  
  189. while(read_file(file, line++ , text, charsmax(text), length) && bad_prefix_count <= MAX_BAD_PREFIXES)
  190. {
  191. if(!text[0] || text[0] == '^n' || text[0] == ';')
  192. continue
  193.  
  194. parse(text, prefix, charsmax(prefix))
  195.  
  196. if(!prefix[0])
  197. continue
  198.  
  199. bad_prefix_count++
  200. bad_prefixes_collect[bad_prefix_count] = prefix
  201. server_print("%L", LANG_SERVER, "BADP_LOAD", in_prefix, prefix)
  202. }
  203.  
  204. if(bad_prefix_count <= 0)
  205. {
  206. server_print("%L", LANG_SERVER, "BADP_LOAD", in_prefix)
  207. }
  208.  
  209. get_user_name(id, g_name, charsmax(g_name))
  210. server_print("%L", LANG_SERVER, "BADP_LOADED_BY", in_prefix, g_name)
  211. console_print(id, "%L", LANG_SERVER, "BADP_LOADED", in_prefix)
  212.  
  213. server_print(separator)
  214.  
  215. for(new i = 1; i <= g_maxplayers; i++)
  216. {
  217. CheckNvaultPrefix(i)
  218. }
  219.  
  220. return PLUGIN_HANDLED
  221. }
  222.  
  223. public client_putinserver(id)
  224. {
  225. client_prefix[id] = ""
  226. CheckNvaultPrefix(id)
  227. }
  228.  
  229. public HookSay(id)
  230. {
  231. new szSaid[192]
  232. read_args(szSaid,191)
  233. new bool:found = false
  234.  
  235. new name[32],ip[32]
  236. get_user_name(id,name,31)
  237. get_user_ip(id,ip,31)
  238.  
  239. new pos, i = 0
  240. while ( i < g_swearsNum )
  241. {
  242. if ( (pos = containi(szSaid,g_swearsNames[i][1])) != -1 ){
  243. new len = g_swearsNames[i][0]
  244. while(len--)
  245. szSaid[pos++] = '*'
  246. log_amx("%s (%s) karomkodas",name,ip)
  247. found = true
  248. continue
  249. }
  250. ++i
  251. }
  252. if ( found ){
  253. new cmd[32]
  254. read_argv(0,cmd,31)
  255. engclient_cmd(id,cmd,szSaid)
  256. return PLUGIN_HANDLED_MAIN
  257. }
  258.  
  259. read_args(g_typed, charsmax(g_typed))
  260. remove_quotes(g_typed)
  261.  
  262. if(equal(g_typed, "") || !is_user_connected(id))
  263. return PLUGIN_HANDLED_MAIN
  264.  
  265. if((client_prefix[id][0] && get_pcvar_num(g_say_characters) == 1) || (!client_prefix[id][0] && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
  266. {
  267. if(check_say_characters(g_typed))
  268. return PLUGIN_HANDLED_MAIN
  269. }
  270.  
  271. get_user_name(id, g_name, charsmax(g_name))
  272.  
  273. g_team = get_user_team(id)
  274.  
  275. new const team_info[2][][] = {
  276. {"*SPEC* ", "*DEAD* ", "*DEAD* ", "*SPEC* "},
  277. {"", "", "", ""}
  278. }
  279.  
  280. if(client_prefix[id][0])
  281. {
  282. formatex(g_message, charsmax(g_message), "^1%s^4%s^3 %s :^4 %s", team_info[is_user_alive(id)][g_team], client_prefix[id], g_name, g_typed)
  283. }
  284. else
  285. {
  286. formatex(g_message, charsmax(g_message), "^1%s^3%s :^1 %s", team_info[is_user_alive(id)][g_team], g_name, g_typed)
  287. }
  288.  
  289. get_pcvar_string(g_listen_flag, temp_cvar, charsmax(temp_cvar))
  290.  
  291. for(new i = 1; i <= g_maxplayers; i++)
  292. {
  293. if(!is_user_connected(i))
  294. continue
  295.  
  296. 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))
  297. {
  298. send_message(g_message, id, i)
  299. }
  300. }
  301.  
  302. return PLUGIN_HANDLED_MAIN
  303. }
  304.  
  305. public HookSayTeam(id)
  306. {
  307. new szSaid[192]
  308. read_args(szSaid,191)
  309. new bool:found = false
  310.  
  311. new name[32],ip[32]
  312. get_user_name(id,name,31)
  313. get_user_ip(id,ip,31)
  314.  
  315. new pos, i = 0
  316. while ( i < g_swearsNum )
  317. {
  318. if ( (pos = containi(szSaid,g_swearsNames[i][1])) != -1 ){
  319. new len = g_swearsNames[i][0]
  320. while(len--)
  321. szSaid[pos++] = '*'
  322. log_amx("%s (%s) karomkodas",name,ip)
  323. found = true
  324. continue
  325. }
  326. ++i
  327. }
  328. if ( found ){
  329. new cmd[32]
  330. read_argv(0,cmd,31)
  331. engclient_cmd(id,cmd,szSaid)
  332. return PLUGIN_HANDLED_MAIN
  333. }
  334.  
  335. read_args(g_typed, charsmax(g_typed))
  336. remove_quotes(g_typed)
  337.  
  338. if(equal(g_typed, "") || !is_user_connected(id))
  339. return PLUGIN_HANDLED_MAIN
  340.  
  341. if((client_prefix[id][0] && get_pcvar_num(g_say_characters) == 1) || (!client_prefix[id][0] && get_pcvar_num(g_say_characters) == 2) || get_pcvar_num(g_say_characters) == 3)
  342. {
  343. if(check_say_characters(g_typed))
  344. return PLUGIN_HANDLED_MAIN
  345. }
  346.  
  347. get_user_name(id, g_name, charsmax(g_name))
  348.  
  349. g_team = get_user_team(id)
  350.  
  351. new const team_info[2][][] = {
  352. {"(Spectator) ", "*DEAD*(Terrorist) ", "*DEAD*(Counter-Terrorist) ", "(Spectator) "},
  353. {"(Spectator) ", "(Terrorist) ", "(Counter-Terrorist) ", "(Spectator) "}
  354. }
  355.  
  356. if(client_prefix[id][0])
  357. {
  358. formatex(g_message, charsmax(g_message), "^1%s^4%s^3 %s :^4 %s", team_info[is_user_alive(id)][g_team], client_prefix[id], g_name, g_typed)
  359. }
  360. else
  361. {
  362. formatex(g_message, charsmax(g_message), "^1%s^3%s :^1 %s", team_info[is_user_alive(id)][g_team], g_name, g_typed)
  363. }
  364.  
  365. get_pcvar_string(g_listen_flag, temp_cvar, charsmax(temp_cvar))
  366.  
  367. for(new i = 1; i <= g_maxplayers; i++)
  368. {
  369. if(!is_user_connected(i))
  370. continue
  371.  
  372. if(get_user_team(id) == get_user_team(i) || get_pcvar_num(g_listen) && get_user_flags(i) & read_flags(temp_cvar))
  373. {
  374. 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))
  375. {
  376. send_message(g_message, id, i)
  377. }
  378. }
  379. }
  380.  
  381. return PLUGIN_HANDLED_MAIN
  382. }
  383.  
  384. public SetPrefix(id)
  385. {
  386. if(!get_pcvar_num(g_custom_current) || !get_pcvar_string(g_custom_current_flag, temp_cvar, charsmax(temp_cvar)))
  387. {
  388. console_print(id, "%L", LANG_SERVER, "CUSTOM_OFF", in_prefix)
  389. return PLUGIN_HANDLED
  390. }
  391.  
  392. if(!(get_user_flags(id) & read_flags(temp_cvar)))
  393. {
  394. console_print(id, "%L", LANG_SERVER, "CUSTOM_PERMISSION", in_prefix)
  395. return PLUGIN_HANDLED
  396. }
  397.  
  398. read_args(typed_prefix, charsmax(typed_prefix))
  399. remove_quotes(typed_prefix)
  400. trim(typed_prefix)
  401.  
  402. if(get_pcvar_num(g_bad_prefix) && is_bad_prefix(typed_prefix))
  403. {
  404. console_print(id, "%L", LANG_SERVER, "CUSTOM_FORBIDDEN", in_prefix, typed_prefix)
  405. return PLUGIN_HANDLED
  406. }
  407.  
  408. if(get_pcvar_num(g_prefix_characters) && check_prefix_characters(typed_prefix))
  409. {
  410. console_print(id, "%L", LANG_SERVER, "CUSTOM_SYMBOL", in_prefix, typed_prefix, forbidden_prefixes_symbols[i])
  411. return PLUGIN_HANDLED
  412. }
  413.  
  414. get_user_name(id, g_name, charsmax(g_name))
  415.  
  416. if(equal(typed_prefix, ""))
  417. {
  418. nvault_remove(g_nvault, g_name)
  419. console_print(id, "%L", LANG_SERVER, "CUSTOM_REMOVE", in_prefix)
  420. server_print("%L", LANG_SERVER, "CUSTOM_REMOVE_INFO", in_prefix, g_name)
  421. PutPrefix(id)
  422.  
  423. return PLUGIN_HANDLED
  424. }
  425.  
  426. nvault_set(g_nvault, g_name, typed_prefix)
  427.  
  428. client_prefix[id] = typed_prefix
  429.  
  430. console_print(id, "%L", LANG_SERVER, "CUSTOM_CHANGE", in_prefix, typed_prefix)
  431. server_print("%L", LANG_SERVER, "CUSTOM_CHANGE_INFO", in_prefix, g_name, typed_prefix)
  432.  
  433. return PLUGIN_HANDLED
  434. }
  435.  
  436. public SetPlayerPrefix(id)
  437. {
  438. if(!get_pcvar_num(g_custom_current) || !get_pcvar_string(g_custom_current_flag, temp_cvar, charsmax(temp_cvar)) || !get_pcvar_num(g_custom_others) || !get_pcvar_string(g_custom_others_flag, temp_cvar, charsmax(temp_cvar)))
  439. {
  440. console_print(id, "%L", LANG_SERVER, "CO_OFF", in_prefix)
  441. return PLUGIN_HANDLED
  442. }
  443.  
  444. if(!(get_user_flags(id) & read_flags(temp_cvar)))
  445. {
  446. console_print(id, "%L", LANG_SERVER, "CO_FORBIDDEN", in_prefix)
  447. return PLUGIN_HANDLED
  448. }
  449.  
  450. new name_tag[64], typed_name[32];
  451.  
  452. read_args(name_tag, charsmax(name_tag))
  453. remove_quotes(name_tag)
  454. parse(name_tag, typed_name, charsmax(typed_name), typed_prefix, charsmax(typed_prefix))
  455. trim(typed_prefix)
  456.  
  457. if(get_pcvar_num(g_bad_prefix) && is_bad_prefix(typed_prefix))
  458. {
  459. console_print(id, "%L", LANG_SERVER, "CUSTOM_FORBIDDEN", in_prefix, typed_prefix)
  460. return PLUGIN_HANDLED
  461. }
  462.  
  463. if(get_pcvar_num(g_prefix_characters) && check_prefix_characters(typed_prefix))
  464. {
  465. console_print(id, "%L", LANG_SERVER, "CUSTOM_SYMBOL", in_prefix, typed_prefix, forbidden_prefixes_symbols[i])
  466. return PLUGIN_HANDLED
  467. }
  468.  
  469. get_user_name(id, g_name, charsmax(g_name))
  470.  
  471. new target = cmd_target(id, typed_name, 1)
  472.  
  473. if(!target)
  474. return PLUGIN_HANDLED
  475.  
  476. if(equal(typed_prefix, ""))
  477. {
  478. nvault_remove(g_nvault, typed_name)
  479. console_print(id, "%L", LANG_SERVER, "CO_REMOVE", in_prefix, typed_name)
  480. server_print("%L", LANG_SERVER, "CO_REMOVE_INFO", in_prefix, g_name, typed_name)
  481. PutPrefix(target)
  482.  
  483. return PLUGIN_HANDLED
  484. }
  485.  
  486. nvault_set(g_nvault, typed_name, typed_prefix)
  487.  
  488. client_prefix[id] = typed_prefix
  489.  
  490. console_print(id, "%L", LANG_SERVER, "CO_CHANGE", in_prefix, typed_name, typed_prefix)
  491. server_print("%L", LANG_SERVER, "CO_CHANGE_INFO", in_prefix, g_name, typed_name, typed_prefix)
  492.  
  493. return PLUGIN_HANDLED
  494. }
  495.  
  496. public client_infochanged(id)
  497. {
  498. if(!is_user_connected(id))
  499. return PLUGIN_CONTINUE
  500.  
  501. new g_old_name[32];
  502.  
  503. get_user_info(id, "name", g_name, charsmax(g_name))
  504. get_user_name(id, g_old_name, charsmax(g_old_name))
  505.  
  506. if(!equal(g_name, g_old_name))
  507. {
  508. client_prefix[id] = ""
  509. set_task(0.5, "CheckNvaultPrefix", id)
  510. return PLUGIN_HANDLED
  511. }
  512.  
  513. return PLUGIN_CONTINUE
  514. }
  515.  
  516. public CheckNvaultPrefix(const id)
  517. {
  518. new nvault_prefix[33];
  519. get_user_name(id, g_name, charsmax(g_name))
  520. get_pcvar_string(g_custom_current_flag, temp_cvar, charsmax(temp_cvar))
  521.  
  522. new data = nvault_get(g_nvault, g_name, nvault_prefix, charsmax(nvault_prefix))
  523.  
  524. if(data && get_pcvar_num(g_custom_current) && get_user_flags(id) & read_flags(temp_cvar))
  525. {
  526. if((get_pcvar_num(g_bad_prefix) && is_bad_prefix(nvault_prefix)) || (get_pcvar_num(g_prefix_characters) && check_prefix_characters(nvault_prefix)))
  527. {
  528. PutPrefix(id)
  529. return PLUGIN_HANDLED
  530. }
  531. client_prefix[id] = nvault_prefix
  532. return PLUGIN_HANDLED
  533. }
  534. else
  535. {
  536. PutPrefix(id)
  537. return PLUGIN_HANDLED
  538. }
  539. return PLUGIN_HANDLED
  540. }
  541.  
  542. stock PutPrefix(const id)
  543. {
  544. new temp_ip[16];
  545.  
  546. get_user_ip(id, temp_ip, charsmax(temp_ip), 1)
  547.  
  548. for(new i = 0; i <= pre_ips_count; i++)
  549. {
  550. if(equal(temp_ip, ips_collect[i]))
  551. {
  552. client_prefix[id] = pre_ips_collect[i]
  553.  
  554. return PLUGIN_HANDLED
  555. }
  556. }
  557.  
  558. get_user_name(id, g_name, charsmax(g_name))
  559.  
  560. for(new i = 0; i <= pre_names_count; i++)
  561. {
  562. if(equal(g_name, names_collect[i]))
  563. {
  564. client_prefix[id] = pre_names_collect[i]
  565.  
  566. return PLUGIN_HANDLED
  567. }
  568. }
  569.  
  570. for(new i = 0; i <= pre_flags_count; i++)
  571. {
  572. if(get_user_flags(id) & read_flags(flags_collect[i]))
  573. {
  574. client_prefix[id] = pre_flags_collect[i]
  575.  
  576. return PLUGIN_HANDLED
  577. }
  578. }
  579. return PLUGIN_HANDLED
  580. }
  581.  
  582. stock send_message(const message[], const id, const i)
  583. {
  584. message_begin(MSG_ONE, g_saytxt, {0, 0, 0}, i)
  585. write_byte(id)
  586. write_string(message)
  587. message_end()
  588. }
  589.  
  590. bool:check_say_characters(const check_message[])
  591. {
  592. for(new i = 0; i < charsmax(forbidden_say_symbols); i++)
  593. {
  594. if(check_message[0] == forbidden_say_symbols[i])
  595. {
  596. return true
  597. }
  598. }
  599. return false
  600. }
  601.  
  602. bool:check_prefix_characters(const check_prefix[])
  603. {
  604. for(i = 0; i < charsmax(forbidden_prefixes_symbols); i++)
  605. {
  606. if(containi(check_prefix, forbidden_prefixes_symbols[i]) != -1)
  607. {
  608. return true
  609. }
  610. }
  611. return false
  612. }
  613.  
  614. bool:is_bad_prefix(const check_prefix[])
  615. {
  616. for(new i = 0; i <= bad_prefix_count; i++)
  617. {
  618. if(equali(check_prefix, bad_prefixes_collect[i]))
  619. {
  620. return true
  621. }
  622. }
  623. return false
  624. }
  625. readList()
  626. {
  627. // file to read words from
  628. new szCustomDir[64]
  629. new filename[64]
  630. get_customdir( szCustomDir, 63 )
  631. format(filename, 63, "%s/swear/swearwords.ini", szCustomDir )
  632.  
  633. if(!file_exists(filename) ){
  634. log_message("Swear Filter: file %s not found", filename)
  635. return
  636. }
  637. new iLen
  638. while( g_swearsNum < MAX_WORDS && read_file(filename, g_swearsNum ,g_swearsNames[g_swearsNum][1],30,iLen) )
  639. {
  640. if( g_swearsNames[g_swearsNum][0] == ';') continue
  641. g_swearsNames[g_swearsNum][0] = iLen
  642. ++g_swearsNum
  643. }
  644. log_message("Swear Filter: loaded %d words",g_swearsNum )
  645. }
  646.  
  647.  
  648.  

_________________
http://www.ebateam.eu/


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  [ 13 hozzászólás ]  Oldal 1 2 Következő


Ki van itt

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