AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Suggestions / Requests (https://forums.alliedmods.net/forumdisplay.php?f=12)
-   -   Help edit VIP plugin (https://forums.alliedmods.net/showthread.php?t=309145)

vase070 07-15-2018 03:36

Help edit VIP plugin
 
hi all can someone make these changes to this vip plugin i would greatly appreciate it

make the vip menu to close when player leaves the buy zone.. its very unfair that player can open vip menu anytime and anywhere on map ...
perhaps a cvar like this would be great

menu_buyzone_only 1/0 - the vip menu will work only while player is in buyzone

also another cvar like this to control how much time the vip menu will be active [making this based on mp_buytime would be great]

menu_buytime_lock 1/0 - close and lock the VIP menu when mp_buytime ends [to make it more clear if mp_buytime is "0.25" the vip menu should close and lock 15 secs after players spawns which is the same amount of time he has to buy weapons]

a cvar to disable "/vipmenu" say command would be great
also the vipmenu should not close when selecting the unavailable weapons, for example if i press 4 for AWP while it's still not unavailable the menu will close ...

hope someone here can make these changes as i am a bit noob i coding :)

Code:

#include <amxmodx>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta_util>

#define PLUGIN "[SWE] VipSystem"
#define VERSION "1.0"
#define AUTHOR "IIPU3PAK"

static const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
static const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)

new gRoundNumber, gBufCount
new gUseRound[33], ITEM[33], gBufName[32][32], gBufNameDeactivate[32][32], gBufWeapon[32][32], gBufRound[32],  who[33] = 0 //0 - Игрок, 1 - VIP
new bool:BlockMaps = false

enum _:cvars
{
        TAB, USE_ROUND, FLAGS, AUTO_OPEN, MAX_HP, KILL, HEAD, KNIFE, M_KILL, M_HEAD, M_KNIFE, CONNECT, DROP_OR_STRIP, OPEN_ROUND
}
new g_Cvars[cvars]

public plugin_init()
{
        register_plugin(PLUGIN, VERSION, AUTHOR)

        register_clcmd("say /vipmenu", "VipMenu")
        register_clcmd("say_team /vipmenu", "VipMenu")
        register_clcmd("vipmenu", "VipMenu")
       
        RegisterHam(Ham_Spawn, "player", "HamSpawn", 1)
        register_event("HLTV", "StartRound", "a", "1=0", "2=0")
        register_event("TextMsg", "RestartRound", "a", "2=#Game_will_restart_in","2=#Game_Commencing")
        register_event("ResetHUD", "event_ResetHUD", "be")
        register_event("DeathMsg", "death", "a", "1>0")
       
        register_dictionary("swe_vipSystem.txt")
}

public client_putinserver(id)
{
        if(get_user_flags(id) & g_Cvars[FLAGS])
                who[id] = 1
        else
                who[id] = 0
       
        if(g_Cvars[CONNECT] == 1)
        {
                if(who[id] >= 1)
                {
                        new iName[32]
                        get_user_name(id, iName, 31)
                        ChatColor(0, "%L %L",LANG_PLAYER, "VIP_TAG", LANG_PLAYER, "VIP_CONNECT", iName)
                }
        }
}

public client_disconnect(id)
        who[id] = 0

public plugin_cfg()
{
        new block = 0
        new Buffer[64], BufCvar[33], BufValue[33]
        new const iniPatch[] = "addons/amxmodx/configs/swe_vipSystem.ini"
        new FileID = fopen(iniPatch, "rt")
        new getMap[33]; get_mapname(getMap, charsmax(getMap))
       
        if(!file_exists(iniPatch))
                set_fail_state("^"addons/amxmodx/configs/swe_vipSystem.ini^" Not Found!")
       
        while(!feof(FileID))
        {
                fgets(FileID, Buffer, charsmax(Buffer))
                trim(Buffer)
               
                if(!Buffer[0] || Buffer[0] == ';' || Buffer[0] == '#' || Buffer[0] == '/' && Buffer[1] == '/')
                        continue
               
                if(equal(Buffer, "[main]"))
                {
                        block = 1
                        continue
                }
                else if(equal(Buffer, "[menu]"))
                {
                        block = 2
                        continue
                }
                else if(equal(Buffer, "[block]"))
                {
                        block = 3
                        continue
                }
               
                switch(block)
                {
                        case 1:
                        {
                                parse(Buffer, BufCvar, charsmax(BufCvar), BufValue, charsmax(BufValue))
                               
                                if(equal("flags", BufCvar)) g_Cvars[FLAGS] = read_flags(BufValue)
                                else if(equal("item", BufCvar)) ITEM = BufValue
                                else if(equal("tab", BufCvar)) g_Cvars[TAB] = str_to_num(BufValue)
                                else if(equal("connect", BufCvar)) g_Cvars[CONNECT] = str_to_num(BufValue)
                                else if(equal("drop_or_strip", BufCvar)) g_Cvars[DROP_OR_STRIP] = str_to_num(BufValue)
                               
                                else if(equal("menu_open", BufCvar)) g_Cvars[AUTO_OPEN] = str_to_num(BufValue)
                                else if(equal("menu_use_round", BufCvar)) g_Cvars[USE_ROUND] = str_to_num(BufValue)
                                else if(equal("menu_open_round", BufCvar)) g_Cvars[OPEN_ROUND] = str_to_num(BufValue)
                               
                                else if(equal("vampire_max_hp", BufCvar)) g_Cvars[MAX_HP] = str_to_num(BufValue)
                                else if(equal("vampire_kill", BufCvar)) g_Cvars[KILL] = str_to_num(BufValue)
                                else if(equal("vampire_kill_head", BufCvar)) g_Cvars[HEAD] = str_to_num(BufValue)
                                else if(equal("vampire_kill_knife", BufCvar)) g_Cvars[KNIFE] = str_to_num(BufValue)
                               
                                else if(equal("money_kill", BufCvar)) g_Cvars[M_KILL] = str_to_num(BufValue)
                                else if(equal("money_kill_head", BufCvar)) g_Cvars[M_HEAD] = str_to_num(BufValue)
                                else if(equal("money_kill_knife", BufCvar)) g_Cvars[M_KNIFE] = str_to_num(BufValue)
                        }
                        case 2:
                        {
                                new first[32], second[32], third[32], four[32]
                                parse(Buffer, first, charsmax(first), second, charsmax(second), third, charsmax(third), four, charsmax(four))
                               
                                copy(gBufName[gBufCount], charsmax(gBufName[]), first)
                                copy(gBufNameDeactivate[gBufCount], charsmax(gBufNameDeactivate[]), second)
                                copy(gBufWeapon[gBufCount], charsmax(gBufWeapon[]), third)
                                gBufRound[gBufCount] = str_to_num(four)
                                gBufCount++
                        }
                        case 3:
                        {
                                if(equal(getMap, Buffer))
                                {
                                        BlockMaps = true
                                        break
                                }
                        }
                }
        }
        fclose(FileID)
}

public StartRound()
        gRoundNumber++

public RestartRound()
        gRoundNumber = -1

public VipMenu(id)
{
        if(who[id] == 0)
        {
                ChatColor(id, "%L %L", LANG_PLAYER, "VIP_TAG", LANG_PLAYER, "VIP_NO_ACCESS")
                return PLUGIN_HANDLED
        }
       
        if(BlockMaps)
        {
                ChatColor(id, "%L %L", LANG_PLAYER, "VIP_TAG", LANG_PLAYER, "VIP_BLOCK")
                return PLUGIN_HANDLED
        }
       
        if(!is_user_alive(id))
        {
                ChatColor(id, "%L %L", LANG_PLAYER, "VIP_TAG", LANG_PLAYER, "VIP_DEAD")
                return PLUGIN_HANDLED
        }
       
        if(gRoundNumber < g_Cvars[OPEN_ROUND] - 1)
        {
                ChatColor(id, "%L %L", LANG_PLAYER, "VIP_TAG", LANG_PLAYER, "VIP_OPEN", g_Cvars[OPEN_ROUND] - 1)
                return PLUGIN_HANDLED
        }
       
        if(gUseRound[id] >= g_Cvars[USE_ROUND])
        {
                ChatColor(id, "%L %L", LANG_PLAYER, "VIP_TAG", LANG_PLAYER, "VIP_USED")
                return PLUGIN_HANDLED
        }
       
        new menu = menu_create("\r[SWE] \yVip System", "menu_handler")
        new info[128]
       
        for(new i = 0; i < gBufCount; i++)
        {
                if(gRoundNumber < gBufRound[i] - 1)
                {
                        format(info, charsmax(info), "\d%s %L", gBufNameDeactivate[i], LANG_PLAYER, "VIP_DEACTIVATE", gBufRound[i] - 1)
                        menu_additem(menu, info, "0")
                }
                else
                        menu_additem(menu, gBufName[i], "1")
        }

        menu_setprop(menu, MPROP_BACKNAME, "Back")
        menu_setprop(menu, MPROP_NEXTNAME, "Next")
        menu_setprop(menu, MPROP_EXITNAME, "Exit")

        menu_display(id, menu, 0)
        return PLUGIN_HANDLED
}

public menu_handler(id, menu, item)
{
        if(item == MENU_EXIT)
        {
                menu_destroy(menu)
                return PLUGIN_HANDLED
        }

        new data[6], iName[64], access, callback
        menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)
        new key = str_to_num(data)

        switch(key)
        {
                case 0:
                {
                        ChatColor(id, "%L %L", LANG_PLAYER, "VIP_TAG", LANG_PLAYER, "VIP_WEAPON", gBufRound[item] - 1)
                }
                case 1:
                {
                        if(!is_user_alive(id))
                        {
                                ChatColor(id, "%L %L", LANG_PLAYER, "VIP_TAG", LANG_PLAYER, "VIP_DEAD")
                                return PLUGIN_HANDLED
                        }
       
                        gUseRound[id] ++
                        drop_weapons(id, 1)
                        give_weapon(id, gBufWeapon[item])
                }
        }
        return PLUGIN_HANDLED
}

public HamSpawn(id)
{
        if(who[id] == 1)
        {
                if(BlockMaps)
                        return
                       
                if(!is_user_alive(id))
                        return
               
                gUseRound[id] = 0
               
                if(g_Cvars[AUTO_OPEN] == 1)
                {
                        if(!cs_get_user_hasprim(id) && gRoundNumber >= g_Cvars[OPEN_ROUND] - 1)
                                VipMenu(id)
                }
                if(containi(ITEM, "s") != -1)
                {
                        drop_weapons(id, 2)
                        give_item(id, "weapon_deagle")
                        cs_set_user_bpammo(id, CSW_DEAGLE, 36)
                }
               
                if(containi(ITEM, "g") != -1)
                {
                        give_item(id, "weapon_hegrenade")
                        give_item(id, "weapon_smokegrenade")
                        give_item(id, "weapon_flashbang")
                        give_item(id, "weapon_flashbang")
                }
               
                if(containi(ITEM, "d") != -1)
                {
                        if(get_user_team(id) == 2)
                                cs_set_user_defuse(id, 1, 0, 160, 0, _, 0)
                }
                       
                if(containi(ITEM, "a") != -1)
                        give_item(id, "item_assaultsuit")
        }
}

//////////////////////////        Kill Bonus
public death()
{
        if(BlockMaps)
                return
       
        new Killer = read_data(1)
        new HeadShot = read_data(3)
       
        if(who[Killer] == 0)
                return
               
        if(g_Cvars[MAX_HP] > 0)
        {
                /////HP
                if(g_Cvars[KNIFE] > 0 && get_user_weapon(Killer) == CSW_KNIFE)
                        set_user_health(Killer, get_user_health(Killer) + g_Cvars[KNIFE])
               
                if(g_Cvars[HEAD] > 0 && HeadShot)
                        set_user_health(Killer, get_user_health(Killer) + g_Cvars[HEAD])
                else{
                        if(g_Cvars[KILL] > 0)
                                set_user_health(Killer, get_user_health(Killer) + g_Cvars[KILL])
                }
               
                if(get_user_health(Killer) > g_Cvars[MAX_HP])
                        set_user_health(Killer, g_Cvars[MAX_HP])
        }
       
        if(g_Cvars[M_KILL] > 0)
        {
                /////Money
                if(g_Cvars[M_KNIFE] > 0 && get_user_weapon(Killer) == CSW_KNIFE)
                        set_user_health(Killer, get_user_health(Killer) + g_Cvars[M_KNIFE])
               
                if(g_Cvars[M_HEAD] > 0 && HeadShot)
                        cs_set_user_money(Killer, cs_get_user_money(Killer) + g_Cvars[M_HEAD])
                else
                        if(g_Cvars[M_KILL] > 0)
                                cs_set_user_money(Killer, cs_get_user_money(Killer) + g_Cvars[M_KILL])
        }
}

public event_ResetHUD(id)
{
        if(g_Cvars[TAB] == 1)
                set_task(0.5, "VIP", id + 6910)
}

public VIP(TaskID)
{
        new id = TaskID - 6910
       
        if(who[id] >= 1)
        {
                message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
                write_byte(id)
                write_byte(4)
                message_end()
        }
       
        return PLUGIN_HANDLED
}

stock give_weapon(const id, const wpName[32])
{
        static const weaponList[18][16] = {"weapon_scout", "weapon_xm1014", "weapon_mac10",
                                                                        "weapon_aug", "weapon_ump45", "weapon_sg550",
                                                                        "weapon_galil", "weapon_famas", "weapon_awp",
                                                                        "weapon_mp5navy", "weapon_m249", "weapon_m3",
                                                                        "weapon_m4a1", "weapon_tmp", "weapon_g3sg1",
                                                                        "weapon_sg552", "weapon_ak47", "weapon_p90"}
        static const weaponListCSW[18] = {CSW_SCOUT, CSW_XM1014, CSW_MAC10, CSW_AUG, CSW_UMP45,
                                                                                CSW_SG550, CSW_GALIL, CSW_FAMAS, CSW_AWP, CSW_MP5NAVY,
                                                                                CSW_M249, CSW_M3, CSW_M4A1, CSW_TMP, CSW_G3SG1, CSW_SG552,
                                                                                CSW_AK47, CSW_P90}
        static const brammoList[18] = {90, 32, 100, 90, 100, 90, 90, 90, 30, 120, 200, 32, 90, 120, 90, 90, 90, 100}
       
        new i
       
        while(i <= charsmax(weaponList))
        {
                if(equal(weaponList[i], wpName))
                {
                        break
                }
                i++
        }
       
        give_item(id, weaponList[i])
        cs_set_user_bpammo(id, weaponListCSW[i], brammoList[i])
       
        return weaponList[i]
}

stock drop_weapons(id, dropwhat)
{
        static weapons[32], num, i, weaponid
        num = 0
        get_user_weapons(id, weapons, num)
        for (i = 0; i < num; i++)
        {
                weaponid = weapons[i]

                if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
                {
                        static wname[32]
                        get_weaponname(weaponid, wname, charsmax(wname))
                        if(g_Cvars[DROP_OR_STRIP] == 0)
                                fm_strip_user_gun(id, weapons[i])
                        else
                                engclient_cmd(id, "drop", wname)
                }
        }
}

stock ChatColor(const id, const input[], any:...)
{
    new count = 1, players[32], i
    static msg[191]
    vformat(msg, 190, input, 3)
   
    replace_all(msg, 190, "!g", "^4") // Green Color
    replace_all(msg, 190, "!n", "^1") // Default Color
    replace_all(msg, 190, "!t", "^3") // Team Color
 
    if(id)players[0] = id; else get_players(players, count, "ch")
    {
        for(i = 0; i < count; i++)
        {
            if(is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                write_byte(players[i])
                write_string(msg)
                message_end()
            }
        }
    }
}



All times are GMT -4. The time now is 09:39.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.