Advertisement
Guest User

Untitled

a guest
Jan 17th, 2020
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.75 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fakemeta>
  4. #include <engine>
  5. #include <fun>
  6. #include <hamsandwich>
  7. #include <zombie_plague_special>
  8. #include <engine>
  9. #include <cromchat>
  10.  
  11. ////////// PLUGIN SETTINGS //////////
  12. #define MODE 3
  13. #define CHAT_PREFIX "[GOLDMEMBER]"
  14.  
  15. // (Only if MODE 1 is turrned OFF. Otherwise set flags in vips.ini.) //
  16. #define VIPACCES ADMIN_LEVEL_H
  17. #define MJACCES ADMIN_LEVEL_H
  18. ////////// SETTINGS END //////////
  19.  
  20. // Flags
  21. #define FLAG_A (1<<0)
  22. #define FLAG_B (1<<1)
  23. #define FLAG_C (1<<2)
  24. #define FLAG_D (1<<3)
  25. #define FLAG_E (1<<4)
  26. #define FLAG_K (1<<10)
  27.  
  28. #define VERSION "1.7.2"
  29. #define TASK_EXP 32
  30.  
  31. #if cellbits == 32
  32. const OFFSET_CLIPAMMO = 51
  33. #else
  34. const OFFSET_CLIPAMMO = 65
  35. #endif
  36. const OFFSET_LINUX_WEAPONS = 4
  37.  
  38. const DMG_HEGRENADE = (1<<24)
  39.  
  40. #define set_flood(%1,%2) (%1 |= (1<<(%2&31)))
  41. #define clear_flood(%1,%2) (%1 &= ~(1<<(%2&31)))
  42. #define get_flood(%1,%2) (%1 & (1<<(%2&31)))
  43.  
  44. #if MODE & (1<<0) || MODE & (1<<1)
  45. new amx_password_field_string[30]
  46. #endif
  47. #if MODE & (1<<0)
  48. new g_user_privileges[33]
  49. enum _:database_items
  50. {
  51. auth[50],
  52. password[50],
  53. accessflags,
  54. flags
  55. }
  56. new vips_database[database_items]
  57. new Array:database_holder
  58. new g_hour_flags
  59. new g_hour
  60. #endif
  61. #if MODE & (1<<1)
  62. const ZV_PLUGIN_HANDLED = 97
  63. enum _:items
  64. {
  65. i_name[31],
  66. i_description[31],
  67. i_cost,
  68. i_team
  69. }
  70. new g_register_in_zp_extra
  71. new g_zp_extra_item_number
  72. new g_nonvip_tease
  73. new g_menu_close
  74. new extra_items[items]
  75. new Array:items_database
  76. new g_registered_items_count
  77. new g_forward_return
  78. new g_extra_item_selected
  79. new g_team[33]
  80. #endif
  81. #if MODE == 3
  82. new g_vip_buy_time
  83. new g_vip_cost_ammo
  84. new g_vip_buy_flags
  85. #endif
  86. new const MAXCLIP[] = { -1, 13, -1, 10, 1, 7, -1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 }
  87. static const CONTACT[] = ""
  88. new g_jumps, g_allow_jump, g_armor, g_killammo, g_infectammo, g_infecthealth, g_nemhealth, g_show_vips,
  89. g_unlimited_clip, g_fall_damage, g_damage_reward, g_damage_increase, g_happy_hour, g_happy_hour_frag, g_happy_hour_ammo
  90. new happy_hour_on
  91. new g_bit
  92. new chache_g_jumps
  93. new maxplayers, g_msgSayText
  94. new jumpnum[33]
  95. new bool:dojump[33]
  96. new Float:g_damage[33]
  97.  
  98. public plugin_init() {
  99.  
  100. register_plugin("ZM VIP", VERSION, "aaarnas")
  101. RegisterHam(Ham_Spawn, "player", "FwdHamPlayerSpawnPost", 1)
  102. RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_Post", 1)
  103. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  104. register_event("ResetHUD", "HUDReset", "be")
  105. register_event("HLTV", "chache_cvars", "a", "1=0", "2=0")
  106.  
  107. maxplayers = get_maxplayers()
  108. g_msgSayText = get_user_msgid("SayText")
  109.  
  110. register_message(get_user_msgid("CurWeapon"), "message_cur_weapon")
  111.  
  112. g_jumps = register_cvar("zp_vip_jumps", "4")
  113. g_allow_jump = register_cvar("zp_vip_allow_jump", "abcd")
  114. g_armor = register_cvar("zp_vip_armor", "100")
  115. g_killammo = register_cvar("zp_vip_killammo", "6")
  116. g_infectammo = register_cvar("zp_vip_infectammo", "6")
  117. g_infecthealth = register_cvar("zp_vip_infecthealth", "500")
  118. g_nemhealth = register_cvar("zp_vip_nemextra", "1")
  119. g_show_vips = register_cvar("zp_vip_show", "1")
  120. g_unlimited_clip = register_cvar("zp_vip_unlimited_ammo", "0")
  121. g_fall_damage = register_cvar("zp_vip_no_fall_damage", "1")
  122. g_damage_reward = register_cvar("zp_vip_damage_reward", "150")
  123. g_damage_increase = register_cvar("zp_vip_damage_increase", "1.2")
  124. g_happy_hour = register_cvar("zp_vip_happy_hour", "off")
  125. g_happy_hour_frag = register_cvar("zp_vip_happy_hour_frag", "1")
  126. g_happy_hour_ammo = register_cvar("zp_vip_happy_hour_ammo", "1")
  127. register_cvar("amx_contactinfo", CONTACT, FCVAR_SERVER)
  128. register_cvar("zp_vip_version", VERSION, FCVAR_SERVER|FCVAR_SPONLY)
  129. set_cvar_string("zp_vip_version", VERSION)
  130.  
  131. #if MODE & (1<<0) || MODE & (1<<1)
  132. get_cvar_string("amx_password_field", amx_password_field_string, charsmax(amx_password_field_string))
  133. register_dictionary("zm_vipz.txt")
  134.  
  135. #endif
  136. #if MODE & (1<<0) && MODE & (1<<1)
  137. g_vip_cost_ammo = register_cvar("zp_vip_cost_ammo", "999999999")
  138. g_vip_buy_time = register_cvar("zp_vip_buy_time", "1")
  139. g_vip_buy_flags = register_cvar("zp_vip_buy_flags", "abcd")
  140. set_task(5.0,"check_date",0)
  141. #endif
  142. #if MODE & (1<<0)
  143. register_concmd("amx_reloadvips", "reload_vips", ADMIN_CFG)
  144. g_hour = register_cvar("zp_vip_hour", "off")
  145. g_hour_flags = register_cvar("zp_vip_hour_flags", "abe")
  146. reload_vips()
  147. #endif
  148. #if MODE & (1<<1)
  149. register_clcmd("say /vm", "menu_open")
  150. g_nonvip_tease = register_cvar("zp_vip_nonvip_tease", "1")
  151. g_register_in_zp_extra = register_cvar("zp_vip_register_in_zp_extra", "1")
  152. g_menu_close = register_cvar("zp_vip_menu_close", "1")
  153.  
  154. new temp[31]
  155. formatex(temp, 30, "%L", LANG_SERVER, "VIP_EXTRA_NAME")
  156. if(get_pcvar_num(g_register_in_zp_extra)) g_zp_extra_item_number = zp_register_extra_item(temp, 0, 0)
  157. g_extra_item_selected = CreateMultiForward("zv_extra_item_selected", ET_CONTINUE, FP_CELL, FP_CELL)
  158. #endif
  159. register_clcmd("say /vips", "print_adminlist")
  160. register_clcmd("say /vip", "ShowMotd")
  161. register_clcmd("say /gold", "print_adminlist")
  162. register_clcmd("say /avantaje", "ShowMotd")
  163. }
  164. public plugin_cfg()
  165. {
  166. new directory[31]
  167. get_configsdir(directory, 30)
  168. server_cmd("exec %s/zm_vip.cfg", directory)
  169. }
  170.  
  171. public chache_cvars() {
  172.  
  173. static string[5]
  174. get_pcvar_string(g_allow_jump, string, charsmax(string))
  175. g_bit = read_flags(string)
  176. chache_g_jumps = get_pcvar_num(g_jumps)
  177.  
  178. static hours[6], hour1s[3], hour2s[3], hour1, hour2, h, m, s
  179. get_pcvar_string(g_happy_hour, hours, charsmax(hours))
  180.  
  181. if(equal(hours, "off")) {happy_hour_on = false; return; }
  182.  
  183. strtok(hours, hour1s, charsmax(hour1s), hour2s, charsmax(hour2s), '-')
  184. hour1 = str_to_num(hour1s)
  185. hour2 = str_to_num(hour2s)
  186.  
  187. time(h, m, s)
  188. if(hour1 <= h <= hour2) happy_hour_on = true
  189. else happy_hour_on = false
  190. }
  191. #if MODE & (1<<1) || MODE & (1<<0)
  192. public plugin_natives() {
  193. #if MODE & (1<<1)
  194. register_native("zv_register_extra_item", "native_zv_register_extra_item", 1)
  195. #endif
  196. #if MODE & (1<<0)
  197. register_native("zv_get_user_flags", "native_zv_get_user_flags", 1)
  198.  
  199. #endif
  200. }
  201. #endif
  202.  
  203. public FwdHamPlayerSpawnPost(id) {
  204.  
  205. if(!is_user_alive(id)) return HAM_IGNORED;
  206. #if MODE & (1<<0)
  207. if(!(g_user_privileges[id] & FLAG_A))
  208. #else
  209. if(!(get_user_flags(id) & VIPACCES))
  210. #endif
  211. return PLUGIN_HANDLED;
  212.  
  213. if(pev(id, pev_armorvalue) < get_pcvar_num(g_armor))
  214. set_pev(id, pev_armorvalue, float(get_pcvar_num(g_armor)))
  215. return HAM_IGNORED;
  216. }
  217.  
  218. public fw_PlayerKilled_Post(victim, attacker) {
  219. #if MODE & (1<<0)
  220. if(1 <= attacker <= maxplayers && g_user_privileges[attacker] & FLAG_A) {
  221. #else
  222. if(1 <= attacker <= maxplayers && get_user_flags(attacker) & VIPACCES) {
  223. #endif
  224. if(is_user_alive(attacker) && zp_get_user_zombie(attacker) && !(zp_get_user_nemesis(attacker) && get_pcvar_num(g_nemhealth))) set_user_health(attacker, (get_user_health(attacker) + get_pcvar_num(g_infecthealth)))
  225. zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + get_pcvar_num(g_killammo))
  226.  
  227. if(happy_hour_on) {
  228.  
  229. static frag, ammo
  230. frag = get_pcvar_num(g_happy_hour_frag)
  231. ammo = get_pcvar_num(g_happy_hour_ammo)
  232.  
  233. if(frag) set_user_frags(attacker, get_user_frags(attacker)+frag)
  234. if(ammo) zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker)+ammo)
  235. }
  236.  
  237. }
  238. }
  239.  
  240. public client_putinserver(id)
  241. {
  242.  
  243. new holder[20], holder1[20], client_password[20], holder2[20]
  244. new y, m ,d
  245. static nume[32]
  246. //nume = get_user_name(id)
  247. get_user_name(id, nume, 31)
  248. get_user_info(id, amx_password_field_string, client_password, charsmax(client_password))
  249. date(y, m, d)
  250. format(holder, charsmax(holder), "m%dd%dy%d", m, d, y)
  251. format(holder1, charsmax(holder1), "%s", client_password)
  252. format(holder2, charsmax(holder2), "slot")
  253.  
  254. new configdir[200]
  255. get_configsdir(configdir,199)
  256.  
  257. new configfile1[200]
  258.  
  259. format(configfile1,199,"%s/vips.ini",configdir)
  260.  
  261. new text[512], len
  262. new pnum = file_size(configfile1,1)
  263. for(new i = 1; i < pnum; i++)
  264. {
  265. read_file(configfile1, i, text, 511, len)
  266. if ( contain(text, holder1) != -1 )
  267. {
  268. new szDate[32], szNum[6], parm[5]
  269. parse(text, "", 0, "", 0, "", 0, "", 0, szDate, charsmax(szDate))
  270.  
  271. formatex(szNum, 2, "%c%c", szDate[0], szDate[1])
  272. new day = str_to_num(szNum)
  273. formatex(szNum, 2, "%c%c", szDate[2], szDate[3])
  274. new month = str_to_num(szNum)
  275. formatex(szNum, 4, "%c%c%c%c", szDate[4], szDate[5], szDate[6], szDate[7])
  276. new year = str_to_num(szNum)
  277. parm[0] = day
  278. parm[1] = month
  279. parm[2] = year
  280. parm[3] = id
  281. set_task(15.0, "print_exp", TASK_EXP + id, parm, 5)
  282. server_print("Data: %d/%d/%d", month, day, year);
  283.  
  284. //CC_SendMessage(id, "&x04Data Expirarii: &x01%s");
  285. }
  286.  
  287. }
  288. //set_task(1.0,"adminsonline", id, _, _, "b")
  289. return PLUGIN_HANDLED
  290.  
  291.  
  292. }
  293.  
  294. public print_exp(parm[5])
  295. {
  296.  
  297. new day = parm[0]
  298. new month = parm[1]
  299. new year = parm[2]
  300. new id = parm[3]
  301. if ( is_user_connected(id) )
  302. CC_SendMessage(id, "&x01[ZP] &x04Gold Membrul Tau Expira Pe Data De: &x01%i/%i/%i", month, day, year);
  303. }
  304.  
  305.  
  306. DeleteLine( const szFilename[ ], const iLine )
  307. {
  308. new iFile = fopen( szFilename, "rt" );
  309. if( !iFile )
  310. {
  311. return;
  312. }
  313. static const szTempFilename[ ] = "delete_line.txt";
  314. new iTempFile = fopen( szTempFilename, "wt" );
  315.  
  316. new szData[ 256 ], iLineCount, bool:bReplaced = false;
  317. while( !feof( iFile ) )
  318. {
  319. fgets( iFile, szData, 255 );
  320.  
  321. if( iLineCount++ == iLine )
  322. {
  323. bReplaced = true;
  324. }
  325. else
  326. {
  327. fputs( iTempFile, szData );
  328. }
  329. }
  330.  
  331. fclose( iFile );
  332. fclose( iTempFile );
  333.  
  334. if( bReplaced )
  335. {
  336. delete_file( szFilename );
  337.  
  338. while( !rename_file( szTempFilename, szFilename, 1 ) ) { }
  339. }
  340. else
  341. {
  342. delete_file( szTempFilename );
  343. }
  344. }
  345.  
  346.  
  347.  
  348. public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type) {
  349.  
  350. if(victim == attacker)
  351. return HAM_IGNORED
  352.  
  353. if(damage_type & DMG_HEGRENADE)
  354. return HAM_IGNORED
  355.  
  356. #if MODE & (1<<0)
  357. if(g_user_privileges[victim] & FLAG_A) {
  358. #else
  359. if(get_user_flags(victim) & VIPACCES) {
  360. #endif
  361. if(damage_type & DMG_FALL && get_pcvar_num(g_fall_damage))
  362. return HAM_SUPERCEDE;
  363. }
  364.  
  365. if(!is_user_connected(attacker))
  366. return HAM_IGNORED
  367.  
  368. if(zp_get_user_zombie(attacker) || zp_get_user_survivor(attacker))
  369. return HAM_IGNORED
  370.  
  371. #if MODE & (1<<0)
  372. if(g_user_privileges[attacker] & FLAG_D) {
  373. #else
  374. if(get_user_flags(attacker) & VIPACCES) {
  375. #endif
  376. damage *= get_pcvar_float(g_damage_increase)
  377. SetHamParamFloat(4, damage)
  378. }
  379.  
  380. #if MODE & (1<<0)
  381. if(g_user_privileges[attacker] & FLAG_D) {
  382. #else
  383. if(get_user_flags(attacker) & VIPACCES) {
  384. #endif
  385. if(zp_get_user_zombie(victim) && get_pcvar_num(g_damage_reward) > 0)
  386. {
  387. g_damage[attacker]+=damage
  388. if(g_damage[attacker] > get_pcvar_float(g_damage_reward))
  389. {
  390. zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker)+1)
  391. g_damage[attacker] -= get_pcvar_float(g_damage_reward)
  392. }
  393. }
  394. }
  395. return HAM_IGNORED
  396. }
  397.  
  398. public zp_user_infected_post(id, infector, nemesis) {
  399.  
  400. setVip()
  401. if(!(1<=infector<=maxplayers)) return;
  402.  
  403. #if MODE & (1<<0)
  404. if(g_user_privileges[infector] & FLAG_A) {
  405. #else
  406. if(get_user_flags(infector) & VIPACCES) {
  407. #endif
  408. if(is_user_alive(infector)) set_user_health(infector, (get_user_health(infector) + get_pcvar_num(g_infecthealth)))
  409. zp_set_user_ammo_packs(infector, zp_get_user_ammo_packs(infector) + get_pcvar_num(g_infectammo))
  410.  
  411. if(happy_hour_on) {
  412.  
  413. static frag, ammo
  414. frag = get_pcvar_num(g_happy_hour_frag)
  415. ammo = get_pcvar_num(g_happy_hour_ammo)
  416.  
  417. if(frag) set_user_frags(infector, get_user_frags(infector)+frag)
  418. if(ammo) zp_set_user_ammo_packs(infector, zp_get_user_ammo_packs(infector)+ammo)
  419. }
  420. }
  421. }
  422.  
  423. public client_connect(id) {
  424.  
  425. jumpnum[id] = 0
  426. g_damage[id] = 0.0
  427. dojump[id] = false
  428. #if MODE & (1<<0)
  429. set_flags(id)
  430. if(get_pcvar_num(g_show_vips) == 1 && g_user_privileges[id] & FLAG_A) {
  431. #else
  432. if(get_pcvar_num(g_show_vips) == 1 && get_user_flags(id) & VIPACCES) {
  433. #endif
  434. new name[100]
  435. get_user_name(id, name, 100)
  436. client_printcolor(0, "/g%L", LANG_PLAYER, "VIP_CONNECTED", name)
  437. }
  438. #if MODE & (1<<0)
  439. else {
  440. static hours[6], hour1s[3], hour2s[3], hour1, hour2, h, m, s
  441. get_pcvar_string(g_hour, hours, charsmax(hours))
  442.  
  443. if(equal(hours, "off")) return;
  444.  
  445. strtok(hours, hour1s, charsmax(hour1s), hour2s, charsmax(hour2s), '-')
  446. hour1 = str_to_num(hour1s)
  447. hour2 = str_to_num(hour2s)
  448.  
  449. time(h, m, s)
  450. if(hour1 <= h <= hour2) {
  451.  
  452. new fflags[10]
  453. get_pcvar_string(g_hour_flags, fflags, charsmax(fflags))
  454. g_user_privileges[id] = read_flags(fflags)
  455. }
  456. }
  457. #endif
  458. }
  459. #if MODE & (1<<1)
  460. public zp_extra_item_selected(id, item_id)
  461. if(item_id == g_zp_extra_item_number)
  462. menu_open(id)
  463.  
  464. public menu_open(id) {
  465. #if MODE & (1<<0)
  466. if(g_user_privileges[id] & FLAG_E)
  467. vip_menu(id)
  468. #else
  469. if(get_user_flags(id) & VIPACCES)
  470. vip_menu(id)
  471. #endif
  472. #if MODE & (1<<0)
  473. else if(get_pcvar_num(g_vip_cost_ammo) != 0)
  474. get_pcvar_num(g_nonvip_tease) ? vip_menu(id) : buy_meniu(id)
  475. #endif
  476. else client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NOT_A_VIP")
  477. return ZP_PLUGIN_HANDLED
  478. }
  479.  
  480. public vip_menu(id)
  481. {
  482. if(g_registered_items_count == 0) {
  483. client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "OFF")
  484. return;
  485. }
  486. new holder[150], menu
  487. formatex(holder, charsmax(holder), "\r%L", id, "MENU_TOP")
  488. menu = menu_create(holder, "vip_menu_handler")
  489. new i, team_check, num[3], ammo_packs, check
  490. check = 0
  491. ammo_packs = zp_get_user_ammo_packs(id)
  492.  
  493. switch(zp_get_user_zombie(id)) {
  494.  
  495. case 0: {
  496. if(zp_get_user_survivor(id)) team_check = ZP_TEAM_SURVIVOR
  497. else team_check = ZP_TEAM_HUMAN
  498. }
  499. case 1: {
  500. if(zp_get_user_nemesis(id)) team_check = ZP_TEAM_NEMESIS
  501. else team_check = ZP_TEAM_ZOMBIE
  502. }
  503. }
  504.  
  505. if(zp_get_user_zombie(id) && !zp_get_user_nemesis(id)) team_check |= FLAG_A
  506. else if(!zp_get_user_zombie(id)) team_check |= FLAG_B
  507. else if(zp_get_user_nemesis(id)) team_check |= FLAG_C
  508. else if(zp_get_user_survivor(id)) team_check |= FLAG_D
  509. g_team[id] = team_check
  510. for(i=0; i < g_registered_items_count; i++) {
  511. ArrayGetArray(items_database, i, extra_items)
  512. if(extra_items[i_team] == 0 || g_team[id] & extra_items[i_team]) {
  513. formatex(holder, charsmax(holder), "%s \r[%s] %s[%d %L]", extra_items[i_name], extra_items[i_description], ammo_packs < extra_items[i_cost] ? "\r" : "\y", extra_items[i_cost], id, "AMMO")
  514. formatex(num, 2, "%d", i)
  515. menu_additem(menu, holder, num, 0)
  516. check++
  517. }
  518. }
  519. if(check == 0) {
  520. client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NO_ITEMS")
  521. return;
  522. }
  523. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  524. formatex(holder, charsmax(holder), "%L", id, "NEXT")
  525. menu_setprop(menu, MPROP_NEXTNAME, holder)
  526. formatex(holder, charsmax(holder), "%L", id, "BACK")
  527. menu_setprop(menu, MPROP_BACKNAME, holder)
  528. formatex(holder, charsmax(holder), "%L", id, "EXIT")
  529. menu_setprop(menu, MPROP_EXITNAME, holder)
  530. menu_display(id, menu, 0)
  531. }
  532.  
  533. public vip_menu_handler(id, menu, item)
  534. {
  535. if( item == MENU_EXIT )
  536. {
  537. menu_destroy(menu)
  538. return PLUGIN_HANDLED
  539. }
  540.  
  541. #if MODE & (1<<0)
  542. if(get_pcvar_num(g_nonvip_tease) && !(g_user_privileges[id] & FLAG_A)) {
  543. #if MODE & (1<<0)
  544. buy_meniu(id)
  545. #else
  546. client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NOT_A_VIP")
  547. #endif
  548. menu_destroy(menu)
  549. return PLUGIN_HANDLED;
  550. }
  551. #else
  552. if(get_pcvar_num(g_nonvip_tease) && !(get_user_flags(id) & VIPACCES)) {
  553. #if MODE & (1<<0)
  554. buy_meniu(id)
  555. #else
  556. client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NOT_A_VIP")
  557. #endif
  558. menu_destroy(menu)
  559. return PLUGIN_HANDLED;
  560. }
  561. #endif
  562. new team_check
  563. switch(zp_get_user_zombie(id)) {
  564.  
  565. case 0: {
  566. if(zp_get_user_survivor(id)) team_check = ZP_TEAM_SURVIVOR
  567. else team_check = ZP_TEAM_HUMAN
  568. }
  569. case 1: {
  570. if(zp_get_user_nemesis(id)) team_check = ZP_TEAM_NEMESIS
  571. else team_check = ZP_TEAM_ZOMBIE
  572. }
  573. }
  574.  
  575. if(g_team[id] != team_check) {
  576.  
  577. menu_destroy(menu)
  578. vip_menu(id)
  579. return PLUGIN_HANDLED;
  580. }
  581.  
  582. new data[6], iName[64], item_id, ammo_packs
  583. new aaccess, callback
  584. menu_item_getinfo(menu, item, aaccess, data,5, iName, 63, callback)
  585. item_id = str_to_num(data)
  586. ammo_packs = zp_get_user_ammo_packs(id)
  587. ArrayGetArray(items_database, item_id, extra_items)
  588. if(ammo_packs >= extra_items[i_cost]) zp_set_user_ammo_packs(id, ammo_packs - extra_items[i_cost])
  589. else {
  590. client_printcolor(id, "/g%s %L", CHAT_PREFIX, id, "MISSING_AMMO", extra_items[i_cost]-ammo_packs)
  591. if(g_menu_close) menu_destroy(menu)
  592. else vip_menu(id)
  593. return PLUGIN_HANDLED
  594. }
  595. item_id++
  596. ExecuteForward(g_extra_item_selected, g_forward_return, id, item_id)
  597. if (g_forward_return >= ZV_PLUGIN_HANDLED)
  598. zp_set_user_ammo_packs(id, ammo_packs)
  599.  
  600. if(!g_menu_close) vip_menu(id)
  601.  
  602. menu_destroy(menu)
  603. return PLUGIN_HANDLED
  604. }
  605. #endif
  606. #if MODE & (1<<0) && MODE & (1<<1)
  607. public buy_meniu(id)
  608. {
  609. new holder[150], menu
  610. formatex(holder, charsmax(holder), "\r%L", id, "BUY_MENU_TOP", get_pcvar_num(g_vip_cost_ammo), get_pcvar_num(g_vip_buy_time))
  611. menu = menu_create(holder, "buy_menu_handler")
  612. new callback = menu_makecallback("_menu_callback")
  613. formatex(holder, charsmax(holder), "%L", id, "BUY_MENU_TYPE1")
  614. menu_additem(menu, holder)
  615. formatex(holder, charsmax(holder), "%L", id, "BUY_MENU_TYPE2")
  616. menu_additem(menu, holder, _, _, callback)
  617. formatex(holder, charsmax(holder), "%L", id, "BUY_MENU_TYPE3")
  618. menu_additem(menu, holder)
  619.  
  620. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  621. formatex(holder, charsmax(holder), "%L", id, "EXIT")
  622. menu_setprop(menu, MPROP_EXITNAME, holder)
  623. menu_display(id, menu, 0)
  624. }
  625.  
  626. public buy_menu_handler(id, menu, item)
  627. {
  628. if( item == MENU_EXIT )
  629. {
  630. menu_destroy(menu)
  631. return PLUGIN_HANDLED
  632. }
  633.  
  634. new ammo_packs = zp_get_user_ammo_packs(id)
  635. if(item > 0) {
  636. if(ammo_packs >= get_pcvar_num(g_vip_cost_ammo)) {
  637. amx_tempadmin(id, item)
  638. zp_set_user_ammo_packs(id, ammo_packs - get_pcvar_num(g_vip_cost_ammo))
  639. client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "BOUGHT_VIP", get_pcvar_num(g_vip_buy_time))
  640.  
  641. }
  642. else client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "MISSING_AMMO", get_pcvar_num(g_vip_cost_ammo)-ammo_packs)
  643. }
  644. else {
  645. nick_buy_meniu(id)
  646. return PLUGIN_HANDLED
  647. }
  648.  
  649. menu_destroy(menu)
  650. return PLUGIN_HANDLED
  651. }
  652.  
  653. public nick_buy_meniu(id)
  654. {
  655. new buttons_string[16], menu_string[151], menu_item[81], menu, client_password[20]
  656. get_user_info(id, amx_password_field_string, client_password, charsmax(client_password))
  657. formatex(menu_string, 150, "\r%L", id, "NICK_BUY_MENU_TOP", client_password)
  658. menu = menu_create(menu_string, "nick_buy_menu_handler")
  659.  
  660. formatex(menu_item, 80, "%L", id, "NICK_BUY_MENU_TYPE1")
  661. menu_additem(menu, menu_item)
  662. formatex(menu_item, 80, "%L", id, "NICK_BUY_MENU_TYPE2")
  663. menu_additem(menu, menu_item)
  664. formatex(menu_item, 80, "%L", id, "NICK_BUY_MENU_TYPE3", get_pcvar_num(g_vip_cost_ammo) ,get_pcvar_num(g_vip_buy_time))
  665. menu_additem(menu, menu_item)
  666.  
  667. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  668. formatex(buttons_string, 15, "%L", id, "BACK")
  669. menu_setprop(menu, MPROP_EXITNAME, buttons_string)
  670. menu_display(id, menu, 0)
  671.  
  672. }
  673.  
  674. public nick_buy_menu_handler(id, menu, item)
  675. {
  676. if( item == MENU_EXIT )
  677. {
  678. buy_meniu(id)
  679. return PLUGIN_HANDLED
  680. }
  681.  
  682. switch(item) {
  683. case 0: {
  684. generate_password(id)
  685. set_task(0.2, "menu_delay", id)
  686. }
  687. case 1: nick_buy_meniu_sec(id)
  688. case 2: {
  689.  
  690. new ammo_packs = zp_get_user_ammo_packs(id)
  691. if(ammo_packs >= get_pcvar_num(g_vip_cost_ammo)) {
  692. amx_tempadmin(id, 0)
  693. zp_set_user_ammo_packs(id, ammo_packs - get_pcvar_num(g_vip_cost_ammo))
  694. client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "BOUGHT_VIP", get_pcvar_num(g_vip_buy_time))
  695.  
  696. }
  697. else client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "MISSING_AMMO", get_pcvar_num(g_vip_cost_ammo)-ammo_packs)
  698.  
  699. menu_destroy(menu)
  700. return PLUGIN_HANDLED
  701. }
  702. }
  703.  
  704. menu_destroy(menu)
  705. return PLUGIN_HANDLED
  706. }
  707. public nick_buy_meniu_sec(id)
  708. {
  709. new holder[150], menu
  710. formatex(holder, charsmax(holder), "\r%L", id, "NICK_BUY_MENU_SEC_TOP")
  711. menu = menu_create(holder, "nick_buy_menu_sec_handler")
  712.  
  713. formatex(holder, charsmax(holder), "%L", id, "BACK")
  714. menu_additem(menu, holder)
  715.  
  716. menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
  717. menu_display(id, menu, 0)
  718. }
  719.  
  720. public nick_buy_menu_sec_handler(id, menu, item)
  721. {
  722. nick_buy_meniu(id)
  723. menu_destroy(menu)
  724. return PLUGIN_HANDLED;
  725. }
  726.  
  727. public _menu_callback(id, menu, item) {
  728.  
  729. if(item == 1) {
  730. new authid[30]
  731. get_user_authid(id, authid, charsmax(authid))
  732. if(equal(authid, "STEAM_0", 7)) return ITEM_ENABLED
  733. else return ITEM_DISABLED
  734. }
  735.  
  736. return ITEM_ENABLED
  737. }
  738.  
  739. public menu_delay(id) nick_buy_meniu(id)
  740. #endif
  741. public message_cur_weapon(msg_id, msg_dest, msg_entity)
  742. {
  743. if (!get_pcvar_num(g_unlimited_clip)) return
  744. #if MODE & (1<<0)
  745. if (!(g_user_privileges[msg_entity] & FLAG_C)) return
  746. #else
  747. if (!(get_user_flags(msg_entity) & VIPACCES)) return
  748. #endif
  749. if (!is_user_alive(msg_entity) || get_msg_arg_int(1) != 1) return
  750.  
  751. static weapon, clip
  752. weapon = get_msg_arg_int(2)
  753. clip = get_msg_arg_int(3)
  754.  
  755. if (MAXCLIP[weapon] > 2)
  756. {
  757. set_msg_arg_int(3, get_msg_argtype(3), MAXCLIP[weapon])
  758.  
  759. if (clip < 2)
  760. {
  761. static wname[32], weapon_ent
  762. get_weaponname(weapon, wname, sizeof wname - 1)
  763. weapon_ent = find_ent_by_owner(-1, wname, msg_entity)
  764. fm_set_weapon_ammo(weapon_ent, MAXCLIP[weapon])
  765. }
  766. }
  767. }
  768.  
  769. public HUDReset()
  770. setVip()
  771.  
  772. public setVip()
  773. {
  774. new players[32], pNum
  775. get_players(players, pNum, "a")
  776.  
  777. for (new i = 0; i < pNum; i++)
  778. {
  779. new id = players[i]
  780. #if MODE & (1<<0)
  781. if (g_user_privileges[id] & FLAG_A)
  782. #else
  783. if (get_user_flags(id) & VIPACCES)
  784. #endif
  785. {
  786. message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
  787. write_byte(id)
  788. write_byte(4)
  789. message_end()
  790. }
  791. }
  792. return PLUGIN_HANDLED
  793. }
  794.  
  795. public print_adminlist(user)
  796. {
  797. new adminnames[33][32]
  798. new message[256]
  799. new contactinfo[256], contact[112]
  800. new id, count, x, len
  801.  
  802. for(id = 1 ; id <= maxplayers ; id++)
  803. if(is_user_connected(id))
  804. #if MODE & (1<<0)
  805. if(g_user_privileges[id] & FLAG_A)
  806. #else
  807. if(get_user_flags(id) & VIPACCES)
  808. #endif
  809. get_user_name(id, adminnames[count++], 31)
  810.  
  811. len = format(message, 255, "%L ", id, "VIP_STATUS")
  812. if(count > 0) {
  813. for(x = 0 ; x < count ; x++) {
  814. len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
  815. if(len > 96 ) {
  816. client_printcolor(user, "/g%s", message)
  817. len = format(message, 255, "")
  818. }
  819. }
  820. client_printcolor(user, "/g%s", message)
  821. }
  822. else {
  823. len += format(message[len], 255-len, "%L ", id, "VIP_STATUS_N")
  824. client_printcolor(user, "/g%s", message)
  825. }
  826.  
  827. get_cvar_string("amx_contactinfo", contact, 63)
  828. if(contact[0]) {
  829. format(contactinfo, 111, "%L ", id, "VIP_STATUS_CON", contact)
  830. client_printcolor(user, "/g%s", contactinfo)
  831. }
  832.  
  833. }
  834.  
  835. public client_disconnect(id)
  836. {
  837. jumpnum[id] = 0
  838. g_damage[id] = 0.0
  839. dojump[id] = false
  840. }
  841.  
  842. public client_PreThink(id)
  843. {
  844. #if MODE & (1<<0)
  845. if(!is_user_alive(id) || !g_jumps || (!(g_user_privileges[id] & FLAG_B))) return PLUGIN_CONTINUE
  846. #else
  847. if(!is_user_alive(id) || !g_jumps || (!(get_user_flags(id) & MJACCES))) return PLUGIN_CONTINUE
  848. #endif
  849. static nbut, obut, fflags
  850. nbut= get_user_button(id)
  851. obut = get_user_oldbutton(id)
  852. fflags = get_entity_flags(id)
  853.  
  854. if((nbut & IN_JUMP) && !(fflags & FL_ONGROUND) && !(obut & IN_JUMP))
  855. {
  856. if(jumpnum[id] < chache_g_jumps &&
  857. ((g_bit & FLAG_D && zp_get_user_nemesis(id)) ||
  858. (g_bit & FLAG_C && zp_get_user_survivor(id)) ||
  859. (g_bit & FLAG_A && !zp_get_user_zombie(id)) ||
  860. (g_bit & FLAG_B && zp_get_user_zombie(id) && !zp_get_user_nemesis(id))))
  861. {
  862. dojump[id] = true
  863. jumpnum[id]++
  864. return PLUGIN_CONTINUE
  865. }
  866. }
  867. if((nbut & IN_JUMP) && (fflags & FL_ONGROUND))
  868. {
  869. jumpnum[id] = 0
  870. return PLUGIN_CONTINUE
  871. }
  872.  
  873. return PLUGIN_CONTINUE
  874. }
  875.  
  876. public client_PostThink(id)
  877. {
  878. #if MODE & (1<<0)
  879. if(!is_user_alive(id) || !get_pcvar_num(g_jumps) || (!(g_user_privileges[id] & FLAG_B))) return PLUGIN_CONTINUE
  880. #else
  881. if(!is_user_alive(id) || !get_pcvar_num(g_jumps) || (!(get_user_flags(id) & MJACCES))) return PLUGIN_CONTINUE
  882. #endif
  883. if(dojump[id] == true)
  884. {
  885. static Float:velocity[3]
  886. entity_get_vector(id,EV_VEC_velocity,velocity)
  887. velocity[2] = random_float(265.0,285.0)
  888. entity_set_vector(id,EV_VEC_velocity,velocity)
  889. dojump[id] = false
  890. return PLUGIN_CONTINUE
  891. }
  892. return PLUGIN_CONTINUE
  893. }
  894.  
  895. public ShowMotd(id)
  896. show_motd(id, "/addons/amxmodx/configs/avantajeVIP.html")
  897. #if MODE & (1<<0)
  898. public reload_vips() {
  899.  
  900. if(database_holder) ArrayDestroy(database_holder)
  901. database_holder = ArrayCreate(database_items)
  902. new configsDir[64]
  903. get_configsdir(configsDir, 63)
  904. format(configsDir, 63, "%s/vips.ini", configsDir)
  905.  
  906. new File=fopen(configsDir,"r");
  907.  
  908. if (File)
  909. {
  910. static Text[512], Flags[32], AuthData[50], Privileges_Flags[32], Password[50]
  911. while (!feof(File))
  912. {
  913. fgets(File,Text,sizeof(Text)-1);
  914.  
  915. trim(Text);
  916.  
  917. // comment
  918. if (Text[0]==';')
  919. {
  920. continue;
  921. }
  922.  
  923. Flags[0]=0;
  924. AuthData[0]=0;
  925. Privileges_Flags[0]=0;
  926. Password[0]=0;
  927.  
  928. // not enough parameters
  929. if (parse(Text,AuthData,sizeof(AuthData)-1,Password,sizeof(Password)-1,Privileges_Flags,sizeof(Privileges_Flags)-1,Flags,sizeof(Flags)-1) < 2)
  930. {
  931. continue;
  932. }
  933.  
  934. vips_database[auth] = AuthData
  935. vips_database[password] = Password
  936. vips_database[accessflags] = read_flags(Privileges_Flags)
  937. vips_database[flags] = read_flags(Flags)
  938. admins_push(AuthData,Password,read_flags("t"),read_flags(Flags));
  939. ArrayPushArray(database_holder, vips_database)
  940. }
  941.  
  942. fclose(File);
  943. }
  944. else log_amx("Error: vips.ini file doesn't exist")
  945. }
  946. #endif
  947. #if MODE & (1<<0) && MODE & (1<<1)
  948. public check_date()
  949. {
  950. new holder[20]
  951. new y, m ,d
  952. date(y, m, d)
  953. format(holder, charsmax(holder), "m%dd%dy%d", m, d, y)
  954.  
  955. new configdir[200]
  956. get_configsdir(configdir,199)
  957.  
  958. new configfile1[200]
  959.  
  960. format(configfile1,199,"%s/vips.ini",configdir)
  961.  
  962. new text[512], len
  963. new pnum = file_size(configfile1,1)
  964. for(new i = 1; i < pnum; i++)
  965. {
  966. read_file(configfile1, i, text, 511, len)
  967. if ( contain(text, holder) != -1 )
  968. {
  969. DeleteLine(configfile1, i)
  970. }
  971. }
  972. return PLUGIN_HANDLED
  973. }
  974.  
  975. public amx_tempadmin(id, type)
  976. {
  977. new authid[31], ip[31], name[51], client_password[20], p_flags[21], sdate[20]
  978. get_pcvar_string(g_vip_buy_flags, p_flags, charsmax(p_flags))
  979. get_user_authid(id, authid, charsmax(authid))
  980. get_user_ip(id, ip, charsmax(ip), 1)
  981. get_user_name(id, name, charsmax(name))
  982. get_user_info(id, amx_password_field_string, client_password, charsmax(client_password))
  983.  
  984. get_date(get_pcvar_num(g_vip_buy_time), sdate, charsmax(sdate))
  985.  
  986. new holder[200]
  987. switch(type) {
  988. case 0: formatex(holder, charsmax(holder), "^"%s^" ^"%s^" ^"%s^" ^"b^"; Exp: %s", name, client_password, p_flags, sdate)
  989. case 1: formatex(holder, charsmax(holder), "^"%s^" ^"^" ^"%s^" ^"ce^"; Exp: %s", authid, p_flags, sdate)
  990. case 2: formatex(holder, charsmax(holder), "^"%s^" ^"^" ^"%s^" ^"de^"; Exp: %s", ip, p_flags, sdate)
  991. }
  992.  
  993. new configdir[200]
  994. get_configsdir(configdir, 199)
  995. new configfile1[200]
  996. format(configfile1,199,"%s/vips.ini",configdir)
  997. write_file(configfile1, holder, -1)
  998. server_cmd("amx_reloaddvips")
  999. set_task(1.0, "set_flags", id)
  1000. }
  1001.  
  1002. stock get_date(days, string[], chars) {
  1003.  
  1004. new y, m, d
  1005. date(y, m ,d)
  1006.  
  1007. d+=days
  1008.  
  1009. new go = true
  1010. while(go) {
  1011. switch(m) {
  1012. case 1,3, 5, 7, 8, 10: {
  1013. if(d>31) { d=d-31; m++; }
  1014. else go = false
  1015. }
  1016. case 2: {
  1017. if(d>28) { d=d-28; m++; }
  1018. else go = false
  1019. }
  1020. case 4, 6, 9, 11: {
  1021. if(d>30) { d=d-30; m++; }
  1022. else go = false
  1023. }
  1024. case 12: {
  1025. if(d>31) { d=d-31; y++; m=1; }
  1026. else go = false
  1027. }
  1028. }
  1029. }
  1030. formatex(string, chars, "m%dd%dy%d", m, d ,y)
  1031. }
  1032. #endif
  1033.  
  1034. stock client_printcolor(id, const message[], any:...)
  1035. {
  1036. static buffer[512], argscount
  1037. argscount = numargs()
  1038.  
  1039. if (!id) {
  1040.  
  1041. static players[32], num, player, i, i2
  1042. get_players(players, num , "ch")
  1043.  
  1044. for (i = 0; i < num; i++) {
  1045.  
  1046. player = players[i]
  1047.  
  1048. static changed[5], changedcount
  1049. changedcount = 0
  1050.  
  1051. for (i2 = 2; i2 < argscount; i2++)
  1052. {
  1053. if (getarg(i2) == LANG_PLAYER)
  1054. {
  1055. setarg(i2, 0, player)
  1056. changed[changedcount] = i2
  1057. changedcount++
  1058. }
  1059. }
  1060.  
  1061. vformat(buffer, charsmax(buffer), message, 3)
  1062.  
  1063. replace_all(buffer, charsmax(buffer), "/g", "^4")
  1064. replace_all(buffer, charsmax(buffer), "/y", "^1")
  1065.  
  1066. message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, player)
  1067. write_byte(player)
  1068. write_string(buffer)
  1069. message_end()
  1070.  
  1071. for (i2 = 0; i2 < changedcount; i2++)
  1072. setarg(changed[i2], 0, LANG_PLAYER)
  1073. }
  1074. }
  1075. else {
  1076.  
  1077. vformat(buffer, charsmax(buffer), message, 3)
  1078.  
  1079. replace_all(buffer, charsmax(buffer), "/g", "^4")
  1080. replace_all(buffer, charsmax(buffer), "/y", "^1")
  1081.  
  1082. message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, id)
  1083. write_byte(id)
  1084. write_string(buffer)
  1085. message_end()
  1086. }
  1087. }
  1088.  
  1089. stock fm_find_ent_by_owner(entity, const classname[], owner)
  1090. {
  1091. while ((entity = engfunc(EngFunc_FindEntityByString, entity, "classname", classname)) && pev(entity, pev_owner) != owner) {}
  1092.  
  1093. return entity;
  1094. }
  1095.  
  1096. stock fm_set_weapon_ammo(entity, amount)
  1097. {
  1098. set_pdata_int(entity, OFFSET_CLIPAMMO, amount, OFFSET_LINUX_WEAPONS);
  1099. }
  1100. #if MODE & (1<<0)
  1101. public set_flags(id) {
  1102.  
  1103. static authid[31], ip[31], name[51], index, client_password[30], size, log_flags[11]
  1104. get_user_authid(id, authid, 30)
  1105. get_user_ip(id, ip, 30, 1)
  1106. get_user_name(id, name, 50)
  1107. get_user_info(id, amx_password_field_string, client_password, charsmax(client_password))
  1108.  
  1109. g_user_privileges[id] = 0
  1110. size = ArraySize(database_holder)
  1111. for(index=0; index < size ; index++) {
  1112. ArrayGetArray(database_holder, index, vips_database)
  1113. if(vips_database[flags] & FLAG_D) {
  1114. if(equal(ip, vips_database[auth])) {
  1115. if(!(vips_database[flags] & FLAG_E)) {
  1116. if(equal(client_password, vips_database[password]))
  1117. g_user_privileges[id] = vips_database[accessflags]
  1118. else if(vips_database[flags] & FLAG_A) {
  1119. server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS")
  1120. break
  1121. }
  1122. }
  1123. else g_user_privileges[id] = vips_database[accessflags]
  1124. get_flags(vips_database[accessflags], log_flags, 10)
  1125. log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags)
  1126. break
  1127. }
  1128. }
  1129. else if(vips_database[flags] & FLAG_C) {
  1130. if(equal(authid, vips_database[auth])) {
  1131. if(!(vips_database[flags] & FLAG_E)) {
  1132. if(equal(client_password, vips_database[password]))
  1133. g_user_privileges[id] = vips_database[accessflags]
  1134. else if(vips_database[flags] & FLAG_A) {
  1135. server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS")
  1136. break
  1137. }
  1138. }
  1139. else g_user_privileges[id] = vips_database[accessflags]
  1140. get_flags(vips_database[accessflags], log_flags, 10)
  1141. log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags)
  1142. break
  1143. }
  1144. }
  1145. else {
  1146. if(vips_database[flags] & FLAG_K) {
  1147. if((vips_database[flags] & FLAG_B && contain(name, vips_database[auth]) != -1) || equal(name, vips_database[auth])) {
  1148. if(!(vips_database[flags] & FLAG_E)) {
  1149. if(equal(client_password, vips_database[password]))
  1150. g_user_privileges[id] = vips_database[accessflags]
  1151. else if(vips_database[flags] & FLAG_A) {
  1152. server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS")
  1153. break
  1154. }
  1155. }
  1156. else g_user_privileges[id] = vips_database[accessflags]
  1157. get_flags(vips_database[accessflags], log_flags, 10)
  1158. log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags)
  1159. break
  1160. }
  1161. }
  1162. else {
  1163. if((vips_database[flags] & FLAG_B && containi(name, vips_database[auth]) != -1) || equali(name, vips_database[auth])) {
  1164. if(!(vips_database[flags] & FLAG_E)) {
  1165. if(equal(client_password, vips_database[password]))
  1166. g_user_privileges[id] = vips_database[accessflags]
  1167. else if(vips_database[flags] & FLAG_A) {
  1168. server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS")
  1169. break
  1170. }
  1171. }
  1172. else g_user_privileges[id] = vips_database[accessflags]
  1173. get_flags(vips_database[accessflags], log_flags, 10)
  1174. log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags)
  1175. break
  1176. }
  1177. }
  1178. }
  1179. }
  1180. }
  1181. #endif
  1182. #if MODE & (1<<0) && MODE & (1<<1)
  1183. stock generate_password(id) {
  1184.  
  1185. new password_holder[30]
  1186. formatex(password_holder, charsmax(password_holder), "%d%d%d%d%d", random(10), random(10), random(10), random(10), random(10))
  1187. client_cmd(id, "setinfo %s %s", amx_password_field_string, password_holder)
  1188. }
  1189. #endif
  1190. #if MODE & (1<<0)
  1191. public native_zv_get_user_flags(id)
  1192. return g_user_privileges[id]
  1193. #endif
  1194. #if MODE & (1<<1)
  1195. public native_zv_register_extra_item(const item_name[], const item_discription[], item_cost, item_team)
  1196. {
  1197. if(!items_database) items_database = ArrayCreate(items)
  1198.  
  1199. param_convert(1)
  1200. param_convert(2)
  1201. copy(extra_items[i_name], 30, item_name)
  1202. copy(extra_items[i_description], 30, item_discription)
  1203. extra_items[i_cost] = item_cost
  1204. extra_items[i_team] = item_team
  1205. ArrayPushArray(items_database, extra_items)
  1206. g_registered_items_count++
  1207.  
  1208. return g_registered_items_count
  1209. }
  1210.  
  1211. public plugin_end() if(items_database) ArrayDestroy(items_database)
  1212. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement