hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.06.17. 01:40



Jelenlévő felhasználók

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

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználóaz elmúlt 5 percben aktív felhasználók alapján

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



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

Regisztráció

Kereső


Új téma nyitása Hozzászólás a témához  [1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Zm Vip hiba
HozzászólásElküldve:2017.08.01. 13:23 
Offline
Tud valamit

Csatlakozott:2016.12.25. 12:43
Hozzászólások:129
Megköszönt másnak: 35 alkalommal
Megköszönték neki: 4 alkalommal
Üdv!

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


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


Ki van itt

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