hlmod.hu

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



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: Google [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  [ 7 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: AdminPrefixes allchat-el
HozzászólásElküldve: 2014.03.08. 20:07 
Offline
Jómunkásember
Avatar

Csatlakozott: 2014.01.11. 22:53
Hozzászólások: 379
Megköszönt másnak: 75 alkalommal
Megköszönték neki: 8 alkalommal
Üdv.Már régóta használom AdminPrefixes nevű plugint csak abba zavar ,hogy csak adminnak van allchat
Azaz az admin mindent lát ha él és akkor is ha meghalt.
Ezt sima játékosnak is kéne.
Köszönöm.

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AdminPrefixes allchat-el
HozzászólásElküldve: 2014.03.08. 22:40 
Offline
Beavatott
Avatar

Csatlakozott: 2014.02.07. 14:01
Hozzászólások: 71
Megköszönt másnak: 14 alkalommal
Megköszönték neki: 3 alkalommal
Szia!

amxx.cfg be sv_allchat 2 és fognak mindent látni! (szerintem kompatibilis adminprefixesel is)


Allchat

Ők köszönték meg Riley nek ezt a hozzászólást: titkos (2014.03.10. 16:36)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AdminPrefixes allchat-el
HozzászólásElküldve: 2014.03.10. 17:48 
Offline
Jómunkásember
Avatar

Csatlakozott: 2014.01.11. 22:53
Hozzászólások: 379
Megköszönt másnak: 75 alkalommal
Megköszönték neki: 8 alkalommal
Riley írta:
Szia!

amxx.cfg be sv_allchat 2 és fognak mindent látni! (szerintem kompatibilis adminprefixesel is)


Allchat

Nem jó :(

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AdminPrefixes allchat-el
HozzászólásElküldve: 2014.03.10. 17:50 
Offline
Beavatott
Avatar

Csatlakozott: 2014.02.07. 14:01
Hozzászólások: 71
Megköszönt másnak: 14 alkalommal
Megköszönték neki: 3 alkalommal
Nem jó? Hm..Akkor várj keresek másikat.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AdminPrefixes allchat-el
HozzászólásElküldve: 2014.03.11. 07:58 
Offline
Őskövület
Avatar

Csatlakozott: 2012.02.27. 09:42
Hozzászólások: 2588
Megköszönt másnak: 25 alkalommal
Megköszönték neki: 418 alkalommal
teljesen felesleges másik pluginnal megoldani adj 1 forráskódot és átlehet írni...

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AdminPrefixes allchat-el
HozzászólásElküldve: 2014.03.12. 17:23 
Offline
Jómunkásember
Avatar

Csatlakozott: 2014.01.11. 22:53
Hozzászólások: 379
Megköszönt másnak: 75 alkalommal
Megköszönték neki: 8 alkalommal
crazyboy írta:
teljesen felesleges másik pluginnal megoldani adj 1 forráskódot és átlehet írni...

amxx ben van :( de a neve AdminPrefixes

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AdminPrefixes allchat-el
HozzászólásElküldve: 2014.03.12. 17:32 
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
Itt van

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

Ők köszönték meg Tomos nek ezt a hozzászólást: titkos (2014.03.12. 17:38)
  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  [ 7 hozzászólás ] 


Ki van itt

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