Как сделать, чтобы меню работало с определенного раунда?

Сообщения
336
Реакции
174
Помог
11 раз(а)
Kioo,

Код:
const g_iOpenRound = 5;                             //С какого раунда можно будет открыть меню
new const g_szFlagAccess_OpenMenu[] = "t";          //Флаг для открытия меню


Код:
/**
    История изменений:
        1.1 (27.09.2022) by b0t.
            - Редактура;
            - Оптимизация;
*/
#include <amxmodx>
#include <reapi>
#define PLUGNAME "Weaponmenu"
#define VERSION "1.1"
#define AUTHOR "Kiow"
#define GetTotalRounds()        (get_member_game(m_iTotalRoundsPlayed)+1)
const g_iOpenRound = 5;                             //С какого раунда можно будет открыть меню
new const g_szFlagAccess_OpenMenu[] = "t";          //Флаг для открытия меню
new
    g_iBitFlagAccess_OpenMenu;
public plugin_init()
{
    register_plugin(PLUGNAME, VERSION, AUTHOR)
    register_clcmd( "say /admmenu", "admin_menu" )
    register_clcmd( "admmenu", "admin_menu" )
    g_iBitFlagAccess_OpenMenu = read_flags(g_szFlagAccess_OpenMenu);
}
public admin_menu(id)
{
    if(~get_user_flags(id) & g_iBitFlagAccess_OpenMenu || TeamName:get_member(id,m_iTeam) != TEAM_CT)
        return client_print_color(id,print_team_default,"^4*^1У вас нет доступа^4!");
    
    new szMenu[256],iChar = 'w';
    formatex(szMenu,charsmax(szMenu),"\wОружейная");
    if(GetTotalRounds() < g_iOpenRound) {
        add(szMenu,charsmax(szMenu),fmt("^n\dРазрешена с %i-го раунда",g_iOpenRound));
        iChar = 'd';
    }
    new iMenu = menu_create(szMenu,"admin_menu__Handler");
    menu_additem(iMenu,fmt("\%cThunderbolt \d[\yВзять\d]",iChar));
    menu_additem(iMenu,fmt("\%cNeedler \d[\yВзять\d]",iChar));
    menu_additem(iMenu,fmt("\%cНабор гранат \d[\yВзять\d]",iChar));
    
    if(!is_user_connected(id))
        return menu_destroy(iMenu);
    
    menu_setprop(iMenu,MPROP_EXITNAME,"Выход");
    menu_display(id,iMenu);
    return PLUGIN_HANDLED;
}
public menu_admin( id, menu, item )
{
    menu_destroy(menu);
    
    if(!is_user_alive(id))
        return client_print_color(id,print_team_default,"^4*^1Доступно только для живых^4!");
    switch( item+1 )
    {
        case 1: client_cmd(id,"admin_get_thunderbolttttt");
        case 2: client_cmd(id,"admin_get_needlerrrrr");
        case 3:
        {
            rg_give_item(id,"weapon_hegrenade");
            rg_give_item(id,"weapon_flashbang");
        }
    }
    return PLUGIN_HANDLED;
}
 

Вложения

Сообщения
101
Реакции
-11
Помог
2 раз(а)
И это ты считаешь нормальным примером для начинающих?
return client_print_color(id,print_team_default,"^4*^1Доступно только для живых^4!");
 
Сообщения
46
Реакции
2
Помог
1 раз(а)
b0t.,установил, но меню не открывается. Консоль:

Invalid function "admin_menu_Handler"
[AMXX] Run time error 19 (plugin "WeaponMenu.amxx") - debug not enabled!
[AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
 
Сообщения
336
Реакции
174
Помог
11 раз(а)
Nemec, не вижу тут проблем...
Обычный вывод в чат.

Ну и начнём с того, что я скинул уже рабочий код. Использовать его или разбирать по косточкам дело каждого.
Не вижу ни чего сложного в том, чтобы погуглить эту функцию и всё понять...
27 Сен 2022
Kioo, Добавьте "debug". Скиньте конкретную строку с ошибкой
 
Сообщения
46
Реакции
2
Помог
1 раз(а)
Nemec, функция используется вместо inc ColorChat, который уже есть в новых версиях AmxModX. Вроде как, если я правильно помню
 
Сообщения
46
Реакции
2
Помог
1 раз(а)
b0t.,

L 09/27/2022 - 03:21:58: Invalid function "admin_menu_Handler"
L 09/27/2022 - 03:21:58: [AMXX] Displaying debug trace (plugin "WeaponMenu.amxx", version "1.1")
L 09/27/2022 - 03:21:58: [AMXX] Run time error 19: function not found
L 09/27/2022 - 03:21:58: [AMXX] [0] WeaponMenu.sma::admin_menu (line 45)
 
Сообщения
336
Реакции
174
Помог
11 раз(а)
Nemec, Попрошу развёрнутый ответ почему именно такой способ возврата = говнокодинг.
Если нету ни примеров, ни аргументов -- слова в пустоту от неумёхи.
27 Сен 2022
Kioo
 

Вложения

Сообщения
101
Реакции
-11
Помог
2 раз(а)
Я думаю опытные сдесь скриптеры тебе еще не раз на это укажут, на данный момент мое мнение остается при мне, и это не я так придумал а люди с неограниченым опытом
 
  • Не нравится
Реакции: b0t.
Сообщения
336
Реакции
174
Помог
11 раз(а)
Nemec, как итог -- неумёха.
Сколько раз не делал такого рода возврат не было ни ошибок, ни проблем.
Опытные скриптеры так же ни чего на этот счёт не говорили, более того сами этим пользуются.


Если критикуете -- предлагайте
Если не знаете как аргументировать -- молчите, не позорьтесь
 
Сообщения
46
Реакции
2
Помог
1 раз(а)
b0t., все прекрасно, меню по визуалу стало именно "тем самым") Правда оружие берется, несмотря на то, что это только первый раунд
 

Вложения

  • Нравится
Реакции: b0t.
Сообщения
336
Реакции
174
Помог
11 раз(а)
Kioo, извиняюсь. Сплю уже и не вижу дальше носа
 

Вложения

Сообщения
101
Реакции
-11
Помог
2 раз(а)
Я жду не дождусь бизона и ответ на твой пример говнокодинга))) уж поверь, у человека опыта намного больше чем у тя в разы, завтра он тебе даст понять в чем ты не прав)))
 
Сообщения
46
Реакции
2
Помог
1 раз(а)
b0t., ничего страшного, спасибо большое, все отлично работает! :)
 

Вложения

Сообщения
336
Реакции
174
Помог
11 раз(а)
Nemec, было бы не плохо для начала под учить русский и писать грамотно.
Как будет толковый аргумент и развёрнутый ответ -- с удовольствием прочитаю.
Если он окажется толковым -- прислушаюсь.
А пока мои слова подтвердились ещё больше -- ты не умеешь писать и уж тем более не разбираешься в теме.
Я не вижу смысла больше вести с тобой диалог ибо мои знания перекрывают твои.
Ответ от Бизона(ак Виктора) с удовольствием прочитаю
 
Сообщения
101
Реакции
-11
Помог
2 раз(а)
:rofl::swoon2:
Неправильно пишется
Недопустимо писать глагол с приставкой раздельно – под учить
 
Сообщения
336
Реакции
174
Помог
11 раз(а)
Nemec, опечатки случаются везде. Даже у меня, а вот цепляться к одной единственное опечатке, когда тебя тыкают носом в твои же недостатки. Признак слабого человека.

Но я приму этот не большой бой.

Вот пример твоих малых ошибок и это ещё не всё...
Не нужно мне больше писать. Всем уже понятно кто ты и на что способен
 

Download all Attachments

Сообщения
494
Реакции
340
Помог
11 раз(а)
b0t., для технической, семантической и синтаксической правильности понимания работы с передачей/прерыванием/возвратом управления в функциях разработчики amxmodx ввели специальные константы: PLUGIN_CONTINUE, PLUGIN_HANDLED, PLUGIN_HANDLED_MAIN. У fakemeta, hamsandwich и reapi по аналогии есть свои.
Функция client_print_color возвращает количество напечатанных символов.
Функция menu_destroy вообще ничего не возвращает.
Ты сам же в конце функции используешь нужную константу управления:
Код:
return PLUGIN_HANDLED;
Что никак не вяжется с возвратом количества напечатанных символов.
На деле это что-то наряду с магическими числами. Делу не вредит - но моментами вводит в заблуждение и в неясность и уменьшает читаемость кода (опционально для каждого).

Так что лучше не экономить лишнюю строчку, а сделать более правильно.
Код:
public admin_menu(pPlayer)
{
    if(чё-то не так)
    {
        неа
        return PLUGIN_CONTINUE;
    }

    // здесь наверняка что-то должно быть

    return PLUGIN_HANDLED;
}
 
Сообщения
336
Реакции
174
Помог
11 раз(а)
Nemec, слушать критику? А когда это ты критиковал? :D
Обосрать, что-то в комментариях ты мастак, а когда попросили объяснить почему - сдулся и перевел стрелку на другого человека.
В свою очередь другой человек за тебя и дал определённую критику, аргументированную и понятную. Ему спасибо, а вот ты ни чего особо и не сделал :D

bizon, благодарю. Я уже почитал другие форумы и не увидел ни одного сообщения о том, что это плохо и так делать не нужно.
return client_print_color вернёт кол-во напечатанных символов, но как итог такая запись остановит дальнейший код.
Что касается читаемости кода, тут тоже не понятно. Магическими числами тут и не пахнет, читаемость тоже не нарушается.
Но спасибо за ответ, буду избавляться от назойливой привычки сокращать всё и вся :)
 

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

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