PHP Code:
#include <sourcemod>
#include <adminmenu>
Handle g_CvarDescMode;
int Item;
public Plugin myinfo =
{
name = "Simple Help Menu",
description = "Help",
author = "PHHAKE",
version = "1.3",
url = ""
};
public void OnPluginStart()
{
RegConsoleCmd("sm_helps", HelpsMenu_Func);
RegAdminCmd("sm_showhelps", ShowHelps, ADMFLAG_CHAT);
g_CvarDescMode = CreateConVar("sm_helps_descmode", "0", "Set to 0 if you want Help to be show on a menu ,and 1 if you want it to show on chat .");
}
public Action HelpsMenu_Func(int client, int args)
{
CreateHelpsMenu(client, 0);
PrintToChat(client, "\x04[Helps] \x03You Have \x01succefully openned \x03Helps Menu!");
return Plugin_Handled;
}
public Action ShowHelps(int client, int args)
{
Handle PlayersMenu = CreateMenu(HelpsMenuHandler);
SetMenuTitle(PlayersMenu, "Send Helps To Player");
SetMenuExitButton(PlayersMenu, true);
AddTargetsToMenu2(PlayersMenu, client, 36);
DisplayMenu(PlayersMenu, client, 15);
return Plugin_Handled;
}
public int CreateHelpsMenu(int client, int item)
{
Handle HelpsMenu = CreateMenu(HelpsMenuHandler);
SetMenuTitle(HelpsMenu, "Help Menu");
Handle kv = CreateKeyValues("Helps", "", "");
FileToKeyValues(kv, "addons/sourcemod/configs/helps.cfg");
if (!KvGotoFirstSubKey(kv, true))
{
//Handle error here
return 0;
}
char HelpNumber[64];
char HelpName[256];
do
{
KvGetSectionName(kv, HelpNumber, 64);
KvGetString(kv, "help", HelpName, 255, "");
AddMenuItem(HelpsMenu, HelpNumber, HelpName, 0);
}
while (KvGotoNextKey(kv, true));
CloseHandle(kv);
DisplayMenuAtItem(HelpsMenu, client, item, 15);
return 0;
}
public int HandlerBackToMenu(Handle menu, MenuAction action, int param1, int param2)
{
if (action == MenuAction_End)
{
CreateHelpsMenu(param1, Item);
}
else
{
if (action == MenuAction_DrawItem)
{
PrintToServer("", param1, param2);
}
if (action == MenuAction_Cancel)
{
CloseHandle(menu);
}
}
return 0;
}
public int HelpsMenuHandler(Handle menu, MenuAction action, int param1, int param2)
{
if (action == MenuAction_Select)
{
Handle kv = CreateKeyValues("Helps", "", "");
FileToKeyValues(kv, "addons/sourcemod/configs/helps.cfg");
if (!KvGotoFirstSubKey(kv, true))
{
return 0;
}
char buffer[256];
char choice[256];
GetMenuItem(menu, param2, choice, 255);
do
{
KvGetSectionName(kv, buffer, 255);
if (StrEqual(buffer, choice, true))
{
char HelpName[256];
char HelpDescription[256];
KvGetString(kv, "help", HelpName, 255, "");
KvGetString(kv, "info", HelpDescription, 255, "");
if (GetConVarInt(g_CvarDescMode))
{
PrintToChat(param1, "\x04[Helps] \x03%s : \x01%s", HelpName, HelpDescription);
Item = GetMenuSelectionPosition();
CreateHelpsMenu(param1, Item);
}
else
{
char Help[256];
char Desc[256];
Format(Help, 255, "%s", HelpName);
Format(Desc, 255, "%s", HelpDescription);
Item = GetMenuSelectionPosition();
Handle DescriptionPanel = CreatePanel();
SetPanelTitle(DescriptionPanel, Help, false);
DrawPanelText(DescriptionPanel, " ");
DrawPanelText(DescriptionPanel, Desc);
DrawPanelText(DescriptionPanel, " ");
DrawPanelItem(DescriptionPanel, "Back", 0);
SendPanelToClient(DescriptionPanel, param1, HandlerBackToMenu, 15);
}
}
}
while (KvGotoNextKey(kv, true));
CloseHandle(kv);
}
else
{
if (action == MenuAction_DrawItem)
{
PrintToServer("", param1, param2);
}
if (action == MenuAction_Cancel)
{
CloseHandle(menu);
}
}
return 0;
}
public Action ShowHelpsHandler(Handle menu, MenuAction action, int param1, int param2)
{
if (action == MenuAction_Select)
{
char UserId[64];
GetMenuItem(menu, param2, UserId, 64);
int i_UserId = StringToInt(UserId, 10);
int client = GetClientOfUserId(i_UserId);
CreateHelpsMenu(client, 1);
}
else
{
if (action == MenuAction_DrawItem)
{
PrintToServer("", param1, param2);
}
if (action == MenuAction_Cancel)
{
CloseHandle(menu);
}
}
return Plugin_Continue;
}