Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Запретить доступ к подпункту меню.

Статус пользователя pukipuki
сообщение 13.7.2013, 12:55
Сообщение #1
Стаж: 13 лет

Сообщений: 34
Благодарностей: 2
Полезность: 46

Все привет. Подскажите как в weaponmenu в меню "винтовки" запретить подпункт awp для админов, которые не имеют определенного флага доступа.
Скрытый текст

Код
        #include <amxmodx>
        #include <amxmisc>
        #include <cstrike>
        #include <fun>
        
        // Раскометируйте, чтобы при выдаче оружия происходил дроп (выброс)
        #define WEAPONS_DROP
        
        #define MAX_PLAYERS     32
        #define MAX_WEAPONS     24
        #define MAX_AMMO        10
        #define MAX_ITEMS        8
        #define MAX_DISPLAY      8
        
        #define MT_PISTOL        0
        #define MT_SHOTGUN       1
        #define MT_SMG           2
        #define MT_RIFLE         3
        #define MT_MACHINE       4
        #define MT_PAMMO         5
        #define MT_SAMMO         6
        #define MT_EQUIP         7
        #define MT_EXTRA         8
        
        #define OFFSET_SHOTGUN   6
        #define OFFSET_SMG       8
        #define OFFSET_RIFLE    13
        #define OFFSET_MACHINE  23
        
        #define MO_MAX_MAIN      9
        #define MO_MAX_PISTOL    6
        #define MO_MAX_SHOTGUN   2
        #define MO_MAX_SMG       5
        #define MO_MAX_RIFLE    10
        #define MO_MAX_EQUIP     8
        #define MO_MAX_EXTRA    14
        
        new g_szMainMenuTxt[MO_MAX_MAIN][] = {
            "Пистолеты",
            "Дробовики",
            "Автоматы",
            "Винтовки",
            "Пулемёты",
            "Патроны к основному оружию",
            "Патроны к запасному оружию",
            "Снаряжение",
            "Дополнительно"
        }
        
        new g_szPistolMenuTxt[MO_MAX_PISTOL][] = {
            "USP",
            "Glock",
            "Deagle",
            "228 Compact",
            "Dual Elites",
            "Five-Seven"
        }
        
        new g_szShotgunMenuTxt[MO_MAX_SHOTGUN][] = {
            "Pump Shotgun",
            "Auto Shotgun"
        }
        
        new g_szSmgMenuTxt[MO_MAX_SMG][] = {
            "MP5",
            "TMP",
            "C90",
            "Mac10",
            "UMP"
        }
        
        new g_szRifleMenuTxt[MO_MAX_RIFLE][] = {
            "Clarion",
            "Krieg SG552",
            "AK47",
            "M4A1",
            "Bullpup",
            "Scout",
            "AWP",
            "CT AutoSniper",
            "T AutoSniper",
            "Galil"
        }
        
        new g_szMachineMenuTxt[] = "M249 (Para)"
        
        new g_szEquipMenuTxt[MO_MAX_EQUIP][] = {
            "Kevlar",
            "Kevlar + Helmet",
            "Flashbang Grenade",
            "HE Grenade",
            "Smoke Grenade",
            "Defusal Kit",
            "Nighvision Goggles",
            "Shield"
        }
        
        new g_szExtraMenuTxt[MO_MAX_EXTRA][] = {
            "All Weapons",
            "M3 Set",
            "MP5 Navy Set",
            "Clarion Set",
            "Galil Set",
            "M4A1 Set",
            "AK47 Set",
            "Krieg SG552 Set",
            "Bullpup Set",
            "M249 Set",
            "Scout Set",
            "AutoSniper Set",
            "AWP Set",
            "Nades Set"
        }
        
        new g_szWeaponList[MAX_WEAPONS][] = {
            "weapon_usp", "weapon_glock18", "weapon_deagle", "weapon_p228", "weapon_elite",
            "weapon_fiveseven", "weapon_m3", "weapon_xm1014", "weapon_mp5navy", "weapon_tmp",
            "weapon_p90", "weapon_mac10", "weapon_ump45", "weapon_famas", "weapon_sg552",
            "weapon_ak47", "weapon_m4a1", "weapon_aug", "weapon_scout", "weapon_awp",
            "weapon_sg550", "weapon_g3sg1", "weapon_galil", "weapon_m249"
        }
        
        new g_szItemsList[MAX_ITEMS][] = {
            "item_kevlar", "item_assaultsuit", "weapon_flashbang", "weapon_hegrenade",
            "weapon_smokegrenade", "item_thighpack", "item_nvgs", "weapon_shield"
        }
        
        new g_szAmmoList[MAX_AMMO][] = {
            "ammo_45acp", "ammo_9mm", "ammo_50ae", "ammo_357sig",
            "ammo_57mm", "ammo_buckshot", "ammo_556nato", "ammo_762nato",
            "ammo_338magnum", "ammo_556natobox"
        }
        
        new g_nWeaponData[MAX_WEAPONS][2] = {
            { 0, 8 }, { 1, 8 }, { 2, 5 }, { 3, 6 }, { 1, 4 },
            { 4, 4 }, { 5, 4 }, { 5, 4 }, { 1, 4 }, { 1, 4 },
            { 4, 4 }, { 0, 6 }, { 0, 6 }, { 6, 3 }, { 6, 3 },
            { 7, 3 }, { 6, 3 }, { 6, 3 }, { 7, 3 }, { 8, 3 },
            { 6, 3 }, { 7, 3 }, { 6, 3 }, { 9, 7 }
        }
        
        new g_nMenuPosition[MAX_PLAYERS]
        new g_nMenuType[MAX_PLAYERS]
        new g_nMenuOption[MAX_PLAYERS]
        new g_nMenuPlayers[MAX_PLAYERS][MAX_PLAYERS]
        new g_nMenuPlayersNum[MAX_PLAYERS]
        
        public plugin_init()
        {
            register_plugin( "Weapon Menu", "1.1", "Adidasman" )
        
            register_clcmd( "amx_weaponmenu", "ShowWeaponMenu" )
            register_clcmd( "weaponmenu", "ShowWeaponMenu" )
        
            register_cvar( "sv_weaponmenu_smoke", "1" ) // Выдавать дымовые гранаты?  (1 = да, 0 = нет)
            register_cvar( "sv_weaponmenu_state", "1" ) // Действие после выдачи оружия
                                                        // 0 = Закрытие меню
                                                        // 1 = Возврат к выбору игрока
                                                        // 2 = Возврат к выбору оружия
        
            register_menucmd( register_menuid("Выберите экипировку:"),      1023, "MainMenuCmd" )
            register_menucmd( register_menuid("Пистолеты:"),      1023, "RegularMenuCmd" )
            register_menucmd( register_menuid("Дробовики:"),     1023, "RegularMenuCmd" )
            register_menucmd( register_menuid("Автоматы:"),         1023, "RegularMenuCmd" )
            register_menucmd( register_menuid("Винтовки:"),       1023, "RifleMenuCmd" )
            register_menucmd( register_menuid("Пулемёты:"), 1023, "RegularMenuCmd" )
            register_menucmd( register_menuid("Снаряжение:"),    1023, "RegularMenuCmd" )
            register_menucmd( register_menuid("Дополнительно:"),       1023, "ExtraMenuCmd" )
            register_menucmd( register_menuid("Кому выдать:"),      1023, "PlayerMenuCmd" )
        
            return PLUGIN_CONTINUE
        }
        
        public ShowWeaponMenu( id, lvl, cid )
        {
            if( cmd_access( id, lvl, cid, 0 ) )
            {
                g_nMenuPosition[id-1] = 0
                ShowMainMenu( id )
            }
            return PLUGIN_HANDLED
        }
        
        public MainMenuCmd( id, key )
        {
            g_nMenuType[id-1] = key
        
            switch( key )
            {
                case 0: ShowPistolMenu( id )
                case 1: ShowShotgunMenu( id )
                case 2: ShowSmgMenu( id )
                case 3: ShowRifleMenu( id, g_nMenuPosition[id-1] = 0 )
                case 4: ShowMachineMenu( id )
                case 5: ShowPlayerMenu( id, g_nMenuPosition[id-1] = 0 )
                case 6: ShowPlayerMenu( id, g_nMenuPosition[id-1] = 0 )
                case 7: ShowEquipMenu( id )
                case 8: ShowExtraMenu( id, g_nMenuPosition[id-1] = 0 )
                default: { /* Do Nothing Here (Exit Option) */ }
            }
            return PLUGIN_HANDLED
        }
        
        public RegularMenuCmd( id, key )
        {
            g_nMenuOption[id-1] = key
        
            switch( key )
            {
                case 9:
                {
                    ShowMainMenu( id )
                }
                default: ShowPlayerMenu( id, g_nMenuPosition[id-1] = 0 )
            }
            return PLUGIN_HANDLED
        }
        
        public RifleMenuCmd( id, key )
        {
            g_nMenuOption[id-1] = g_nMenuPosition[id-1] * MAX_DISPLAY + key
        
            switch( key )
            {
                case 8:
                {
                    ShowRifleMenu( id, ++g_nMenuPosition[id-1] )
                }
                case 9:
                {
                    if( g_nMenuPosition[id-1] )
                    {
                        ShowRifleMenu( id, --g_nMenuPosition[id-1] )
                    }else
                    {
                        ShowMainMenu( id )
                    }
                }
                default: ShowPlayerMenu( id, g_nMenuPosition[id-1] = 0 )
            }
            return PLUGIN_HANDLED
        }
        
        public PlayerMenuCmd( id, key )
        {
            switch( key )
            {
                case 8:
                {
                    ShowPlayerMenu( id, ++g_nMenuPosition[id-1] )
                }
                case 9:
                {
                    if( g_nMenuPosition[id-1] )
                    {
                        ShowPlayerMenu( id, --g_nMenuPosition[id-1] )
                    }else
                    {
                        ShowMainMenu( id )
                    }
                }
                default:
                {
                    new nPlayerID = g_nMenuPlayers[id-1][g_nMenuPosition[id-1] * MAX_DISPLAY + key]
        
                    GiveMenuItem( id, nPlayerID )
        
                    switch( clamp(get_cvar_num("sv_weaponmenu_state"), 0, 2) )
                    {
                        case 1: ShowPlayerMenu( id, g_nMenuPosition[id-1] )
                        case 2: ShowMainMenu( id )
                    }
                }
            }
            return PLUGIN_HANDLED
        }
        
        public ExtraMenuCmd( id, key )
        {
            g_nMenuOption[id-1] = g_nMenuPosition[id-1] * MAX_DISPLAY + key
        
            switch( key )
            {
                case 8:
                {
                    ShowExtraMenu( id, ++g_nMenuPosition[id-1] )
                }
                case 9:
                {
                    if( g_nMenuPosition[id-1] )
                    {
                        ShowExtraMenu( id, --g_nMenuPosition[id-1] )
                    }else
                    {
                        ShowMainMenu( id )
                    }
                }
                default: ShowPlayerMenu( id, g_nMenuPosition[id-1] = 0 )
            }
            return PLUGIN_HANDLED
        }
        
        public ShowMainMenu( id )
        {
            new i, nLen, nKeys = (1<<9)
            new szMenuBody[512]
        
            nLen = format( szMenuBody, 511, "\rВыберите экипировку:\w^n" )
            for( i = 0; i < MO_MAX_MAIN; i++ )
            {
                nKeys |= (1<<i)
                nLen += format( szMenuBody[nLen], (511-nLen), "%d. %s^n", (i+1), g_szMainMenuTxt[i] )
            }
            format( szMenuBody[nLen], (511-nLen), "^n0. Выход" )
        
            show_menu( id, nKeys, szMenuBody, -1 )
            return
        }
        
        public ShowPistolMenu( id )
        {
            new i, nLen, nKeys = (1<<9)
            new szMenuBody[256]
        
            nLen = format( szMenuBody, 255, "\rПистолеты:\w^n" )
            for( i = 0; i < MO_MAX_PISTOL; i++ )
            {
                nKeys |= (1<<i)
                nLen += format( szMenuBody[nLen], (255-nLen), "%d. %s^n", (i+1), g_szPistolMenuTxt[i] )
            }
            format( szMenuBody[nLen], (255-nLen), "^n0. Назад" )
        
            show_menu( id, nKeys, szMenuBody, -1 )
            return
        }
        
        public ShowShotgunMenu( id )
        {
            new i, nLen, nKeys = (1<<9)
            new szMenuBody[256]
        
            nLen = format( szMenuBody, 255, "\rДробовики:\w^n" )
            for( i = 0; i < MO_MAX_SHOTGUN; i++ )
            {
                nKeys |= (1<<i)
                nLen += format( szMenuBody[nLen], (255-nLen), "%d. %s^n", (i+1), g_szShotgunMenuTxt[i] )
            }
            format( szMenuBody[nLen], (255-nLen), "^n0. Назад" )
        
            show_menu( id, nKeys, szMenuBody, -1 )
            return
        }
        
        public ShowSmgMenu( id )
        {
            new i, nLen, nKeys = (1<<9)
            new szMenuBody[2256]
        
            nLen = format( szMenuBody, 255, "\rАвтоматы:\w^n" )
            for( i = 0; i < MO_MAX_SMG; i++ )
            {
                nKeys |= (1<<i)
                nLen += format( szMenuBody[nLen], (255-nLen), "%d. %s^n", (i+1), g_szSmgMenuTxt[i] )
            }
            format( szMenuBody[nLen], (255-nLen), "^n0. Назад" )
        
            show_menu( id, nKeys, szMenuBody, -1 )
            return
        }
        
        public ShowRifleMenu( id, pos )
        {      
                if( get_user_flags(id) & ADMIN_LEVEL_B ){
                      
                if( pos < 0 ) return
        
                new i, j = 0, nStart, nEnd, nLen, nKeys = (1<<9)
                new szMenuBody[512]
        
                nStart = pos * MAX_DISPLAY
        
                if( nStart >= MO_MAX_RIFLE )
                        nStart = pos = g_nMenuPosition[id-1] = 0
        
                nLen = format( szMenuBody, 511, "\rВинтовки:\R%d/2^n\w^n", pos + 1 )
        
                nEnd = nStart + MAX_DISPLAY
                if( nEnd > MO_MAX_RIFLE ) nEnd = MO_MAX_RIFLE
        
                for( i = nStart; i < nEnd; i++ )
                {
                        nKeys |= (1<<j++)
                        nLen += format( szMenuBody[nLen], (511-nLen), "%d. %s^n", j, g_szRifleMenuTxt[i] )
                }
        
                if( nEnd != MO_MAX_RIFLE )
                {
                        format( szMenuBody[nLen], (511-nLen), "^n9. Далее^n0. Назад" )
                        nKeys |= (1<<8)
                }
                else format( szMenuBody[nLen], (511-nLen), "^n0. Назад" )
                show_menu( id, nKeys, szMenuBody, -1 )
                }
                else{
                        Color_Print(id, "!y[!gАдминка!y] У вас нет прав для использования этой команды!t!")
                        return
                }
                return
        }
        
        public ShowMachineMenu( id )
        {
            new nLen, nKeys = (1<<0|1<<9)
            new szMenuBody[256]
        
            nLen = format( szMenuBody, 255, "\rПулемёты:\w^n" )
            nLen += format( szMenuBody[nLen], (255-nLen), "%d. %s^n", 1, g_szMachineMenuTxt )
            format( szMenuBody[nLen], (255-nLen), "^n0. Назад" )
        
            show_menu( id, nKeys, szMenuBody, -1 )
            return
        }
        
        public ShowEquipMenu( id )
        {
            new i, nLen, nKeys = (1<<9)
            new szMenuBody[256]
        
            nLen = format( szMenuBody, 255, "\rСнаряжение:\w^n" )
            for( i = 0; i < MO_MAX_EQUIP; i++ )
            {
                nKeys |= (1<<i)
                nLen += format( szMenuBody[nLen], (255-nLen), "%d. %s^n", (i+1), g_szEquipMenuTxt[i] )
            }
            format( szMenuBody[nLen], (255-nLen), "^n0. Назад" )
        
            show_menu( id, nKeys, szMenuBody, -1 )
            return
        }
        
        public ShowExtraMenu( id, pos )
        {
            if( pos < 0 ) return
        
            new i, j = 0, nStart, nEnd, nLen, nKeys = (1<<9)
            new szMenuBody[512]
        
            nStart = pos * MAX_DISPLAY
        
            if( nStart >= MO_MAX_EXTRA )
                nStart = pos = g_nMenuPosition[id-1] = 0
        
            nLen = format( szMenuBody, 511, "\rДополнительно:\R%d/2^n\w^n", pos + 1 )
        
            nEnd = nStart + MAX_DISPLAY
            if( nEnd > MO_MAX_EXTRA ) nEnd = MO_MAX_EXTRA
        
            for( i = nStart; i < nEnd; i++ )
            {
                nKeys |= (1<<j++)
                nLen += format( szMenuBody[nLen], (511-nLen), "%d. %s^n", j, g_szExtraMenuTxt[i] )
            }
        
            if( nEnd != MO_MAX_EXTRA )
            {
                format( szMenuBody[nLen], (511-nLen), "^n9. Далее^n0. Назад" )
                nKeys |= (1<<8)
            }
            else format( szMenuBody[nLen], (511-nLen), "^n0. Назад" )
        
            show_menu( id, nKeys, szMenuBody, -1 )
            return
        }
        
        public ShowPlayerMenu( id, pos )
        {
            if( pos < 0 ) return
        
            get_players( g_nMenuPlayers[id-1], g_nMenuPlayersNum[id-1] )
        
            new i, j = 0, idx
            new szUserName[32], szMenuBody[512]
            new nStart = pos * MAX_DISPLAY
        
            if( nStart >= g_nMenuPlayersNum[id-1] )
                nStart = pos = g_nMenuPosition[id-1] = 0
        
            new nLen = format( szMenuBody, 511, "\rКому выдать:\R%d/%d^n\w^n", (pos+1), (g_nMenuPlayersNum[id-1] / MAX_DISPLAY + ((g_nMenuPlayersNum[id-1] % MAX_DISPLAY) ? 1 : 0 )) )
            new nEnd = nStart + MAX_DISPLAY
            new nKeys = (1<<9)
        
            if( nEnd > g_nMenuPlayersNum[id-1] )
                nEnd = g_nMenuPlayersNum[id-1]
        
            for( i = nStart; i < nEnd; i++ )
            {
                idx = g_nMenuPlayers[id-1][i]
                get_user_name( idx, szUserName, 31 )
        
                nKeys |= (1<<j++)
                nLen += format( szMenuBody[nLen], (511-nLen), "%d. %s^n", j, szUserName )
            }
        
            if( nEnd != g_nMenuPlayersNum[id-1] )
            {
                nKeys |= (1<<8)
                format( szMenuBody[nLen], (511-nLen), "^n9. Далее^n0. Назад" )
            }
            else format( szMenuBody[nLen], (511-nLen), "^n0. Назад" )
        
            show_menu( id, nKeys, szMenuBody )
            return
        }
        
        stock GiveMenuItem( id, p_nPlayerID )
        {
            new szUserName[32]
            get_user_name( p_nPlayerID, szUserName, 31 )
        
            switch( g_nMenuType[id-1] )
            {
                case MT_PISTOL:  GiveSecondaryPlayerWeapon( p_nPlayerID, g_nMenuOption[id-1] )
                case MT_SHOTGUN: GivePlayerWeapon( p_nPlayerID, (OFFSET_SHOTGUN + g_nMenuOption[id-1]) )
                case MT_SMG:     GivePlayerWeapon( p_nPlayerID, (OFFSET_SMG + g_nMenuOption[id-1]) )
                case MT_RIFLE:   GivePlayerWeapon( p_nPlayerID, (OFFSET_RIFLE + g_nMenuOption[id-1]) )
                case MT_MACHINE: GivePlayerWeapon( p_nPlayerID, (OFFSET_MACHINE + g_nMenuOption[id-1]) )
                case MT_PAMMO:   GivePrimaryAmmo( p_nPlayerID )
                case MT_SAMMO:   GiveSecondaryAmmo( p_nPlayerID )
                case MT_EQUIP:   GivePlayerItem( p_nPlayerID, g_nMenuOption[id-1] )
                case MT_EXTRA:   GivePlayerExtra( p_nPlayerID, g_nMenuOption[id-1] )
            }
            return
        }
        
        stock GiveSecondaryPlayerWeapon( id, nWeaponIdx )
        {
            if( !is_user_alive(id) || (nWeaponIdx < 0) || (nWeaponIdx >= 6) )
                return
        
            #if defined WEAPONS_DROP
            drop_s_weapons(id)
            #endif
        
            give_item( id, g_szWeaponList[nWeaponIdx] )
            for( new i = 0; i < g_nWeaponData[nWeaponIdx][1]; i++ )
                give_item( id, g_szAmmoList[g_nWeaponData[nWeaponIdx][0]] )
        
            return
        }
        
        stock GivePlayerWeapon( id, nWeaponIdx )
        {
            if( !is_user_alive(id) || (nWeaponIdx < 6) || (nWeaponIdx >= MAX_WEAPONS) )
                return
        
            #if defined WEAPONS_DROP
            drop_p_weapons(id)
            #endif
        
            give_item( id, g_szWeaponList[nWeaponIdx] )
            for( new i = 0; i < g_nWeaponData[nWeaponIdx][1]; i++ )
                give_item( id, g_szAmmoList[g_nWeaponData[nWeaponIdx][0]] )
        
            return
        }
        
        stock GivePlayerExtra( id, nExtraIdx )
        {
            if( !is_user_alive(id) || (nExtraIdx < 0) || (nExtraIdx >= MO_MAX_EXTRA) )
                return
        
            new i, j
            switch( nExtraIdx )
            {
                case 0:
                {
                    for( i = 0; i < MAX_WEAPONS; i++ )
                    {
                        give_item( id, g_szWeaponList[i] )
                        for( j = 0; j < g_nWeaponData[i][1]; j++ )
                            give_item( id, g_szAmmoList[g_nWeaponData[i][0]] )
                    }
                }
                case 1:
                {
                    GivePlayerWeapon( id, 6 )
                    GiveSecondaryPlayerWeapon( id, 2 )
                    for( i = 1; i < 6; i++ )
                        GivePlayerItem( id, i )
                }
                case 2:
                {
                    GivePlayerWeapon( id, 8 )
                    GiveSecondaryPlayerWeapon( id, 2 )
                    for( i = 1; i < 6; i++ )
                        GivePlayerItem( id, i )
                }
                case 3:
                {
                    GivePlayerWeapon( id, 13 )
                    GiveSecondaryPlayerWeapon( id, 2 )
                    for( i = 1; i < 6; i++ )
                        GivePlayerItem( id, i )
                }
                case 4:
                {
                    GivePlayerWeapon( id, 22 )
                    GiveSecondaryPlayerWeapon( id, 2 )
                    for( i = 1; i < 6; i++ )
                        GivePlayerItem( id, i )
                }
                case 5:
                {
                    GivePlayerWeapon( id, 16 )
                    GiveSecondaryPlayerWeapon( id, 2 )
                    for( i = 1; i < 6; i++ )
                        GivePlayerItem( id, i )
                }
                case 6:
                {
                    GivePlayerWeapon( id, 15 )
                    GiveSecondaryPlayerWeapon( id, 2 )
                    for( i = 1; i < 6; i++ )
                        GivePlayerItem( id, i )
                }
                case 7:
                {
                    GivePlayerWeapon( id, 14 )
                    GiveSecondaryPlayerWeapon( id, 2 )
                    for( i = 1; i < 6; i++ )
                        GivePlayerItem( id, i )
                }
                case 8:
                {
                    GivePlayerWeapon( id, 17 )
                    GiveSecondaryPlayerWeapon( id, 2 )
                    for( i = 1; i < 6; i++ )
                        GivePlayerItem( id, i )
                }
                case 9:
                {
                    GivePlayerWeapon( id, 23 )
                    GiveSecondaryPlayerWeapon( id, 2 )
                    for( i = 1; i < 6; i++ )
                        GivePlayerItem( id, i )
                }
                case 10:
                {
                    GivePlayerWeapon( id, 18 )
                    GiveSecondaryPlayerWeapon( id, 2 )
                    for( i = 1; i < 6; i++ )
                        GivePlayerItem( id, i )
                }
                case 11:
                {
                    GivePlayerWeapon( id, 20 )
                    //GivePlayerWeapon( id, 21 )
                    GiveSecondaryPlayerWeapon( id, 2 )
                    for( i = 1; i < 6; i++ )
                        GivePlayerItem( id, i )
                }
                case 12:
                {
                    GivePlayerWeapon( id, 19 )
                    GiveSecondaryPlayerWeapon( id, 2 )
                    for( i = 1; i < 6; i++ )
                        GivePlayerItem( id, i )
                }
                case 13:
                {
                    for( i = 2; i < 5; i++ )
                        GivePlayerItem( id, i )
                }
            }
            return
        }
        
        stock GivePlayerItem( id, nItemIdx )
        {
            if( !is_user_alive(id) || (nItemIdx < 0) || (nItemIdx >= MAX_ITEMS) )
                return
        
            if(nItemIdx == 6)
            cs_set_user_nvg(id, true)
        
            if( (nItemIdx == 4) && (get_cvar_num("sv_weaponmenu_smoke") < 1) )
                return
        
            if( nItemIdx == 2 )
                give_item( id, g_szItemsList[nItemIdx] )
        
            if( nItemIdx != 6 )
                give_item( id, g_szItemsList[nItemIdx] )
        
            return
        }
        
        stock GivePrimaryAmmo( id )
        {
            new nWeapons[32], nNum, i, j, k
            new szWeaponName[32]
        
            get_user_weapons( id, nWeapons, nNum )
            for( i = 0; i < nNum; i++ )
            {
                get_weaponname( nWeapons[i], szWeaponName, 31 )
                for( j = OFFSET_SHOTGUN; j < MAX_WEAPONS; j++ )
                {
                    if( equali( szWeaponName, g_szWeaponList[j] ) )
                    {
                        for( k = 0; k < g_nWeaponData[j][1]; k++ )
                            give_item( id, g_szAmmoList[g_nWeaponData[j][0]] )
                    }
                }
            }
            return
        }
        
        stock GiveSecondaryAmmo( id )
        {
            new nWeapons[32], nNum, i, j, k
            new szWeaponName[32]
        
            get_user_weapons( id, nWeapons, nNum )
            for( i = 0; i < nNum; i++ )
            {
                get_weaponname( nWeapons[i], szWeaponName, 31 )
                for( j = 0; j < OFFSET_SHOTGUN; j++ )
                {
                    if( equali( szWeaponName, g_szWeaponList[j] ) )
                    {
                        for( k = 0; k < g_nWeaponData[j][1]; k++ )
                            give_item( id, g_szAmmoList[g_nWeaponData[j][0]] )
                    }
                }
            }
            return
        }
        
        #if defined WEAPONS_DROP
        stock drop_p_weapons(id)
        {
             static weapons[32], num
             get_user_weapons( id, weapons, num )
          
             for ( new i = 0; i < num; i++ )
             {
                  if( ( 1<<weapons[i] ) & ( (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 wname[32]
                       get_weaponname( weapons[i], wname, sizeof wname - 1 )
                       engclient_cmd( id, "drop", wname )
                  }
             }
        }
        
        stock drop_s_weapons(id)
        {
             static weapons[32], num
             get_user_weapons( id, weapons, num )
          
             for ( new i = 0; i < num; i++ )
             {
                  if( ( 1<<weapons[i] ) & ( (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|
                                            (1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE) ) )
                  {
                       static wname[32]
                       get_weaponname( weapons[i], wname, sizeof wname - 1 )
                       engclient_cmd( id, "drop", wname )
                  }
             }
        }
        #endif
        
        stock Color_Print(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, "!y", "^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()
                                }
                        }
                }
        }


В приведенном коде для админов без флага "n" меню "винтовки" полностью не доступно. Как запретить только awp?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
mde...
сообщение 13.7.2013, 14:22
Сообщение #2
Стаж: 13 лет

Сообщений: 333
Благодарностей: 61
Полезность: 0

Делаешь проверку в пункте где игроку выдается awp

Код
if( get_user_flags(id) & ADMIN_LEVEL_H )


Отредактировал: mde..., - 13.7.2013, 14:23
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя pukipuki
сообщение 13.7.2013, 14:35
Сообщение #3
Стаж: 13 лет

Сообщений: 34
Благодарностей: 2
Полезность: 46

Цитата(mde... @ 13.7.2013, 15:22) *
Делаешь проверку в пункте где игроку выдается awp

Код
if( get_user_flags(id) & ADMIN_LEVEL_H )

Меню выводится циклом
Скрытый текст
Код
public ShowRifleMenu( id, pos )
        {      
                if( get_user_flags(id) & ADMIN_LEVEL_B ){
                      
                if( pos < 0 ) return
        
                new i, j = 0, nStart, nEnd, nLen, nKeys = (1<<9)
                new szMenuBody[512]
        
                nStart = pos * MAX_DISPLAY
        
                if( nStart >= MO_MAX_RIFLE )
                        nStart = pos = g_nMenuPosition[id-1] = 0
        
                nLen = format( szMenuBody, 511, "\rВинтовки:\R%d/2^n\w^n", pos + 1 )
        
                nEnd = nStart + MAX_DISPLAY
                if( nEnd > MO_MAX_RIFLE ) nEnd = MO_MAX_RIFLE
        
                for( i = nStart; i < nEnd; i++ )
                {
                        nKeys |= (1<<j++)
                        nLen += format( szMenuBody[nLen], (511-nLen), "%d. %s^n", j, g_szRifleMenuTxt[i] )
                }
        
                if( nEnd != MO_MAX_RIFLE )
                {
                        format( szMenuBody[nLen], (511-nLen), "^n9. Далее^n0. Назад" )
                        nKeys |= (1<<8)
                }
                else format( szMenuBody[nLen], (511-nLen), "^n0. Назад" )
                show_menu( id, nKeys, szMenuBody, -1 )
                }
                else{
                        Color_Print(id, "!y[!gАдминка!y] У вас нет прав для использования этой команды!t!")
                        return
                }
                return
        }

В этом цикле авп элемент под номером 7 . Как сделать проверку на флаг и если флаг отсутствует, то седьмой элемент меню не активен для админа??
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
mde...
сообщение 13.7.2013, 14:40
Сообщение #4
Стаж: 13 лет

Сообщений: 333
Благодарностей: 61
Полезность: 0

Цитата(pukipuki @ 13.7.2013, 14:35) *
Меню выводится циклом
Скрытый текст
Код
public ShowRifleMenu( id, pos )
        {      
                if( get_user_flags(id) & ADMIN_LEVEL_B ){
                      
                if( pos < 0 ) return
        
                new i, j = 0, nStart, nEnd, nLen, nKeys = (1<<9)
                new szMenuBody[512]
        
                nStart = pos * MAX_DISPLAY
        
                if( nStart >= MO_MAX_RIFLE )
                        nStart = pos = g_nMenuPosition[id-1] = 0
        
                nLen = format( szMenuBody, 511, "\rВинтовки:\R%d/2^n\w^n", pos + 1 )
        
                nEnd = nStart + MAX_DISPLAY
                if( nEnd > MO_MAX_RIFLE ) nEnd = MO_MAX_RIFLE
        
                for( i = nStart; i < nEnd; i++ )
                {
                        nKeys |= (1<<j++)
                        nLen += format( szMenuBody[nLen], (511-nLen), "%d. %s^n", j, g_szRifleMenuTxt[i] )
                }
        
                if( nEnd != MO_MAX_RIFLE )
                {
                        format( szMenuBody[nLen], (511-nLen), "^n9. Далее^n0. Назад" )
                        nKeys |= (1<<8)
                }
                else format( szMenuBody[nLen], (511-nLen), "^n0. Назад" )
                show_menu( id, nKeys, szMenuBody, -1 )
                }
                else{
                        Color_Print(id, "!y[!gАдминка!y] У вас нет прав для использования этой команды!t!")
                        return
                }
                return
        }

В этом цикле авп элемент под номером 7 . Как сделать проверку на флаг и если флаг отсутствует, то седьмой элемент меню не активен для админа??

Да
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя pukipuki
сообщение 13.7.2013, 14:49
Сообщение #5
Стаж: 13 лет

Сообщений: 34
Благодарностей: 2
Полезность: 46

Цитата(mde... @ 13.7.2013, 15:40) *
Да

??? Как сделать то?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
mde...
сообщение 13.7.2013, 14:51
Сообщение #6
Стаж: 13 лет

Сообщений: 333
Благодарностей: 61
Полезность: 0

Цитата(pukipuki @ 13.7.2013, 14:49) *
??? Как сделать то?

Делай проверку, я же написал

Код
if( get_user_flags(id) & ADMIN_LEVEL_H )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя pukipuki
сообщение 13.7.2013, 14:57
Сообщение #7
Стаж: 13 лет

Сообщений: 34
Благодарностей: 2
Полезность: 46

Цитата(mde... @ 13.7.2013, 15:51) *
Делай проверку, я же написал

Код
if( get_user_flags(id) & ADMIN_LEVEL_H )

Повторюсь, как сделать то? Ведь
Код
if( get_user_flags(id) & ADMIN_LEVEL_H )
не указывает какой элемент проверять. В коде, который в первом посте есть if( get_user_flags(id) & ADMIN_LEVEL_B ), но получается если у админа нет флага "n", то блокируется все меню, а не его подпункт.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
mde...
сообщение 13.7.2013, 16:24
Сообщение #8
Стаж: 13 лет

Сообщений: 333
Благодарностей: 61
Полезность: 0

Цитата(pukipuki @ 13.7.2013, 15:57) *
Повторюсь, как сделать то? Ведь
Код
if( get_user_flags(id) & ADMIN_LEVEL_H )
не указывает какой элемент проверять. В коде, который в первом посте есть if( get_user_flags(id) & ADMIN_LEVEL_B ), но получается если у админа нет флага "n", то блокируется все меню, а не его подпункт.

Впиши в подпункте, который хочешь заблокировать.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя pukipuki
сообщение 13.7.2013, 17:25
Сообщение #9
Стаж: 13 лет

Сообщений: 34
Благодарностей: 2
Полезность: 46

Цитата(mde... @ 13.7.2013, 17:24) *
Впиши в подпункте, который хочешь заблокировать.

Жесть. Вы прикалываетесь или не понимаете о чем я говорю?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
cs-portal
сообщение 13.7.2013, 17:36
Сообщение #10
Стаж: 16 лет

Сообщений: 8181
Благодарностей: 2709
Полезность: 0

подпункт не указан явно, я х3 что там отвечает если pos

тогда if(pos == 7 && ( get_user_flags(id) & ADMIN_LEVEL_H )) return
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя pukipuki
сообщение 13.7.2013, 17:59
Сообщение #11
Стаж: 13 лет

Сообщений: 34
Благодарностей: 2
Полезность: 46

Цитата(cs-portal @ 13.7.2013, 18:36) *
подпункт не указан явно, я х3 что там отвечает если pos

тогда if(pos == 7 && ( get_user_flags(id) & ADMIN_LEVEL_H )) return

Сделал
Код
if(pos == 7 && ( get_user_flags(id) & ADMIN_LEVEL_B )) return

Так теперь без флага "n" выкидывает при выборе любого пункта меню.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
mde...
сообщение 13.7.2013, 19:27
Сообщение #12
Стаж: 13 лет

Сообщений: 333
Благодарностей: 61
Полезность: 0

Есть вариант убрать awp из меню в начале и всё.

Код
      new g_szRifleMenuTxt[MO_MAX_RIFLE][] = {
            "Clarion",
            "Krieg SG552",
            "AK47",
            "M4A1",
            "Bullpup",
            "Scout",
            "CT AutoSniper",
            "T AutoSniper",
            "Galil"
        }
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя pukipuki
сообщение 13.7.2013, 19:29
Сообщение #13
Стаж: 13 лет

Сообщений: 34
Благодарностей: 2
Полезность: 46

Цитата(mde... @ 13.7.2013, 20:27) *
Есть вариант убрать awp из меню в начале и всё.

Код
      new g_szRifleMenuTxt[MO_MAX_RIFLE][] = {
            "Clarion",
            "Krieg SG552",
            "AK47",
            "M4A1",
            "Bullpup",
            "Scout",
            "CT AutoSniper",
            "T AutoSniper",
            "Galil"
        }

Это понятно, что можно убрать. Задача не убрать, а ограничить использование.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: