175 lines
4.3 KiB
SourcePawn
175 lines
4.3 KiB
SourcePawn
/**
|
|
* ====================
|
|
* Zombie:Reloaded
|
|
* File: menu.sp
|
|
* Author: Greyscale
|
|
* ====================
|
|
*/
|
|
|
|
MainMenu(client)
|
|
{
|
|
new Handle:menu_main = CreateMenu(MainMenuHandle);
|
|
|
|
SetGlobalTransTarget(client);
|
|
|
|
SetMenuTitle(menu_main, "%t\n ", "!zmenu title");
|
|
|
|
decl String:zmenu[128];
|
|
decl String:zclass[128];
|
|
decl String:zmarket[128];
|
|
decl String:zspawn[128];
|
|
decl String:ztele[128];
|
|
decl String:zstuck[128];
|
|
decl String:zhp[128];
|
|
|
|
Format(zmenu, sizeof(zmenu), "%t", "!zmenu menu");
|
|
Format(zclass, sizeof(zclass), "%t", "!zmenu class");
|
|
Format(zmarket, sizeof(zmarket), "%t", "!zmenu market");
|
|
Format(zspawn, sizeof(zspawn), "%t", "!zmenu spawn");
|
|
Format(ztele, sizeof(ztele), "%t", "!zmenu tele");
|
|
Format(zstuck, sizeof(zstuck), "%t", "!zmenu stuck");
|
|
Format(zhp, sizeof(zhp), "%t (%d HP)", "!zmenu hp", GetClientHealth(client));
|
|
|
|
AddMenuItem(menu_main, "zmenu", zmenu, ITEMDRAW_DISABLED);
|
|
AddMenuItem(menu_main, "zclass", zclass);
|
|
|
|
if (market)
|
|
{
|
|
AddMenuItem(menu_main, "zmarket", zmarket);
|
|
}
|
|
else
|
|
{
|
|
AddMenuItem(menu_main, "zmarket", zmarket, ITEMDRAW_DISABLED);
|
|
}
|
|
|
|
AddMenuItem(menu_main, "zspawn", zspawn);
|
|
AddMenuItem(menu_main, "ztele", ztele);
|
|
AddMenuItem(menu_main, "zstuck", zstuck);
|
|
AddMenuItem(menu_main, "zhp", zhp);
|
|
|
|
DisplayMenu(menu_main, client, MENU_TIME_FOREVER);
|
|
}
|
|
|
|
public MainMenuHandle(Handle:menu_main, MenuAction:action, client, slot)
|
|
{
|
|
if (action == MenuAction_Select)
|
|
{
|
|
switch(slot)
|
|
{
|
|
case 1:
|
|
{
|
|
if (!ZClass(client))
|
|
{
|
|
MainMenu(client);
|
|
}
|
|
}
|
|
case 2:
|
|
{
|
|
if (!ZMarket(client))
|
|
{
|
|
MainMenu(client);
|
|
}
|
|
}
|
|
case 3:
|
|
{
|
|
ZSpawn(client);
|
|
MainMenu(client);
|
|
}
|
|
case 4:
|
|
{
|
|
ZTeleClientCheck(client);
|
|
MainMenu(client);
|
|
}
|
|
case 5:
|
|
{
|
|
ZStuck(client);
|
|
MainMenu(client);
|
|
}
|
|
case 6:
|
|
{
|
|
ZHP(client);
|
|
MainMenu(client);
|
|
}
|
|
}
|
|
}
|
|
if (action == MenuAction_End)
|
|
{
|
|
CloseHandle(menu_main);
|
|
}
|
|
}
|
|
|
|
ClassMenu(client)
|
|
{
|
|
new Handle:menu_classes = CreateMenu(ClassMenuHandle);
|
|
|
|
decl String:menu_description[256];
|
|
decl String:display[288]; // 32 + 256
|
|
|
|
SetGlobalTransTarget(client);
|
|
|
|
SetMenuTitle(menu_classes, "%t\n ", "!zclass title");
|
|
|
|
for (new x = 0; x < classCount; x++)
|
|
{
|
|
GetClassName(x, display, sizeof(display));
|
|
GetClassMenuDescription(x, menu_description, sizeof(menu_description));
|
|
|
|
if (pNextClass[client] == -1)
|
|
{
|
|
if (x == pClass[client])
|
|
{
|
|
Format(display, sizeof(display), "%s (current)", display);
|
|
}
|
|
}
|
|
else if (x == pNextClass[client])
|
|
{
|
|
Format(display, sizeof(display), "%s (current)", display);
|
|
}
|
|
|
|
Format(display, sizeof(display), "%s\n %s", display, menu_description);
|
|
|
|
AddMenuItem(menu_classes, "", display);
|
|
}
|
|
|
|
SetMenuExitBackButton(menu_classes, true);
|
|
|
|
DisplayMenu(menu_classes, client, MENU_TIME_FOREVER);
|
|
}
|
|
|
|
public ClassMenuHandle(Handle:menu_classes, MenuAction:action, client, slot)
|
|
{
|
|
if (action == MenuAction_Select)
|
|
{
|
|
if (IsPlayerHuman(client) || !IsPlayerAlive(client))
|
|
{
|
|
Call_StartForward(hOnZClassChanged);
|
|
Call_PushCell(client);
|
|
Call_PushCell(pClass[client]);
|
|
Call_PushCell(slot);
|
|
Call_Finish();
|
|
|
|
pClass[client] = slot;
|
|
}
|
|
else
|
|
{
|
|
pNextClass[client] = slot;
|
|
}
|
|
|
|
decl String:name[64];
|
|
GetClassName(slot, name, sizeof(name));
|
|
|
|
ZR_PrintToChat(client, "Class select", name);
|
|
}
|
|
|
|
if (action == MenuAction_Cancel)
|
|
{
|
|
if (slot == MenuCancel_ExitBack)
|
|
{
|
|
MainMenu(client);
|
|
}
|
|
}
|
|
else if (action == MenuAction_End)
|
|
{
|
|
CloseHandle(menu_classes);
|
|
}
|
|
} |