Доступ к меню только определенной команде.

Сообщения
166
Реакции
34
Помог
3 раз(а)
Всем добрый день, ребят подскажите пожалуйста как осуществить
Доступ к меню только определенной команде. Код полностью внизу прикрепил.
Где то в этом куске нужно сделать проверку только на доступ команде СТ
Наверно после проверки на живых
Код:
if(!is_user_alive(id))
Код:
public Menu_Heroes(id, key)
{
    if(!is_user_alive(id))
        return;
    
    switch(key)
    {
        case 0:
        {
            gHero[id] = 0;
            OptionSave[id] = true;
            ModelChangeFunction(id);
            HealthFunction(id);
            SpeedFunction(id);
            GravityFunction(id);
            MessageInfo(id);
        }
        case 1:
        {
            gHero[id] = 1;
            OptionSave[id] = true;
            ModelChangeFunction(id);
            HealthFunction(id);
            SpeedFunction(id);
            GravityFunction(id);
            MessageInfo(id);
        }
        case 2:
        {
            gHero[id] = 2;
            OptionSave[id] = true;
            ModelChangeFunction(id);
            HealthFunction(id);
            SpeedFunction(id);
            GravityFunction(id);
            MessageInfo(id);
        }
        case 3:
        {
            gHero[id] = 3;
            OptionSave[id] = true;
            ModelChangeFunction(id);
            HealthFunction(id);
            SpeedFunction(id);
            GravityFunction(id);
            MessageInfo(id);
        }
        case 7:
        {
            DescriptionMenu(id);
        }
    }
Код:
/*
Автор: 6u3oH
Контакты: vk.com/6u3oH
Прошу посетить группу: https://vk.com/halt_gamers
Если у вас есть какое-либо предложение по созданию плагина (любая идея), вы можете смело предложить в этой группе.
А так же если вы нашли какой-либо баг, то в данной группе вы можете его описать, после чего он будет исправлен.
Спасибо, что скачали этот плагин!
*/
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <hamsandwich>

#define PLUGIN "Heroes Mode"
#define VERSION "1.0"
#define AUTHOR "6u3oH"

#define Ham_CS_Player_ResetMaxSpeed Ham_Item_PreFrame // если amxmodx > 1.8.3, то закоментируйте строку
#define HeroesAmmount 4 // Максимум героев [Не трогать]
#define MaxPlayer 32 // Максимум игроков [Не трогать]
#define TaskIdOne 19867 // Ид задачи [Не трогать]

new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_8|MENU_KEY_0;
new keys2 = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_8|MENU_KEY_0;

new gHero[MaxPlayer];
new OptionSave[MaxPlayer];

new const HeroModel1[] = "models/player/hero1/hero1.mdl"; // Путь до модели героя 1
new const HeroModel2[] = "models/player/hero2/hero2.mdl"; // Путь до модели героя 2
new const HeroModel3[] = "models/player/hero3/hero3.mdl"; // Путь до модели героя 3
new const HeroModel4[] = "models/player/hero4/hero4.mdl"; // Путь до модели героя 4

new HeroesList[HeroesAmmount][]=
{
    "Хиппер", // Имя 1 героя
    "Мэйтдрайв", // Имя 2 героя
    "Хэбатор", // Имя 3 героя
    "Фрилансия" // Имя 4 героя
};

new HeroesDescription[HeroesAmmount][]=
{
    "Баланс сил: HP[+], Speed [+], Jump [+]", // Описание способности 1 героя
    "Гравитация: HP [+], Speed [+], Jump [++]", // Описание способности 2 героя
    "Сильный: HP [++], Speed [-], Jump [-] Dmg [+]", // Описание способности 3 героя
    "Скорость: HP [+], Speed [++], Jump [+]" // Описание способности 4 героя
};

new HeroesHealth[HeroesAmmount]=
{
    110, // Кол-во здоровья у 1 героя
    110, // Кол-во здоровья у 2 героя
    130, // Кол-во здоровья у 3 героя
    105 // Кол-во здоровья у 4 героя

};

new Float: HeroesSpeed[HeroesAmmount]=
{
    270.0, // Скорость 1 героя
    270.0, // Скорость 2 героя
    250.0, // Скорость 3 героя (250.0 - стандартная)
    300.0 // Скорость 4 героя

};

new Float: HeroesGravity[HeroesAmmount]=
{
    0.9, // Значение гравитации у 1 героя
    0.8, // Значение гравитации у 2 героя
    1.0, // Значение гравитации у 3 героя (1.0 - стандартная)
    0.9 // Значение гравитации у 4 героя

};

new Float: DmgHero = 1.2; // Насколько умножать урон у героя Хэбатор

public plugin_precache()
{
    precache_model(HeroModel1);
    precache_model(HeroModel2);
    precache_model(HeroModel3);
    precache_model(HeroModel4);
}

public plugin_connect(id)
{
    gHero[id] = 0;
}

public plugin_disconnect(id)
{
    remove_task(TaskIdOne);
}

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_clcmd("say /hero", "HeroesMenu");
    
    RegisterHam(Ham_Spawn, "player", "SpawnFunction", .Post = true);
    RegisterHam(Ham_CS_Player_ResetMaxSpeed, "player", "SpeedFunction", .Post = true);
    RegisterHam(Ham_TakeDamage, "player", "TakeDamageFunction", .Post = true)
    
    register_menu("Menu 1", keys, "Menu_Heroes");
    register_menu("Menu 2", keys2, "Menu_Description");
    
    set_task(1.0, "HudMessage", TaskIdOne, _, _, "b");
}

public SpawnFunction(id)
{
    if(!is_user_alive(id))
        return;
            
    OptionSave[id] = false;
    ModelChangeFunction(id);
    RenderModel(id);
    HealthFunction(id);
    HeroesMenu(id);
    GravityFunction(id);
}

public HudMessage()
{
    for(new id = 1; id <= get_maxplayers(); id++)
    {
        if(!is_user_alive(id))
            continue;
        
        set_hudmessage(0, 255, 0, 0.01, 0.18, 0, 6.0, 1.0, 1.0, 1.0, 1)
        show_hudmessage(id, "Герой: %s", HeroesList[gHero[id]]);
    }
}

public HeroesMenu(id)
{
    if(!is_user_alive(id))
        return;
    
    if(OptionSave[id])
    {
        ColorChat(id, GREEN, "Вы в этом раунде уже выбирали героя");
        return;
    }
    
    static menu[650], iLen
    iLen = 0
    iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\yМеню Героев^n\rВыберите персонажа^n^n")
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \y%s^n", HeroesList[0])
    keys |= MENU_KEY_1
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \y%s^n", HeroesList[1])
    keys |= MENU_KEY_2

    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \y%s^n", HeroesList[2])
    keys |= MENU_KEY_3

    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \y%s^n^n", HeroesList[3])
    keys |= MENU_KEY_4
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r8. \w-- \rИнформация о героях \w--^n")
    keys |= MENU_KEY_8
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r0. \wВыход^n")
    keys |= MENU_KEY_0

    show_menu(id, keys, menu, -1, "Menu 1")
}

public Menu_Heroes(id, key)
{
    if(!is_user_alive(id))
        return;
    
    switch(key)
    {
        case 0:
        {
            gHero[id] = 0;
            OptionSave[id] = true;
            ModelChangeFunction(id);
            HealthFunction(id);
            SpeedFunction(id);
            GravityFunction(id);
            MessageInfo(id);
        }
        case 1:
        {
            gHero[id] = 1;
            OptionSave[id] = true;
            ModelChangeFunction(id);
            HealthFunction(id);
            SpeedFunction(id);
            GravityFunction(id);
            MessageInfo(id);
        }
        case 2:
        {
            gHero[id] = 2;
            OptionSave[id] = true;
            ModelChangeFunction(id);
            HealthFunction(id);
            SpeedFunction(id);
            GravityFunction(id);
            MessageInfo(id);
        }
        case 3:
        {
            gHero[id] = 3;
            OptionSave[id] = true;
            ModelChangeFunction(id);
            HealthFunction(id);
            SpeedFunction(id);
            GravityFunction(id);
            MessageInfo(id);
        }
        case 7:
        {
            DescriptionMenu(id);
        }
    }
}

public DescriptionMenu(id)
{
    if(!is_user_alive(id))
        return;
    
    static menu[650], iLen
    iLen = 0
    iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\yВозможности Героев^n\rВыбор невозможен^n^n")
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \y%s^n", HeroesDescription[0])
    keys2 &= MENU_KEY_1
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \y%s^n", HeroesDescription[1])
    keys2 &= MENU_KEY_2

    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \y%s^n", HeroesDescription[2])
    keys2 &= MENU_KEY_3

    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \y%s^n^n", HeroesDescription[3])
    keys2 &= MENU_KEY_4
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r8. \w-- \rВыбрать героя \w--^n")
    keys2 |= MENU_KEY_8        
    
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r0. \wВыход^n")
    keys2 |= MENU_KEY_0

    show_menu(id, keys2, menu, -1, "Menu 2")
}

public Menu_Description(id, key)
{
    if(!is_user_alive(id))
    return;
    
    switch(key)
    {
        case 0: client_print(id, print_chat, "Автор плагина: 6u3oH"); // Пункт нажать нельзя
        case 1: client_print(id, print_chat, "Контакты: vk.com/6u3oH"); // Потому пишу здесь
        case 2: client_print(id, print_chat, "Группа Вконтакте:"); // На правах автора
        case 3: client_print(id, print_chat, "vk.com/halh_gamers"); // Свою рекламу
        case 7: HeroesMenu(id)
    }
}

public TakeDamageFunction(szVictim, szWeapon, szAttacker, Float: szDamage, szDamagebits )
{
    if(!is_user_connected(szVictim) || !is_user_connected(szAttacker))
        return;
    
    if(cs_get_user_team(szAttacker) == cs_get_user_team(szVictim) || szAttacker == szVictim)
        return;
    
    if(gHero[szAttacker] == 2)
    {
        szDamage *= DmgHero;
    }
}

public MessageInfo(id)
{
    if(!is_user_alive(id))
        return;
        
    ColorChat(id, GREEN, "Вы выбрали героя: ^4%s", HeroesList[gHero[id]]);
    ColorChat(id, GREEN, "Описание - ^4%s", HeroesDescription[gHero[id]]);
}

public RenderModel(id)
{        
    if(!is_user_alive(id))
        return;
    
    if(cs_get_user_team(id) == CS_TEAM_T)
    {
        set_user_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 10)
    }

    if(cs_get_user_team(id) == CS_TEAM_CT)
    {
        set_user_rendering(id, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 10)
    }
}

public ModelChangeFunction(id)
{
    if(!is_user_alive(id))
        return;

    switch(gHero[id])
    {
        case 0:    cs_set_user_model(id, "hero1");
        case 1:    cs_set_user_model(id, "hero2");
        case 2:    cs_set_user_model(id, "hero3");
        case 3:    cs_set_user_model(id, "hero4");
    }
}

public HealthFunction(id)
{
    if(!is_user_alive(id))
        return;
    
    set_user_health(id, HeroesHealth[gHero[id]]);
}

public SpeedFunction(id)
{
    if(!is_user_alive(id))
        return;
        
    set_user_maxspeed(id, Float: HeroesSpeed[gHero[id]]);
}

public GravityFunction(id)
{
    if(!is_user_alive(id))
        return;
    
    set_user_gravity(id, Float: HeroesGravity[gHero[id]]);
}
 
Сообщения
2,716
Реакции
2,996
Помог
59 раз(а)
:swoon2: ох и код. Не себе - не людям я бы сказал.
 
Сообщения
957
Реакции
1,185
Помог
52 раз(а)
cs_get_user_team(id) != CS_TEAM_CT добавить в if с проверкой на живого
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу