MenuSystem

MenuSystem 0.1.2

Нет прав для скачивания
Сообщения
1,536
Реакции
2,319
Помог
39 раз(а)
Пишу в чат /menu, выходит меню, выбираю меню карт, ничего не происходит.
Установить на сервер мапменеджер с поддержкой команды /maps_menu или заменить на актуальную команду для текущего менеджера
 
Сообщения
28
Реакции
25
Помог
1 раз(а)
Tranquillity, установлен мапменеджер от неугомона.

Вот основное меню, команда: /menu, далее, идут разделы, меню карт и меню статистики.
По логике, далее выбираем меню карт и должно открыться меню с командами карт, /maps и /rtv
Но до этого меню дело не доходит (через основное меню, командой /menu)

А если напрямую написать /maps_menu откроется меню с командами для карт, далее выбираем номинацию карт, и ничего не происходит.
В консоли ошибка аналогична моему первому посту :)
6 Сен 2019
artfreeman, а причем тут плагин?
Я уже думал не по теме пишу :)
 
Сообщения
494
Реакции
109
Помог
16 раз(а)
artfreeman, вроде похоже на то что протектор блочит команды,которые именно сервер отправляет клиенту.
 
Сообщения
2,288
Реакции
1,738
Помог
31 раз(а)
artfreeman, создайте тему отдельно. Приложив исходники и конфиги. Поможем
 
Сообщения
400
Реакции
147
Помог
11 раз(а)
получается только можно 7 пунктов оформить (допустим 9 пунктов на 1 страничке нельзя сделать), если больше, получается переход автоматом на другую страницу 1/2.
menuSystem.ini:
C-like:
[\w Меню сервера]
[\w Меню помощи:]
say =/new_menu
cmd =
"\wВипменю" "say /vipmenu"
"\wЯ застрял" "say /stuck"
"\yПepeйти в: \rнaблюдaтeли \d(\r/spec\d)" "say /spec"
"\yBepнyтcя в: \rигpy \d(\r/spec\d)" "say /spec"
"\rЗaбaнить \yигpoкa \d(\r/voteban\d)" "say /voteban"
"\rЗaткнyть \yигpoкa \d(\r/mute\d)" "say /mute"
"\yOбнyлить \rcчёт \d(\r/rs\d)" "say /rs"
"\yГoлocoвaниe зa cмeнy \rкapты \d(\r/rtv\d)" "say /rtv"
;"\yНoминaция кapт \d(\r/maps\d)" "say /maps"
;"\yЛичнaя cтaтиcтикa \d(\r/rankstats\d)" "say /rankstats"
;"\yРанг \d(\r/rank\d)" "say /rank"
"Назад" "say /menu"
[\w Меню помощи2:]
say =/new_menu1
cmd =
"\wВипменю" "say /vipmenu"
"\wЯ застрял" "say /stuck"
"\yПepeйти в: \rнaблюдaтeли \d(\r/spec\d)" "say /spec"
"\yBepнyтcя в: \rигpy \d(\r/spec\d)" "say /spec"
"\rЗaбaнить \yигpoкa \d(\r/voteban\d)" "say /voteban"
"\rЗaткнyть \yигpoкa \d(\r/mute\d)" "say /mute"
"\yOбнyлить \rcчёт \d(\r/rs\d)" "say /rs"
"\yГoлocoвaниe зa cмeнy \rкapты \d(\r/rtv\d)" "say /rtv"
"Назад" "say /menu"
[\rМeню сepвepa^n\d[\yBк:\d] \rvk.com\w]
say = /menu
cmd = nightvision
"\yИстория последних игр" "say /history"
"\yТоп игроков на карте" "say /hot"
"\yОставшее время" "say /timeleft"
"\yВремя" "say /thetime"
"\yTop15 \d(\r/top15\d)" "say /top15"
;"\wАдмины  \yонлайн" "say /admins"
"\wНаписать в \yЛс" "say /pm"
"\wМеню \yпомощи" "say /new_menu"
"\wМеню \yпомощи2" "say /new_menu1"
1567861269966.png
 
Последнее редактирование:
Сообщения
400
Реакции
147
Помог
11 раз(а)
Pokemoshka, получается 9 пунктов на 1 страничке в меню сделать не получиться никак, из-за этого #42
 
Сообщения
400
Реакции
147
Помог
11 раз(а)
Pokemoshka, это я понял!) думал может в обновлении учтётся этот момент. :dntknw:
 
Сообщения
1
Реакции
0
А можно поставить в красном цвете? Просто когда пытаюсь поставить меню красным, слетает и всё становится белым, а в настройках буква пропадает, и каждый пункт становится ниже
 
Сообщения
53
Реакции
6
Добрый день, классная менюшка. Если кто-то доделывал для себя в меню переход в спектры и обратно для админов, поделитесь пожалуйста.
 
Сообщения
53
Реакции
6
Или может кто пытался сделать меню на клавишу B
 
Сообщения
2,491
Реакции
2,791
Помог
61 раз(а)
etkins, это не относится к данному плагину.
 
Сообщения
285
Реакции
251
Помог
7 раз(а)
C++:
stock SendCmd_1( id , text[] ) {
      message_begin( MSG_ONE, 51, _, id )
      write_byte( strlen(text) + 2 )
      write_byte( 10 )
      write_string( text )
      message_end()
}
это зачем
 
Сообщения
35
Реакции
1
Неверный раздел форума
/*
*/

#include <amxmodx>

#define PLUGIN "Menu System"
#define VERSION "0.1.2"
#define AUTHOR "serfreeman1337"

new Trie:sayCall
new Trie:cmdCall

enum _:menuItemStruct {
ISTRUCT_TITLE[128],
ISTRUCT_CMD[20]
}

public plugin_init(){
register_plugin(PLUGIN,VERSION,AUTHOR)
register_clcmd("nightvision", "menu1")
register_clcmd("say /help","Show_HelpMOTD")

}

public Show_HelpMOTD(id) {
show_motd(id,"help.txt","HELP")

}


public plugin_cfg(){
new cfgPath[512]
get_localinfo("amxx_configsdir",cfgPath,charsmax(cfgPath))

add(cfgPath,charsmax(cfgPath),"/menuSystem.ini")

new f = fopen(cfgPath,"r")

if(!f){
log_amx("confg file not found")

return PLUGIN_CONTINUE
}

new buffer[512],menuTitle[128],menuId = -1

while(!feof(f)){
fgets(f,buffer,charsmax(buffer))
trim(buffer)

if(!buffer[0] || buffer[0] == ';') // skip comments
continue

replace_all(buffer,charsmax(buffer),"^^n","^n") // do new lines

if(buffer[0] == '[' && buffer[strlen(buffer) - 1] == ']'){ // new menu entrie
formatex(menuTitle,strlen(buffer) - 2,"%s",buffer[1]) // parse menu title
menuId = menu_create(menuTitle,"GlobalMenu_Handler") // create new menu

new itemText[128]
formatex(itemText,charsmax(itemText),"%L",LANG_SERVER,"BACK")
menu_setprop(menuId,MPROP_BACKNAME,itemText)

formatex(itemText,charsmax(itemText),"%L",LANG_SERVER,"MORE")
menu_setprop(menuId,MPROP_NEXTNAME,itemText)

formatex(itemText,charsmax(itemText),"%L",LANG_SERVER,"EXIT")
menu_setprop(menuId,MPROP_EXITNAME,itemText)

continue
}

if(menuId == -1)
continue

if(buffer[0] == '"'){ // read menu items
new mItem[menuItemStruct]

if(parse(buffer,mItem[ISTRUCT_TITLE],charsmax(mItem[ISTRUCT_TITLE]),
mItem[ISTRUCT_CMD],charsmax(mItem[ISTRUCT_CMD])) < 2) // not engought parameters
continue

menu_additem(menuId,mItem[ISTRUCT_TITLE],mItem[ISTRUCT_CMD])
}else{ // read menu keys
new itemKey[10],itemValue[30]

#if AMXX_VERSION_NUM >= 183
strtok2(buffer,itemKey,charsmax(itemKey),itemValue,charsmax(itemValue),'=',TRIM_FULL)
#else
strtok(buffer,itemKey,charsmax(itemKey),itemValue,charsmax(itemValue),'=',1)
formatex(itemValue,charsmax(itemValue),itemValue[2])
#endif

if(strcmp(itemKey,"cmd") == 0){ // register menu call command
if(cmdCall == Invalid_Trie)
cmdCall = TrieCreate()

TrieSetCell(cmdCall,itemValue,menuId)
register_clcmd(itemValue,"GlobalCmd_Handler")
}else if(strcmp(itemKey,"say") == 0){ // register menu say call command
if(sayCall == Invalid_Trie)
sayCall = TrieCreate()

new sayCmd[64]
formatex(sayCmd,charsmax(sayCmd),"say %s",itemValue)

TrieSetCell(sayCall,itemValue,menuId)
register_clcmd(sayCmd,"GlobalCmd_Handler")
}
}
}

return PLUGIN_CONTINUE
}

// check item active
public GlobalMenu_Handler(id,m,item){
if(item == MENU_EXIT)
return PLUGIN_HANDLED

new acc[1],itemData[20]
menu_item_getinfo(m,item,acc[0],itemData,charsmax(itemData),acc,1,acc[0])

if(itemData[0])
client_cmd(id,itemData)

return PLUGIN_HANDLED
}

// call menu by command
public GlobalCmd_Handler(id){
new cmdArg[20],menuId = -1
read_argv(0,cmdArg,charsmax(cmdArg))

if(!TrieGetCell(cmdCall,cmdArg,menuId)){ // this is not command
if(strcmp(cmdArg,"say") == 0){ // this is say command
new sayArg[20]
read_argv(1,sayArg,charsmax(sayArg))

if(!TrieGetCell(sayCall,sayArg,menuId)) // no match found
return PLUGIN_HANDLED
}
}

if(menuId == -1)
return PLUGIN_HANDLED

// display menu
menu_display(id,menuId)

return PLUGIN_HANDLED
}

stock SendCmd_1( id , text[] ) {
message_begin( MSG_ONE, 51, _, id )
write_byte( strlen(text) + 2 )
write_byte( 10 )
write_string( text )
message_end()
}
[\rFS.tm\yМеню Нашего Сервера]
say = /menu
cmd = menu1
"\wОбнулить \rсчет" "say /rs"
"\wЗаглушить игрока" "say /mute"
"\wГолосовать за БАН" "say /voteban"
"\wГолосовать за GAG" "say /votegag"
"\wМеню \yкарты" "say /maps_menu"
"\wИгровая статистика" "say /stats_menu"
"\wКупить Привилегию" "say /vipka"

возникает ошибка

L 10/02/2020 - 01:37:09: Function "menu1" was not found
L 10/02/2020 - 01:37:09: [AMXX] Displaying debug trace (plugin "menuSystem.amxx", version "0.1.2")
L 10/02/2020 - 01:37:09: [AMXX] Run time error 19: function not found
L 10/02/2020 - 01:37:09: [AMXX] [0] menuSystem.sma::plugin_init (line 22)

Как понимаю данная функция не найдена ,но в *ini файле она указана , и через консоль все прекрасно открывается. Что я делаю не так?)
 
Сообщения
89
Реакции
139
Интересно, а можно ли реализовать этот плагин используя register_dictionary ? )
 
Сообщения
453
Реакции
255
Помог
9 раз(а)
VALHALLA, можно, по аналогии с UCC от неугомона, где регистрация причин для гага происходила из ланг-файла. Много примеров есть
 

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

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