Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

RSSOrder Of Weapons


MYGO.pl
 Udostępnij

Rekomendowane odpowiedzi

  • RSSy
i have a plugin which unlock weapons according to level but the issue is that when a new weapons get unlock it goes down the order. but i want the old weapons to go down order.. the new weapons unlocked should stay at top.
Code:

#include <zombie_escape>
#include <ze_levels>

native give_golden_m3(id);
native give_golden_mp5(id);
native give_golden_m4a1(id);
native give_golden_ak47(id);

// Setting File
new const ZE_SETTING_RESOURCES[] = "zombie_escape.ini"

// Keys
const KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
const OFFSET_CSMENUCODE = 205

// Primary Weapons Entities [Default Values]
new const szPrimaryWeaponEnt[][] =
{
        "weapon_xm1014",  // Level 0
        "weapon_ump45",  // Level 0
        "weapon_m3",      // Level 1
        "weapon_mp5navy", // Level 2
        "weapon_p90",    // Level 3
        "weapon_galil",  // Level 4
        "weapon_famas",  // Level 5
        "weapon_sg550",  // Level 6
        "weapon_g3sg1",  // Level 7
        "weapon_m249",    // Level 8
        "weapon_sg552",  // Level 9
        "weapon_aug",    // Level 10
        "weapon_m4a1",    // Level 11
        "weapon_ak47"    // Level 12
}

// Secondary Weapons Entities [Default Values]
new const szSecondaryWeaponEnt[][]=
{
        "weapon_usp",        // Level 0
        "weapon_p228",        // Level 0
        "weapon_glock18",    // Level 1
        "weapon_fiveseven",  // Level 2
        "weapon_deagle",      // Level 3
        "weapon_elite"        // Level 4
}

// Primary and Secondary Weapons Names [Default Values]
new const szWeaponNames[][] =
{
        "",
        "P228",
        "",
        "Scout",
        "HE Grenade",
        "XM1014",
        "",
        "MAC-10",
        "AUG",
        "Smoke Grenade",
        "Dual Elite",
        "Five Seven",
        "UMP 45",
        "SG-550",
        "Galil",
        "Famas",
        "USP",
        "Glock",
        "AWP",
        "MP5",
        "M249",
        "M3",
        "M4A1",
        "TMP",
        "G3SG1",
        "Flashbang",
        "Desert Eagle",
        "SG-552",
        "AK-47",
        "",
        "P90"
}

// Max Back Clip Ammo (Change it From here if you need)
new const szMaxBPAmmo[] =
{
        -1,
        52,
        -1,
        90,
        1,
        32,
        1,
        100,
        90,
        1,
        120,
        100,
        100,
        90,
        90,
        90,
        100,
        120,
        30,
        120,
        200,
        32,
        90,
        120,
        90,
        2,
        35,
        90,
        90,
        -1,
        100
}

// Menu selections
const MENU_KEY_AUTOSELECT = 7
const MENU_KEY_BACK = 7
const MENU_KEY_NEXT = 8
const MENU_KEY_EXIT = 9

// Variables
new Array:g_szPrimaryWeapons, Array:g_szSecondaryWeapons

new g_iMenuData[33][4],
        Float:g_fBuyTimeStart[33],
        bool:g_bBoughtPrimary[33],
        bool:g_bBoughtSecondary[33],
        WPN_MAXIDS[33]

// Define
#define WPN_STARTID g_iMenuData[id][0]
#define WPN_SELECTION (g_iMenuData[id][0]+key)
#define WPN_AUTO_ON g_iMenuData[id][1]
#define WPN_AUTO_PRI g_iMenuData[id][2]
#define WPN_AUTO_SEC g_iMenuData[id][3]

// Cvars
new g_pCvarBuyTime,
        g_pCvarHeGrenade,
        g_pCvarSmokeGrenade,
        g_pCvarFlashGrenade,
        g_pCvarBlockWeapLowLevel

public plugin_natives()
{
        register_native("ze_show_weapon_menu", "native_ze_show_weapon_menu", 1)
        register_native("ze_is_auto_buy_enabled", "native_ze_is_auto_buy_enabled", 1)
        register_native("ze_disable_auto_buy", "native_ze_disable_auto_buy", 1)
}

public plugin_precache()
{
        // Initialize arrays (32 is the max length of Weapon Entity like: weapon_ak47)
        g_szPrimaryWeapons = ArrayCreate(32, 1)
        g_szSecondaryWeapons = ArrayCreate(32, 1)
       
        // Load from external file
        amx_load_setting_string_arr(ZE_SETTING_RESOURCES, "Weapons Menu", "PRIMARY", g_szPrimaryWeapons)
        amx_load_setting_string_arr(ZE_SETTING_RESOURCES, "Weapons Menu", "SECONDARY", g_szSecondaryWeapons)
       
        // If we couldn't load from file, use and save default ones
       
        new iIndex
       
        if (ArraySize(g_szPrimaryWeapons) == 0)
        {
                for (iIndex = 0; iIndex < sizeof szPrimaryWeaponEnt; iIndex++)
                        ArrayPushString(g_szPrimaryWeapons, szPrimaryWeaponEnt[iIndex])
               
                // If not found .ini File Create it and save default values in it
                amx_save_setting_string_arr(ZE_SETTING_RESOURCES, "Weapons Menu", "PRIMARY", g_szPrimaryWeapons)
        }
       
        if (ArraySize(g_szSecondaryWeapons) == 0)
        {
                for (iIndex = 0; iIndex < sizeof szSecondaryWeaponEnt; iIndex++)
                        ArrayPushString(g_szSecondaryWeapons, szSecondaryWeaponEnt[iIndex])
               
                // If not found .ini File Create it and save default values in it
                amx_save_setting_string_arr(ZE_SETTING_RESOURCES, "Weapons Menu", "SECONDARY", g_szSecondaryWeapons)
        }
}

public plugin_init()
{
        register_plugin("[ZE] Levels Weapons Menu", "1.1", "Raheem")
       
        // Commands
        register_clcmd("guns", "Cmd_Buy")
        register_clcmd("say /enable", "Cmd_Enable")
        register_clcmd("say_team /enable", "Cmd_Enable")
       
        // Cvars
        g_pCvarBuyTime = register_cvar("ze_buy_time", "60")
        g_pCvarHeGrenade = register_cvar("ze_give_HE_nade", "1") // 0 Nothing || 1 Give HE
        g_pCvarSmokeGrenade = register_cvar("ze_give_SM_nade", "1")
        g_pCvarFlashGrenade = register_cvar("ze_give_FB_nade", "1")
        g_pCvarBlockWeapLowLevel = register_cvar("ze_block_weapons_lowlvl", "1")
       
        // Menus
        register_menu("Primary Weapons", KEYSMENU, "Menu_Buy_Primary")
        register_menu("Secondary Weapons", KEYSMENU, "Menu_Buy_Secondary")
       
        // Hams
        RegisterHam(Ham_Touch, "weaponbox", "Fw_TouchWeapon_Pre", 0)
        RegisterHam(Ham_Touch, "armoury_entity", "Fw_TouchWeapon_Pre", 0)
}

public client_disconnected(id)
{
        WPN_AUTO_ON = 0
        WPN_STARTID = 0
}

public Cmd_Enable(id)
{
        if (WPN_AUTO_ON)
        {
                ze_colored_print(id, "%L", LANG_PLAYER, "BUY_ENABLED")
                WPN_AUTO_ON = 0
        }
}

public Cmd_Buy(id)
{
        // Player Zombie
        if (ze_is_user_zombie(id))
        {
                ze_colored_print(id, "%L", LANG_PLAYER, "NO_BUY_ZOMBIE")
                return
        }
       
        // Player Dead
        if (!is_user_alive(id))
        {
                ze_colored_print(id, "%L", LANG_PLAYER, "DEAD_CANT_BUY_WEAPON")
                return
        }
       
        // Already bought
        if (g_bBoughtPrimary[id] && g_bBoughtSecondary[id])
        {
                ze_colored_print(id, "%L", LANG_PLAYER, "ALREADY_BOUGHT")
        }
       
        Show_Available_Buy_Menus(id)
}

public ze_user_humanized(id)
{
        // Static Values
        switch (ze_get_user_level(id))
        {
                case 0: WPN_MAXIDS[id] = 2
                case 1: WPN_MAXIDS[id] = 3
                case 2: WPN_MAXIDS[id] = 4
                case 3: WPN_MAXIDS[id] = 5
                case 4: WPN_MAXIDS[id] = 6
                case 5: WPN_MAXIDS[id] = 7
                case 6: WPN_MAXIDS[id] = 8
                case 7: WPN_MAXIDS[id] = 9
                case 8: WPN_MAXIDS[id] = 10
                case 9: WPN_MAXIDS[id] = 11
                case 10: WPN_MAXIDS[id] = 12
                case 11: WPN_MAXIDS[id] = 13
                case 12..14: WPN_MAXIDS[id] = 14
                case 15..19: WPN_MAXIDS[id] = 15 // Golden m3
                case 20..24: WPN_MAXIDS[id] = 16 // Golden MP5
                case 25..29: WPN_MAXIDS[id] = 17 // Golden M4A1
                case 30: WPN_MAXIDS[id] = 18    // Golden AK47
        }
       
        if (ze_get_user_level(id) > 30)
        {
                WPN_MAXIDS[id] = 18
        }

        // Buyzone time starts when player is set to human
        g_fBuyTimeStart[id] = get_gametime()
       
        g_bBoughtPrimary[id] = false
        g_bBoughtSecondary[id] = false
       
        // Player dead or zombie
        if (!is_user_alive(id) || ze_is_user_zombie(id))
                return
       
        if (WPN_AUTO_ON)
        {
                ze_colored_print(id, "%L", LANG_PLAYER, "RE_ENABLE_MENU")
                Buy_Primary_Weapon(id, WPN_AUTO_PRI)
                Buy_Secondary_Weapon(id, WPN_AUTO_SEC)
        }
       
        // Open available buy menus
        Show_Available_Buy_Menus(id)
       
        // Give HE Grenade
        if (get_pcvar_num(g_pCvarHeGrenade) != 0)
                rg_give_item(id, "weapon_hegrenade")
       
        // Give Smoke Grenade
        if (get_pcvar_num(g_pCvarSmokeGrenade) != 0)
                rg_give_item(id, "weapon_smokegrenade")
       
        // Give Flashbang Grenade
        if (get_pcvar_num(g_pCvarFlashGrenade) != 0)
                rg_give_item(id, "weapon_flashbang")
}

public Show_Available_Buy_Menus(id)
{
        // Already Bought
        if (g_bBoughtPrimary[id] && g_bBoughtSecondary[id])
                return
       
        // Here we use if and else if so we make sure that Primary weapon come first then secondary
        if (!g_bBoughtPrimary[id])
        {
                // Primary               
                Show_Menu_Buy_Primary(id)
        }
        else if (!g_bBoughtSecondary[id])
        {
                // Secondary
                Show_Menu_Buy_Secondary(id)
        }
}

public Show_Menu_Buy_Primary(id)
{
        new iMenuTime = floatround(g_fBuyTimeStart[id] + get_pcvar_float(g_pCvarBuyTime) - get_gametime())
       
        if (iMenuTime <= 0)
        {
                ze_colored_print(id, "%L", id, "BUY_MENU_TIME_EXPIRED")
                return
        }
       
        static szMenu[300], szWeaponName[32]
        new iLen, iIndex, iMaxLoops = min(WPN_STARTID+7, WPN_MAXIDS[id])
       
        // Title
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y%L \w[\r%d\w-\r%d\w]^n^n", id, "MENU_PRIMARY_TITLE", WPN_STARTID+1, min(WPN_STARTID+7, WPN_MAXIDS[id]))
       
        // 1-7. Weapon List
        for (iIndex = WPN_STARTID; iIndex < iMaxLoops; iIndex++)
        {
                if (ze_get_user_level(id) == 0 && iIndex >= 2||
                ze_get_user_level(id) == 1 && iIndex >= 3 ||
                ze_get_user_level(id) == 2 && iIndex >= 4 ||
                ze_get_user_level(id) == 3 && iIndex >= 5 ||
                ze_get_user_level(id) == 4 && iIndex >= 6 ||
                ze_get_user_level(id) == 5 && iIndex >= 7 ||
                ze_get_user_level(id) == 6 && iIndex >= 8 ||
                ze_get_user_level(id) == 7 && iIndex >= 9 ||
                ze_get_user_level(id) == 8 && iIndex >= 10 ||
                ze_get_user_level(id) == 9 && iIndex >= 11 ||
                ze_get_user_level(id) == 10 && iIndex >= 12 ||
                ze_get_user_level(id) == 11 && iIndex >= 13 ||
                ze_get_user_level(id) == 12 && iIndex >= 14)
                {
                        break
                }
               
                /*
                *  Note that WPN_MAXIDS start from 1 but iIndex start from 0.
                */
               
                // Golden M3
                if (ze_get_user_level(id) >= 15 && ze_get_user_level(id) < 20)
                {
                        if (iIndex == 14)
                        {
                                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\w%d.\y %s^n", iIndex-WPN_STARTID+1, "Golden M3")
                                break;
                        }
                }
               
                // Golden MP5
                if (ze_get_user_level(id) >= 20 && ze_get_user_level(id) < 25)
                {
                        if (iIndex == 14)
                        {
                                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\w%d.\y %s^n", iIndex-WPN_STARTID+1, "Golden M3")
                        }
                       
                        if (iIndex == 15)
                        {
                                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\w%d.\y %s^n", iIndex-WPN_STARTID+1, "Golden MP5")
                                break;
                        }
                }
               
                // Golden M4A1
                if (ze_get_user_level(id) >= 25 && ze_get_user_level(id) < 30)
                {
                        if (iIndex == 14)
                        {
                                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\w%d.\y %s^n", iIndex-WPN_STARTID+1, "Golden M3")
                        }
                       
                        if (iIndex == 15)
                        {
                                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\w%d.\y %s^n", iIndex-WPN_STARTID+1, "Golden MP5")
                        }
                       
                        if (iIndex == 16)
                        {
                                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\w%d.\y %s^n", iIndex-WPN_STARTID+1, "Golden M4A1")
                                break;
                        }
                }
               
                // Golden AK47
                if (ze_get_user_level(id) >= 30)
                {
                        if (iIndex == 14)
                        {
                                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\w%d.\y %s^n", iIndex-WPN_STARTID+1, "Golden M3")
                        }
                       
                        if (iIndex == 15)
                        {
                                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\w%d.\y %s^n", iIndex-WPN_STARTID+1, "Golden MP5")
                        }
                       
                        if (iIndex == 16)
                        {
                                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\w%d.\y %s^n", iIndex-WPN_STARTID+1, "Golden M4A1")
                        }
                       
                        if (iIndex == 17)
                        {
                                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\w%d.\y %s^n", iIndex-WPN_STARTID+1, "Golden AK-47")
                                break;
                        }
                }
               
                // Must check if iIndex < 14 means max is AK47
                if (iIndex < 14)
                {
                        ArrayGetString(g_szPrimaryWeapons, iIndex, szWeaponName, charsmax(szWeaponName))
                        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\w%d.\y %s^n", iIndex-WPN_STARTID+1, szWeaponNames[get_weaponid(szWeaponName)])
                }
        }
       
        if (iIndex < 7)
        {
                ArrayGetString(g_szPrimaryWeapons, iIndex, szWeaponName, charsmax(szWeaponName))
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r Next Level Unlock\w: \y%s^n", szWeaponNames[get_weaponid(szWeaponName)])
        }
       
        if (ze_get_user_level(id) == 5)
        {
                ArrayGetString(g_szPrimaryWeapons, 7, szWeaponName, charsmax(szWeaponName))
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r Next Level Unlock\w: \y%s^n", szWeaponNames[get_weaponid(szWeaponName)])
        }
        else if (ze_get_user_level(id) == 6)
        {
                ArrayGetString(g_szPrimaryWeapons, 8, szWeaponName, charsmax(szWeaponName))
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r Next Level Unlock\w: \y%s^n", szWeaponNames[get_weaponid(szWeaponName)])
        }
        else if (ze_get_user_level(id) == 7)
        {
                ArrayGetString(g_szPrimaryWeapons, 9, szWeaponName, charsmax(szWeaponName))
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r Next Level Unlock\w: \y%s^n", szWeaponNames[get_weaponid(szWeaponName)])
        }
        else if (ze_get_user_level(id) == 8)
        {
                ArrayGetString(g_szPrimaryWeapons, 10, szWeaponName, charsmax(szWeaponName))
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r Next Level Unlock\w: \y%s^n", szWeaponNames[get_weaponid(szWeaponName)])
        }
        else if (ze_get_user_level(id) == 9)
        {
                ArrayGetString(g_szPrimaryWeapons, 11, szWeaponName, charsmax(szWeaponName))
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r Next Level Unlock\w: \y%s^n", szWeaponNames[get_weaponid(szWeaponName)])
        }
        else if (ze_get_user_level(id) == 10)
        {
                ArrayGetString(g_szPrimaryWeapons, 12, szWeaponName, charsmax(szWeaponName))
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r Next Level Unlock\w: \y%s^n", szWeaponNames[get_weaponid(szWeaponName)])
        }
        else if (ze_get_user_level(id) == 11)
        {
                ArrayGetString(g_szPrimaryWeapons, 13, szWeaponName, charsmax(szWeaponName))
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r Next Level Unlock\w: \y%s^n", szWeaponNames[get_weaponid(szWeaponName)])
        }
        else if (ze_get_user_level(id) >= 12 && ze_get_user_level(id) < 15) // Golden M3
        {
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r Level 15 Unlock\w: \yGolden M3^n")
        }
        else if (ze_get_user_level(id) >= 15 && ze_get_user_level(id) < 20) // Golden MP5
        {
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r Level 20 Unlock\w: \yGolden MP5^n")
        }
        else if (ze_get_user_level(id) >= 20 && ze_get_user_level(id) < 25) // Golden M4A1
        {
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r Level 25 Unlock\w: \yGolden M4A1^n")
        }
        else if (ze_get_user_level(id) >= 25 && ze_get_user_level(id) < 30) // Golden Ak-47
        {
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r Level 30 Unlock\w: \yGolden AK-47^n")
        }

        // 8. Auto Select
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\w8.\y %L \w[\r%L\w]", id, "MENU_AUTOSELECT", id, (WPN_AUTO_ON) ? "SAVE_YES" : "SAVE_NO")
       
        // 9. Next/Back - 0. Exit
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\y9.\r %L \w/ \r%L^n^n\w0.\y %L", id, "NEXT", id, "BACK", id, "EXIT")
       
        // Fix for AMXX custom menus
        set_pdata_int(id, OFFSET_CSMENUCODE, 0)
        show_menu(id, KEYSMENU, szMenu, iMenuTime, "Primary Weapons")
}

public Show_Menu_Buy_Secondary(id)
{
        new iMenuTime = floatround(g_fBuyTimeStart[id] + get_pcvar_float(g_pCvarBuyTime) - get_gametime())
       
        if (iMenuTime <= 0)
        {
                ze_colored_print(id, "%L", id, "BUY_MENU_TIME_EXPIRED")
                return
        }
       
        static szMenu[250], szWeaponName[32]
        new iLen, iIndex, iMaxLoops = ArraySize(g_szSecondaryWeapons)
       
        // Title
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y%L^n", id, "MENU_SECONDARY_TITLE")
       
        // 1-6. Weapon List
        for (iIndex = 0; iIndex < iMaxLoops; iIndex++)
        {
                if (ze_get_user_level(id) == 0 && iIndex >= 2 ||
                ze_get_user_level(id) == 1 && iIndex >= 3 ||
                ze_get_user_level(id) == 2 && iIndex >= 4 ||
                ze_get_user_level(id) == 3 && iIndex >= 5 ||
                ze_get_user_level(id) == 4 && iIndex >= 6)
                {
                        break
                }
               
                ArrayGetString(g_szSecondaryWeapons, iIndex, szWeaponName, charsmax(szWeaponName))
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\w%d.\y %s", iIndex+1, szWeaponNames[get_weaponid(szWeaponName)])
        }
       
        if (iIndex < ArraySize(g_szSecondaryWeapons))
        {
                ArrayGetString(g_szSecondaryWeapons, iIndex, szWeaponName, charsmax(szWeaponName))
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\r Next Level Unlock\w: \y%s", szWeaponNames[get_weaponid(szWeaponName)])
        }
       
        // 8. Auto Select
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\w8.\y %L \w[\r%L\w]", id, "MENU_AUTOSELECT", id, (WPN_AUTO_ON) ? "SAVE_YES" : "SAVE_NO")
       
        // 0. Exit
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\w0.\y %L", id, "EXIT")
       
        // Fix for AMXX custom menus
        set_pdata_int(id, OFFSET_CSMENUCODE, 0)
        show_menu(id, KEYSMENU, szMenu, iMenuTime, "Secondary Weapons")
}

public Menu_Buy_Primary(id, key)
{
        // Player dead or zombie or already bought primary
        if (!is_user_alive(id) || ze_is_user_zombie(id) || g_bBoughtPrimary[id])
                return PLUGIN_HANDLED
       
        // Special keys / weapon list exceeded
        if (key >= MENU_KEY_AUTOSELECT || WPN_SELECTION >= WPN_MAXIDS[id])
        {
                switch (key)
                {
                        case MENU_KEY_AUTOSELECT: // toggle auto select
                        {
                                WPN_AUTO_ON = 1 - WPN_AUTO_ON
                        }
                        case MENU_KEY_NEXT: // next/back
                        {
                                if (WPN_STARTID+7 < WPN_MAXIDS[id])
                                        WPN_STARTID += 7
                                else
                                        WPN_STARTID = 0
                        }
                        case MENU_KEY_EXIT: // exit
                        {
                                return PLUGIN_HANDLED
                        }
                }
               
                // Show buy menu again
                Show_Menu_Buy_Primary(id)
                return PLUGIN_HANDLED
        }
       
        // Store selected weapon id
        WPN_AUTO_PRI = WPN_SELECTION
       
        // Buy primary weapon
        Buy_Primary_Weapon(id, WPN_AUTO_PRI)
       
        // Show Secondary Weapons
        Show_Available_Buy_Menus(id)
       
        return PLUGIN_HANDLED
}

public Buy_Primary_Weapon(id, selection)
{
        if (selection == 14) // Golden M3
        {
                give_golden_m3(id)
                g_bBoughtPrimary[id] = true
                return true;
        }
        else if (selection == 15) // Golden MP5
        {
                give_golden_mp5(id)
                g_bBoughtPrimary[id] = true
                return true;
        }
        else if (selection == 16) // Golden M4A1
        {
                give_golden_m4a1(id)
                g_bBoughtPrimary[id] = true
                return true;
        }
        else if (selection == 17) // Golden AK47
        {
                give_golden_ak47(id)
                g_bBoughtPrimary[id] = true
                return true;
        }
       
        static szWeaponName[32]
        ArrayGetString(g_szPrimaryWeapons, selection, szWeaponName, charsmax(szWeaponName))
        new iWeaponId = get_weaponid(szWeaponName)
       
        // Strip and Give Full Weapon
        rg_give_item(id, szWeaponName, GT_REPLACE)
        rg_set_user_bpammo(id, WeaponIdType:iWeaponId, szMaxBPAmmo[iWeaponId])
       
        // Primary bought
        g_bBoughtPrimary[id] = true
        return true;
}

public Menu_Buy_Secondary(id, key)
{
        // Player dead or zombie or already bought secondary
        if (!is_user_alive(id) || ze_is_user_zombie(id) || g_bBoughtSecondary[id])
                return PLUGIN_HANDLED
       
        // Special keys / weapon list exceeded
        if (key >= ArraySize(g_szSecondaryWeapons))
        {
                // Toggle autoselect
                if (key == MENU_KEY_AUTOSELECT)
                        WPN_AUTO_ON = 1 - WPN_AUTO_ON
               
                // Reshow menu unless user exited
                if (key != MENU_KEY_EXIT)
                        Show_Menu_Buy_Secondary(id)
               
                return PLUGIN_HANDLED
        }
       
        // Store selected weapon id
        WPN_AUTO_SEC = key
       
        // Buy secondary weapon
        Buy_Secondary_Weapon(id, key)
       
        return PLUGIN_HANDLED
}

public Buy_Secondary_Weapon(id, selection)
{
        if ( ((selection == 2) && (ze_get_user_level(id) < 1)) ||
        ((selection == 3) && (ze_get_user_level(id) < 2)) ||
        ((selection == 4) && (ze_get_user_level(id) < 3)) ||
        ((selection == 5) && (ze_get_user_level(id) < 4)) )
        {
                Show_Menu_Buy_Secondary(id)
                return;
        }

        static szWeaponName[32]
        ArrayGetString(g_szSecondaryWeapons, selection, szWeaponName, charsmax(szWeaponName))
        new iWeaponId = get_weaponid(szWeaponName)
       
        // Strip and Give Full Weapon
        rg_give_item(id, szWeaponName, GT_REPLACE)
        rg_set_user_bpammo(id, WeaponIdType:iWeaponId, szMaxBPAmmo[iWeaponId])
       
        // Secondary bought
        g_bBoughtSecondary[id] = true
}

public Fw_TouchWeapon_Pre(iEnt, id)
{
        if (get_pcvar_num(g_pCvarBlockWeapLowLevel) == 0)
                return HAM_IGNORED;
       
        // Not alive or Not Valid Weapon?
        if(!is_user_alive(id) || !pev_valid(iEnt))
                return HAM_IGNORED;
       
        // Get Weapon Model
        new szWeapModel[32]
        pev(iEnt, pev_model, szWeapModel, charsmax(szWeapModel))
       
        // Remove "models/w_" and ".mdl"
        copyc(szWeapModel, charsmax(szWeapModel), szWeapModel[contain(szWeapModel, "_" ) + 1], '.')
       
        // Set for mp5 to be same as "weapon_mp5navy"
        if(szWeapModel[1] == 'p' && szWeapModel[2] == '5')
                szWeapModel = "mp5navy"
       
        // Add "weapon_" to all model names
        static szWeaponEnt[32]
        formatex(szWeaponEnt, charsmax(szWeaponEnt), "weapon_%s", szWeapModel)

        // Get it's index in Weapon Array
        new iIndex, i
       
        // I won't explain the blew code if you need to understand ask me in Escapers-Zone.XYZ
        for (i = 0; i < ArraySize(g_szPrimaryWeapons); i++)
        {
                new szPrimaryWeapon[32]
                ArrayGetString(g_szPrimaryWeapons, i, szPrimaryWeapon, charsmax(szPrimaryWeapon))
               
                if (equali(szWeaponEnt, szPrimaryWeapon))
                        iIndex = i
        }
       
        if (ze_get_user_level(id) == 0 && iIndex > 1)
        {
                return HAM_SUPERCEDE;
        }
       
        for (i = 1; i <= 11; i++)
        {
                if ((ze_get_user_level(id) == i) && iIndex > i+1)
                {
                        return HAM_SUPERCEDE;
                }
        }
       
        return HAM_IGNORED;
}

// Natives
public native_ze_show_weapon_menu(id)
{
        if (!is_user_connected(id))
        {
                log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player (%d)", id)
                return false
        }
       
        Cmd_Buy(id)
        return true
}

public native_ze_is_auto_buy_enabled(id)
{
        if (!is_user_connected(id))
        {
                log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player (%d)", id)
                return -1;
        }
       
        return WPN_AUTO_ON;
}

public native_ze_disable_auto_buy(id)
{
        if (!is_user_connected(id))
        {
                log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player (%d)", id)
                return false
        }
       
        WPN_AUTO_ON = 0;
        return true
}

Przeczytaj cały wpis

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...