Del VIP plugino :D

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
Post Reply
User avatar
artiom555
Jau po truputį tampa savu
Posts: 112
Joined: 2014 Apr 23 21:55
Skype: artem.sharkovic
Contact:

Del VIP plugino :D

Post by artiom555 »

Sveiki gal kas galit padaryt kad sitas zp vip butu duodamas tik ant "b" flago

http://www.failai.lt/t7seju5y147r/zm_vip.sma.htm

DYaGesS
Flooderis arba specialistas
Posts: 875
Joined: 2013 Jan 16 01:01
Skype: usercs.com
Contact:

Re: Del VIP plugino :D

Post by DYaGesS »

failą forume prisek.
Padėjau? +rep

User avatar
laimiukas3
Moderatorius
Posts: 4569
Joined: 2012 Aug 03 01:12
Skype: laimiukas3
Location: Vilnius
Contact:

Re: Del VIP plugino :D

Post by laimiukas3 »

Code: Select all

/* Plugin generated by AMXX-Studio */ #include <amxmodx>#include <amxmisc>#include <fakemeta>#include <engine>#include <fun>#include <hamsandwich>#include <zombieplague> ////////// PLUGIN SETTINGS //////////#define MODE 2#define CHAT_PREFIX "[VIP]" // (Only if MODE 1 is turrned OFF. Otherwise set flags in vips.ini.) //#define VIPACCES ADMIN_RESERVATION#define MJACCES ADMIN_RESERVATION////////// SETTINGS END ////////// // Flags#define FLAG_A (1<<0)#define FLAG_B (1<<1)#define FLAG_C (1<<2)#define FLAG_D (1<<3)#define FLAG_E (1<<4)#define FLAG_K (1<<10) #define VERSION "1.7.2" #if cellbits == 32const OFFSET_CLIPAMMO = 51#elseconst OFFSET_CLIPAMMO = 65#endifconst OFFSET_LINUX_WEAPONS = 4 const DMG_HEGRENADE = (1<<24) #define set_flood(%1,%2)    (%1 |= (1<<(%2&31)))#define clear_flood(%1,%2)    (%1 &= ~(1<<(%2&31)))#define get_flood(%1,%2)    (%1 & (1<<(%2&31))) #if MODE & (1<<0) || MODE & (1<<1)new amx_password_field_string[30]#endif#if MODE & (1<<0)new g_user_privileges[33]enum _:database_items{    auth[50],    password[50],    accessflags,    flags}new vips_database[database_items]new Array:database_holdernew g_hour_flagsnew g_hour#endif#if MODE & (1<<1)const ZV_PLUGIN_HANDLED = 97enum _:items{    i_name[31],    i_description[31],    i_cost,    i_team}new g_register_in_zp_extranew g_zp_extra_item_numbernew g_nonvip_teasenew g_menu_closenew extra_items[items]new Array:items_databasenew g_registered_items_countnew g_forward_returnnew g_extra_item_selectednew g_team[33]#endif#if MODE == 3new g_vip_buy_timenew g_vip_cost_ammonew g_vip_buy_flags#endifnew 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 }static const CONTACT[] = ""new g_jumps, g_allow_jump, g_armor, g_killammo, g_infectammo, g_infecthealth, g_nemhealth, g_show_vips,g_unlimited_clip, g_fall_damage, g_damage_reward, g_damage_increase, g_happy_hour, g_happy_hour_frag, g_happy_hour_ammonew happy_hour_onnew g_bitnew chache_g_jumpsnew maxplayers, g_msgSayTextnew jumpnum[33]new bool:dojump[33]new Float:g_damage[33] public plugin_init() {        register_plugin("ZM VIP", VERSION, "aaarnas")    RegisterHam(Ham_Spawn, "player", "FwdHamPlayerSpawnPost", 1)    RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_Post", 1)    RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")    register_event("ResetHUD", "HUDReset", "be")    register_event("HLTV", "chache_cvars", "a", "1=0", "2=0")        maxplayers = get_maxplayers()    g_msgSayText = get_user_msgid("SayText")        register_message(get_user_msgid("CurWeapon"), "message_cur_weapon")        g_jumps = register_cvar("zp_vip_jumps", "1")    g_allow_jump = register_cvar("zp_vip_allow_jump", "ab")    g_armor = register_cvar("zp_vip_armor", "65")    g_killammo = register_cvar("zp_vip_killammo", "2")    g_infectammo = register_cvar("zp_vip_infectammo", "2")    g_infecthealth = register_cvar("zp_vip_infecthealth", "300")    g_nemhealth = register_cvar("zp_vip_nemextra", "1")    g_show_vips = register_cvar("zp_vip_show", "1")    g_unlimited_clip = register_cvar("zp_vip_unlimited_ammo", "0")    g_fall_damage = register_cvar("zp_vip_no_fall_damage", "1")    g_damage_reward = register_cvar("zp_vip_damage_reward", "500")    g_damage_increase = register_cvar("zp_vip_damage_increase", "1.5")    g_happy_hour = register_cvar("zp_vip_happy_hour", "off")    g_happy_hour_frag = register_cvar("zp_vip_happy_hour_frag", "1")    g_happy_hour_ammo = register_cvar("zp_vip_happy_hour_ammo", "1")    register_cvar("amx_contactinfo", CONTACT, FCVAR_SERVER)    register_cvar("zp_vip_version", VERSION, FCVAR_SERVER|FCVAR_SPONLY)    set_cvar_string("zp_vip_version", VERSION)        #if MODE & (1<<0) || MODE & (1<<1)    get_cvar_string("amx_password_field", amx_password_field_string, charsmax(amx_password_field_string))    register_dictionary("zm_vip.txt")#endif#if MODE & (1<<0) && MODE & (1<<1)    g_vip_cost_ammo = register_cvar("zp_vip_cost_ammo", "0")    g_vip_buy_time = register_cvar("zp_vip_buy_time", "7")    g_vip_buy_flags = register_cvar("zp_vip_buy_flags", "abcd")    set_task(5.0,"check_date",0)#endif#if MODE & (1<<0)    register_concmd("amx_reloadvips", "reload_vips", ADMIN_CFG)    g_hour = register_cvar("zp_vip_hour", "off")    g_hour_flags = register_cvar("zp_vip_hour_flags", "abe")    reload_vips()#endif#if MODE & (1<<1)    register_clcmd("say /vm", "menu_open")    g_nonvip_tease = register_cvar("zp_vip_nonvip_tease", "1")    g_register_in_zp_extra = register_cvar("zp_vip_register_in_zp_extra", "1")    g_menu_close = register_cvar("zp_vip_menu_close", "1")        new temp[31]    formatex(temp, 30, "%L", LANG_SERVER, "VIP_EXTRA_NAME")    if(get_pcvar_num(g_register_in_zp_extra)) g_zp_extra_item_number = zp_register_extra_item(temp, 0, 0)    g_extra_item_selected = CreateMultiForward("zv_extra_item_selected", ET_CONTINUE, FP_CELL, FP_CELL)#endif    register_clcmd("say /vips", "print_adminlist")    register_clcmd("say /vip", "ShowMotd")}public plugin_cfg(){    new directory[31]    get_configsdir(directory, 30)    server_cmd("exec %s/zm_vip.cfg", directory)} public chache_cvars() {        static string[5]    get_pcvar_string(g_allow_jump, string, charsmax(string))    g_bit = read_flags(string)    chache_g_jumps = get_pcvar_num(g_jumps)        static hours[6], hour1s[3], hour2s[3], hour1, hour2, h, m, s    get_pcvar_string(g_happy_hour, hours, charsmax(hours))            if(equal(hours, "off")) {happy_hour_on = false; return; }            strtok(hours, hour1s, charsmax(hour1s), hour2s, charsmax(hour2s), '-')    hour1 = str_to_num(hour1s)    hour2 = str_to_num(hour2s)            time(h, m, s)    if(hour1 <= h <= hour2) happy_hour_on = true    else happy_hour_on = false}#if MODE & (1<<1) || MODE & (1<<0)public plugin_natives() {#if MODE & (1<<1)    register_native("zv_register_extra_item", "native_zv_register_extra_item", 1)#endif#if MODE & (1<<0)    register_native("zv_get_user_flags", "native_zv_get_user_flags", 1)#endif  }#endifpublic FwdHamPlayerSpawnPost(id) {        if(!is_user_alive(id)) return HAM_IGNORED;#if MODE & (1<<0)    if(!(g_user_privileges[id] & FLAG_A))#else    if(!(get_user_flags(id) & VIPACCES))#endif        return PLUGIN_HANDLED;     if(pev(id, pev_armorvalue) < get_pcvar_num(g_armor))    set_pev(id, pev_armorvalue, float(get_pcvar_num(g_armor)))    return HAM_IGNORED;} public fw_PlayerKilled_Post(victim, attacker) {#if MODE & (1<<0)    if(1 <= attacker <= maxplayers && g_user_privileges[attacker] & FLAG_A) {#else    if(1 <= attacker <= maxplayers && get_user_flags(attacker) & VIPACCES) {#endif          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)))        zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + get_pcvar_num(g_killammo))                if(happy_hour_on) {                        static frag, ammo            frag = get_pcvar_num(g_happy_hour_frag)            ammo = get_pcvar_num(g_happy_hour_ammo)                        if(frag) set_user_frags(attacker, get_user_frags(attacker)+frag)            if(ammo) zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker)+ammo)        }                }} public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type) {        if(victim == attacker)        return HAM_IGNORED            if(damage_type & DMG_HEGRENADE)        return HAM_IGNORED    #if MODE & (1<<0)    if(g_user_privileges[victim] & FLAG_A) {#else    if(get_user_flags(victim) & VIPACCES) {#endif        if(damage_type & DMG_FALL && get_pcvar_num(g_fall_damage))            return HAM_SUPERCEDE;    }        if(!is_user_connected(attacker))        return HAM_IGNORED        if(zp_get_user_zombie(attacker) || zp_get_user_survivor(attacker))        return HAM_IGNORED #if MODE & (1<<0)    if(g_user_privileges[attacker] & FLAG_D) {#else    if(get_user_flags(attacker) & VIPACCES) {#endif        damage *= get_pcvar_float(g_damage_increase)        SetHamParamFloat(4, damage)    }    #if MODE & (1<<0)    if(g_user_privileges[attacker] & FLAG_D) {#else    if(get_user_flags(attacker) & VIPACCES) {#endif        if(get_pcvar_num(g_damage_reward) > 0) {            g_damage[attacker]+=damage            if(g_damage[attacker] > get_pcvar_float(g_damage_reward)) {                zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker)+1)                g_damage[attacker] -= get_pcvar_float(g_damage_reward)            }        }       }     return HAM_IGNORED} public zp_user_infected_post(id, infector, nemesis) {        setVip()    if(!(1<=infector<=maxplayers)) return;    #if MODE & (1<<0)    if(g_user_privileges[infector] & FLAG_A) {#else    if(get_user_flags(infector) & VIPACCES) {#endif        if(is_user_alive(infector)) set_user_health(infector, (get_user_health(infector) + get_pcvar_num(g_infecthealth)))        zp_set_user_ammo_packs(infector, zp_get_user_ammo_packs(infector) + get_pcvar_num(g_infectammo))                if(happy_hour_on) {                        static frag, ammo            frag = get_pcvar_num(g_happy_hour_frag)            ammo = get_pcvar_num(g_happy_hour_ammo)                        if(frag) set_user_frags(infector, get_user_frags(infector)+frag)            if(ammo) zp_set_user_ammo_packs(infector, zp_get_user_ammo_packs(infector)+ammo)        }    }   } public client_connect(id) {        jumpnum[id] = 0    g_damage[id] = 0.0    dojump[id] = false#if MODE & (1<<0)    set_flags(id)    if(get_pcvar_num(g_show_vips) == 1 && g_user_privileges[id] & FLAG_A) {#else    if(get_pcvar_num(g_show_vips) == 1 && get_user_flags(id) & VIPACCES) {#endif        new name[100]        get_user_name(id, name, 100)        client_printcolor(0, "/g%L", LANG_PLAYER, "VIP_CONNECTED", name)    }#if MODE & (1<<0)    else {        static hours[6], hour1s[3], hour2s[3], hour1, hour2, h, m, s        get_pcvar_string(g_hour, hours, charsmax(hours))                if(equal(hours, "off")) return;                strtok(hours, hour1s, charsmax(hour1s), hour2s, charsmax(hour2s), '-')        hour1 = str_to_num(hour1s)        hour2 = str_to_num(hour2s)                time(h, m, s)        if(hour1 <= h <= hour2) {                        new fflags[10]            get_pcvar_string(g_hour_flags, fflags, charsmax(fflags))            g_user_privileges[id] = read_flags(fflags)        }    }#endif}#if MODE & (1<<1)public zp_extra_item_selected(id, item_id)    if(item_id == g_zp_extra_item_number)        menu_open(id) public menu_open(id) {#if MODE & (1<<0)    if(g_user_privileges[id] & FLAG_E)        vip_menu(id)#else    if(get_user_flags(id) & VIPACCES)        vip_menu(id)#endif#if MODE & (1<<0)    else if(get_pcvar_num(g_vip_cost_ammo) != 0)        get_pcvar_num(g_nonvip_tease) ? vip_menu(id) : buy_meniu(id)#endif    else client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NOT_A_VIP")    return ZP_PLUGIN_HANDLED}    public vip_menu(id){    if(g_registered_items_count == 0) {        client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "OFF")        return;    }    new holder[150], menu    formatex(holder, charsmax(holder), "\r%L", id, "MENU_TOP")    menu = menu_create(holder, "vip_menu_handler")    new i, team_check, num[3], ammo_packs, check    check = 0    ammo_packs = zp_get_user_ammo_packs(id)        switch(zp_get_user_zombie(id)) {                case 0: {            if(zp_get_user_survivor(id)) team_check = ZP_TEAM_SURVIVOR            else team_check = ZP_TEAM_HUMAN        }        case 1: {            if(zp_get_user_nemesis(id)) team_check = ZP_TEAM_NEMESIS            else team_check = ZP_TEAM_ZOMBIE        }    }        if(zp_get_user_zombie(id) && !zp_get_user_nemesis(id)) team_check |= FLAG_A    else if(!zp_get_user_zombie(id)) team_check |= FLAG_B    else if(zp_get_user_nemesis(id)) team_check |= FLAG_C    else if(zp_get_user_survivor(id)) team_check |= FLAG_D    g_team[id] = team_check    for(i=0; i < g_registered_items_count; i++) {        ArrayGetArray(items_database, i, extra_items)        if(extra_items[i_team] == 0 || g_team[id] & extra_items[i_team]) {            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")            formatex(num, 2, "%d", i)            menu_additem(menu, holder, num, 0)            check++        }    }    if(check == 0) {        client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NO_ITEMS")        return;    }    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)    formatex(holder, charsmax(holder), "%L", id, "NEXT")    menu_setprop(menu, MPROP_NEXTNAME, holder)    formatex(holder, charsmax(holder), "%L", id, "BACK")    menu_setprop(menu, MPROP_BACKNAME, holder)    formatex(holder, charsmax(holder), "%L", id, "EXIT")    menu_setprop(menu, MPROP_EXITNAME, holder)    menu_display(id, menu, 0)} public vip_menu_handler(id, menu, item){    if( item == MENU_EXIT )    {        menu_destroy(menu)        return PLUGIN_HANDLED    }    #if MODE & (1<<0)    if(get_pcvar_num(g_nonvip_tease) && !(g_user_privileges[id] & FLAG_A)) {#if MODE & (1<<0)        buy_meniu(id)#else        client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NOT_A_VIP")#endif        menu_destroy(menu)        return PLUGIN_HANDLED;    }#else    if(get_pcvar_num(g_nonvip_tease) && !(get_user_flags(id) & VIPACCES)) {#if MODE & (1<<0)        buy_meniu(id)#else        client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "NOT_A_VIP")#endif        menu_destroy(menu)        return PLUGIN_HANDLED;    }#endif    new team_check    switch(zp_get_user_zombie(id)) {                case 0: {            if(zp_get_user_survivor(id)) team_check = ZP_TEAM_SURVIVOR            else team_check = ZP_TEAM_HUMAN        }        case 1: {            if(zp_get_user_nemesis(id)) team_check = ZP_TEAM_NEMESIS            else team_check = ZP_TEAM_ZOMBIE        }    }        if(g_team[id] != team_check) {                menu_destroy(menu)        vip_menu(id)        return PLUGIN_HANDLED;    }        new data[6], iName[64], item_id, ammo_packs    new aaccess, callback    menu_item_getinfo(menu, item, aaccess, data,5, iName, 63, callback)    item_id = str_to_num(data)    ammo_packs = zp_get_user_ammo_packs(id)    ArrayGetArray(items_database, item_id, extra_items)    if(ammo_packs >= extra_items[i_cost]) zp_set_user_ammo_packs(id, ammo_packs - extra_items[i_cost])    else {        client_printcolor(id, "/g%s %L", CHAT_PREFIX, id, "MISSING_AMMO", extra_items[i_cost]-ammo_packs)        if(g_menu_close) menu_destroy(menu)        else vip_menu(id)        return PLUGIN_HANDLED    }    item_id++    ExecuteForward(g_extra_item_selected, g_forward_return, id, item_id)    if (g_forward_return >= ZV_PLUGIN_HANDLED)        zp_set_user_ammo_packs(id, ammo_packs)        if(!g_menu_close) vip_menu(id)        menu_destroy(menu)    return PLUGIN_HANDLED}#endif#if MODE & (1<<0) && MODE & (1<<1)public buy_meniu(id){    new holder[150], menu    formatex(holder, charsmax(holder), "\r%L", id, "BUY_MENU_TOP", get_pcvar_num(g_vip_cost_ammo), get_pcvar_num(g_vip_buy_time))    menu = menu_create(holder, "buy_menu_handler")    new callback = menu_makecallback("_menu_callback")    formatex(holder, charsmax(holder), "%L", id, "BUY_MENU_TYPE1")    menu_additem(menu, holder)    formatex(holder, charsmax(holder), "%L", id, "BUY_MENU_TYPE2")    menu_additem(menu, holder, _, _, callback)    formatex(holder, charsmax(holder), "%L", id, "BUY_MENU_TYPE3")    menu_additem(menu, holder)        menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)    formatex(holder, charsmax(holder), "%L", id, "EXIT")    menu_setprop(menu, MPROP_EXITNAME, holder)    menu_display(id, menu, 0)} public buy_menu_handler(id, menu, item){    if( item == MENU_EXIT )    {        menu_destroy(menu)        return PLUGIN_HANDLED    }     new ammo_packs = zp_get_user_ammo_packs(id)    if(item > 0) {        if(ammo_packs >= get_pcvar_num(g_vip_cost_ammo)) {            amx_tempadmin(id, item)            zp_set_user_ammo_packs(id, ammo_packs - get_pcvar_num(g_vip_cost_ammo))            client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "BOUGHT_VIP", get_pcvar_num(g_vip_buy_time))                    }        else client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "MISSING_AMMO", get_pcvar_num(g_vip_cost_ammo)-ammo_packs)    }    else {        nick_buy_meniu(id)        return PLUGIN_HANDLED    }        menu_destroy(menu)    return PLUGIN_HANDLED} public nick_buy_meniu(id){    new buttons_string[16], menu_string[151], menu_item[81], menu, client_password[20]    get_user_info(id, amx_password_field_string, client_password, charsmax(client_password))    formatex(menu_string, 150, "\r%L", id, "NICK_BUY_MENU_TOP", client_password)    menu = menu_create(menu_string, "nick_buy_menu_handler")        formatex(menu_item, 80, "%L", id, "NICK_BUY_MENU_TYPE1")    menu_additem(menu, menu_item)    formatex(menu_item, 80, "%L", id, "NICK_BUY_MENU_TYPE2")    menu_additem(menu, menu_item)    formatex(menu_item, 80, "%L", id, "NICK_BUY_MENU_TYPE3", get_pcvar_num(g_vip_cost_ammo) ,get_pcvar_num(g_vip_buy_time))    menu_additem(menu, menu_item)        menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)    formatex(buttons_string, 15, "%L", id, "BACK")    menu_setprop(menu, MPROP_EXITNAME, buttons_string)    menu_display(id, menu, 0)    } public nick_buy_menu_handler(id, menu, item){    if( item == MENU_EXIT )    {        buy_meniu(id)        return PLUGIN_HANDLED    }     switch(item) {        case 0: {            generate_password(id)            set_task(0.2, "menu_delay", id)        }        case 1: nick_buy_meniu_sec(id)        case 2: {                        new ammo_packs = zp_get_user_ammo_packs(id)            if(ammo_packs >= get_pcvar_num(g_vip_cost_ammo)) {                amx_tempadmin(id, 0)                zp_set_user_ammo_packs(id, ammo_packs - get_pcvar_num(g_vip_cost_ammo))                client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "BOUGHT_VIP", get_pcvar_num(g_vip_buy_time))                        }            else client_printcolor(id, "/g%s /y%L", CHAT_PREFIX, id, "MISSING_AMMO", get_pcvar_num(g_vip_cost_ammo)-ammo_packs)                        menu_destroy(menu)            return PLUGIN_HANDLED        }    }        menu_destroy(menu)    return PLUGIN_HANDLED}public nick_buy_meniu_sec(id){    new holder[150], menu    formatex(holder, charsmax(holder), "\r%L", id, "NICK_BUY_MENU_SEC_TOP")    menu = menu_create(holder, "nick_buy_menu_sec_handler")        formatex(holder, charsmax(holder), "%L", id, "BACK")    menu_additem(menu, holder)        menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)    menu_display(id, menu, 0)} public nick_buy_menu_sec_handler(id, menu, item){    nick_buy_meniu(id)    menu_destroy(menu)    return PLUGIN_HANDLED;} public _menu_callback(id, menu, item) {        if(item == 1) {        new authid[30]        get_user_authid(id, authid, charsmax(authid))        if(equal(authid, "STEAM_0", 7)) return ITEM_ENABLED        else return ITEM_DISABLED    }        return ITEM_ENABLED} public menu_delay(id) nick_buy_meniu(id)#endifpublic message_cur_weapon(msg_id, msg_dest, msg_entity){    if (!get_pcvar_num(g_unlimited_clip)) return#if MODE & (1<<0)    if (!(g_user_privileges[msg_entity] & FLAG_C)) return#else    if (!(get_user_flags(msg_entity) & VIPACCES)) return#endif    if (!is_user_alive(msg_entity) || get_msg_arg_int(1) != 1) return        static weapon, clip    weapon = get_msg_arg_int(2)    clip = get_msg_arg_int(3)        if (MAXCLIP[weapon] > 2)    {        set_msg_arg_int(3, get_msg_argtype(3), MAXCLIP[weapon])                if (clip < 2)        {            static wname[32], weapon_ent            get_weaponname(weapon, wname, sizeof wname - 1)            weapon_ent = find_ent_by_owner(-1, wname, msg_entity)            fm_set_weapon_ammo(weapon_ent, MAXCLIP[weapon])        }    }} public HUDReset()    setVip()    public setVip(){    new players[32], pNum    get_players(players, pNum, "a")     for (new i = 0; i < pNum; i++)    {        new id = players[i]#if MODE & (1<<0)           if (g_user_privileges[id] & FLAG_A)#else        if (get_user_flags(id) & VIPACCES)#endif        {            message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))            write_byte(id)            write_byte(4)            message_end()        }    }    return PLUGIN_HANDLED} public print_adminlist(user) {    new adminnames[33][32]    new message[256]    new contactinfo[256], contact[112]    new id, count, x, len        for(id = 1 ; id <= maxplayers ; id++)        if(is_user_connected(id))#if MODE & (1<<0)            if(g_user_privileges[id] & FLAG_A)#else            if(get_user_flags(id) & VIPACCES)#endif                get_user_name(id, adminnames[count++], 31)     len = format(message, 255, "%L ", id, "VIP_STATUS")    if(count > 0) {        for(x = 0 ; x < count ; x++) {            len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")            if(len > 96 ) {                client_printcolor(user, "/g%s", message)                len = format(message, 255, "")            }        }        client_printcolor(user, "/g%s", message)    }    else {        len += format(message[len], 255-len, "%L ", id, "VIP_STATUS_N")        client_printcolor(user, "/g%s", message)    }        get_cvar_string("amx_contactinfo", contact, 63)    if(contact[0])  {        format(contactinfo, 111, "%L ", id, "VIP_STATUS_CON", contact)        client_printcolor(user, "/g%s", contactinfo)    }    } public client_disconnect(id){    jumpnum[id] = 0    g_damage[id] = 0.0    dojump[id] = false} public client_PreThink(id){#if MODE & (1<<0)    if(!is_user_alive(id) || !g_jumps || (!(g_user_privileges[id] & FLAG_B))) return PLUGIN_CONTINUE#else    if(!is_user_alive(id) || !g_jumps || (!(get_user_flags(id) & MJACCES))) return PLUGIN_CONTINUE#endif    static nbut, obut, fflags    nbut= get_user_button(id)    obut = get_user_oldbutton(id)    fflags = get_entity_flags(id)        if((nbut & IN_JUMP) && !(fflags & FL_ONGROUND) && !(obut & IN_JUMP))    {        if(jumpnum[id] < chache_g_jumps &&         ((g_bit & FLAG_D && zp_get_user_nemesis(id)) ||         (g_bit & FLAG_C && zp_get_user_survivor(id)) ||         (g_bit & FLAG_A && !zp_get_user_zombie(id)) ||        (g_bit & FLAG_B && zp_get_user_zombie(id) && !zp_get_user_nemesis(id))))        {            dojump[id] = true            jumpnum[id]++            return PLUGIN_CONTINUE        }    }    if((nbut & IN_JUMP) && (fflags & FL_ONGROUND))    {        jumpnum[id] = 0        return PLUGIN_CONTINUE    }        return PLUGIN_CONTINUE} public client_PostThink(id){#if MODE & (1<<0)    if(!is_user_alive(id) || !get_pcvar_num(g_jumps) || (!(g_user_privileges[id] & FLAG_B))) return PLUGIN_CONTINUE#else    if(!is_user_alive(id) || !get_pcvar_num(g_jumps) || (!(get_user_flags(id) & MJACCES))) return PLUGIN_CONTINUE#endif    if(dojump[id] == true)    {        static Float:velocity[3]            entity_get_vector(id,EV_VEC_velocity,velocity)        velocity[2] = random_float(265.0,285.0)        entity_set_vector(id,EV_VEC_velocity,velocity)        dojump[id] = false        return PLUGIN_CONTINUE    }    return PLUGIN_CONTINUE}    public ShowMotd(id)    show_motd(id, "vip.txt")#if MODE & (1<<0)public reload_vips() {        if(database_holder) ArrayDestroy(database_holder)    database_holder = ArrayCreate(database_items)    new configsDir[64]    get_configsdir(configsDir, 63)    format(configsDir, 63, "%s/vips.ini", configsDir)        new File=fopen(configsDir,"r");        if (File)    {        static Text[512], Flags[32], AuthData[50], Privileges_Flags[32], Password[50]        while (!feof(File))        {            fgets(File,Text,sizeof(Text)-1);                        trim(Text);                        // comment            if (Text[0]==';')             {                continue;            }                        Flags[0]=0;            AuthData[0]=0;            Privileges_Flags[0]=0;            Password[0]=0;                        // not enough parameters            if (parse(Text,AuthData,sizeof(AuthData)-1,Password,sizeof(Password)-1,Privileges_Flags,sizeof(Privileges_Flags)-1,Flags,sizeof(Flags)-1) < 2)            {                continue;            }             vips_database[auth] = AuthData            vips_database[password] = Password            vips_database[accessflags] = read_flags(Privileges_Flags)            vips_database[flags] = read_flags(Flags)            ArrayPushArray(database_holder, vips_database)        }                fclose(File);    }    else log_amx("Error: vips.ini file doesn't exist")}#endif#if MODE & (1<<0) && MODE & (1<<1)public check_date(){    new holder[20]    new y, m ,d    date(y, m, d)    format(holder, charsmax(holder), "m%dd%dy%d", m, d, y)     new configdir[200]    get_configsdir(configdir,199)     new configfile1[200]     format(configfile1,199,"%s/vips.ini",configdir)        new text[512], len    new pnum = file_size(configfile1,1)    for(new i = 1; i < pnum; i++)    {        read_file(configfile1, i, text, 511, len)        if ( contain(text, holder) != -1 )         {            DeleteLine(configfile1, i)        }    }    return PLUGIN_HANDLED} public amx_tempadmin(id, type){       new authid[31], ip[31], name[51], client_password[20], p_flags[21], sdate[20]    get_pcvar_string(g_vip_buy_flags, p_flags, charsmax(p_flags))    get_user_authid(id, authid, charsmax(authid))    get_user_ip(id, ip, charsmax(ip), 1)    get_user_name(id, name, charsmax(name))    get_user_info(id, amx_password_field_string, client_password, charsmax(client_password))        get_date(get_pcvar_num(g_vip_buy_time), sdate, charsmax(sdate))        new holder[200]    switch(type) {        case 0: formatex(holder, charsmax(holder), "^"%s^" ^"%s^" ^"%s^" ^"b^"; Exp: %s", name, client_password, p_flags, sdate)        case 1: formatex(holder, charsmax(holder), "^"%s^" ^"^" ^"%s^" ^"ce^"; Exp: %s", authid, p_flags, sdate)        case 2: formatex(holder, charsmax(holder), "^"%s^" ^"^" ^"%s^" ^"de^"; Exp: %s", ip, p_flags, sdate)    }        new configdir[200]    get_configsdir(configdir, 199)    new configfile1[200]    format(configfile1,199,"%s/vips.ini",configdir)    write_file(configfile1, holder, -1)    server_cmd("amx_reloadvips")    set_task(1.0, "set_flags", id)    } DeleteLine( const szFilename[ ], const iLine ){    new iFile = fopen( szFilename, "rt" );    if( !iFile )    {        return;    }    static const szTempFilename[ ] = "delete_line.txt";    new iTempFile = fopen( szTempFilename, "wt" );        new szData[ 256 ], iLineCount, bool:bReplaced = false;    while( !feof( iFile ) )    {        fgets( iFile, szData, 255 );                if( iLineCount++ == iLine )        {            bReplaced = true;        }        else        {            fputs( iTempFile, szData );        }    }        fclose( iFile );    fclose( iTempFile );        if( bReplaced )    {        delete_file( szFilename );                while( !rename_file( szTempFilename, szFilename, 1 ) ) { }    }    else    {        delete_file( szTempFilename );    }} stock get_date(days, string[], chars) {        new y, m, d    date(y, m ,d)        d+=days        new go = true    while(go) {        switch(m) {            case 1,3, 5, 7, 8, 10: {                if(d>31) { d=d-31; m++; }                else go = false            }            case 2: {                if(d>28) { d=d-28; m++; }                else go = false            }            case 4, 6, 9, 11: {                if(d>30) { d=d-30; m++; }                else go = false            }            case 12: {                if(d>31) { d=d-31; y++; m=1; }                else go = false            }        }    }    formatex(string, chars, "m%dd%dy%d", m, d ,y)}#endif stock client_printcolor(id, const message[], any:...){    static buffer[512], argscount    argscount = numargs()        if (!id) {                static players[32], num, player, i, i2        get_players(players, num , "ch")                    for (i = 0; i < num; i++) {                        player = players[i]                        static changed[5], changedcount            changedcount = 0                        for (i2 = 2; i2 < argscount; i2++)            {                if (getarg(i2) == LANG_PLAYER)                {                    setarg(i2, 0, player)                    changed[changedcount] = i2                    changedcount++                }            }                        vformat(buffer, charsmax(buffer), message, 3)                        replace_all(buffer, charsmax(buffer), "/g", "^4")            replace_all(buffer, charsmax(buffer), "/y", "^1")                    message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, player)            write_byte(player)            write_string(buffer)            message_end()                        for (i2 = 0; i2 < changedcount; i2++)                setarg(changed[i2], 0, LANG_PLAYER)        }    }    else {                vformat(buffer, charsmax(buffer), message, 3)                replace_all(buffer, charsmax(buffer), "/g", "^4")        replace_all(buffer, charsmax(buffer), "/y", "^1")                message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, id)        write_byte(id)        write_string(buffer)        message_end()    }} stock fm_find_ent_by_owner(entity, const classname[], owner){    while ((entity = engfunc(EngFunc_FindEntityByString, entity, "classname", classname)) && pev(entity, pev_owner) != owner) {}        return entity;} stock fm_set_weapon_ammo(entity, amount){    set_pdata_int(entity, OFFSET_CLIPAMMO, amount, OFFSET_LINUX_WEAPONS);}#if MODE & (1<<0)public set_flags(id) {        static authid[31], ip[31], name[51], index, client_password[30], size, log_flags[11]    get_user_authid(id, authid, 30)    get_user_ip(id, ip, 30, 1)    get_user_name(id, name, 50)    get_user_info(id, amx_password_field_string, client_password, charsmax(client_password))        g_user_privileges[id] = 0    size = ArraySize(database_holder)    for(index=0; index < size ; index++) {        ArrayGetArray(database_holder, index, vips_database)        if(vips_database[flags] & FLAG_D) {            if(equal(ip, vips_database[auth])) {                if(!(vips_database[flags] & FLAG_E)) {                    if(equal(client_password, vips_database[password]))                        g_user_privileges[id] = vips_database[accessflags]                    else if(vips_database[flags] & FLAG_A) {                        server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS")                        break                    }                }                else g_user_privileges[id] = vips_database[accessflags]                get_flags(vips_database[accessflags], log_flags, 10)                log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags)                break            }        }        else if(vips_database[flags] & FLAG_C) {            if(equal(authid, vips_database[auth])) {                if(!(vips_database[flags] & FLAG_E)) {                    if(equal(client_password, vips_database[password]))                        g_user_privileges[id] = vips_database[accessflags]                    else if(vips_database[flags] & FLAG_A) {                        server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS")                        break                    }                }                else g_user_privileges[id] = vips_database[accessflags]                get_flags(vips_database[accessflags], log_flags, 10)                log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags)                break            }        }        else {            if(vips_database[flags] & FLAG_K) {                if((vips_database[flags] & FLAG_B && contain(name, vips_database[auth]) != -1) || equal(name, vips_database[auth])) {                    if(!(vips_database[flags] & FLAG_E)) {                        if(equal(client_password, vips_database[password]))                            g_user_privileges[id] = vips_database[accessflags]                        else if(vips_database[flags] & FLAG_A) {                            server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS")                            break                        }                    }                    else g_user_privileges[id] = vips_database[accessflags]                    get_flags(vips_database[accessflags], log_flags, 10)                    log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags)                    break                }            }            else {                if((vips_database[flags] & FLAG_B && containi(name, vips_database[auth]) != -1) || equali(name, vips_database[auth])) {                    if(!(vips_database[flags] & FLAG_E)) {                        if(equal(client_password, vips_database[password]))                            g_user_privileges[id] = vips_database[accessflags]                        else if(vips_database[flags] & FLAG_A) {                            server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "INV_PAS")                            break                        }                    }                    else g_user_privileges[id] = vips_database[accessflags]                    get_flags(vips_database[accessflags], log_flags, 10)                    log_amx("%L",LANG_PLAYER, "AUTHORISED", name, authid, ip, log_flags)                    break                }            }        }    }}#endif#if MODE & (1<<0) && MODE & (1<<1)stock generate_password(id) {        new password_holder[30]    formatex(password_holder, charsmax(password_holder), "%d%d%d%d%d", random(10), random(10), random(10), random(10), random(10))    client_cmd(id, "setinfo %s %s", amx_password_field_string, password_holder)}#endif#if MODE & (1<<0)public native_zv_get_user_flags(id)    return g_user_privileges[id]#endif#if MODE & (1<<1)public native_zv_register_extra_item(const item_name[], const item_discription[], item_cost, item_team){        if(!items_database) items_database = ArrayCreate(items)                param_convert(1)        param_convert(2)        copy(extra_items[i_name], 30, item_name)        copy(extra_items[i_description], 30, item_discription)        extra_items[i_cost] = item_cost        extra_items[i_team] = item_team        ArrayPushArray(items_database, extra_items)        g_registered_items_count++         return g_registered_items_count} public plugin_end() if(items_database) ArrayDestroy(items_database)#endif 
Image
Image
Image

Post Reply

Who is online

Users browsing this forum: Ahrefs [Bot], Amazon [Bot] and 6 guests