Simple Menu Builder
-
deadlylord
Извън линия - Потребител
- Мнения: 572
- Регистриран на: 04 Апр 2017, 16:35
- Местоположение: Бургас, България
- Получена благодарност: 2 пъти
- Обратна връзка:
Simple Menu Builder
А с проблема с #blank 1, където функциите не работят, има ли някаква яснота дали се работи по този проблем от amxx
Последно промяна от deadlylord на 01 Окт 2017, 20:08, променено общо 1 път.
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Simple Menu Builder
Това не е правилно. Вероятно ти изкарва грешка в конзолата. С do.func можеш да ползваш public функция, която я има в някой плъгин, и то от вида на function(id), а не натив с параметър за меню. Примерно можеш да направиш функция:
... и във файла да добавиш "Exit" "do.func(myplugin.amxx, player_close_menu)". Обаче със slot10 би трябвало да стане.
За проблема не съм много сигурен какво се случва. Вероятно е оправен в AMXX 1.8.3, тъй като са добавили menu_addblank2 и menu_addtext2 функции, обаче при тези няма опция да не се променят числата в менюто, което не ми харесва.
Код за потвърждение: Избери целия код
public player_close_menu(id)
menu_cancel(id)
За проблема не съм много сигурен какво се случва. Вероятно е оправен в AMXX 1.8.3, тъй като са добавили menu_addblank2 и menu_addtext2 функции, обаче при тези няма опция да не се променят числата в менюто, което не ми харесва.
-
deadlylord
Извън линия - Потребител
- Мнения: 572
- Регистриран на: 04 Апр 2017, 16:35
- Местоположение: Бургас, България
- Получена благодарност: 2 пъти
- Обратна връзка:
Simple Menu Builder
@OciXCrom™ Благодаря! Но дори и когато ползвам правилния начин, излиза следната грешка:
.сма
Код за потвърждение: Избери целия код
L 10/01/2017 - 20:11:55: callfunc_push_xxx called without callfunc_begin
L 10/01/2017 - 20:11:55: [AMXX] Displaying debug trace (plugin "crx_simplemenu.amxx")
L 10/01/2017 - 20:11:55: [AMXX] Run time error 10: native error (native "callfunc_push_int")
L 10/01/2017 - 20:11:55: [AMXX] [0] crx_simplemenu.sma::handlerMain (line 467)
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#define PLUGIN_VERSION "2.1"
#define MAX_MENUS 20
enum
{
SECTION_DEFAULTS = 0,
SECTION_SETTINGS,
SECTION_MENUITEMS
}
enum _:Settings
{
MENU_TITLE[128],
MENU_TITLE_PAGE[128],
MENU_PREFIX[32],
MENU_BACKK[32],
MENU_NEXT[32],
MENU_EXITT[32],
MENU_FLAG,
MENU_TEAM,
MENU_ALIVEONLY,
MENU_ITEMS_PER_PAGE,
MENU_REOPEN,
MENU_ITEM_FORMAT[64],
MENU_NOACCESS[160],
MENU_NOTEAM[160],
MENU_ALIVE[160],
MENU_DEAD[160],
MENU_SOUND[128]
}
enum _:Items
{
Name[64],
Command[32],
Flag[5],
Team,
bool:UseFunc,
Plugin[64],
Function[64]
}
new g_eDefaults[Settings],
g_eSettings[MAX_MENUS][Settings],
g_iTotalItems[MAX_MENUS],
g_szMap[32],
g_msgSayText
new Trie:g_tCommands,
Array:g_aMenuItems[MAX_MENUS]
new const g_szAll[] = "#all"
new const g_szItemField[] = "%item%"
new const g_szNameField[] = "%name%"
new const g_szUserIdField[] = "%userid%"
new const g_szBlankField[] = "#blank"
new const g_szTextField[] = "#text"
new const g_szPlayersField[] = "#addplayers"
new const g_szFunc[] = "do.func"
new const g_szAMXX[] = ".amxx"
new const g_szNewLine[2][] = { "%newline%", "^n" }
new const g_szSayStuff[2][] = { "say ", "say_team " }
public plugin_init()
{
register_plugin("Simple Menu", PLUGIN_VERSION, "OciXCrom")
register_cvar("SimpleMenu", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
g_msgSayText = get_user_msgid("SayText")
}
public plugin_precache()
{
for(new i; i < MAX_MENUS; i++)
g_aMenuItems[i] = ArrayCreate(Items)
get_mapname(g_szMap, charsmax(g_szMap))
g_tCommands = TrieCreate()
fileRead()
}
public plugin_end()
{
for(new i; i < MAX_MENUS; i++)
ArrayDestroy(g_aMenuItems[i])
TrieDestroy(g_tCommands)
}
fileRead()
{
new szConfigsName[256], szFilename[256]
get_configsdir(szConfigsName, charsmax(szConfigsName))
formatex(szFilename, charsmax(szFilename), "%s/SimpleMenu.ini", szConfigsName)
new iFilePointer = fopen(szFilename, "rt")
if(iFilePointer)
{
new szData[160], szKey[32], szValue[128], szTeam[2], iSection, iSize
new eItem[Items], iMenuId = -1, bool:blRead = true
while(!feof(iFilePointer))
{
fgets(iFilePointer, szData, charsmax(szData))
trim(szData)
switch(szData[0])
{
case EOS, ';': continue
case '-':
{
iSize = strlen(szData)
if(szData[iSize - 1] == '-')
{
szData[0] = ' '
szData[iSize - 1] = ' '
trim(szData)
if(contain(szData, "*") != -1)
{
strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '*')
copy(szValue, strlen(szKey), g_szMap)
blRead = equal(szValue, szKey) ? true : false
}
else
blRead = equal(szData, g_szAll) || equali(szData, g_szMap)
}
else continue
}
case '[':
{
if(szData[strlen(szData) - 1] == ']')
{
if(containi(szData, "default settings") != -1)
iSection = SECTION_DEFAULTS
else if(containi(szData, "new menu") != -1)
{
iMenuId++
for(new i; i < sizeof(g_eDefaults); i++)
g_eSettings[iMenuId][i] = g_eDefaults[i]
}
else if(containi(szData, "menu settings") != -1)
{
if(iMenuId < 0)
iMenuId = 0
iSection = SECTION_SETTINGS
}
else if(containi(szData, "menu items") != -1)
{
if(iMenuId < 0)
iMenuId = 0
iSection = SECTION_MENUITEMS
}
}
else continue
}
default:
{
if(!blRead)
continue
switch(iSection)
{
case SECTION_DEFAULTS:
{
strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
trim(szKey); trim(szValue)
if(szValue[0] == EOS)
continue
if(equal(szKey, "MENU_TITLE"))
{
if(contain(szValue, g_szNewLine[0]) != -1)
replace_all(szValue, charsmax(szValue), g_szNewLine[0], g_szNewLine[1])
copy(g_eDefaults[MENU_TITLE], charsmax(g_eDefaults[MENU_TITLE]), szValue)
}
if(equal(szKey, "MENU_TITLE_PAGE"))
{
if(contain(szValue, g_szNewLine[0]) != -1)
replace_all(szValue, charsmax(szValue), g_szNewLine[0], g_szNewLine[1])
copy(g_eDefaults[MENU_TITLE_PAGE], charsmax(g_eDefaults[MENU_TITLE_PAGE]), szValue)
}
else if(equal(szKey, "MENU_PREFIX"))
copy(g_eDefaults[MENU_PREFIX], charsmax(g_eDefaults[MENU_PREFIX]), szValue)
else if(equal(szKey, "MENU_BACK"))
copy(g_eDefaults[MENU_BACKK], charsmax(g_eDefaults[MENU_BACKK]), szValue)
else if(equal(szKey, "MENU_NEXT"))
copy(g_eDefaults[MENU_NEXT], charsmax(g_eDefaults[MENU_NEXT]), szValue)
else if(equal(szKey, "MENU_EXIT"))
copy(g_eDefaults[MENU_EXITT], charsmax(g_eDefaults[MENU_EXITT]), szValue)
else if(equal(szKey, "MENU_FLAG"))
g_eDefaults[MENU_FLAG] = szValue[0] == '0' ? 0 : read_flags(szValue)
else if(equal(szKey, "MENU_TEAM"))
g_eDefaults[MENU_TEAM] = clamp(str_to_num(szValue), 0, 3)
else if(equal(szKey, "MENU_ALIVEONLY"))
g_eDefaults[MENU_ALIVEONLY] = str_to_num(szValue)
else if(equal(szKey, "MENU_ITEMS_PER_PAGE"))
g_eDefaults[MENU_ITEMS_PER_PAGE] = str_to_num(szValue)
else if(equal(szKey, "MENU_REOPEN"))
g_eDefaults[MENU_REOPEN] = str_to_num(szValue)
else if(equal(szKey, "MENU_ITEM_FORMAT"))
copy(g_eDefaults[MENU_ITEM_FORMAT], charsmax(g_eDefaults[MENU_ITEM_FORMAT]), szValue)
else if(equal(szKey, "MENU_NOACCESS"))
copy(g_eDefaults[MENU_NOACCESS], charsmax(g_eDefaults[MENU_NOACCESS]), szValue)
else if(equal(szKey, "MENU_NOTEAM"))
copy(g_eDefaults[MENU_NOTEAM], charsmax(g_eDefaults[MENU_NOTEAM]), szValue)
else if(equal(szKey, "MENU_ALIVE"))
copy(g_eDefaults[MENU_ALIVE], charsmax(g_eDefaults[MENU_ALIVE]), szValue)
else if(equal(szKey, "MENU_DEAD"))
copy(g_eDefaults[MENU_DEAD], charsmax(g_eDefaults[MENU_DEAD]), szValue)
else if(equal(szKey, "MENU_SOUND"))
{
copy(g_eDefaults[MENU_SOUND], charsmax(g_eDefaults[MENU_SOUND]), szValue)
precache_sound(szValue)
}
}
case SECTION_SETTINGS:
{
strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
trim(szKey); trim(szValue)
if(szValue[0] == EOS)
continue
if(equal(szKey, "MENU_TITLE"))
{
if(contain(szValue, g_szNewLine[0]) != -1)
replace_all(szValue, charsmax(szValue), g_szNewLine[0], g_szNewLine[1])
copy(g_eSettings[iMenuId][MENU_TITLE], charsmax(g_eSettings[][MENU_TITLE]), szValue)
}
if(equal(szKey, "MENU_TITLE_PAGE"))
{
if(contain(szValue, g_szNewLine[0]) != -1)
replace_all(szValue, charsmax(szValue), g_szNewLine[0], g_szNewLine[1])
copy(g_eSettings[iMenuId][MENU_TITLE_PAGE], charsmax(g_eSettings[][MENU_TITLE_PAGE]), szValue)
}
else if(equal(szKey, "MENU_PREFIX"))
copy(g_eSettings[iMenuId][MENU_PREFIX], charsmax(g_eSettings[][MENU_PREFIX]), szValue)
else if(equal(szKey, "MENU_BACK"))
copy(g_eSettings[iMenuId][MENU_BACKK], charsmax(g_eSettings[][MENU_BACKK]), szValue)
else if(equal(szKey, "MENU_NEXT"))
copy(g_eSettings[iMenuId][MENU_NEXT], charsmax(g_eSettings[][MENU_NEXT]), szValue)
else if(equal(szKey, "MENU_EXIT"))
copy(g_eSettings[iMenuId][MENU_EXITT], charsmax(g_eSettings[][MENU_EXITT]), szValue)
else if(equal(szKey, "MENU_FLAG"))
g_eSettings[iMenuId][MENU_FLAG] = szValue[0] == '0' ? 0 : read_flags(szValue)
else if(equal(szKey, "MENU_TEAM"))
g_eSettings[iMenuId][MENU_TEAM] = clamp(str_to_num(szValue), 0, 3)
else if(equal(szKey, "MENU_ALIVEONLY"))
g_eSettings[iMenuId][MENU_ALIVEONLY] = str_to_num(szValue)
else if(equal(szKey, "MENU_ITEMS_PER_PAGE"))
g_eSettings[iMenuId][MENU_ITEMS_PER_PAGE] = str_to_num(szValue)
else if(equal(szKey, "MENU_REOPEN"))
g_eSettings[iMenuId][MENU_REOPEN] = str_to_num(szValue)
else if(equal(szKey, "MENU_OPEN"))
{
while(szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
{
trim(szKey); trim(szValue)
register_clcmd(szKey, "cmdMenu")
TrieSetCell(g_tCommands, szKey, iMenuId)
}
}
else if(equal(szKey, "MENU_ITEM_FORMAT"))
copy(g_eSettings[iMenuId][MENU_ITEM_FORMAT], charsmax(g_eSettings[][MENU_ITEM_FORMAT]), szValue)
else if(equal(szKey, "MENU_NOACCESS"))
copy(g_eSettings[iMenuId][MENU_NOACCESS], charsmax(g_eSettings[][MENU_NOACCESS]), szValue)
else if(equal(szKey, "MENU_NOTEAM"))
copy(g_eSettings[iMenuId][MENU_NOTEAM], charsmax(g_eSettings[][MENU_NOTEAM]), szValue)
else if(equal(szKey, "MENU_ALIVE"))
copy(g_eSettings[iMenuId][MENU_ALIVE], charsmax(g_eSettings[][MENU_ALIVE]), szValue)
else if(equal(szKey, "MENU_DEAD"))
copy(g_eSettings[iMenuId][MENU_DEAD], charsmax(g_eSettings[][MENU_DEAD]), szValue)
else if(equal(szKey, "MENU_SOUND"))
{
copy(g_eSettings[iMenuId][MENU_SOUND], charsmax(g_eSettings[][MENU_SOUND]), szValue)
precache_sound(szValue)
}
}
case SECTION_MENUITEMS:
{
parse(szData, eItem[Name], charsmax(eItem[Name]), eItem[Command], charsmax(eItem[Command]), eItem[Flag], charsmax(eItem[Flag]), szTeam, charsmax(szTeam))
eItem[UseFunc] = bool:(equal(eItem[Command], g_szFunc, charsmax(g_szFunc)))
eItem[Team] = str_to_num(szTeam)
if(eItem[UseFunc])
{
replace(eItem[Command], charsmax(eItem[Command]), g_szFunc, "")
replace(eItem[Command], charsmax(eItem[Command]), "(", "")
replace(eItem[Command], charsmax(eItem[Command]), ")", "")
strtok(eItem[Command], eItem[Plugin], charsmax(eItem[Plugin]), eItem[Function], charsmax(eItem[Function]), ',')
trim(eItem[Plugin]); trim(eItem[Function])
if(contain(eItem[Plugin], g_szAMXX) == -1)
add(eItem[Plugin], charsmax(eItem[Plugin]), g_szAMXX)
}
ArrayPushArray(g_aMenuItems[iMenuId], eItem)
eItem[Flag][0] = EOS
szTeam[0] = EOS
g_iTotalItems[iMenuId]++
}
}
}
}
}
fclose(iFilePointer)
}
}
public cmdMenu(id)
{
new szCommand[64], szArgs[32], iMenuId
read_argv(0, szCommand, charsmax(szCommand))
if(equal(szCommand[0], g_szSayStuff[0], 3) || equal(szCommand[0], g_szSayStuff[1], 8))
{
read_argv(1, szArgs, charsmax(szArgs))
remove_quotes(szArgs)
format(szCommand, charsmax(szCommand), "%s %s", szCommand, szArgs)
}
TrieGetCell(g_tCommands, szCommand, iMenuId)
menuMain(id, iMenuId)
return PLUGIN_HANDLED
}
menuMain(id, iMenuId, iPage = 0)
{
if(g_eSettings[iMenuId][MENU_FLAG] && !(get_user_flags(id) & g_eSettings[iMenuId][MENU_FLAG]))
{
ColorChat(id, "%s %s", g_eSettings[iMenuId][MENU_PREFIX], g_eSettings[iMenuId][MENU_NOACCESS])
return PLUGIN_HANDLED
}
if(!get_team_access(id, iMenuId))
{
ColorChat(id, "%s %s", g_eSettings[iMenuId][MENU_PREFIX], g_eSettings[iMenuId][MENU_NOTEAM])
return PLUGIN_HANDLED
}
if(!get_alive_access(id, iMenuId))
{
ColorChat(id, "%s %s", g_eSettings[iMenuId][MENU_PREFIX], g_eSettings[iMenuId][MENU_ALIVEONLY] == 1 ? g_eSettings[iMenuId][MENU_ALIVE] : g_eSettings[iMenuId][MENU_DEAD])
return PLUGIN_HANDLED
}
if(g_eSettings[iMenuId][MENU_SOUND][0] != EOS)
client_cmd(id, "spk %s", g_eSettings[iMenuId][MENU_SOUND])
new szItem[128], szData[20]
new eItem[Items], iMenu = menu_create(g_eSettings[iMenuId][MENU_TITLE], "handlerMain")
for(new i, iTeam = get_user_team(id); i < g_iTotalItems[iMenuId]; i++)
{
ArrayGetArray(g_aMenuItems[iMenuId], i, eItem)
if(eItem[Team] && eItem[Team] != iTeam)
continue
else if(equal(eItem[Name], g_szBlankField))
menu_addblank(iMenu, str_to_num(eItem[Command]))
else if(equal(eItem[Name], g_szTextField))
menu_addtext(iMenu, eItem[Command], str_to_num(eItem[Flag]))
else if(equal(eItem[Name], g_szPlayersField))
{
new szName[32], iPlayers[32], iPnum
get_players(iPlayers, iPnum, get_flag(eItem[Flag], "c") ? "a" : "")
for(new j, iPlayer; j < iPnum; j++)
{
iPlayer = iPlayers[j]
if(iPlayer == id)
{
if(!get_flag(eItem[Flag], "b"))
continue
}
else if(get_user_flags(iPlayer) & ADMIN_IMMUNITY)
{
if(get_flag(eItem[Flag], "a"))
continue
}
get_user_name(iPlayer, szName, charsmax(szName))
copy(szItem, charsmax(szItem), g_eSettings[iMenuId][MENU_ITEM_FORMAT])
replace_all(szItem, charsmax(szItem), g_szItemField, szName)
formatex(szData, charsmax(szData), "%i %i %i p", iMenuId, i, get_user_userid(iPlayer))
menu_additem(iMenu, szItem, szData)
}
}
else
{
copy(szItem, charsmax(szItem), g_eSettings[iMenuId][MENU_ITEM_FORMAT])
replace_all(szItem, charsmax(szItem), g_szItemField, eItem[Name])
formatex(szData, charsmax(szData), "%i %i", iMenuId, i)
menu_additem(iMenu, szItem, szData, read_flags(eItem[Flag]))
}
}
if(menu_pages(iMenu) > 1)
{
new szTitle[256]
formatex(szTitle, charsmax(szTitle), "%s %s", g_eSettings[iMenuId][MENU_TITLE], g_eSettings[iMenuId][MENU_TITLE_PAGE])
menu_setprop(iMenu, MPROP_TITLE, szTitle)
}
menu_setprop(iMenu, MPROP_BACKNAME, g_eSettings[iMenuId][MENU_BACKK])
menu_setprop(iMenu, MPROP_NEXTNAME, g_eSettings[iMenuId][MENU_NEXT])
menu_setprop(iMenu, MPROP_EXITNAME, g_eSettings[iMenuId][MENU_EXITT])
menu_setprop(iMenu, MPROP_PERPAGE, g_eSettings[iMenuId][MENU_ITEMS_PER_PAGE])
menu_display(id, iMenu, iPage)
return PLUGIN_HANDLED
}
public handlerMain(id, iMenu, iItem)
{
if(iItem == MENU_EXIT)
goto @DESTROY
new szData[20], szMenuId[3], szKey[3], szUserId[5], iMenuId, iKey, iUserId, iAccess, iCallback
menu_item_getinfo(iMenu, iItem, iAccess, szData, charsmax(szData), .callback = iCallback)
parse(szData, szMenuId, charsmax(szMenuId), szKey, charsmax(szKey), szUserId, charsmax(szUserId))
iMenuId = str_to_num(szMenuId)
iKey = str_to_num(szKey)
iUserId = str_to_num(szUserId)
if(get_alive_access(id, iMenuId) && get_team_access(id, iMenuId))
{
new eItem[Items]
ArrayGetArray(g_aMenuItems[iMenuId], iKey, eItem)
if(szData[strlen(szData) - 1] == 'p')
{
new szCommand[64]
copy(szCommand, charsmax(szCommand), eItem[Command])
if(get_flag(szCommand, g_szNameField))
{
new szName[32]
get_user_name(find_player("k", iUserId), szName, charsmax(szName))
replace_all(szCommand, charsmax(szCommand), g_szNameField, szName)
}
if(get_flag(szCommand, g_szUserIdField))
replace_all(szCommand, charsmax(szCommand), g_szUserIdField, szUserId)
client_cmd(id, szCommand)
}
else
{
if(eItem[UseFunc])
{
callfunc_begin(eItem[Function], eItem[Plugin])
callfunc_push_int(id)
callfunc_end()
}
else
client_cmd(id, eItem[Command])
}
}
if(g_eSettings[iMenuId][MENU_REOPEN])
{
new iMenu2, iPage
player_menu_info(id, iMenu2, iMenu2, iPage)
menu_destroy(iMenu)
menuMain(id, iMenuId, iPage)
return PLUGIN_HANDLED
}
@DESTROY:
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
ColorChat(const id, const szInput[], any:...)
{
new iPlayers[32], iCount = 1
static szMessage[191]
vformat(szMessage, charsmax(szMessage), szInput, 3)
replace_all(szMessage, charsmax(szMessage), "!g", "^4")
replace_all(szMessage, charsmax(szMessage), "!n", "^1")
replace_all(szMessage, charsmax(szMessage), "!t", "^3")
if(id)
iPlayers[0] = id
else
get_players(iPlayers, iCount, "ch")
for(new i; i < iCount; i++)
{
if(is_user_connected(iPlayers[i]))
{
message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, iPlayers[i])
write_byte(iPlayers[i])
write_string(szMessage)
message_end()
}
}
}
bool:get_flag(szString[], const szFlag[])
return (contain(szString, szFlag) != -1) ? true : false
bool:get_alive_access(id, iMenuId)
return ((g_eSettings[iMenuId][MENU_ALIVEONLY] == 1 && !is_user_alive(id)) || (g_eSettings[iMenuId][MENU_ALIVEONLY] == 2 && is_user_alive(id))) ? false : true
bool:get_team_access(id, iMenuId)
return (!g_eSettings[iMenuId][MENU_TEAM] || g_eSettings[iMenuId][MENU_TEAM] == get_user_team(id))
public player_close_menu(id)
menu_cancel(id)
-
LoShIaA
Извън линия - Потребител
- Мнения: 323
- Регистриран на: 20 Окт 2016, 14:44
- Местоположение: Стара Загора
- Се отблагодари: 120 пъти
- Получена благодарност: 9 пъти
Simple Menu Builder
Някой може ли с няколко прости примера да обясни как се прави подменю и как се използват #blank, #addplayers къде точно се пишат.
Ще пиша малко някви примери да ми обясните по тях някой неща.
Това са настройките на плъгина, които съм барал малко:
[New Menu = My Menu] - има ли някакви настройки за този ред? Или той просто си е за създаване на ново меню и толкова?
Следва:
[Menu Settings]
1. Всички тези настройки ли се отнасят за този раздел?
Обаче, ако не добавя това:
[Menu Items] - стигаме и до тук
Пример:
2.Как на това "Spec Menu" да му направя подменю. Използвам плъгина на Крома /spec, /back, /change и искам като се натисне "Spec Menu" да ти отваря ново меню в, което да са изредени въпросните команди 1.Spec, 2.Back, 3.Change.
Ако може да обясните с примери ще е супер.
Ще пиша малко някви примери да ми обясните по тях някой неща.
Това са настройките на плъгина, които съм барал малко:
- MENU_TITLE = Help Menu
MENU_TITLE_PAGE = %newline%Page:\d
MENU_BACK = \yPrevious Page
MENU_NEXT = \yNext Page
MENU_EXIT = \rClose
MENU_OPEN = chooseteam, say /menu, say_team /menu
MENU_FLAG = 0
MENU_TEAM = 0
MENU_ALIVEONLY = 0
MENU_ITEMS_PER_PAGE = 7
MENU_REOPEN = 1
MENU_ITEM_FORMAT = %item% - тук освен item може ли да има друга функция
MENU_PREFIX = !g[!tHelp Menu!g]
MENU_NOACCESS = !gYou have !tno !gaccess to this menu.
MENU_NOTEAM = !gYour team !tisn't !gallowed to use this menu.
MENU_ALIVE = !gYou need to be !talive !gto use this menu.
MENU_DEAD = !gYou need to be !tdead !gto use this menu.
MENU_SOUND =
[New Menu = My Menu] - има ли някакви настройки за този ред? Или той просто си е за създаване на ново меню и толкова?
Следва:
[Menu Settings]
1. Всички тези настройки ли се отнасят за този раздел?
- MENU_TITLE = Help Menu
MENU_TITLE_PAGE = %newline%Page:\d
MENU_BACK = \yPrevious Page
MENU_NEXT = \yNext Page
MENU_EXIT = \rClose
MENU_OPEN = chooseteam, say /menu, say_team /menu
MENU_FLAG = 0
MENU_TEAM = 0
MENU_ALIVEONLY = 0
MENU_ITEMS_PER_PAGE = 7
MENU_REOPEN = 1
MENU_ITEM_FORMAT = %item%
MENU_PREFIX = !g[!tHelp Menu!g]
MENU_NOACCESS = !gYou have !tno !gaccess to this menu.
MENU_NOTEAM = !gYour team !tisn't !gallowed to use this menu.
MENU_ALIVE = !gYou need to be !talive !gto use this menu.
MENU_DEAD = !gYou need to be !tdead !gto use this menu.
MENU_SOUND =
Имайте предвид, че няма нужда да добавяте дадена настройка, ако искате тя да е съща като тази от настройките по подразбиране.Длъжни сте да добавите настройката MENU_OPEN.
Обаче, ако не добавя това:
- MENU_TITLE = Help Menu - менюто остава без име
MENU_TITLE_PAGE = %newline%Page:\d - няма страници
MENU_BACK = \yPrevious Page - изчезва
MENU_NEXT = \yNext Page - изчезва
MENU_EXIT = \rClose - изчезва
MENU_ITEMS_PER_PAGE = 7 - итемите стават колкото могат
MENU_ITEM_FORMAT = %item% - нищо, че го има в настройките горе, менюто остава без текст
[Menu Items] - стигаме и до тук
Пример:
- ;<Item Name> <Command> [Flag] [Team]
"Show Rules" "say /rules"
"Admin Menu" "say /admin"
"Mute Menu" "say /mutemenu"
"Hats Menu" "say /hat"
"AWP Menu" "say /awp" "b"
"Spec Menu " ????" "b"
2.Как на това "Spec Menu" да му направя подменю. Използвам плъгина на Крома /spec, /back, /change и искам като се натисне "Spec Menu" да ти отваря ново меню в, което да са изредени въпросните команди 1.Spec, 2.Back, 3.Change.
Ако може да обясните с примери ще е супер.
-
deadlylord
Извън линия - Потребител
- Мнения: 572
- Регистриран на: 04 Апр 2017, 16:35
- Местоположение: Бургас, България
- Получена благодарност: 2 пъти
- Обратна връзка:
Simple Menu Builder
[New Menu = Menu Sample] - този ред ти позволява да създадеш новото под меню
[Menu Settings]
;<settings> = <value>
MENU_OPEN = say /specmenu
[Menu Items]
;<Item Name> <Command> [Flag] [Team]
"Join spectator" "say /spec"
"Return to game" "say /back"
"Change your team" "say /change"
"\yPrevious Page" "say /menu"
И когато си направил под менюто, можеш да го добавиш и в главното меню
;<Item Name> <Command> [Flag] [Team]
"Show Rules" "say /rules"
"Admin Menu" "say /admin"
"Mute Menu" "say /mutemenu"
"Hats Menu" "say /hat"
"AWP Menu" "say /awp" "b"
"Spec Menu " "say /specmenu" "b"
За #blank, #addplayers и другите се поставят на нов ред
[Menu Settings]
;<settings> = <value>
MENU_OPEN = say /specmenu
[Menu Items]
;<Item Name> <Command> [Flag] [Team]
"Join spectator" "say /spec"
"Return to game" "say /back"
"Change your team" "say /change"
"\yPrevious Page" "say /menu"
И когато си направил под менюто, можеш да го добавиш и в главното меню
;<Item Name> <Command> [Flag] [Team]
"Show Rules" "say /rules"
"Admin Menu" "say /admin"
"Mute Menu" "say /mutemenu"
"Hats Menu" "say /hat"
"AWP Menu" "say /awp" "b"
"Spec Menu " "say /specmenu" "b"
За #blank, #addplayers и другите се поставят на нов ред
-
LoShIaA
Извън линия - Потребител
- Мнения: 323
- Регистриран на: 20 Окт 2016, 14:44
- Местоположение: Стара Загора
- Се отблагодари: 120 пъти
- Получена благодарност: 9 пъти
Simple Menu Builder
Код за потвърждение: Избери целия код
[New menu = Spec Menu]
[Menu Settings]
MENU_OPEN = say /specmenu
[Menu Items]
"Join spectator" "say /spec"
"Return to game" "say /back"
"Change your team" "say /change"
"\yPrevious Page" "say /menu"
[Help Menu]
[Menu Settings]
MENU_TITLE = Help Menu
MENU_TITLE_PAGE = %newline%Page:\d
MENU_BACK = \yPrevious Page
MENU_NEXT = \yNext Page
MENU_EXIT = \rClose
MENU_OPEN = chooseteam, say /menu, say_team /menu
MENU_FLAG = 0
MENU_TEAM = 0
MENU_ALIVEONLY = 0
MENU_ITEMS_PER_PAGE = 7
MENU_REOPEN = 0
MENU_ITEM_FORMAT = %item%
MENU_PREFIX = !g[!tHelp Menu!g]
MENU_NOACCESS = !gYou have !tno !gaccess to this menu.
MENU_NOTEAM = !gYour team !tisn't !gallowed to use this menu.
MENU_ALIVE = !gYou need to be !talive !gto use this menu.
MENU_DEAD = !gYou need to be !tdead !gto use this menu.
MENU_SOUND =
[Menu Items]
;<Item Name> <Command> [Flag] [Team]
"Show Rules" "say /rules"
"Shop Menu" "say /shop"
"Our Servers" "say /server"
"Admin Menu" "say /admin"
"Mute Menu" "say /mutemenu"
"Hats Menu" "say /hat"
"AWP Menu" "say /awp"
"Knifes Menu" "say /knife"
"Camera Menu" "say /cam"
"Reset Score" "say /rs"
"Show IP" "say /showip"
"Death Note" "say /dn" "b"
"Spec Menu" "say /specmenu" "b"
-
deadlylord
Извън линия - Потребител
- Мнения: 572
- Регистриран на: 04 Апр 2017, 16:35
- Местоположение: Бургас, България
- Получена благодарност: 2 пъти
- Обратна връзка:
Simple Menu Builder
Новото меню трябва да се добави най-отдолу ...
За gag/ban/slap менютата, можеш да използваш следните команди
"Kick Player" "amx_kickmenu",
"Ban Player" "amx_banmenu",
"Slap /Slay Player "amx_slapmenu",
"Gag Player" "amx_gagmenu",
"Change Map" "amx_mapmenu",
"Vote for maps" "amx_votemapmenu"
А пък, ако искаш да ти отваря стандартното меню, можеш да напишеш "AMX Mod X Menu" "amxmodmenu"
Ето ти и твоето меню, а за биндове, различни от chooseteam(копчето M) можеш да видиш в config.cfg
За gag/ban/slap менютата, можеш да използваш следните команди
"Kick Player" "amx_kickmenu",
"Ban Player" "amx_banmenu",
"Slap /Slay Player "amx_slapmenu",
"Gag Player" "amx_gagmenu",
"Change Map" "amx_mapmenu",
"Vote for maps" "amx_votemapmenu"
А пък, ако искаш да ти отваря стандартното меню, можеш да напишеш "AMX Mod X Menu" "amxmodmenu"
Код за потвърждение: Избери целия код
[Default Settings]
;These are the default settings for each menu created.
;You can add certain options in [Menu Settings] if you want to change them.
;Please note that every menu needs to have a different MENU_OPEN settings, therefore there's no default one.
MENU_TITLE = Help Menu
MENU_TITLE_PAGE = %newline%Page:\d
MENU_BACK = \yPrevious Page
MENU_NEXT = \yNext Page
MENU_EXIT = \rClose
;MENU_OPEN = chooseteam, say /menu, say_team /menu
MENU_FLAG = 0
MENU_TEAM = 0
MENU_ALIVEONLY = 0
MENU_ITEMS_PER_PAGE = 7
MENU_REOPEN = 1
MENU_ITEM_FORMAT = %item%
MENU_PREFIX = !g[!tHelp Menu!g]
MENU_NOACCESS = !gYou have !tno !gaccess to this menu.
MENU_NOTEAM = !gYour team !tisn't !gallowed to use this menu.
MENU_ALIVE = !gYou need to be !talive !gto use this menu.
MENU_DEAD = !gYou need to be !tdead !gto use this menu.
MENU_SOUND =
[New Menu = Menu Sample]
[Menu Settings]
;<settings> = <value>
MENU_OPEN = chooseteam, say /menu, say_team /menu
[Menu Items]
;<Item Name> <Command> [Flag] [Team]
"Show Rules" "say /rules"
"Shop Menu" "say /shop"
"Our Servers" "say /server"
"Admin Menu" "say /admin"
"Mute Menu" "say /mutemenu"
"Hats Menu" "say /hat"
"AWP Menu" "say /awp"
"Knifes Menu" "say /knife"
"Camera Menu" "say /cam"
"Reset Score" "say /rs"
"Show IP" "say /showip"
"Death Note" "say /dn" "b"
"Spec Menu" "say /specmenu" "b"
[New menu = Spec Menu]
[Menu Settings]
MENU_OPEN = say /specmenu
[Menu Items]
"Join spectator" "say /spec"
"Return to game" "say /back"
"Change your team" "say /change"
"\yPrevious Page" "say /menu"
-
LoShIaA
Извън линия - Потребител
- Мнения: 323
- Регистриран на: 20 Окт 2016, 14:44
- Местоположение: Стара Загора
- Се отблагодари: 120 пъти
- Получена благодарност: 9 пъти
Simple Menu Builder
Мерси, работи. Вдянах кое как е вече. Аз го бях сложил и най-отдолу както в момента ти си го направил тоест пробвах доста варианти. Проблема беше, че [New menu = Spec Menu] съм махал [ Spec Menu] new menu = и от там то изобщо не прави ново меню. И заради това е бил и този проблем
, който е изцяло моя грешка извинявам се.Следва:
[Menu Settings]
1. Всички тези настройки ли се отнасят за този раздел?
MENU_TITLE = Help Menu
MENU_TITLE_PAGE = %newline%Page:\d
MENU_BACK = \yPrevious Page
MENU_NEXT = \yNext Page
MENU_EXIT = \rClose
MENU_OPEN = chooseteam, say /menu, say_team /menu
MENU_FLAG = 0
MENU_TEAM = 0
MENU_ALIVEONLY = 0
MENU_ITEMS_PER_PAGE = 7
MENU_REOPEN = 1
MENU_ITEM_FORMAT = %item%
MENU_PREFIX = !g[!tHelp Menu!g]
MENU_NOACCESS = !gYou have !tno !gaccess to this menu.
MENU_NOTEAM = !gYour team !tisn't !gallowed to use this menu.
MENU_ALIVE = !gYou need to be !talive !gto use this menu.
MENU_DEAD = !gYou need to be !tdead !gto use this menu.
MENU_SOUND =
2.Тук пише това
Имайте предвид, че няма нужда да добавяте дадена настройка, ако искате тя да е съща като тази от настройките по подразбиране.Длъжни сте да добавите настройката MENU_OPEN.
Обаче, ако не добавя това:
MENU_TITLE = Help Menu - менюто остава без име
MENU_TITLE_PAGE = %newline%Page:\d - няма страници
MENU_BACK = \yPrevious Page - изчезва
MENU_NEXT = \yNext Page - изчезва
MENU_EXIT = \rClose - изчезва
MENU_ITEMS_PER_PAGE = 7 - итемите стават колкото могат
MENU_ITEM_FORMAT = %item% - нищо, че го има в настройките горе, менюто остава без текст
Мисълта ми тук е че не взима стойностите, които са зададени в настройките по-горе.
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Simple Menu Builder
Това е просто как ще се показват итемите в менюто, където %item% е името на опцията. Можеш примерно да го направиш "\y[ \r%item% \y]" и ще бъдат в скоби и оцветени.MENU_ITEM_FORMAT = %item% - тук освен item може ли да има друга функция
Вероятно си сложил менюто над тези опции, следователно те още не са били прочетени от плъгина. Остави настройките по подразбиране най-отгоре, а новите менюта ги добавяй долу. Настройките ще са същите от горе ако не ги добавиш.Обаче, ако не добавя това:
MENU_TITLE = Help Menu - менюто остава без име
MENU_TITLE_PAGE = %newline%Page:\d - няма страници
MENU_BACK = \yPrevious Page - изчезва
MENU_NEXT = \yNext Page - изчезва
MENU_EXIT = \rClose - изчезва
MENU_ITEMS_PER_PAGE = 7 - итемите стават колкото могат
MENU_ITEM_FORMAT = %item% - нищо, че го има в настройките горе, менюто остава без текст
Мисълта ми тук е че не взима стойностите, които са зададени в настройките по-горе.
Няма настройки. Това само казва на плъгина, че трябва да направи ново меню и следващите редове да се отнасят за него. Даже и самото име "My Menu" е ненужно, слага се само заради прегледност във файла. Плъгинът чете само "new menu" между [ скоби ].[New Menu = My Menu] - има ли някакви настройки за този ред? Или той просто си е за създаване на ново меню и толкова?
Пише се #blank 0 или 1. Ако е 0, числата на итемите под него няма да се променят (1, 2, 3, 4). Ако е 0, ще счита и него като итем и съответно ще промени числата (1, 2, 3, 5). Добавя се при итемите. Пример:1.Какъв е синтаксисът на #blank, #addplayers къде се поставят между редовете, на края на редът и т.н.
Код за потвърждение: Избери целия код
[Menu Items]
"Join spectator" "say /spec"
"Return to game" "say /back"
"Change your team" "say /change"
#blank 0
"\yPrevious Page" "say /menu"
Ако искаш да е в чат, ще пишеш "say /komanda", следователно ако премахнеш "say", ще е за конзолата. Реално "say /komanda" се пише в конзолата.Също така как мога да добавя команда, която отваря меню след като се напише в конзола. Примерно amx_gagmenu
-
- Подобни теми
- Отговори
- Преглеждания
- Последно мнение
-
- 3 Отговори
- 1994 Преглеждания
-
Последно мнение от impossible
-
- 4 Отговори
- 801 Преглеждания
-
Последно мнение от illusion
-
- 2 Отговори
- 876 Преглеждания
-
Последно мнение от Shaka Zulu
-
- 9 Отговори
- 2102 Преглеждания
-
Последно мнение от zolfeca
-
- 9 Отговори
- 5193 Преглеждания
-
Последно мнение от Orangegame14
-
- 0 Отговори
- 1455 Преглеждания
-
Последно мнение от Infamous2018
-
- 2 Отговори
- 1467 Преглеждания
-
Последно мнение от antonstoqnovv
Кой е на линия
Потребители разглеждащи този форум: 0 регистрирани и 20 госта