Files
helpmenu/scripting/helpmenu.sp
T
deidara 9a7131b114 v1.0.0: initial helpmenu plugin
Простое меню справки для игроков:
- !help открывает главное меню
- 4 пункта: Правила, Команды, Наш Telegram, Наш сайт
- Правила в подменю (топ-5 главных)
- Команды/Telegram/Сайт выводятся в чат игроку
2026-05-01 19:27:36 +03:00

146 lines
4.2 KiB
SourcePawn

#pragma semicolon 1
#pragma newdecls required
#include <sourcemod>
#define HELP_PREFIX "\x09[HELP]\x01"
#define TG_LINK "https://t.me/arcanegamecs"
#define WEBSITE_LINK "https://arcanegame.ru"
public Plugin myinfo =
{
name = "Help Menu",
author = "deidara.dev",
description = "Меню справки для игроков: правила, команды, контакты сервера",
version = "1.0.0",
url = "https://deidara.dev"
};
public void OnPluginStart()
{
RegConsoleCmd("sm_help", Command_Help, "Открыть меню справки");
}
public Action Command_Help(int client, int args)
{
if (client <= 0 || !IsClientInGame(client))
{
ReplyToCommand(client, "[HELP] Команда доступна только в игре.");
return Plugin_Handled;
}
ShowMainMenu(client);
return Plugin_Handled;
}
void ShowMainMenu(int client)
{
Menu menu = new Menu(MenuHandler_Main);
menu.SetTitle("ArcaneGame — справка");
menu.AddItem("rules", "Правила сервера");
menu.AddItem("commands", "Команды");
menu.AddItem("telegram", "Наш Telegram");
menu.AddItem("website", "Наш сайт");
menu.ExitButton = true;
menu.Display(client, 30);
}
public int MenuHandler_Main(Menu menu, MenuAction action, int client, int item)
{
if (action == MenuAction_End)
{
delete menu;
return 0;
}
if (action != MenuAction_Select)
{
return 0;
}
char info[16];
menu.GetItem(item, info, sizeof(info));
if (StrEqual(info, "rules"))
{
ShowRulesMenu(client);
}
else if (StrEqual(info, "commands"))
{
ShowCommands(client);
}
else if (StrEqual(info, "telegram"))
{
ShowTelegram(client);
}
else if (StrEqual(info, "website"))
{
ShowWebsite(client);
}
return 0;
}
void ShowRulesMenu(int client)
{
Menu menu = new Menu(MenuHandler_Rules);
menu.SetTitle("Правила сервера ArcaneGame");
// Disabled-пункты: показываются как пронумерованные строки правил, не выбираются
menu.AddItem("r1", "Запрещены читы, скрипты и баг-юзинг", ITEMDRAW_DISABLED);
menu.AddItem("r2", "Запрещён тимкилл и тимфлеш", ITEMDRAW_DISABLED);
menu.AddItem("r3", "Уважение к админам и игрокам", ITEMDRAW_DISABLED);
menu.AddItem("r4", "Запрещены оскорбления и мат", ITEMDRAW_DISABLED);
menu.AddItem("r5", "Запрещён мульти-аккаунт и буст", ITEMDRAW_DISABLED);
menu.ExitButton = true;
menu.ExitBackButton = true;
menu.Display(client, 30);
}
public int MenuHandler_Rules(Menu menu, MenuAction action, int client, int item)
{
if (action == MenuAction_End)
{
delete menu;
return 0;
}
if (action == MenuAction_Cancel)
{
if (item == MenuCancel_ExitBack)
{
ShowMainMenu(client);
}
return 0;
}
return 0;
}
void ShowCommands(int client)
{
PrintToChat(client, "%s \x04Команды сервера:", HELP_PREFIX);
PrintToChat(client, "%s \x04!g\x01 — меню койнов", HELP_PREFIX);
PrintToChat(client, "%s \x04!ws\x01 — выбор скинов оружия", HELP_PREFIX);
PrintToChat(client, "%s \x04!glove\x01 — выбор перчаток", HELP_PREFIX);
PrintToChat(client, "%s \x04!knife\x01 — выбор ножа", HELP_PREFIX);
PrintToChat(client, "%s \x04!help\x01 — открыть это меню", HELP_PREFIX);
}
void ShowTelegram(int client)
{
PrintToChat(client, "%s \x04Наш Telegram-канал:", HELP_PREFIX);
PrintToChat(client, "%s \x05%s\x01", HELP_PREFIX, TG_LINK);
PrintToChat(client, "%s Подписывайся, чтобы быть в курсе обновлений и анонсов!", HELP_PREFIX);
}
void ShowWebsite(int client)
{
PrintToChat(client, "%s \x04Наш сайт:", HELP_PREFIX);
PrintToChat(client, "%s \x05%s\x01", HELP_PREFIX, WEBSITE_LINK);
PrintToChat(client, "%s Заходи: статистика, магазин, новости.", HELP_PREFIX);
}