Русское сообщество по скриптингу

Подпункт в меню для випов  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Подпункт в меню для випов

Сообщение Mandar1n » 05 фев 2018, 16:41

Попробовал создать свой плагин, чтобы при спавне выдавался дефолт(броня, дигл и т.п.) и открывалось меню, где есть 3 оружия. М4, АК и АВП. Авп для випов. Хотел сделать, чтобы если игрок не вип(нет флага t), то у него в меню Взять [AWP] был серым цветом, но чет не получается... Компилю в 1.8.3-re
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <hamsandwich>
 
#define PLUGIN "Start Weapon"     
#define VERSION "1.0"
#define AUTHOR "Mandar1n"
 
new keys 
= 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

public plugin_init
()
{
    RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1);
    register_menu("Menu 1", keys , "func_menu");
}

public fw_PlayerSpawn_Post(id)
{
if(
is_user_connected(id) && is_user_alive(id))
{
strip_user_weapons(id);
set_task(0.1 , "Server_Menu")
give_item(id,"weapon_deagle");
give_item(id,"weapon_knife");
give_item(id,"weapon_hegrenade")
give_item(id,"weapon_flashbang");
give_item(id,"weapon_smokegrenade");
give_item(id,"item_assaultsuit");
ExecuteHamB(Ham_GiveAmmo, id, 35, "50ae", 35);
ExecuteHamB(Ham_GiveAmmo, id, 90, "556nato", 90);
ExecuteHamB(Ham_GiveAmmo, id, 90, "762nato", 90);
cs_set_user_bpammo(id, CSW_HEGRENADE, 1);
cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
if(
cs_get_user_team(id) == CS_TEAM_CT)
give_item(id,"item_thighpack");
}
}

public Server_Menu(id)
{
    new name[32]
    get_user_name(id, name, 31)
    static menu[650], iLen
    iLen 
= 0
    iLen 
= formatex(menu[iLen], charsmax(menu) - iLen, "\rВыберите оружие:^n^n")

    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\y1. \wВзять \y[M4A1]^n")
    keys |= MENU_KEY_1

    iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\y2. \wВзять \y[AK47]^n")
    keys |= MENU_KEY_2
    
    if
((get_user_flags(id) & ADMIN_LEVEL_H))
    {
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\y3. \wВзять [AWP]^n^n")
    keys |= MENU_KEY_3
    
}
    else
    
{
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\y3. \dВзять [AWP] \r[Только VIP]^n^n")
    keys |= MENU_KEY_3
    
}

    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\y0. \rВыход")
    keys |= MENU_KEY_0

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

public func_menu(id, key)
{
     switch(key)
     {
          case 0: 
          give_item
(id, "weapon_m4a1");
          
          case 1
:
          give_item(id, "weapon_ak47")

          case 2: 
          if
((get_user_flags(id) & ADMIN_LEVEL_H))
          {
          give_item(id, "weapon_awp")
          ExecuteHamB(Ham_GiveAmmo, id, 30, "ammo_338magnum", 30)
          }
          else
          
{
          client_print_color(id, key, "^1[^3Оружие^1] ^4AWP ^3доступна только для ^4VIP")
          }
     }
     return PLUGIN_HANDLED
}


Добавлено спустя 6 минут 12 секунд:
Скрин результата Вы должны зарегистрироваться, чтобы видеть ссылки. ... 2f4cbf.png
Аватара пользователя
Mandar1n
 
Сообщения: 133
Зарегистрирован: 08 дек 2013, 14:08
Благодарил (а): 38 раз.
Поблагодарили: 4 раз.
Языки программирования: Counter-Strike 1.6

Re: Подпункт в меню для випов

Сообщение Mistrick » 05 фев 2018, 16:59

Код: Выделить всё
if(get_user_flags(id) & ADMIN_LEVEL_H)
{
    
iLen += formatex(menu[iLen], charsmax(menu) - iLen"\y3. \wВзять [AWP]^n^n")
    
keys |= MENU_KEY_3
}
else
{
    
iLen += formatex(menu[iLen], charsmax(menu) - iLen"\y3. \dВзять [AWP] \r[Только VIP]^n^n")
    
keys &= ~MENU_KEY_3
Аватара пользователя
Mistrick
Скриптер
 
Сообщения: 2940
Зарегистрирован: 04 ноя 2012, 18:15
Благодарил (а): 43 раз.
Поблагодарили: 1247 раз.
Языки программирования: PAWN
С/С++(few above zero)

Re: Подпункт в меню для випов

Сообщение Mandar1n » 05 фев 2018, 17:39

Mistrick писал(а):
Код: Выделить всё
if(get_user_flags(id) & ADMIN_LEVEL_H)
{
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\y3. \wВзять [AWP]^n^n")
    keys |= MENU_KEY_3
}
else
{
    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\y3. \dВзять [AWP] \r[Только VIP]^n^n")
    keys &= ~MENU_KEY_3

Не помогло, так же выводится в меню как для випов(цветным), но в чат пишет что нет доступа

Добавлено спустя 1 минуту 6 секунд:
Или как можно сделать, если нет флага t, то кнопка не нажимается
Аватара пользователя
Mandar1n
 
Сообщения: 133
Зарегистрирован: 08 дек 2013, 14:08
Благодарил (а): 38 раз.
Поблагодарили: 4 раз.
Языки программирования: Counter-Strike 1.6

Re: Подпункт в меню для випов

Сообщение gamingEx » 05 фев 2018, 17:45

Не помогло, так же выводится в меню как для випов(цветным), но в чат пишет что нет доступа

Бред. Без доступа ты бы даже пункт бы не выбрал, ибо это:
Или как можно сделать, если нет флага t, то кнопка не нажимается
мистрик и так сделал
:dance2: :dance2: :dance2:
Аватара пользователя
gamingEx
 
Сообщения: 121
Зарегистрирован: 07 окт 2017, 20:48
Благодарил (а): 0 раз.
Поблагодарили: 19 раз.
Опыт программирования: Больше трех лет
Языки программирования: Swift, C++, PHP, Ruby, JS

Re: Подпункт в меню для випов  [Решено]

Сообщение Mistrick » 05 фев 2018, 17:51

Mandar1n, мой код и блокирует от нажатия, только вы почему-то забыли в таск передавать индекс игрока.
Код: Выделить всё
set_task(0.1 , "Server_Menu")

Из-за чего у вас в Server_Menu id всегда равен нулю, а ноль - сервер и у него всегда все флаги есть. Далее вызывается show_menu(), id = 0, значит меню показывает всем игрокам на сервере.

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <hamsandwich>

#define PLUGIN "Start Weapon"     
#define VERSION "1.0f"
#define AUTHOR "Mandar1n"

new keys = 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

public plugin_init
()
{
    RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1);
    register_menu("Menu 1", keys , "func_menu");
}

public fw_PlayerSpawn_Post(id)
{
    if(is_user_alive(id))
    {
        strip_user_weapons(id);
        set_task(0.1 , "Server_Menu", id)
        give_item(id,"weapon_deagle");
        give_item(id,"weapon_knife");
        give_item(id,"weapon_hegrenade")
        give_item(id,"weapon_flashbang");
        give_item(id,"weapon_smokegrenade");
        give_item(id,"item_assaultsuit");
        ExecuteHamB(Ham_GiveAmmo, id, 35, "50ae", 35);
        ExecuteHamB(Ham_GiveAmmo, id, 90, "556nato", 90);
        ExecuteHamB(Ham_GiveAmmo, id, 90, "762nato", 90);
        cs_set_user_bpammo(id, CSW_HEGRENADE, 1);
        cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
        if(cs_get_user_team(id) == CS_TEAM_CT)
            give_item(id,"item_thighpack");
    }
}

public Server_Menu(id)
{
    new name[32]
    get_user_name(id, name, charsmax(name))
    static menu[512], iLen
    iLen 
= 0
    iLen 
= formatex(menu[iLen], charsmax(menu) - iLen, "\rВыберите оружие:^n^n")

    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\y1. \wВзять \y[M4A1]^n")
    keys |= MENU_KEY_1

    iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\y2. \wВзять \y[AK47]^n")
    keys |= MENU_KEY_2

    if
((get_user_flags(id) & ADMIN_LEVEL_H))
    {
        iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\y3. \wВзять [AWP]^n^n")
        keys |= MENU_KEY_3
    
}
    else
    
{
        iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\y3. \dВзять [AWP] \r[Только VIP]^n^n")
        keys &= ~MENU_KEY_3
    
}

    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\y0. \rВыход")
    keys |= MENU_KEY_0

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

public func_menu(id, key)
{
    switch(key)
    {
        case 0: 
            give_item
(id, "weapon_m4a1");

        case 1:
            give_item(id, "weapon_ak47")

        case 2:
        {
            if((get_user_flags(id) & ADMIN_LEVEL_H))
            {
                give_item(id, "weapon_awp")
                ExecuteHamB(Ham_GiveAmmo, id, 30, "ammo_338magnum", 30)
            }
        }
    }
    return PLUGIN_HANDLED
}
Аватара пользователя
Mistrick
Скриптер
 
Сообщения: 2940
Зарегистрирован: 04 ноя 2012, 18:15
Благодарил (а): 43 раз.
Поблагодарили: 1247 раз.
Языки программирования: PAWN
С/С++(few above zero)

Re: Подпункт в меню для випов

Сообщение Mandar1n » 05 фев 2018, 18:02

Mistrick писал(а):Mandar1n, мой код и блокирует от нажатия, только вы почему-то забыли в таск передавать индекс игрока.
Код: Выделить всё
set_task(0.1 , "Server_Menu"

Из-за чего у вас в Server_Menu id всегда равен нулю, а ноль - сервер и у него всегда все флаги есть. Далее вызывается show_menu(), id = 0, значит меню показывает всем игрокам на сервере.

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <hamsandwich>

#define PLUGIN "Start Weapon"     
#define VERSION "1.0f"
#define AUTHOR "Mandar1n"

new keys = 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

public plugin_init
()
{
    RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1);
    register_menu("Menu 1", keys , "func_menu");
}

public fw_PlayerSpawn_Post(id)
{
    if(is_user_alive(id))
    {
        strip_user_weapons(id);
        set_task(0.1 , "Server_Menu", id)
        give_item(id,"weapon_deagle");
        give_item(id,"weapon_knife");
        give_item(id,"weapon_hegrenade")
        give_item(id,"weapon_flashbang");
        give_item(id,"weapon_smokegrenade");
        give_item(id,"item_assaultsuit");
        ExecuteHamB(Ham_GiveAmmo, id, 35, "50ae", 35);
        ExecuteHamB(Ham_GiveAmmo, id, 90, "556nato", 90);
        ExecuteHamB(Ham_GiveAmmo, id, 90, "762nato", 90);
        cs_set_user_bpammo(id, CSW_HEGRENADE, 1);
        cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
        if(cs_get_user_team(id) == CS_TEAM_CT)
            give_item(id,"item_thighpack");
    }
}

public Server_Menu(id)
{
    new name[32]
    get_user_name(id, name, charsmax(name))
    static menu[512], iLen
    iLen 
= 0
    iLen 
= formatex(menu[iLen], charsmax(menu) - iLen, "\rВыберите оружие:^n^n")

    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\y1. \wВзять \y[M4A1]^n")
    keys |= MENU_KEY_1

    iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\y2. \wВзять \y[AK47]^n")
    keys |= MENU_KEY_2

    if
((get_user_flags(id) & ADMIN_LEVEL_H))
    {
        iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\y3. \wВзять [AWP]^n^n")
        keys |= MENU_KEY_3
    
}
    else
    
{
        iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\y3. \dВзять [AWP] \r[Только VIP]^n^n")
        keys &= ~MENU_KEY_3
    
}

    iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\y0. \rВыход")
    keys |= MENU_KEY_0

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

public func_menu(id, key)
{
    switch(key)
    {
        case 0: 
            give_item
(id, "weapon_m4a1");

        case 1:
            give_item(id, "weapon_ak47")

        case 2:
        {
            if((get_user_flags(id) & ADMIN_LEVEL_H))
            {
                give_item(id, "weapon_awp")
                ExecuteHamB(Ham_GiveAmmo, id, 30, "ammo_338magnum", 30)
            }
        }
    }
    return PLUGIN_HANDLED

Не знал, спасибо) Все работает
Аватара пользователя
Mandar1n
 
Сообщения: 133
Зарегистрирован: 08 дек 2013, 14:08
Благодарил (а): 38 раз.
Поблагодарили: 4 раз.
Языки программирования: Counter-Strike 1.6


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

cron