hlmod.hu

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



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: Bing [Bot] az elmúlt 5 percben aktív felhasználók alapján

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



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

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 9 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: ZM VIP[FONTOS NAGYON]
HozzászólásElküldve: 2013.02.27. 14:36 
Offline
Tag

Csatlakozott: 2013.02.04. 16:17
Hozzászólások: 57
Megköszönt másnak: 16 alkalommal
Helló
Lenne egy kis problémám a Zombie plague VIP be. Régen is felmerült akkor ez a probléma de akkor nem érdekelt nagyon, de mostmár érdekel.
A baj az lenne hogy hiába vesz valaki VIP et el tűnik. Persze nem mindenkinél csak néhány embernél. MI lehet a baj??
Az egyik gyerek azt írta 3x kellett vennie vip et a szerveren de még úgyse maradt meg. Mondtam neki hogy setinfo _pw vel jelentkezzen be de úgyse jó, se IP re nem működik se névre neki. Ezt a problémát többen jelezték a szerveremen.. Tudnátok segíteni létszíves? Köszi
Hali.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: ZM VIP[FONTOS NAGYON]
HozzászólásElküldve: 2013.02.27. 14:51 
Offline
Minden6ó
Avatar

Csatlakozott: 2011.01.19. 12:14
Hozzászólások: 4280
Megköszönt másnak: 218 alkalommal
Megköszönték neki: 285 alkalommal
Ezt ragd fel kicsit át írtam mert. nekem is ez volt a baj de most màr jó.
SMA Forráskód: [ Mindet kijelol ]
  1. /* Plugin generated by AMXX-Studio */
  2.  
  3.  
  4.  
  5. #include <amxmodx>
  6.  
  7. #include <amxmisc>
  8.  
  9. #include <fakemeta>
  10.  
  11. #include <engine>
  12.  
  13. #include <fun>
  14.  
  15. #include <hamsandwich>
  16.  
  17. #include <zombieplague>
  18.  
  19.  
  20.  
  21. ////////// PLUGIN SETTINGS //////////
  22.  
  23. #define MODE 3
  24.  
  25. #define CHAT_PREFIX "[VIP]"
  26.  
  27.  
  28.  
  29. // (Only if MODE 1 is turrned OFF. Otherwise set flags in vips.ini.) //
  30.  
  31. #define VIPACCES ADMIN_LEVEL_H
  32.  
  33. #define MJACCES ADMIN_LEVEL_H
  34.  
  35. ////////// SETTINGS END //////////
  36.  
  37.  
  38.  
  39. // Flags
  40.  
  41. #define FLAG_A (1<<0)
  42.  
  43. #define FLAG_B (1<<1)
  44.  
  45. #define FLAG_C (1<<2)
  46.  
  47. #define FLAG_D (1<<3)
  48.  
  49. #define FLAG_E (1<<4)
  50.  
  51. #define FLAG_K (1<<10)
  52.  
  53.  
  54.  
  55. #define VERSION "1.7.2"
  56.  
  57.  
  58.  
  59. #if cellbits == 32
  60.  
  61. const OFFSET_CLIPAMMO = 51
  62.  
  63. #else
  64.  
  65. const OFFSET_CLIPAMMO = 65
  66.  
  67. #endif
  68.  
  69. const OFFSET_LINUX_WEAPONS = 4
  70.  
  71.  
  72.  
  73. const DMG_HEGRENADE = (1<<24)
  74.  
  75.  
  76.  
  77. #define set_flood(%1,%2) (%1 |= (1<<(%2&31)))
  78.  
  79. #define clear_flood(%1,%2) (%1 &= ~(1<<(%2&31)))
  80.  
  81. #define get_flood(%1,%2) (%1 & (1<<(%2&31)))
  82.  
  83.  
  84.  
  85. #if MODE & (1<<0) || MODE & (1<<1)
  86.  
  87. new amx_password_field_string[30]
  88.  
  89. #endif
  90.  
  91. #if MODE & (1<<0)
  92.  
  93. new g_user_privileges[33]
  94.  
  95. enum _:database_items
  96.  
  97. {
  98.  
  99. auth[50],
  100.  
  101. password[50],
  102.  
  103. accessflags,
  104.  
  105. flags
  106.  
  107. }
  108.  
  109. new vips_database[database_items]
  110.  
  111. new Array:database_holder
  112.  
  113. new g_hour_flags
  114.  
  115. new g_hour
  116.  
  117. #endif
  118.  
  119. #if MODE & (1<<1)
  120.  
  121. const ZV_PLUGIN_HANDLED = 97
  122.  
  123. enum _:items
  124.  
  125. {
  126.  
  127. i_name[31],
  128.  
  129. i_description[31],
  130.  
  131. i_cost,
  132.  
  133. i_team
  134.  
  135. }
  136.  
  137. new g_register_in_zp_extra
  138.  
  139. new g_zp_extra_item_number
  140.  
  141. new g_nonvip_tease
  142.  
  143. new g_menu_close
  144.  
  145. new extra_items[items]
  146.  
  147. new Array:items_database
  148.  
  149. new g_registered_items_count
  150.  
  151. new g_forward_return
  152.  
  153. new g_extra_item_selected
  154.  
  155. new g_team[33]
  156.  
  157. #endif
  158.  
  159. #if MODE == 3
  160.  
  161. new g_vip_buy_time
  162.  
  163. new g_vip_cost_ammo
  164.  
  165. new g_vip_buy_flags
  166.  
  167. #endif
  168.  
  169. 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 }
  170.  
  171. static const CONTACT[] = ""
  172.  
  173. new g_jumps, g_allow_jump, g_armor, g_killammo, g_infectammo, g_infecthealth, g_nemhealth, g_show_vips,
  174.  
  175. g_unlimited_clip, g_fall_damage, g_damage_reward, g_damage_increase, g_happy_hour, g_happy_hour_frag, g_happy_hour_ammo
  176.  
  177. new happy_hour_on
  178.  
  179. new g_bit
  180.  
  181. new chache_g_jumps
  182.  
  183. new maxplayers, g_msgSayText
  184.  
  185. new jumpnum[33]
  186.  
  187. new bool:dojump[33]
  188.  
  189. new Float:g_damage[33]
  190.  
  191.  
  192.  
  193. public plugin_init() {
  194.  
  195.  
  196.  
  197. register_plugin("ZM VIP", VERSION, "aaarnas")
  198.  
  199. RegisterHam(Ham_Spawn, "player", "FwdHamPlayerSpawnPost", 1)
  200.  
  201. RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_Post", 1)
  202.  
  203. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
  204.  
  205. register_event("ResetHUD", "HUDReset", "be")
  206.  
  207. register_event("HLTV", "chache_cvars", "a", "1=0", "2=0")
  208.  
  209.  
  210.  
  211. maxplayers = get_maxplayers()
  212.  
  213. g_msgSayText = get_user_msgid("SayText")
  214.  
  215.  
  216.  
  217. register_message(get_user_msgid("CurWeapon"), "message_cur_weapon")
  218.  
  219.  
  220.  
  221. g_jumps = register_cvar("zp_vip_jumps", "1")
  222.  
  223. g_allow_jump = register_cvar("zp_vip_allow_jump", "ab")
  224.  
  225. g_armor = register_cvar("zp_vip_armor", "65")
  226.  
  227. g_killammo = register_cvar("zp_vip_killammo", "2")
  228.  
  229. g_infectammo = register_cvar("zp_vip_infectammo", "2")
  230.  
  231. g_infecthealth = register_cvar("zp_vip_infecthealth", "300")
  232.  
  233. g_nemhealth = register_cvar("zp_vip_nemextra", "1")
  234.  
  235. g_show_vips = register_cvar("zp_vip_show", "1")
  236.  
  237. g_unlimited_clip = register_cvar("zp_vip_unlimited_ammo", "0")
  238.  
  239. g_fall_damage = register_cvar("zp_vip_no_fall_damage", "1")
  240.  
  241. g_damage_reward = register_cvar("zp_vip_damage_reward", "500")
  242.  
  243. g_damage_increase = register_cvar("zp_vip_damage_increase", "1.5")
  244.  
  245. g_happy_hour = register_cvar("zp_vip_happy_hour", "off")
  246.  
  247. g_happy_hour_frag = register_cvar("zp_vip_happy_hour_frag", "1")
  248.  
  249. g_happy_hour_ammo = register_cvar("zp_vip_happy_hour_ammo", "1")
  250.  
  251. register_cvar("amx_contactinfo", CONTACT, FCVAR_SERVER)
  252.  
  253. register_cvar("zp_vip_version", VERSION, FCVAR_SERVER|FCVAR_SPONLY)
  254.  
  255. set_cvar_string("zp_vip_version", VERSION)
  256.  
  257.  
  258.  
  259. #if MODE & (1<<0) || MODE & (1<<1)
  260.  
  261. get_cvar_string("amx_password_field", amx_password_field_string, charsmax(amx_password_field_string))
  262.  
  263. register_dictionary("zm_vip.txt")
  264.  
  265. #endif
  266.  
  267. #if MODE & (1<<0) && MODE & (1<<1)
  268.  
  269. g_vip_cost_ammo = register_cvar("zp_vip_cost_ammo", "0")
  270.  
  271. g_vip_buy_time = register_cvar("zp_vip_buy_time", "7")
  272.  
  273. g_vip_buy_flags = register_cvar("zp_vip_buy_flags", "abcd")
  274.  
  275. set_task(5.0,"check_date",0)
  276.  
  277. #endif
  278.  
  279. #if MODE & (1<<0)
  280.  
  281. register_concmd("amx_reloadvips", "reload_vips", ADMIN_CFG)
  282.  
  283. g_hour = register_cvar("zp_vip_hour", "off")
  284.  
  285. g_hour_flags = register_cvar("zp_vip_hour_flags", "abe")
  286.  
  287. reload_vips()
  288.  
  289. #endif
  290.  
  291. #if MODE & (1<<1)
  292.  
  293. register_clcmd("say /vm", "menu_open")
  294.  
  295. g_nonvip_tease = register_cvar("zp_vip_nonvip_tease", "1")
  296.  
  297. g_register_in_zp_extra = register_cvar("zp_vip_register_in_zp_extra", "1")
  298.  
  299. g_menu_close = register_cvar("zp_vip_menu_close", "1")
  300.  
  301.  
  302.  
  303. new temp[31]
  304.  
  305. formatex(temp, 30, "%L", LANG_SERVER, "VIP_EXTRA_NAME")
  306.  
  307. if(get_pcvar_num(g_register_in_zp_extra)) g_zp_extra_item_number = zp_register_extra_item(temp, 0, 0)
  308.  
  309. g_extra_item_selected = CreateMultiForward("zv_extra_item_selected", ET_CONTINUE, FP_CELL, FP_CELL)
  310.  
  311. #endif
  312.  
  313. register_clcmd("say /vips", "print_adminlist")
  314.  
  315. register_clcmd("say /vip", "ShowMotd")
  316.  
  317. }
  318.  
  319. public plugin_cfg()
  320.  
  321. {
  322.  
  323. new directory[31]
  324.  
  325. get_configsdir(directory, 30)
  326.  
  327. server_cmd("exec %s/zm_vip.cfg", directory)
  328.  
  329. }
  330.  
  331.  
  332.  
  333. public chache_cvars() {
  334.  
  335.  
  336.  
  337. static string[5]
  338.  
  339. get_pcvar_string(g_allow_jump, string, charsmax(string))
  340.  
  341. g_bit = read_flags(string)
  342.  
  343. chache_g_jumps = get_pcvar_num(g_jumps)
  344.  
  345.  
  346.  
  347. static hours[6], hour1s[3], hour2s[3], hour1, hour2, h, m, s
  348.  
  349. get_pcvar_string(g_happy_hour, hours, charsmax(hours))
  350.  
  351.  
  352.  
  353. if(equal(hours, "off")) {happy_hour_on = false; return; }
  354.  
  355.  
  356.  
  357. strtok(hours, hour1s, charsmax(hour1s), hour2s, charsmax(hour2s), '-')
  358.  
  359. hour1 = str_to_num(hour1s)
  360.  
  361. hour2 = str_to_num(hour2s)
  362.  
  363.  
  364.  
  365. time(h, m, s)
  366.  
  367. if(hour1 <= h <= hour2) happy_hour_on = true
  368.  
  369. else happy_hour_on = false
  370.  
  371. }
  372.  
  373. #if MODE & (1<<1) || MODE & (1<<0)
  374.  
  375. public plugin_natives() {
  376.  
  377. #if MODE & (1<<1)
  378.  
  379. register_native("zv_register_extra_item", "native_zv_register_extra_item", 1)
  380.  
  381. #endif
  382.  
  383. #if MODE & (1<<0)
  384.  
  385. register_native("zv_get_user_flags", "native_zv_get_user_flags", 1)
  386.  
  387. #endif
  388.  
  389. }
  390.  
  391. #endif
  392.  
  393. public FwdHamPlayerSpawnPost(id) {
  394.  
  395.  
  396.  
  397. if(!is_user_alive(id)) return HAM_IGNORED;
  398.  
  399. #if MODE & (1<<0)
  400.  
  401. if(!(g_user_privileges[id] & FLAG_A))
  402.  
  403. #else
  404.  
  405. if(!(get_user_flags(id) & VIPACCES))
  406.  
  407. #endif
  408.  
  409. return PLUGIN_HANDLED;
  410.  
  411.  
  412.  
  413. if(pev(id, pev_armorvalue) < get_pcvar_num(g_armor))
  414.  
  415. set_pev(id, pev_armorvalue, float(get_pcvar_num(g_armor)))
  416.  
  417. return HAM_IGNORED;
  418.  
  419. }
  420.  
  421.  
  422.  
  423. public fw_PlayerKilled_Post(victim, attacker) {
  424.  
  425. #if MODE & (1<<0)
  426.  
  427. if(1 <= attacker <= maxplayers && g_user_privileges[attacker] & FLAG_A) {
  428.  
  429. #else
  430.  
  431. if(1 <= attacker <= maxplayers && get_user_flags(attacker) & VIPACCES) {
  432.  
  433. #endif
  434.  
  435. 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)))
  436.  
  437. zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + get_pcvar_num(g_killammo))
  438.  
  439.  
  440.  
  441. if(happy_hour_on) {
  442.  
  443.  
  444.  
  445. static frag, ammo
  446.  
  447. frag = get_pcvar_num(g_happy_hour_frag)
  448.  
  449. ammo = get_pcvar_num(g_happy_hour_ammo)
  450.  
  451.  
  452.  
  453. if(frag) set_user_frags(attacker, get_user_frags(attacker)+frag)
  454.  
  455. if(ammo) zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker)+ammo)
  456.  
  457. }
  458.  
  459.  
  460.  
  461. }
  462.  
  463. }
  464.  
  465.  
  466.  
  467. public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type) {
  468.  
  469.  
  470.  
  471. if(victim == attacker)
  472.  
  473. return HAM_IGNORED
  474.  
  475.  
  476.  
  477. if(damage_type & DMG_HEGRENADE)
  478.  
  479. return HAM_IGNORED
  480.  
  481.  
  482.  
  483. #if MODE & (1<<0)
  484.  
  485. if(g_user_privileges[victim] & FLAG_A) {
  486.  
  487. #else
  488.  
  489. if(get_user_flags(victim) & VIPACCES) {
  490.  
  491. #endif
  492.  
  493. if(damage_type & DMG_FALL && get_pcvar_num(g_fall_damage))
  494.  
  495. return HAM_SUPERCEDE;
  496.  
  497. }
  498.  
  499.  
  500.  
  501. if(!is_user_connected(attacker))
  502.  
  503. return HAM_IGNORED
  504.  
  505.  
  506.  
  507. if(zp_get_user_zombie(attacker) || zp_get_user_survivor(attacker))
  508.  
  509. return HAM_IGNORED
  510.  
  511.  
  512.  
  513. #if MODE & (1<<0)
  514.  
  515. if(g_user_privileges[attacker] & FLAG_D) {
  516.  
  517. #else
  518.  
  519. if(get_user_flags(attacker) & VIPACCES) {
  520.  
  521. #endif
  522.  
  523. damage *= get_pcvar_float(g_damage_increase)
  524.  
  525. SetHamParamFloat(4, damage)
  526.  
  527. }
  528.  
  529.  
  530.  
  531. #if MODE & (1<<0)
  532.  
  533. if(g_user_privileges[attacker] & FLAG_D) {
  534.  
  535. #else
  536.  
  537. if(get_user_flags(attacker) & VIPACCES) {
  538.  
  539. #endif
  540.  
  541. if(get_pcvar_num(g_damage_reward) > 0) {
  542.  
  543. g_damage[attacker]+=damage
  544.  
  545. if(g_damage[attacker] > get_pcvar_float(g_damage_reward)) {
  546.  
  547. zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker)+1)
  548.  
  549. g_damage[attacker] -= get_pcvar_float(g_damage_reward)
  550.  
  551. }
  552.  
  553. }
  554.  
  555. }
  556.  
  557.  
  558.  
  559. return HAM_IGNORED
  560.  
  561. }
  562.  
  563.  
  564.  
  565. public zp_user_infected_post(id, infector, nemesis) {
  566.  
  567.  
  568.  
  569. setVip()
  570.  
  571. if(!(1<=infector<=maxplayers)) return;
  572.  
  573.  
  574.  
  575. #if MODE & (1<<0)
  576.  
  577. if(g_user_privileges[infector] & FLAG_A) {
  578.  
  579. #else
  580.  
  581. if(get_user_flags(infector) & VIPACCES) {
  582.  
  583. #endif
  584.  
  585. if(is_user_alive(infector)) set_user_health(infector, (get_user_health(infector) + get_pcvar_num(g_infecthealth)))
  586.  
  587. zp_set_user_ammo_packs(infector, zp_get_user_ammo_packs(infector) + get_pcvar_num(g_infectammo))
  588.  
  589.  
  590.  
  591. if(happy_hour_on) {
  592.  
  593.  
  594.  
  595. static frag, ammo
  596.  
  597. frag = get_pcvar_num(g_happy_hour_frag)
  598.  
  599. ammo = get_pcvar_num(g_happy_hour_ammo)
  600.  
  601.  
  602.  
  603. if(frag) set_user_frags(infector, get_user_frags(infector)+frag)
  604.  
  605. if(ammo) zp_set_user_ammo_packs(infector, zp_get_user_ammo_packs(infector)+ammo)
  606.  
  607. }
  608.  
  609. }
  610.  
  611. }
  612.  
  613.  
  614.  
  615. public client_connect(id) {
  616.  
  617.  
  618.  
  619. jumpnum[id] = 0
  620.  
  621. g_damage[id] = 0.0
  622.  
  623. dojump[id] = false
  624.  
  625. #if MODE & (1<<0)
  626.  
  627. set_flags(id)
  628.  
  629. if(get_pcvar_num(g_show_vips) == 1 && g_user_privileges[id] & FLAG_A) {
  630.  
  631. #else
  632.  
  633. if(get_pcvar_num(g_show_vips) == 1 && get_user_flags(id) & VIPACCES) {
  634.  
  635. #endif
  636.  
  637. new name[100]
  638.  
  639. get_user_name(id, name, 100)
  640.  
  641. client_printcolor(0, "/g%L", LANG_PLAYER, "VIP_CONNECTED", name)
  642.  
  643. }
  644.  
  645. #if MODE & (1<<0)
  646.  
  647. else {
  648.  
  649. static hours[6], hour1s[3], hour2s[3], hour1, hour2, h, m, s
  650.  
  651. get_pcvar_string(g_hour, hours, charsmax(hours))
  652.  
  653.  
  654.  
  655. if(equal(hours, "off")) return;
  656.  
  657.  
  658.  
  659. strtok(hours, hour1s, charsmax(hour1s), hour2s, charsmax(hour2s), '-')
  660.  
  661. hour1 = str_to_num(hour1s)
  662.  
  663. hour2 = str_to_num(hour2s)
  664.  
  665.  
  666.  
  667. time(h, m, s)
  668.  
  669. if(hour1 <= h <= hour2) {
  670.  
  671.  
  672.  
  673. new fflags[10]
  674.  
  675. get_pcvar_string(g_hour_flags, fflags, charsmax(fflags))
  676.  
  677. g_user_privileges[id] = read_flags(fflags)
  678.  
  679. }
  680.  
  681. }
  682.  
  683. #endif
  684.  
  685. }
  686.  
  687. #if MODE & (1<<1)
  688.  
  689. public zp_extra_item_selected(id, item_id)
  690.  
  691. if(item_id == g_zp_extra_item_number)
  692.  
  693. menu_open(id)
  694.  
  695.  
  696.  
  697. public menu_open(id) {
  698.  
  699. #if MODE & (1<<0)
  700.  
  701. if(g_user_privileges[id] & FLAG_E)
  702.  
  703. vip_menu(id)
  704.  
  705. #else
  706.  
  707. if(get_user_flags(id) & VIPACCES)
  708.  
  709. vip_menu(id)
  710.  
  711. #endif
  712.  
  713. #if MODE & (1<<0)
  714.  
  715. else if(get_pcvar_num(g_vip_cost_ammo) != 0)
  716.  
  717. get_pcvar_num(g_nonvip_tease) ? vip_menu(id) : buy_meniu(id)
  718.  
  719. #endif
  720.  
  721. else client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NOT_A_VIP")
  722.  
  723. return ZP_PLUGIN_HANDLED
  724.  
  725. }
  726.  
  727.  
  728.  
  729. public vip_menu(id)
  730.  
  731. {
  732.  
  733. if(g_registered_items_count == 0) {
  734.  
  735. client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "OFF")
  736.  
  737. return;
  738.  
  739. }
  740.  
  741. new holder[150], menu
  742.  
  743. formatex(holder, charsmax(holder), "\r%L", id, "MENU_TOP")
  744.  
  745. menu = menu_create(holder, "vip_menu_handler")
  746.  
  747. new i, team_check, num[3], ammo_packs, check
  748.  
  749. check = 0
  750.  
  751. ammo_packs = zp_get_user_ammo_packs(id)
  752.  
  753.  
  754.  
  755. switch(zp_get_user_zombie(id)) {
  756.  
  757.  
  758.  
  759. case 0: {
  760.  
  761. if(zp_get_user_survivor(id)) team_check = ZP_TEAM_SURVIVOR
  762.  
  763. else team_check = ZP_TEAM_HUMAN
  764.  
  765. }
  766.  
  767. case 1: {
  768.  
  769. if(zp_get_user_nemesis(id)) team_check = ZP_TEAM_NEMESIS
  770.  
  771. else team_check = ZP_TEAM_ZOMBIE
  772.  
  773. }
  774.  
  775. }
  776.  
  777.  
  778.  
  779. if(zp_get_user_zombie(id) && !zp_get_user_nemesis(id)) team_check |= FLAG_A
  780.  
  781. else if(!zp_get_user_zombie(id)) team_check |= FLAG_B
  782.  
  783. else if(zp_get_user_nemesis(id)) team_check |= FLAG_C
  784.  
  785. else if(zp_get_user_survivor(id)) team_check |= FLAG_D
  786.  
  787. g_team[id] = team_check
  788.  
  789. for(i=0; i < g_registered_items_count; i++) {
  790.  
  791. ArrayGetArray(items_database, i, extra_items)
  792.  
  793. if(extra_items[i_team] == 0 || g_team[id] & extra_items[i_team]) {
  794.  
  795. 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")
  796.  
  797. formatex(num, 2, "%d", i)
  798.  
  799. menu_additem(menu, holder, num, 0)
  800.  
  801. check++
  802.  
  803. }
  804.  
  805. }
  806.  
  807. if(check == 0) {
  808.  
  809. client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NO_ITEMS")
  810.  
  811. return;
  812.  
  813. }
  814.  
  815. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  816.  
  817. formatex(holder, charsmax(holder), "%L", id, "NEXT")
  818.  
  819. menu_setprop(menu, MPROP_NEXTNAME, holder)
  820.  
  821. formatex(holder, charsmax(holder), "%L", id, "BACK")
  822.  
  823. menu_setprop(menu, MPROP_BACKNAME, holder)
  824.  
  825. formatex(holder, charsmax(holder), "%L", id, "EXIT")
  826.  
  827. menu_setprop(menu, MPROP_EXITNAME, holder)
  828.  
  829. menu_display(id, menu, 0)
  830.  
  831. }
  832.  
  833.  
  834.  
  835. public vip_menu_handler(id, menu, item)
  836.  
  837. {
  838.  
  839. if( item == MENU_EXIT )
  840.  
  841. {
  842.  
  843. menu_destroy(menu)
  844.  
  845. return PLUGIN_HANDLED
  846.  
  847. }
  848.  
  849.  
  850.  
  851. #if MODE & (1<<0)
  852.  
  853. if(get_pcvar_num(g_nonvip_tease) && !(g_user_privileges[id] & FLAG_A)) {
  854.  
  855. #if MODE & (1<<0)
  856.  
  857. buy_meniu(id)
  858.  
  859. #else
  860.  
  861. client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NOT_A_VIP")
  862.  
  863. #endif
  864.  
  865. menu_destroy(menu)
  866.  
  867. return PLUGIN_HANDLED;
  868.  
  869. }
  870.  
  871. #else
  872.  
  873. if(get_pcvar_num(g_nonvip_tease) && !(get_user_flags(id) & VIPACCES)) {
  874.  
  875. #if MODE & (1<<0)
  876.  
  877. buy_meniu(id)
  878.  
  879. #else
  880.  
  881. client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NOT_A_VIP")
  882.  
  883. #endif
  884.  
  885. menu_destroy(menu)
  886.  
  887. return PLUGIN_HANDLED;
  888.  
  889. }
  890.  
  891. #endif
  892.  
  893. new team_check
  894.  
  895. switch(zp_get_user_zombie(id)) {
  896.  
  897.  
  898.  
  899. case 0: {
  900.  
  901. if(zp_get_user_survivor(id)) team_check = ZP_TEAM_SURVIVOR
  902.  
  903. else team_check = ZP_TEAM_HUMAN
  904.  
  905. }
  906.  
  907. case 1: {
  908.  
  909. if(zp_get_user_nemesis(id)) team_check = ZP_TEAM_NEMESIS
  910.  
  911. else team_check = ZP_TEAM_ZOMBIE
  912.  
  913. }
  914.  
  915. }
  916.  
  917.  
  918.  
  919. if(g_team[id] != team_check) {
  920.  
  921.  
  922.  
  923. menu_destroy(menu)
  924.  
  925. vip_menu(id)
  926.  
  927. return PLUGIN_HANDLED;
  928.  
  929. }
  930.  
  931.  
  932.  
  933. new data[6], iName[64], item_id, ammo_packs
  934.  
  935. new aaccess, callback
  936.  
  937. menu_item_getinfo(menu, item, aaccess, data,5, iName, 63, callback)
  938.  
  939. item_id = str_to_num(data)
  940.  
  941. ammo_packs = zp_get_user_ammo_packs(id)
  942.  
  943. ArrayGetArray(items_database, item_id, extra_items)
  944.  
  945. if(ammo_packs >= extra_items[i_cost]) zp_set_user_ammo_packs(id, ammo_packs - extra_items[i_cost])
  946.  
  947. else {
  948.  
  949. client_printcolor(id, "/g%s %L", CHAT_PREFIX, id, "MISSING_AMMO", extra_items[i_cost]-ammo_packs)
  950.  
  951. if(g_menu_close) menu_destroy(menu)
  952.  
  953. else vip_menu(id)
  954.  
  955. return PLUGIN_HANDLED
  956.  
  957. }
  958.  
  959. item_id++
  960.  
  961. ExecuteForward(g_extra_item_selected, g_forward_return, id, item_id)
  962.  
  963. if (g_forward_return >= ZV_PLUGIN_HANDLED)
  964.  
  965. zp_set_user_ammo_packs(id, ammo_packs)
  966.  
  967.  
  968.  
  969. if(!g_menu_close) vip_menu(id)
  970.  
  971.  
  972.  
  973. menu_destroy(menu)
  974.  
  975. return PLUGIN_HANDLED
  976.  
  977. }
  978.  
  979. #endif
  980.  
  981. #if MODE & (1<<0) && MODE & (1<<1)
  982.  
  983. public buy_meniu(id)
  984.  
  985. {
  986.  
  987. new holder[150], menu
  988.  
  989. formatex(holder, charsmax(holder), "\r%L", id, "BUY_MENU_TOP", get_pcvar_num(g_vip_cost_ammo), get_pcvar_num(g_vip_buy_time))
  990.  
  991. menu = menu_create(holder, "buy_menu_handler")
  992.  
  993. new callback = menu_makecallback("_menu_callback")
  994.  
  995. formatex(holder, charsmax(holder), "%L", id, "BUY_MENU_TYPE1")
  996.  
  997. menu_additem(menu, holder)
  998.  
  999. formatex(holder, charsmax(holder), "%L", id, "BUY_MENU_TYPE2")
  1000.  
  1001. menu_additem(menu, holder, _, _, callback)
  1002.  
  1003. formatex(holder, charsmax(holder), "%L", id, "BUY_MENU_TYPE3")
  1004.  
  1005. menu_additem(menu, holder)
  1006.  
  1007.  
  1008.  
  1009. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  1010.  
  1011. formatex(holder, charsmax(holder), "%L", id, "EXIT")
  1012.  
  1013. menu_setprop(menu, MPROP_EXITNAME, holder)
  1014.  
  1015. menu_display(id, menu, 0)
  1016.  
  1017. }
  1018.  
  1019.  
  1020.  
  1021. public buy_menu_handler(id, menu, item)
  1022.  
  1023. {
  1024.  
  1025. if( item == MENU_EXIT )
  1026.  
  1027. {
  1028.  
  1029. menu_destroy(menu)
  1030.  
  1031. return PLUGIN_HANDLED
  1032.  
  1033. }
  1034.  
  1035.  
  1036.  
  1037. new ammo_packs = zp_get_user_ammo_packs(id)
  1038.  
  1039. if(item > 0) {
  1040.  
  1041. if(ammo_packs >= get_pcvar_num(g_vip_cost_ammo)) {
  1042.  
  1043. amx_tempadmin(id, item)
  1044.  
  1045. zp_set_user_ammo_packs(id, ammo_packs - get_pcvar_num(g_vip_cost_ammo))
  1046.  
  1047. client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "BOUGHT_VIP", get_pcvar_num(g_vip_buy_time))
  1048.  
  1049.  
  1050.  
  1051. }
  1052.  
  1053. else client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "MISSING_AMMO", get_pcvar_num(g_vip_cost_ammo)-ammo_packs)
  1054.  
  1055. }
  1056.  
  1057. else {
  1058.  
  1059. nick_buy_meniu(id)
  1060.  
  1061. return PLUGIN_HANDLED
  1062.  
  1063. }
  1064.  
  1065.  
  1066.  
  1067. menu_destroy(menu)
  1068.  
  1069. return PLUGIN_HANDLED
  1070.  
  1071. }
  1072.  
  1073.  
  1074.  
  1075. public nick_buy_meniu(id)
  1076.  
  1077. {
  1078.  
  1079. new buttons_string[16], menu_string[151], menu_item[81], menu, client_password[20]
  1080.  
  1081. get_user_info(id, amx_password_field_string, client_password, charsmax(client_password))
  1082.  
  1083. formatex(menu_string, 150, "\r%L", id, "NICK_BUY_MENU_TOP", client_password)
  1084.  
  1085. menu = menu_create(menu_string, "nick_buy_menu_handler")
  1086.  
  1087.  
  1088.  
  1089. formatex(menu_item, 80, "%L", id, "NICK_BUY_MENU_TYPE1")
  1090.  
  1091. menu_additem(menu, menu_item)
  1092.  
  1093. formatex(menu_item, 80, "%L", id, "NICK_BUY_MENU_TYPE2")
  1094.  
  1095. menu_additem(menu, menu_item)
  1096.  
  1097. formatex(menu_item, 80, "%L", id, "NICK_BUY_MENU_TYPE3", get_pcvar_num(g_vip_cost_ammo) ,get_pcvar_num(g_vip_buy_time))
  1098.  
  1099. menu_additem(menu, menu_item)
  1100.  
  1101.  
  1102.  
  1103. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
  1104.  
  1105. formatex(buttons_string, 15, "%L", id, "BACK")
  1106.  
  1107. menu_setprop(menu, MPROP_EXITNAME, buttons_string)
  1108.  
  1109. menu_display(id, menu, 0)
  1110.  
  1111.  
  1112.  
  1113. }
  1114.  
  1115.  
  1116.  
  1117. public nick_buy_menu_handler(id, menu, item)
  1118.  
  1119. {
  1120.  
  1121. if( item == MENU_EXIT )
  1122.  
  1123. {
  1124.  
  1125. buy_meniu(id)
  1126.  
  1127. return PLUGIN_HANDLED
  1128.  
  1129. }
  1130.  
  1131.  
  1132.  
  1133. switch(item) {
  1134.  
  1135. case 0: {
  1136.  
  1137. generate_password(id)
  1138.  
  1139. set_task(0.2, "menu_delay", id)
  1140.  
  1141. }
  1142.  
  1143. case 1: nick_buy_meniu_sec(id)
  1144.  
  1145. case 2: {
  1146.  
  1147.  
  1148.  
  1149. new ammo_packs = zp_get_user_ammo_packs(id)
  1150.  
  1151. if(ammo_packs >= get_pcvar_num(g_vip_cost_ammo)) {
  1152.  
  1153. amx_tempadmin(id, 0)
  1154.  
  1155. zp_set_user_ammo_packs(id, ammo_packs - get_pcvar_num(g_vip_cost_ammo))
  1156.  
  1157. client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "BOUGHT_VIP", get_pcvar_num(g_vip_buy_time))
  1158.  
  1159.  
  1160.  
  1161. }
  1162.  
  1163. else client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "MISSING_AMMO", get_pcvar_num(g_vip_cost_ammo)-ammo_packs)
  1164.  
  1165.  
  1166.  
  1167. menu_destroy(menu)
  1168.  
  1169. return PLUGIN_HANDLED
  1170.  
  1171. }
  1172.  
  1173. }
  1174.  
  1175.  
  1176.  
  1177. menu_destroy(menu)
  1178.  
  1179. return PLUGIN_HANDLED
  1180.  
  1181. }
  1182.  
  1183. public nick_buy_meniu_sec(id)
  1184.  
  1185. {
  1186.  
  1187. new holder[150], menu
  1188.  
  1189. formatex(holder, charsmax(holder), "\r%L", id, "NICK_BUY_MENU_SEC_TOP")
  1190.  
  1191. menu = menu_create(holder, "nick_buy_menu_sec_handler")
  1192.  
  1193.  
  1194.  
  1195. formatex(holder, charsmax(holder), "%L", id, "BACK")
  1196.  
  1197. menu_additem(menu, holder)
  1198.  
  1199.  
  1200.  
  1201. menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
  1202.  
  1203. menu_display(id, menu, 0)
  1204.  
  1205. }
  1206.  
  1207.  
  1208.  
  1209. public nick_buy_menu_sec_handler(id, menu, item)
  1210.  
  1211. {
  1212.  
  1213. nick_buy_meniu(id)
  1214.  
  1215. menu_destroy(menu)
  1216.  
  1217. return PLUGIN_HANDLED;
  1218.  
  1219. }
  1220.  
  1221.  
  1222.  
  1223. public _menu_callback(id, menu, item) {
  1224.  
  1225.  
  1226.  
  1227. if(item == 1) {
  1228.  
  1229. new authid[30]
  1230.  
  1231. get_user_authid(id, authid, charsmax(authid))
  1232.  
  1233. if(equal(authid, "STEAM_0", 7)) return ITEM_ENABLED
  1234.  
  1235. else return ITEM_DISABLED
  1236.  
  1237. }
  1238.  
  1239.  
  1240.  
  1241. return ITEM_ENABLED
  1242.  
  1243. }
  1244.  
  1245.  
  1246.  
  1247. public menu_delay(id) nick_buy_meniu(id)
  1248.  
  1249. #endif
  1250.  
  1251. public message_cur_weapon(msg_id, msg_dest, msg_entity)
  1252.  
  1253. {
  1254.  
  1255. if (!get_pcvar_num(g_unlimited_clip)) return
  1256.  
  1257. #if MODE & (1<<0)
  1258.  
  1259. if (!(g_user_privileges[msg_entity] & FLAG_C)) return
  1260.  
  1261. #else
  1262.  
  1263. if (!(get_user_flags(msg_entity) & VIPACCES)) return
  1264.  
  1265. #endif
  1266.  
  1267. if (!is_user_alive(msg_entity) || get_msg_arg_int(1) != 1) return
  1268.  
  1269.  
  1270.  
  1271. static weapon, clip
  1272.  
  1273. weapon = get_msg_arg_int(2)
  1274.  
  1275. clip = get_msg_arg_int(3)
  1276.  
  1277.  
  1278.  
  1279. if (MAXCLIP[weapon] > 2)
  1280.  
  1281. {
  1282.  
  1283. set_msg_arg_int(3, get_msg_argtype(3), MAXCLIP[weapon])
  1284.  
  1285.  
  1286.  
  1287. if (clip < 2)
  1288.  
  1289. {
  1290.  
  1291. static wname[32], weapon_ent
  1292.  
  1293. get_weaponname(weapon, wname, sizeof wname - 1)
  1294.  
  1295. weapon_ent = find_ent_by_owner(-1, wname, msg_entity)
  1296.  
  1297. fm_set_weapon_ammo(weapon_ent, MAXCLIP[weapon])
  1298.  
  1299. }
  1300.  
  1301. }
  1302.  
  1303. }
  1304.  
  1305.  
  1306.  
  1307. public HUDReset()
  1308.  
  1309. setVip()
  1310.  
  1311.  
  1312.  
  1313. public setVip()
  1314.  
  1315. {
  1316.  
  1317. new players[32], pNum
  1318.  
  1319. get_players(players, pNum, "a")
  1320.  
  1321.  
  1322.  
  1323. for (new i = 0; i < pNum; i++)
  1324.  
  1325. {
  1326.  
  1327. new id = players[i]
  1328.  
  1329. #if MODE & (1<<0)
  1330.  
  1331. if (g_user_privileges[id] & FLAG_A)
  1332.  
  1333. #else
  1334.  
  1335. if (get_user_flags(id) & VIPACCES)
  1336.  
  1337. #endif
  1338.  
  1339. {
  1340.  
  1341. message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
  1342.  
  1343. write_byte(id)
  1344.  
  1345. write_byte(4)
  1346.  
  1347. message_end()
  1348.  
  1349. }
  1350.  
  1351. }
  1352.  
  1353. return PLUGIN_HANDLED
  1354.  
  1355. }
  1356.  
  1357.  
  1358.  
  1359. public print_adminlist(user)
  1360.  
  1361. {
  1362.  
  1363. new adminnames[33][32]
  1364.  
  1365. new message[256]
  1366.  
  1367. new contactinfo[256], contact[112]
  1368.  
  1369. new id, count, x, len
  1370.  
  1371.  
  1372.  
  1373. for(id = 1 ; id <= maxplayers ; id++)
  1374.  
  1375. if(is_user_connected(id))
  1376.  
  1377. #if MODE & (1<<0)
  1378.  
  1379. if(g_user_privileges[id] & FLAG_A)
  1380.  
  1381. #else
  1382.  
  1383. if(get_user_flags(id) & VIPACCES)
  1384.  
  1385. #endif
  1386.  
  1387. get_user_name(id, adminnames[count++], 31)
  1388.  
  1389.  
  1390.  
  1391. len = format(message, 255, "%L ", id, "VIP_STATUS")
  1392.  
  1393. if(count > 0) {
  1394.  
  1395. for(x = 0 ; x < count ; x++) {
  1396.  
  1397. len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")
  1398.  
  1399. if(len > 96 ) {
  1400.  
  1401. client_printcolor(user, "/g%s", message)
  1402.  
  1403. len = format(message, 255, "")
  1404.  
  1405. }
  1406.  
  1407. }
  1408.  
  1409. client_printcolor(user, "/g%s", message)
  1410.  
  1411. }
  1412.  
  1413. else {
  1414.  
  1415. len += format(message[len], 255-len, "%L ", id, "VIP_STATUS_N")
  1416.  
  1417. client_printcolor(user, "/g%s", message)
  1418.  
  1419. }
  1420.  
  1421.  
  1422.  
  1423. get_cvar_string("amx_contactinfo", contact, 63)
  1424.  
  1425. if(contact[0]) {
  1426.  
  1427. format(contactinfo, 111, "%L ", id, "VIP_STATUS_CON", contact)
  1428.  
  1429. client_printcolor(user, "/g%s", contactinfo)
  1430.  
  1431. }
  1432.  
  1433.  
  1434.  
  1435. }
  1436.  
  1437.  
  1438.  
  1439. public client_disconnect(id)
  1440.  
  1441. {
  1442.  
  1443. jumpnum[id] = 0
  1444.  
  1445. g_damage[id] = 0.0
  1446.  
  1447. dojump[id] = false
  1448.  
  1449. }
  1450.  
  1451.  
  1452.  
  1453. public client_PreThink(id)
  1454.  
  1455. {
  1456.  
  1457. #if MODE & (1<<0)
  1458.  
  1459. if(!is_user_alive(id) || !g_jumps || (!(g_user_privileges[id] & FLAG_B))) return PLUGIN_CONTINUE
  1460.  
  1461. #else
  1462.  
  1463. if(!is_user_alive(id) || !g_jumps || (!(get_user_flags(id) & MJACCES))) return PLUGIN_CONTINUE
  1464.  
  1465. #endif
  1466.  
  1467. static nbut, obut, fflags
  1468.  
  1469. nbut= get_user_button(id)
  1470.  
  1471. obut = get_user_oldbutton(id)
  1472.  
  1473. fflags = get_entity_flags(id)
  1474.  
  1475.  
  1476.  
  1477. if((nbut & IN_JUMP) && !(fflags & FL_ONGROUND) && !(obut & IN_JUMP))
  1478.  
  1479. {
  1480.  
  1481. if(jumpnum[id] < chache_g_jumps &&
  1482.  
  1483. ((g_bit & FLAG_D && zp_get_user_nemesis(id)) ||
  1484.  
  1485. (g_bit & FLAG_C && zp_get_user_survivor(id)) ||
  1486.  
  1487. (g_bit & FLAG_A && !zp_get_user_zombie(id)) ||
  1488.  
  1489. (g_bit & FLAG_B && zp_get_user_zombie(id) && !zp_get_user_nemesis(id))))
  1490.  
  1491. {
  1492.  
  1493. dojump[id] = true
  1494.  
  1495. jumpnum[id]++
  1496.  
  1497. return PLUGIN_CONTINUE
  1498.  
  1499. }
  1500.  
  1501. }
  1502.  
  1503. if((nbut & IN_JUMP) && (fflags & FL_ONGROUND))
  1504.  
  1505. {
  1506.  
  1507. jumpnum[id] = 0
  1508.  
  1509. return PLUGIN_CONTINUE
  1510.  
  1511. }
  1512.  
  1513.  
  1514.  
  1515. return PLUGIN_CONTINUE
  1516.  
  1517. }
  1518.  
  1519.  
  1520.  
  1521. public client_PostThink(id)
  1522.  
  1523. {
  1524.  
  1525. #if MODE & (1<<0)
  1526.  
  1527. if(!is_user_alive(id) || !get_pcvar_num(g_jumps) || (!(g_user_privileges[id] & FLAG_B))) return PLUGIN_CONTINUE
  1528.  
  1529. #else
  1530.  
  1531. if(!is_user_alive(id) || !get_pcvar_num(g_jumps) || (!(get_user_flags(id) & MJACCES))) return PLUGIN_CONTINUE
  1532.  
  1533. #endif
  1534.  
  1535. if(dojump[id] == true)
  1536.  
  1537. {
  1538.  
  1539. static Float:velocity[3]
  1540.  
  1541. entity_get_vector(id,EV_VEC_velocity,velocity)
  1542.  
  1543. velocity[2] = random_float(265.0,285.0)
  1544.  
  1545. entity_set_vector(id,EV_VEC_velocity,velocity)
  1546.  
  1547. dojump[id] = false
  1548.  
  1549. return PLUGIN_CONTINUE
  1550.  
  1551. }
  1552.  
  1553. return PLUGIN_CONTINUE
  1554.  
  1555. }
  1556.  
  1557.  
  1558.  
  1559. public ShowMotd(id)
  1560.  
  1561. show_motd(id, "vip.txt")
  1562.  
  1563. #if MODE & (1<<0)
  1564.  
  1565. public reload_vips() {
  1566.  
  1567.  
  1568.  
  1569. if(database_holder) ArrayDestroy(database_holder)
  1570.  
  1571. database_holder = ArrayCreate(database_items)
  1572.  
  1573. new configsDir[64]
  1574.  
  1575. get_configsdir(configsDir, 63)
  1576.  
  1577. format(configsDir, 63, "%s/vips.ini", configsDir)
  1578.  
  1579.  
  1580.  
  1581. new File=fopen(configsDir,"r");
  1582.  
  1583.  
  1584.  
  1585. if (File)
  1586.  
  1587. {
  1588.  
  1589. static Text[512], Flags[32], AuthData[50], Privileges_Flags[32], Password[50]
  1590.  
  1591. while (!feof(File))
  1592.  
  1593. {
  1594.  
  1595. fgets(File,Text,sizeof(Text)-1);
  1596.  
  1597.  
  1598.  
  1599. trim(Text);
  1600.  
  1601.  
  1602.  
  1603. // comment
  1604.  
  1605. if (Text[0]==';')
  1606.  
  1607. {
  1608.  
  1609. continue;
  1610.  
  1611. }
  1612.  
  1613.  
  1614.  
  1615. Flags[0]=0;
  1616.  
  1617. AuthData[0]=0;
  1618.  
  1619. Privileges_Flags[0]=0;
  1620.  
  1621. Password[0]=0;
  1622.  
  1623.  
  1624.  
  1625. // not enough parameters
  1626.  
  1627. if (parse(Text,AuthData,sizeof(AuthData)-1,Password,sizeof(Password)-1,Privileges_Flags,sizeof(Privileges_Flags)-1,Flags,sizeof(Flags)-1) < 2)
  1628.  
  1629. {
  1630.  
  1631. continue;
  1632.  
  1633. }
  1634.  
  1635.  
  1636.  
  1637. vips_database[auth] = AuthData
  1638.  
  1639. vips_database[password] = Password
  1640.  
  1641. vips_database[accessflags] = read_flags(Privileges_Flags)
  1642.  
  1643. vips_database[flags] = read_flags(Flags)
  1644.  
  1645. ArrayPushArray(database_holder, vips_database)
  1646.  
  1647. }
  1648.  
  1649.  
  1650.  
  1651. fclose(File);
  1652.  
  1653. }
  1654.  
  1655. else log_amx("Error: vips.ini file doesn't exist")
  1656.  
  1657. }
  1658.  
  1659. #endif
  1660.  
  1661. #if MODE & (1<<0) && MODE & (1<<1)
  1662.  
  1663. public check_date()
  1664.  
  1665. {
  1666.  
  1667. new holder[20]
  1668.  
  1669. new y, m ,d
  1670.  
  1671. date(y, m, d)
  1672.  
  1673. format(holder, charsmax(holder), "m%dd%dy%d", m, d, y)
  1674.  
  1675.  
  1676.  
  1677. new configdir[200]
  1678.  
  1679. get_configsdir(configdir,199)
  1680.  
  1681.  
  1682.  
  1683. new configfile1[200]
  1684.  
  1685.  
  1686.  
  1687. format(configfile1,199,"%s/vips.ini",configdir)
  1688.  
  1689.  
  1690.  
  1691. new text[512], len
  1692.  
  1693. new pnum = file_size(configfile1,1)
  1694.  
  1695. for(new i = 1; i < pnum; i++)
  1696.  
  1697. {
  1698.  
  1699. read_file(configfile1, i, text, 511, len)
  1700.  
  1701. if ( contain(text, holder) != -1 )
  1702.  
  1703. {
  1704.  
  1705. DeleteLine(configfile1, i)
  1706.  
  1707. }
  1708.  
  1709. }
  1710.  
  1711. return PLUGIN_HANDLED
  1712.  
  1713. }
  1714.  
  1715.  
  1716.  
  1717. public amx_tempadmin(id, type)
  1718.  
  1719. {
  1720.  
  1721. new authid[31], ip[31], name[51], client_password[20], p_flags[21], sdate[20]
  1722.  
  1723. get_pcvar_string(g_vip_buy_flags, p_flags, charsmax(p_flags))
  1724.  
  1725. get_user_authid(id, authid, charsmax(authid))
  1726.  
  1727. get_user_ip(id, ip, charsmax(ip), 1)
  1728.  
  1729. get_user_name(id, name, charsmax(name))
  1730.  
  1731. get_user_info(id, amx_password_field_string, client_password, charsmax(client_password))
  1732.  
  1733.  
  1734.  
  1735. get_date(get_pcvar_num(g_vip_buy_time), sdate, charsmax(sdate))
  1736.  
  1737.  
  1738.  
  1739. new holder[200]
  1740.  
  1741. switch(type) {
  1742.  
  1743. case 0: formatex(holder, charsmax(holder), "^"%s^" ^"%s^" ^"%s^" ^"be^"; Exp: %s", name, client_password, p_flags, sdate)
  1744.  
  1745. case 1: formatex(holder, charsmax(holder), "^"%s^" ^"^" ^"%s^" ^"ce^"; Exp: %s", authid, p_flags, sdate)
  1746.  
  1747. case 2: formatex(holder, charsmax(holder), "^"%s^" ^"^" ^"%s^" ^"de^"; Exp: %s", ip, p_flags, sdate)
  1748.  
  1749. }
  1750.  
  1751.  
  1752.  
  1753. new configdir[200]
  1754.  
  1755. get_configsdir(configdir, 199)
  1756.  
  1757. new configfile1[200]
  1758.  
  1759. format(configfile1,199,"%s/vips.ini",configdir)
  1760.  
  1761. write_file(configfile1, holder, -1)
  1762.  
  1763. server_cmd("amx_reloadvips")
  1764.  
  1765. set_task(1.0, "set_flags", id)
  1766.  
  1767.  
  1768.  
  1769. }
  1770.  
  1771.  
  1772.  
  1773. DeleteLine( const szFilename[ ], const iLine )
  1774.  
  1775. {
  1776.  
  1777. new iFile = fopen( szFilename, "rt" );
  1778.  
  1779. if( !iFile )
  1780.  
  1781. {
  1782.  
  1783. return;
  1784.  
  1785. }
  1786.  
  1787. static const szTempFilename[ ] = "delete_line.txt";
  1788.  
  1789. new iTempFile = fopen( szTempFilename, "wt" );
  1790.  
  1791.  
  1792.  
  1793. new szData[ 256 ], iLineCount, bool:bReplaced = false;
  1794.  
  1795. while( !feof( iFile ) )
  1796.  
  1797. {
  1798.  
  1799. fgets( iFile, szData, 255 );
  1800.  
  1801.  
  1802.  
  1803. if( iLineCount++ == iLine )
  1804.  
  1805. {
  1806.  
  1807. bReplaced = true;
  1808.  
  1809. }
  1810.  
  1811. else
  1812.  
  1813. {
  1814.  
  1815. fputs( iTempFile, szData );
  1816.  
  1817. }
  1818.  
  1819. }
  1820.  
  1821.  
  1822.  
  1823. fclose( iFile );
  1824.  
  1825. fclose( iTempFile );
  1826.  
  1827.  
  1828.  
  1829. if( bReplaced )
  1830.  
  1831. {
  1832.  
  1833. delete_file( szFilename );
  1834.  
  1835.  
  1836.  
  1837. while( !rename_file( szTempFilename, szFilename, 1 ) ) { }
  1838.  
  1839. }
  1840.  
  1841. else
  1842.  
  1843. {
  1844.  
  1845. delete_file( szTempFilename );
  1846.  
  1847. }
  1848.  
  1849. }
  1850.  
  1851.  
  1852.  
  1853. stock get_date(days, string[], chars) {
  1854.  
  1855.  
  1856.  
  1857. new y, m, d
  1858.  
  1859. date(y, m ,d)
  1860.  
  1861.  
  1862.  
  1863. d+=days
  1864.  
  1865.  
  1866.  
  1867. new go = true
  1868.  
  1869. while(go) {
  1870.  
  1871. switch(m) {
  1872.  
  1873. case 1,3, 5, 7, 8, 10: {
  1874.  
  1875. if(d>31) { d=d-31; m++; }
  1876.  
  1877. else go = false
  1878.  
  1879. }
  1880.  
  1881. case 2: {
  1882.  
  1883. if(d>28) { d=d-28; m++; }
  1884.  
  1885. else go = false
  1886.  
  1887. }
  1888.  
  1889. case 4, 6, 9, 11: {
  1890.  
  1891. if(d>30) { d=d-30; m++; }
  1892.  
  1893. else go = false
  1894.  
  1895. }
  1896.  
  1897. case 12: {
  1898.  
  1899. if(d>31) { d=d-31; y++; m=1; }
  1900.  
  1901. else go = false
  1902.  
  1903. }
  1904.  
  1905. }
  1906.  
  1907. }
  1908.  
  1909. formatex(string, chars, "m%dd%dy%d", m, d ,y)
  1910.  
  1911. }
  1912.  
  1913. #endif
  1914.  
  1915.  
  1916.  
  1917. stock client_printcolor(id, const message[], any:...)
  1918.  
  1919. {
  1920.  
  1921. static buffer[512], argscount
  1922.  
  1923. argscount = numargs()
  1924.  
  1925.  
  1926.  
  1927. if (!id) {
  1928.  
  1929.  
  1930.  
  1931. static players[32], num, player, i, i2
  1932.  
  1933. get_players(players, num , "ch")
  1934.  
  1935.  
  1936.  
  1937. for (i = 0; i < num; i++) {
  1938.  
  1939.  
  1940.  
  1941. player = players[i]
  1942.  
  1943.  
  1944.  
  1945. static changed[5], changedcount
  1946.  
  1947. changedcount = 0
  1948.  
  1949.  
  1950.  
  1951. for (i2 = 2; i2 < argscount; i2++)
  1952.  
  1953. {
  1954.  
  1955. if (getarg(i2) == LANG_PLAYER)
  1956.  
  1957. {
  1958.  
  1959. setarg(i2, 0, player)
  1960.  
  1961. changed[changedcount] = i2
  1962.  
  1963. changedcount++
  1964.  
  1965. }
  1966.  
  1967. }
  1968.  
  1969.  
  1970.  
  1971. vformat(buffer, charsmax(buffer), message, 3)
  1972.  
  1973.  
  1974.  
  1975. replace_all(buffer, charsmax(buffer), "/g", "^4")
  1976.  
  1977. replace_all(buffer, charsmax(buffer), "/y", "^1")
  1978.  
  1979. replace_all(buffer, charsmax(buffer), "/t", "^3")
  1980.  
  1981.  
  1982.  
  1983. message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, player)
  1984.  
  1985. write_byte(player)
  1986.  
  1987. write_string(buffer)
  1988.  
  1989. message_end()
  1990.  
  1991.  
  1992.  
  1993. for (i2 = 0; i2 < changedcount; i2++)
  1994.  
  1995. setarg(changed[i2], 0, LANG_PLAYER)
  1996.  
  1997. }
  1998.  
  1999. }
  2000.  
  2001. else {
  2002.  
  2003.  
  2004.  
  2005. vformat(buffer, charsmax(buffer), message, 3)
  2006.  
  2007.  
  2008.  
  2009. replace_all(buffer, charsmax(buffer), "/g", "^4")
  2010.  
  2011. replace_all(buffer, charsmax(buffer), "/y", "^1")
  2012.  
  2013. replace_all(buffer, charsmax(buffer), "/t", "^3")
  2014.  
  2015.  
  2016.  
  2017. message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, id)
  2018.  
  2019. write_byte(id)
  2020.  
  2021. write_string(buffer)
  2022.  
  2023. message_end()
  2024.  
  2025. }
  2026.  
  2027. }
  2028.  
  2029.  
  2030.  
  2031. stock fm_find_ent_by_owner(entity, const classname[], owner)
  2032.  
  2033. {
  2034.  
  2035. while ((entity = engfunc(EngFunc_FindEntityByString, entity, "classname", classname)) && pev(entity, pev_owner) != owner) {}
  2036.  
  2037.  
  2038.  
  2039. return entity;
  2040.  
  2041. }
  2042.  
  2043.  
  2044.  
  2045. stock fm_set_weapon_ammo(entity, amount)
  2046.  
  2047. {
  2048.  
  2049. set_pdata_int(entity, OFFSET_CLIPAMMO, amount, OFFSET_LINUX_WEAPONS);
  2050.  
  2051. }
  2052.  
  2053. #if MODE & (1<<0)
  2054.  
  2055. public set_flags(id) {
  2056.  
  2057.  
  2058.  
  2059. static authid[31], ip[31], name[51], index, client_password[30], size, log_flags[11]
  2060.  
  2061. get_user_authid(id, authid, 30)
  2062.  
  2063. get_user_ip(id, ip, 30, 1)
  2064.  
  2065. get_user_name(id, name, 50)
  2066.  
  2067. get_user_info(id, amx_password_field_string, client_password, charsmax(client_password))
  2068.  
  2069.  
  2070.  
  2071. g_user_privileges[id] = 0
  2072.  
  2073. size = ArraySize(database_holder)
  2074.  
  2075. for(index=0; index < size ; index++) {
  2076.  
  2077. ArrayGetArray(database_holder, index, vips_database)
  2078.  
  2079. if(vips_database[flags] & FLAG_D) {
  2080.  
  2081. if(equal(ip, vips_database[auth])) {
  2082.  
  2083. if(!(vips_database[flags] & FLAG_E)) {
  2084.  
  2085. if(equal(client_password, vips_database[password]))
  2086.  
  2087. g_user_privileges[id] = vips_database[accessflags]
  2088.  
  2089. else if(vips_database[flags] & FLAG_A) {
  2090.  
  2091. server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS")
  2092.  
  2093. break
  2094.  
  2095. }
  2096.  
  2097. }
  2098.  
  2099. else g_user_privileges[id] = vips_database[accessflags]
  2100.  
  2101. get_flags(vips_database[accessflags], log_flags, 10)
  2102.  
  2103. log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags)
  2104.  
  2105. break
  2106.  
  2107. }
  2108.  
  2109. }
  2110.  
  2111. else if(vips_database[flags] & FLAG_C) {
  2112.  
  2113. if(equal(authid, vips_database[auth])) {
  2114.  
  2115. if(!(vips_database[flags] & FLAG_E)) {
  2116.  
  2117. if(equal(client_password, vips_database[password]))
  2118.  
  2119. g_user_privileges[id] = vips_database[accessflags]
  2120.  
  2121. else if(vips_database[flags] & FLAG_A) {
  2122.  
  2123. server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS")
  2124.  
  2125. break
  2126.  
  2127. }
  2128.  
  2129. }
  2130.  
  2131. else g_user_privileges[id] = vips_database[accessflags]
  2132.  
  2133. get_flags(vips_database[accessflags], log_flags, 10)
  2134.  
  2135. log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags)
  2136.  
  2137. break
  2138.  
  2139. }
  2140.  
  2141. }
  2142.  
  2143. else {
  2144.  
  2145. if(vips_database[flags] & FLAG_K) {
  2146.  
  2147. if((vips_database[flags] & FLAG_B && contain(name, vips_database[auth]) != -1) || equal(name, vips_database[auth])) {
  2148.  
  2149. if(!(vips_database[flags] & FLAG_E)) {
  2150.  
  2151. if(equal(client_password, vips_database[password]))
  2152.  
  2153. g_user_privileges[id] = vips_database[accessflags]
  2154.  
  2155. else if(vips_database[flags] & FLAG_A) {
  2156.  
  2157. server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS")
  2158.  
  2159. break
  2160.  
  2161. }
  2162.  
  2163. }
  2164.  
  2165. else g_user_privileges[id] = vips_database[accessflags]
  2166.  
  2167. get_flags(vips_database[accessflags], log_flags, 10)
  2168.  
  2169. log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags)
  2170.  
  2171. break
  2172.  
  2173. }
  2174.  
  2175. }
  2176.  
  2177. else {
  2178.  
  2179. if((vips_database[flags] & FLAG_B && containi(name, vips_database[auth]) != -1) || equali(name, vips_database[auth])) {
  2180.  
  2181. if(!(vips_database[flags] & FLAG_E)) {
  2182.  
  2183. if(equal(client_password, vips_database[password]))
  2184.  
  2185. g_user_privileges[id] = vips_database[accessflags]
  2186.  
  2187. else if(vips_database[flags] & FLAG_A) {
  2188.  
  2189. server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS")
  2190.  
  2191. break
  2192.  
  2193. }
  2194.  
  2195. }
  2196.  
  2197. else g_user_privileges[id] = vips_database[accessflags]
  2198.  
  2199. get_flags(vips_database[accessflags], log_flags, 10)
  2200.  
  2201. log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags)
  2202.  
  2203. break
  2204.  
  2205. }
  2206.  
  2207. }
  2208.  
  2209. }
  2210.  
  2211. }
  2212.  
  2213. }
  2214.  
  2215. #endif
  2216.  
  2217. #if MODE & (1<<0) && MODE & (1<<1)
  2218.  
  2219. stock generate_password(id) {
  2220.  
  2221.  
  2222.  
  2223. new password_holder[30]
  2224.  
  2225. formatex(password_holder, charsmax(password_holder), "%d%d%d%d%d", random(10), random(10), random(10), random(10), random(10))
  2226.  
  2227. client_cmd(id, "setinfo %s %s", amx_password_field_string, password_holder)
  2228.  
  2229. }
  2230.  
  2231. #endif
  2232.  
  2233. #if MODE & (1<<0)
  2234.  
  2235. public native_zv_get_user_flags(id)
  2236.  
  2237. return g_user_privileges[id]
  2238.  
  2239. #endif
  2240.  
  2241. #if MODE & (1<<1)
  2242.  
  2243. public native_zv_register_extra_item(const item_name[], const item_discription[], item_cost, item_team)
  2244.  
  2245. {
  2246.  
  2247. if(!items_database) items_database = ArrayCreate(items)
  2248.  
  2249.  
  2250.  
  2251. param_convert(1)
  2252.  
  2253. param_convert(2)
  2254.  
  2255. copy(extra_items[i_name], 30, item_name)
  2256.  
  2257. copy(extra_items[i_description], 30, item_discription)
  2258.  
  2259. extra_items[i_cost] = item_cost
  2260.  
  2261. extra_items[i_team] = item_team
  2262.  
  2263. ArrayPushArray(items_database, extra_items)
  2264.  
  2265. g_registered_items_count++
  2266.  
  2267.  
  2268.  
  2269. return g_registered_items_count
  2270.  
  2271. }
  2272.  
  2273.  
  2274.  
  2275. public plugin_end() if(items_database) ArrayDestroy(items_database)
  2276.  
  2277. #endif

_________________
<<eb@>>Team Website - Közösség
17Buddies - Általam készített pályák.
GameBanana - Általam készített pályák/vágott hangok.

Kép
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: ZM VIP[FONTOS NAGYON]
HozzászólásElküldve: 2013.02.27. 15:16 
Offline
Tag

Csatlakozott: 2013.02.04. 16:17
Hozzászólások: 57
Megköszönt másnak: 16 alkalommal
Köszi, de amx -é alakítóval rakjam be? és ha igen a neve mindegy?


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: ZM VIP[FONTOS NAGYON]
HozzászólásElküldve: 2013.02.27. 15:35 
Offline
Beavatott
Avatar

Csatlakozott: 2013.02.20. 16:01
Hozzászólások: 74
Megköszönt másnak: 3 alkalommal
Megköszönték neki: 21 alkalommal
Mentsd el az .sma-t menj ide : Ide
Itt tallózd be az elmentett sma-t és alakítsd át amxx fájlá! :)

_________________
Ha segítettem akkor nyomd meg a Köszönöm gombot! :)
Kép

Ők köszönték meg dontercfg nek ezt a hozzászólást: jukas (2013.02.28. 09:06)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: ZM VIP[FONTOS NAGYON]
HozzászólásElküldve: 2013.02.28. 09:06 
Offline
Tag

Csatlakozott: 2013.02.04. 16:17
Hozzászólások: 57
Megköszönt másnak: 16 alkalommal
A plugin neve mindegy mi? és a vip másik amxx fájlát meg hagyjam ? vagy hogy?:D Pls segíts :D köszi.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: ZM VIP[FONTOS NAGYON]
HozzászólásElküldve: 2013.02.28. 10:40 
Offline
Veterán
Avatar

Csatlakozott: 2012.09.01. 22:19
Hozzászólások: 1697
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 302 alkalommal
jukas írta:
A plugin neve mindegy mi? és a vip másik amxx fájlát meg hagyjam ? vagy hogy?:D Pls segíts :D köszi.


az .amxx -es fájlt berakod a plugins mappába és beleírod a configs mappában található plugins.ini-be a név teljesen mindegy mi.. a SMA fájlt nem kell felrakni sehova.

_________________
Valami új kezdete...
Kép
Egyedi pluginok készítése pénzért (Banki átutalás, PayPal) -> Privát üzenet


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: ZM VIP[FONTOS NAGYON]
HozzászólásElküldve: 2013.02.28. 15:21 
Offline
Tag

Csatlakozott: 2013.02.04. 16:17
Hozzászólások: 57
Megköszönt másnak: 16 alkalommal
okés, de a régi vip amxx fájlt bent hagyjam??


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: ZM VIP[FONTOS NAGYON]
HozzászólásElküldve: 2013.02.28. 17:32 
Offline
Minden6ó
Avatar

Csatlakozott: 2011.01.19. 12:14
Hozzászólások: 4280
Megköszönt másnak: 218 alkalommal
Megköszönték neki: 285 alkalommal
Töröld ki a régit és ezt az smat amit küldtem az konvertáld át az oldalon amxx fájlá és ragd fel. De lehet lesz egy kis hiba, ha van valami írj és le íróm a megoldást :)

_________________
<<eb@>>Team Website - Közösség
17Buddies - Általam készített pályák.
GameBanana - Általam készített pályák/vágott hangok.

Kép
Kép

Ők köszönték meg norbee.16 nek ezt a hozzászólást: jukas (2013.03.01. 18:24)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: ZM VIP[FONTOS NAGYON]
HozzászólásElküldve: 2013.03.01. 18:24 
Offline
Tag

Csatlakozott: 2013.02.04. 16:17
Hozzászólások: 57
Megköszönt másnak: 16 alkalommal
Okés, nagyon köszi a segítséged. Mivel nekem ma mennem kell holnap rá nézek a vip pluginra :D Mégegyszer köszi!


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


Ki van itt

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