hlmod.hu

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



Jelenlévő felhasználók

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

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

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

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



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

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: zombi VIP
HozzászólásElküldve: 2016.01.04. 21:10 
Offline
Senior Tag
Avatar

Csatlakozott: 2015.04.10. 23:40
Hozzászólások: 283
Megköszönt másnak: 6 alkalommal
Megköszönték neki: 12 alkalommal
sziasztok.

valaki megtudná úgy írni, hogy ha beírom /vipvasarlas akkor bedobjon egyből egy menüt és ott tudnam megvenni
majd egy ok-ot kell nyomni és megis vettem x ammo packért.

és, hogy csak névre mentse a vip-eket?

aki megtudná csinálni nekem megy a gomb

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

_________________
Kép

Kép


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 20 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