Untested
PHP Code:
#include <sourcemod>
#pragma semicolon 1
#pragma newdecls required
bool g_bBhop[MAXPLAYERS+1] = {false, ...};
public void OnPluginStart() {
RegConsoleCmd("sm_vip", Command_Vip, "Displays a vip menu");
}
public Action Command_Vip(int client, int args) {
Menu menu = new Menu(Menu_Callback);
menu.SetTitle("VIP Menu :)");
if(g_bBhop[client])
menu.AddItem("bhop", "AutoBhop [X]");
else
menu.AddItem("bhop", "AutoBhop");
if(GetEntityGravity(client) == 2.0)
menu.AddItem("gravity", "Gravity [X]");
else
menu.AddItem("gravity", "Gravity");
menu.AddItem("skins", "Skins");
menu.ExitButton = true;
menu.Display(client, 30);
return Plugin_Handled;
}
public int Menu_Callback(Menu menu, MenuAction action, int param1, int param2)
{
switch (action) {
case MenuAction_Select:
{
char item[32];
menu.GetItem(param2, item, sizeof(item));
if (StrEqual(item, "bhop"))
g_bBhop[param1] = !g_bBhop[param1];
else if (StrEqual(item, "gravity"))
SetEntityGravity(param1, GetEntityGravity(param1) != 2.0 ? 2.0 : 1.0);
else if (StrEqual(item, "skins"))
if(CommandExists("sm_skins")) {
FakeClientCommand(param1, "sm_skins");
return 1;
}
else
PrintToChat(param1, "[SM] !skins plugin does not exist. Please contact admin.");
Command_Vip(param1, 0);
}
case MenuAction_End:
{
delete menu;
}
}
return 1;
}
public Action OnPlayerRunCmd(int client, int &buttons)
{
if(!IsPlayerAlive(client) || !g_bBhop[client])
return Plugin_Continue;
if(buttons & IN_JUMP)
{
if(GetEntProp(client, Prop_Data, "m_nWaterLevel") <= 1)
{
if(!(GetEntityMoveType(client) & MOVETYPE_LADDER))
{
if(!(GetEntityFlags(client) & FL_ONGROUND))
{
buttons &= ~IN_JUMP;
}
}
}
}
return Plugin_Continue;
}
__________________