Frendliy
Участник
- Сообщения
- 147
- Реакции
- 17
1.10.0.6529 - на сервереКакой SM на сервере и каким SM компилился плагин?
Компилелся на последней 1.12 - build 6920
1.10.0.6529 - на сервереКакой SM на сервере и каким SM компилился плагин?
Ничего не смущает?1.10.0.6529 - на сервере
Компилелся на последней 1.12 - build 6920
потому что это клиентский квар, а не командаUnknown command: cl_minmodels
а куда ево кидать?Ладно. Напишу информативнее. Я сделал меню на сайте, могу даже предоставить исходник, который скачал. Скопмилировал его при помощи sourcemod 1.10. И залил smx в папку plugins, а sp в папку scripting. В sm plugin list он отображается, но при вводе в чат !menu или в консоль sm_menu тишина. Ошибок не увидел, в логах тоже. Достаточно информативно?
Нет по идее чтоб сделать для новых игроков, надо подключать базу данных, которая будет проверять 1 ли раз зашел игрок. А это просто менюА при заходе новых игроков меню само не отображается?
ВOnPluginStart()
:
На диске создаём файл переводов под именемC++:LoadTranslations("my_menu.phrases");
my_menu.phrases.txt
, заполняем основу по аналогии с другими файлами, делая свои фразы. Далее в плагине - зависит от того, где вкручиваем перевод. Но вообще вариант такой.
Если самый простой:
- В AddMenuItem - заменяем тексты на имена фраз.
new Menu(Handler_Menu);
-->new Menu(Handler_Menu, MENU_ACTIONS_DEFAULT|MenuAction_DisplayItem|MenuAction_Display);
- Во всех обработчиках (хандлерах) находим:
Вставляем перед:C++:case MenuAction_Select:
На диске создаём файл переводов под именемC++: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: { [*][QUOTE="Kruzya, post: 540292, member: 72654"] В [ICODE]OnPluginStart()[/ICODE]: [CODE=cpp]LoadTranslations("my_menu.phrases");
my_menu.phrases.txt
, заполняем основу по аналогии с другими файлами, делая свои фразы. Далее в плагине - зависит от того, где вкручиваем перевод. Но вообще вариант такой.
Если самый простой:
- В AddMenuItem - заменяем тексты на имена фраз.
new Menu(Handler_Menu);
-->new Menu(Handler_Menu, MENU_ACTIONS_DEFAULT|MenuAction_DisplayItem|MenuAction_Display);
- Во всех обработчиках (хандлерах) находим:
Вставляем перед:C++:case MenuAction_Select:
C++: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); }
Не тестил, но что-то такое должно проканать
#include <sourcemod>
public Plugin:myinfo =
{
name = "[GUI] interactive menu builder",
author = "Reiko1231 + hlmod.ru + Kruzya",
description = "Интерактивное создание меню (alextheregent.github.io).",
version = "1.0.5.",
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, MENU_ACTIONS_DEFAULT|MenuAction_DisplayItem|MenuAction_Display);
AddMenuItem(g_menu, "1", "menu - Report player")
SetMenuExitBackButton(g_menu, true);
LoadTranslations("my_menu.phrases");
}
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, "say !report");
}
}
case MenuAction_Cancel:
{
if (slot == MenuCancel_ExitBack)
{
DisplayMenuAtItem(g_menu, client, g_menu_position[client], MENU_TIME_FOREVER);
}
}
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", "menu_title", client);
}
}
}
"Phrases"
{
"menu_title"
{
"en" "Server commands"
"ru" "Команды сервера"
}
"menu - Report player"
{
"en" "Report player"
"ru" "Пожаловаться на игрока"
}
}