ВотДа, ответ Вам.
Откройте консоль в браузере, и покажите, что там пишет.
так что хелпа то будет? (-_-)
этим символом был \. Спасибона 78 строке main.sp находится какой-то спец. символ, который не поддерживается сурсмодом. Нужно открыть исходник, найти 78 строку и убрать этот спец. символ.
#include <sourcemod>
public Plugin:myinfo =
{
name = "interactive menu builder",
author = "Reiko1231",
description = "Интерактивное создание меню (alextheregent.github.io).",
version = "1.0.4.",
url = "https://hlmod.ru/resources/interactive-menu-builder.1155/"
}
new Handle: g_menu;
new g_menu_position[MAXPLAYERS + 1];
public OnPluginStart()
{
RegConsoleCmd("sm_menu", Command_OpenMenu_menu);
g_menu = CreateMenu(Handler_menu);
SetMenuTitle(g_menu, "Команды сервера")
AddMenuItem(g_menu, "1", "Пожаловаться на игрока")
AddMenuItem(g_menu, "2", "Сбросить свой счет матча")
AddMenuItem(g_menu, "3", "Посмотреть свою статистику")
AddMenuItem(g_menu, "4", "Показать позицию статистики")
AddMenuItem(g_menu, "5", "Голосовать за смену карты")
AddMenuItem(g_menu, "6", "Настроить голосовую связь")
AddMenuItem(g_menu, "7", "Открыть меню премиума")
AddMenuItem(g_menu, "8", "Выбрать нож")
AddMenuItem(g_menu, "9", "Выбрать перчатки")
AddMenuItem(g_menu, "10", "Выбрать стикеры")
AddMenuItem(g_menu, "11", "Выбрать скины на оружие")
SetMenuExitBackButton(g_menu, true);
}
public Action:Command_OpenMenu_menu(client, argc)
{
DisplayMenu(g_menu, client, MENU_TIME_FOREVER);
return Plugin_Handled;
}
public Handler_menu(Handle:menu, MenuAction:action, client, slot)
{
switch (action)
{
case MenuAction_Select:
{
decl String:info[64];
GetMenuItem(menu, slot, info, sizeof(info));
if (StrEqual(info, "1"))
{
FakeClientCommand(client, "!report");
}
else if (StrEqual(info, "2"))
{
FakeClientCommand(client, "!rs");
}
else if (StrEqual(info, "3"))
{
FakeClientCommand(client, "!rank");
}
else if (StrEqual(info, "4"))
{
FakeClientCommand(client, "!pos");
}
else if (StrEqual(info, "5"))
{
FakeClientCommand(client, "!rtv");
}
else if (StrEqual(info, "6"))
{
FakeClientCommand(client, "!voice");
}
else if (StrEqual(info, "7"))
{
FakeClientCommand(client, "!vip");
}
else if (StrEqual(info, "8"))
{
FakeClientCommand(client, "!knife");
}
else if (StrEqual(info, "9"))
{
FakeClientCommand(client, "!gloves");
}
else if (StrEqual(info, "10"))
{
FakeClientCommand(client, "!st");
}
else if (StrEqual(info, "11"))
{
FakeClientCommand(client, "!ws");
}
}
case MenuAction_Cancel:
{
if (slot == MenuCancel_ExitBack)
{
DisplayMenuAtItem(g_menu, client, g_menu_position[client], MENU_TIME_FOREVER);
}
}
}
}
#pragma semicolon 1
#pragma newdecls required
Menu hMenu;
public Plugin myinfo =
{
name = "Help menu"
}
public void OnPluginStart()
{
RegConsoleCmd("sm_menu", Cmd_Menu);
hMenu = new Menu(Handler_Menu);
hMenu.SetTitle("Команды сервера");
hMenu.AddItem("", "Пожаловаться на игрока");
hMenu.AddItem("", "Сбросить свой счет матча");
hMenu.AddItem("", "Посмотреть свою статистику");
hMenu.AddItem("", "Показать позицию статистики");
hMenu.AddItem("", "Голосовать за смену карты");
hMenu.AddItem("", "Настроить голосовую связь");
hMenu.AddItem("", "Открыть меню премиума");
hMenu.AddItem("", "Выбрать нож");
hMenu.AddItem("", "Выбрать перчатки");
hMenu.AddItem("", "Выбрать стикеры");
hMenu.AddItem("", "Выбрать скины на оружие");
}
public Action Cmd_Menu(int client, int argc)
{
if(client) hMenu.Display(client, MENU_TIME_FOREVER);
return Plugin_Handled;
}
public int Handler_Menu(Menu menu, MenuAction action, int client, int slot)
{
if(action == MenuAction_Select) switch(slot)
{
case 0: FakeClientCommand(client, "say_team !report");
case 1: FakeClientCommand(client, "say_team !rs");
case 2: FakeClientCommand(client, "say_team !rank");
case 3: FakeClientCommand(client, "say_team !pos");
case 4: FakeClientCommand(client, "say_team !rtv");
case 5: FakeClientCommand(client, "say_team !voice");
case 6: FakeClientCommand(client, "say_team !vip");
case 7: FakeClientCommand(client, "say_team !knife");
case 8: FakeClientCommand(client, "say_team !gloves");
case 9: FakeClientCommand(client, "say_team !st");
case 10: FakeClientCommand(client, "say_team !ws");
}
}
Ещё бы не ругалось: ты этой переменной не назначаешь никакого значения и оно всегда равно 0.При компилировании ругается на 13 строчку
Либо FakeClientCommand(client, "say !report"); либо как написал крузя.interactive menu builder:#include <sourcemod> public Plugin:myinfo = { name = "interactive menu builder", author = "Reiko1231", description = "Интерактивное создание меню (alextheregent.github.io).", version = "1.0.4.", url = "https://hlmod.ru/resources/interactive-menu-builder.1155/" } new Handle: g_menu; new g_menu_position[MAXPLAYERS + 1]; public OnPluginStart() { RegConsoleCmd("sm_menu", Command_OpenMenu_menu); g_menu = CreateMenu(Handler_menu); SetMenuTitle(g_menu, "Команды сервера") AddMenuItem(g_menu, "1", "Пожаловаться на игрока") AddMenuItem(g_menu, "2", "Сбросить свой счет матча") AddMenuItem(g_menu, "3", "Посмотреть свою статистику") AddMenuItem(g_menu, "4", "Показать позицию статистики") AddMenuItem(g_menu, "5", "Голосовать за смену карты") AddMenuItem(g_menu, "6", "Настроить голосовую связь") AddMenuItem(g_menu, "7", "Открыть меню премиума") AddMenuItem(g_menu, "8", "Выбрать нож") AddMenuItem(g_menu, "9", "Выбрать перчатки") AddMenuItem(g_menu, "10", "Выбрать стикеры") AddMenuItem(g_menu, "11", "Выбрать скины на оружие") SetMenuExitBackButton(g_menu, true); } public Action:Command_OpenMenu_menu(client, argc) { DisplayMenu(g_menu, client, MENU_TIME_FOREVER); return Plugin_Handled; } public Handler_menu(Handle:menu, MenuAction:action, client, slot) { switch (action) { case MenuAction_Select: { decl String:info[64]; GetMenuItem(menu, slot, info, sizeof(info)); if (StrEqual(info, "1")) { FakeClientCommand(client, "!report"); } else if (StrEqual(info, "2")) { FakeClientCommand(client, "!rs"); } else if (StrEqual(info, "3")) { FakeClientCommand(client, "!rank"); } else if (StrEqual(info, "4")) { FakeClientCommand(client, "!pos"); } else if (StrEqual(info, "5")) { FakeClientCommand(client, "!rtv"); } else if (StrEqual(info, "6")) { FakeClientCommand(client, "!voice"); } else if (StrEqual(info, "7")) { FakeClientCommand(client, "!vip"); } else if (StrEqual(info, "8")) { FakeClientCommand(client, "!knife"); } else if (StrEqual(info, "9")) { FakeClientCommand(client, "!gloves"); } else if (StrEqual(info, "10")) { FakeClientCommand(client, "!st"); } else if (StrEqual(info, "11")) { FakeClientCommand(client, "!ws"); } } case MenuAction_Cancel: { if (slot == MenuCancel_ExitBack) { DisplayMenuAtItem(g_menu, client, g_menu_position[client], MENU_TIME_FOREVER); } } } }
Меню вызывается, но ничего не происходит по нажатию элементов и меню просто закрывается, без ошибок.
- mmsource-1.11.0-git1145-linux
- sourcemod-1.10.0-git6510-linux
При компилировании ругается на 13 строчку:
Посмотреть вложение 82947
ВЕщё вопрос, как преобразовать меню, чтобы был перевод в файле?
OnPluginStart()
:LoadTranslations("my_menu.phrases");
my_menu.phrases.txt
, заполняем основу по аналогии с другими файлами, делая свои фразы. Далее в плагине - зависит от того, где вкручиваем перевод. Но вообще вариант такой.new Menu(Handler_Menu);
--> new Menu(Handler_Menu, MENU_ACTIONS_DEFAULT|MenuAction_DisplayItem|MenuAction_Display);
case MenuAction_Select:
case MenuAction_DisplayItem:
{
char szItemInfo[4], szItemText[128];
(view_as<Menu>(menu)).GetItem(slot, szItemInfo, sizeof(szItemInfo), _, szItemText, sizeof(szItemText));
Format(szItemText, sizeof(szItemText), "%T", szItemText, client);
return RedrawMenuItem(szItemText);
}
case MenuAction_Display:
{
// к сожалению, с менюшками нельзя вот так просто взять и вбить имя фразы в SetTitle(), потому что мы его затираем здесь.
(view_as<Menu>(slot)).SetTitle("%T", "имя фразы", client);
}
Это не ошибки, а варны. Переменные не заюзаны в коде просто, и СМ сообщает что они бесполезные.кажется, невнимательно смотрел но не смог в топике найти ответ по этим ошибкам
подскажите пожалуйста//// menu.sp
//
// D:\new_ebaw\csgo\addons\sourcemod\scripting\menu.sp(20) : warning 203: symbol is never used: "g_shown"
// D:\new_ebaw\csgo\addons\sourcemod\scripting\menu.sp(17) : warning 203: symbol is never used: "g_menu_allcommand_position"
// Code size: 12520 bytes
// Data size: 5868 bytes
// Stack/heap size: 16384 bytes
// Total requirements: 34772 bytes
//
// 2 Warnings.
//
// Compilation Time: 0,12 sec
// ----------------------------------------
Press enter to exit ...
SourceMod Version: 1.11.0.6675
Плагин будет работать, несмотря на эти предупреждения. Причину этих предупреждений озвучили выше, а исправлять я в своё время их не стал, т.к. это потребовало бы написания доп. алгоритма, который дал бы практически нулевой выигрыш. Если вам хочется, чтобы плагин компилировался без предупреждений, вы можете удалить строки, на которые вам указывает компилятор - 17 и 20 (удаляйте снизу вверх, т.к. если вы сначала удалите 17 строку, то 20 станет 19, и при удалении текущей 20 строки вы на самом деле удалите 21 (по старой нумерации)).кажется, невнимательно смотрел но не смог в топике найти ответ по этим ошибкам
подскажите пожалуйста//// menu.sp
//
// D:\new_ebaw\csgo\addons\sourcemod\scripting\menu.sp(20) : warning 203: symbol is never used: "g_shown"
// D:\new_ebaw\csgo\addons\sourcemod\scripting\menu.sp(17) : warning 203: symbol is never used: "g_menu_allcommand_position"
// Code size: 12520 bytes
// Data size: 5868 bytes
// Stack/heap size: 16384 bytes
// Total requirements: 34772 bytes
//
// 2 Warnings.
//
// Compilation Time: 0,12 sec
// ----------------------------------------
Press enter to exit ...
SourceMod Version: 1.11.0.6675