AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting (https://forums.alliedmods.net/forumdisplay.php?f=107)
-   -   Execute a plugin command from a menu. (https://forums.alliedmods.net/showthread.php?t=325730)

duce1nik 07-04-2020 03:46

Execute a plugin command from a menu.
 
Hello,

How do I call a plugin command from a menu?

Below is example of what I have but it not working.


public 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,"option1")){

ServerCommand("sm_strike");

}
else if(StrEqual(item, "option2")){
// Something else.
}
}
case MenuAction_End:
{
delete menu;
}
}
}

PC Gamer 07-04-2020 12:50

Re: Execute a plugin command from a menu.
 
Below is an example of what I use on my TF2 Server. The sounds are specific to TF2. Feel free to use/edit to suite your needs.

PHP Code:

#include <sourcemod>
#include <tf2_stocks>

#pragma semicolon 1

#define PLUGIN_VERSION "1.0"

#define CHEER    "/ambient_mp3/bumper_car_cheer3.mp3"
#define BOO        "/passtime/crowd_boo.wav" 

public Plugin:myinfo 
{
    
name "[TF2] Choose Your Prize",
    
author "PC Gamer",
    
description "Allow TF2 Players to Choose a Prize from Menu",
    
version PLUGIN_VERSION,
    
url "www.sourcemod.net"
}

public 
OnPluginStart()
{
    
LoadTranslations("common.phrases.txt");
    
RegAdminCmd("sm_prize"Command_PreprizeADMFLAG_SLAY"Present Prize Menu to Player");    
}

public 
OnMapStart()
{
    
PrecacheSound(CHEER);
    
PrecacheSound(BOO);    
}

public 
Action:Command_Preprize(clientargs)
{
    
decl String:arg1[32];
    if (
args 1)
    {
        
arg1 "@me";
    }
    else 
GetCmdArg(1arg1sizeof(arg1));
    new 
String:target_name[MAX_TARGET_LENGTH];
    new 
target_list[MAXPLAYERS], target_count;
    new 
bool:tn_is_ml;

    if ((
target_count ProcessTargetString(
                    
arg1,
                    
client,
                    
target_list,
                    
MAXPLAYERS,
                    
COMMAND_FILTER_ALIVE|(args COMMAND_FILTER_NO_IMMUNITY 0),
                    
target_name,
                    
sizeof(target_name),
                    
tn_is_ml)) <= 0)
    {
        
ReplyToTargetError(clienttarget_count);
        return 
Plugin_Handled;
    }
    for (new 
0target_counti++)
    {
        if (
IsClientInGame(target_list[i]))    
        {
            
Menu_Prize(target_list[i]);
            
PrintToChat(target_list[i], "Please Pick Your Prize");
        }
    }
    return 
Plugin_Handled;
}

public 
Action:Menu_Prize(client)
{
    new 
Handle:menu CreateMenu(PMenuMenuAction_Select MenuAction_End MenuAction_DisplayItem);
    
SetMenuTitle(menu"Pick Your Prize:");

    
AddMenuItem(menu"1001""Get 5,000 Upgrade Credits for YOU");
    
AddMenuItem(menu"1013""Give 4,000 Upgrade Credits for EVERYONE");    
    
AddMenuItem(menu"1003""Become the OverPowered Golden Knight Giant Robot");
    
AddMenuItem(menu"1012""Become the Magic StarFox");    
    
AddMenuItem(menu"1004""Become the Giant Yeti");
    
AddMenuItem(menu"1005""Become the Horseless Headless Horsemann");
    
AddMenuItem(menu"1014""Get 2 Minutes of Unlimited Ammo");    
    
AddMenuItem(menu"1006""Get a Health Boost, Defense Boost, and Bullet Resistance");
    
AddMenuItem(menu"1007""Get a Crit and Buff Boost");
    
AddMenuItem(menu"1008""Get 10 Fireball Spells");
    
AddMenuItem(menu"1009""Get a Random Powerup");
    
AddMenuItem(menu"1011""No Prize");    
    
DisplayMenu(menuclientMENU_TIME_FOREVER);
}    

public 
PMenu(Handle:menuMenuAction:actionparam1param2)
{
    switch (
action)
    {
    case 
MenuAction_Select:
        {
            
//Note: param1 is client, param2 is item

            
new String:item[64];
            
GetMenuItem(menuparam2itemsizeof(item));

            if (
StrEqual(item"1001"))
            {
                
ServerCommand("sm_addcash #%d 5000"GetClientUserId(param1));
                
PrintToChat(param1"Enjoy 5,000 upgrade credits!");
                
PrintToServer("Gave 5K to %N"param1);
                
EmitSoundToClient(param1CHEER);                
            }
            if (
StrEqual(item"1003"))
            {
                
ServerCommand("sm_begoldenknight #%d"GetClientUserId(param1));
                
PrintToChat(param1"Enjoy being the Overpowered Giant Golden Knight Robot!");
                
PrintToServer("Gave Golden Knight to %N"param1);
                
EmitSoundToClient(param1CHEER);            
            }
            if (
StrEqual(item"1004"))
            {
                
ServerCommand("sm_yeti #%d"GetClientUserId(param1));
                
PrintToChat(param1"Enjoy being a Giant Yeti!");
                
PrintToServer("Gave Yeti to %N"param1);
                
EmitSoundToClient(param1CHEER);            
            }
            if (
StrEqual(item"1005"))
            {
                
ServerCommand("sm_behhh #%d"GetClientUserId(param1));
                
PrintToChat(param1"Enjoy being the Horseless Headless Horsemann");
                
PrintToServer("Gave HHH to %N"param1);
                
EmitSoundToClient(param1CHEER);            
            }
            if (
StrEqual(item"1006"))
            {
                
ServerCommand("sm_addcond #%d 73 5"GetClientUserId(param1)); 
                
ServerCommand("sm_addcond #%d 61 20"GetClientUserId(param1));
                
ServerCommand("sm_addcond #%d 26 20"GetClientUserId(param1));
                
PrintToChat(param1"Enjoy a Health Boost, Defense Boost, and Bullet Resistance!");
                
PrintToServer("Gave Health Defense Bullet Boost to %N"param1);
                
EmitSoundToClient(param1CHEER);            
            }
            if (
StrEqual(item"1007"))
            {
                
ServerCommand("sm_addcond #%d 26 10"GetClientUserId(param1)); 
                
ServerCommand("sm_addcond #%d 29 10"GetClientUserId(param1));
                
ServerCommand("sm_addcond #%d 46 10"GetClientUserId(param1));
                
ServerCommand("sm_addcond #%d 16 10"GetClientUserId(param1));
                
ServerCommand("sm_addcond #%d 6 10"GetClientUserId(param1));
                
PrintToChat(param1"Enjoy a Crit and Buff Boost");
                
PrintToServer("Gave Crit and Buff Boost to %N"param1);
                
EmitSoundToClient(param1CHEER);            
            }            
            if (
StrEqual(item"1008"))
            {
                
ServerCommand("sm_spellbook #%d"GetClientUserId(param1));
                
PrintToChat(param1"Enjoy 10 Fireball Spells!");
                
PrintToServer("Gave Spells to %N"param1);
                
EmitSoundToClient(param1CHEER);            
            }
            else if (
StrEqual(item"1009"))
            {
                
ServerCommand("sm_randompowerup #%d"GetClientUserId(param1));
                
PrintToChat(param1"Enjoy your Random Powerup!");
                
PrintToServer("Gave Powerup to %N"param1);
                
EmitSoundToClient(param1CHEER);            
            }
            else if (
StrEqual(item"1011"))
            {
                
PrintToChat(param1"No Prize for You.");
                
PrintToServer("Gave No Prize to %N"param1);
                
EmitSoundToClient(param1BOO);            
            }
            if (
StrEqual(item"1012"))
            {
                
ServerCommand("sm_bemagicfox #%d"GetClientUserId(param1));
                
PrintToChat(param1"Enjoy being the Magic StarFox!");
                
PrintToServer("Gave Magic StarFox to %N"param1);
                
EmitSoundToClient(param1CHEER);            
            }
            if (
StrEqual(item"1013"))
            {
                
ServerCommand("sm_addcash @all 4000");
                
PrintToChatAll("%N Gave 4,000 upgrade credits to Everyone"param1);
                
PrintToServer("%N Gave 4K to Everyone"param1);
                
EmitSoundToClient(param1CHEER);                
            }
            if (
StrEqual(item"1014"))
            {
                
ServerCommand("sm_aia2 #%d 125"GetClientUserId(param1));
                
PrintToChat(param1"Enjoy 2 Minutes of Unlimited Ammo!");
                
PrintToServer("%N got 2 mins of unlimited ammo"param1);
                
EmitSoundToClient(param1CHEER);                
            }
        }
    }


Here's a second TF2 example. This plugin uses/shares the credits from the Zephyrus store plugin.

PHP Code:

#include <sourcemod>
#include <tf2_stocks>

#pragma semicolon 1

#define PLUGIN_VERSION "1.0"

#define CHEER    "/ambient_mp3/bumper_car_cheer3.mp3"
#define BOO        "/passtime/crowd_boo.wav" 

native Store_SetClientCredits(clientcredits);
native Store_GetClientCredits(client);

public 
Plugin:myinfo 
{
    
name "Shopping Menu With Store Credits",
    
author "PC Gamer",
    
description "Allow Players to buy items from menu using Store credits",
    
version PLUGIN_VERSION,
    
url "www.sourcemod.com"
}

public 
OnPluginStart()
{
    
LoadTranslations("common.phrases.txt");
    
RegConsoleCmd("sm_store2"Command_Preshop"Present Shopping Menu to Player");
    
RegConsoleCmd("sm_shop2"Command_Preshop"Present Shopping Menu to Player");
    
RegAdminCmd("sm_showcredits"Command_ShowCreditsADMFLAG_SLAY"Show Credits");    
}

public 
OnMapStart()
{
    
PrecacheSound(CHEER);
    
PrecacheSound(BOO);    
}

public 
Action:Command_ShowCredits(clientargs)
{
    
decl String:arg1[32];
    if (
args 1)
    {
        
ReplyToCommand(client"[SM] Usage : sm_showcredits <target>");
        return 
Plugin_Handled;
    }
    else 
GetCmdArg(1arg1sizeof(arg1));
    new 
String:target_name[MAX_TARGET_LENGTH];
    new 
target_list[MAXPLAYERS], target_count;
    new 
bool:tn_is_ml;

    if ((
target_count ProcessTargetString(
                    
arg1,
                    
client,
                    
target_list,
                    
MAXPLAYERS,
                    
COMMAND_FILTER_ALIVE|(args COMMAND_FILTER_NO_IMMUNITY 0),
                    
target_name,
                    
sizeof(target_name),
                    
tn_is_ml)) <= 0)
    {
        
ReplyToTargetError(clienttarget_count);
        return 
Plugin_Handled;
    }
    for (new 
0target_counti++)
    {
        if (
IsClientInGame(target_list[i]))    
        {
            
int CreditAmt Store_GetClientCredits(target_list[i]);
            
PrintToChat(client"%N has %d Credits"target_list[i], CreditAmt);
        }
    }
    return 
Plugin_Handled;
}

public 
Action:Command_Preshop(clientargs)
{
    
decl String:arg1[32];
    if (
args 1)
    {
        
arg1 "@me";
    }
    else 
GetCmdArg(1arg1sizeof(arg1));
    new 
String:target_name[MAX_TARGET_LENGTH];
    new 
target_list[MAXPLAYERS], target_count;
    new 
bool:tn_is_ml;

    if ((
target_count ProcessTargetString(
                    
arg1,
                    
client,
                    
target_list,
                    
MAXPLAYERS,
                    
COMMAND_FILTER_ALIVE|(args COMMAND_FILTER_NO_IMMUNITY 0),
                    
target_name,
                    
sizeof(target_name),
                    
tn_is_ml)) <= 0)
    {
        
ReplyToTargetError(clienttarget_count);
        return 
Plugin_Handled;
    }
    for (new 
0target_counti++)
    {
        if (
IsClientInGame(target_list[i]))    
        {
            
Menu_Prize(target_list[i]);
            
PrintToChat(target_list[i], "Please Pick Your Item");
        }
    }
    return 
Plugin_Handled;
}

public 
Action:Menu_Prize(client)
{
    new 
Handle:menu CreateMenu(PMenuMenuAction_Select MenuAction_End MenuAction_DisplayItem);
    
SetMenuTitle(menu"Spend your Store Credits on These Items:");

    
AddMenuItem(menu"1000""View my Store Credits");
    
AddMenuItem(menu"1001""10 Store Credits - Slay All the Bots");
    
AddMenuItem(menu"1006""10 Store Credits - Get Health Boost, Defense Boost, and Bullet Resistance");
    
AddMenuItem(menu"1007""10 Store Credits - Get Crit and Buff Boost");
    
AddMenuItem(menu"1008""10 Store Credits - Get 10 Fireball Spells");    
    
AddMenuItem(menu"1009""10 Store Credits - Get Random Powerup");
    
AddMenuItem(menu"1027""10 Store Credits - Gamble to Win or Lose 10 Credits");    
    
AddMenuItem(menu"1023""10 Store Credits - Give all Players a Random Good RTD Perk");
    
AddMenuItem(menu"1005""10 Store Credits - Become the Horseless Headless Horsemann");
    
AddMenuItem(menu"1030""20 Store Credits - Become An Angry Giant Robot");
    
AddMenuItem(menu"1024""20 Store Credits - Give all Players 10 Fireball Spells");        
    
AddMenuItem(menu"1011""20 Store Credits - Give all Players a Random Gift");    
    
AddMenuItem(menu"1025""20 Store Credits - Remove all Spy Bots");    
    
AddMenuItem(menu"1026""20 Store Credits - Remove all Medic Bots");
    
AddMenuItem(menu"1033""30 Store Credits - Become the Mighty Samurai Warrior");    
    
AddMenuItem(menu"1020""30 Store Credits - Get Homing Projectiles RTD Perk");    
    
AddMenuItem(menu"1003""40 Store Credits - Become an OverPowered Giant Robot");
    
AddMenuItem(menu"1004""40 Store Credits - Become a Giant Yeti");
    
AddMenuItem(menu"1031""40 Store Credits - Become a Giant Ricochet Soldier Robot");
    
AddMenuItem(menu"1032""40 Store Credits - Become a Giant Ricochet Pyro Robot");        
    
AddMenuItem(menu"1013""40 Store Credits - Give Uber Upgrades New Weapons Menu for All Players");    
    
AddMenuItem(menu"1015""50 Store Credits - Get 2 Minutes of Unlimited Ammo");    
    
AddMenuItem(menu"1016""50 Store Credits - Get Power Play Perk");
    
AddMenuItem(menu"1018""50 Store Credits - Gamble to Win or Lose 50 Credits");
    
AddMenuItem(menu"1012""50 Store Credits - Give all Players 50K Cash");        
    
AddMenuItem(menu"1017""60 Store Credits - Give all Players a Mega Cash Gift");
    
AddMenuItem(menu"1019""100 Store Credits - Gamble to Win or Lose 100 Credits");
    
AddMenuItem(menu"1034""300 Store Credits - Become The WolfMann BOSS");    
    
AddMenuItem(menu"1021""500 Store Credits - Become Merasmus the Wizard BOSS");
    
AddMenuItem(menu"1022""500 Store Credits - Become Monoculus BOSS");    
    
AddMenuItem(menu"2000""No Purchase");    
    
DisplayMenu(menuclientMENU_TIME_FOREVER);
}    

public 
PMenu(Handle:menuMenuAction:actionparam1param2)
{
    switch (
action)
    {
    case 
MenuAction_Select:
        {
            
//param1 is client, param2 is item

            
new String:item[64];
            
GetMenuItem(menuparam2itemsizeof(item));

            
int mycredits Store_GetClientCredits(param1);
            
            if (
StrEqual(item"1000"))
            {
                
PrintToChat(param1"You have %d store credits available to spend"mycredits);
            }
            if (
StrEqual(item"1001"))
            {
                if (
mycredits<10)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {
                    
Store_SetClientCredits(param1mycredits 10);
                    
ServerCommand("sm_slay @bots");
                    
PrintToChatAll("%N Used !store2 to Slay all the Bots"param1);
                    
PrintToServer("%N Paid to Slay all the Bots"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            if (
StrEqual(item"1003"))
            {
                if (
mycredits<40)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 40);
                    
ServerCommand("sm_beop #%d"GetClientUserId(param1));
                    
PrintToChat(param1"Enjoy being OverPowered!");
                    
PrintToServer("%N Paid to become OverPowered"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            if (
StrEqual(item"1004"))
            {
                if (
mycredits<40)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {
                    
Store_SetClientCredits(param1mycredits 40);
                    
ServerCommand("sm_yeti #%d"GetClientUserId(param1));
                    
PrintToChat(param1"Enjoy being a Giant Yeti!");
                    
PrintToServer("%N Paid to become Yeti"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            if (
StrEqual(item"1005"))
            {
                if (
mycredits<10)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 10);
                    
ServerCommand("sm_behhh #%d"GetClientUserId(param1));
                    
PrintToChat(param1"Enjoy being the Horseless Headless Horsemann");
                    
PrintToServer("%N Paid to become HHH"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            if (
StrEqual(item"1006"))
            {
                if (
mycredits<10)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 10);
                    
ServerCommand("sm_addcond #%d 73 5"GetClientUserId(param1)); 
                    
ServerCommand("sm_addcond #%d 61 20"GetClientUserId(param1));
                    
ServerCommand("sm_addcond #%d 26 20"GetClientUserId(param1));
                    
PrintToChat(param1"Enjoy a Health Boost, Defense Boost, and Bullet Resistance!");
                    
PrintToServer("%N Paid for Health Defense Bullet Boost"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            if (
StrEqual(item"1007"))
            {
                if (
mycredits<10)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 10);            
                    
ServerCommand("sm_addcond #%d 26 10"GetClientUserId(param1)); 
                    
ServerCommand("sm_addcond #%d 29 10"GetClientUserId(param1));
                    
ServerCommand("sm_addcond #%d 46 10"GetClientUserId(param1));
                    
ServerCommand("sm_addcond #%d 16 10"GetClientUserId(param1));
                    
ServerCommand("sm_addcond #%d 6 10"GetClientUserId(param1));
                    
PrintToChat(param1"Enjoy a Crit and Buff Boost");
                    
PrintToServer("%N Paid for Crit and Buff Boost"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }            
            if (
StrEqual(item"1008"))
            {
                if (
mycredits<10)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 10);            
                    
ServerCommand("sm_spellbook #%d"GetClientUserId(param1));
                    
PrintToChat(param1"Enjoy 10 Fireball Spells!");
                    
PrintToServer("%N Paid for Spells"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            else if (
StrEqual(item"1009"))
            {
                if (
mycredits<10)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 10);
                    
ServerCommand("sm_randompowerup #%d"GetClientUserId(param1));
                    
PrintToChat(param1"Enjoy your Random Powerup!");
                    
PrintToServer("%N Paid for Random Powerup"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            else if (
StrEqual(item"1011"))
            {
                if (
mycredits<20)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 20);            
                    
ServerCommand("sm_randomgift2");
                    
PrintToChatAll("%N Used !store2 to give everyone a Random Gift!!"param1);
                    
PrintToServer("%N Paid for Random Gift"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            else if (
StrEqual(item"1012"))
            {
                if (
mycredits<50)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 50);            
                    
ServerCommand("exec money");
                    
PrintToChatAll("%N Used !store2 to give everyone a Jackpot!!"param1);
                    
PrintToServer("%N Paid for Jackpot"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            else if (
StrEqual(item"1013"))
            {
                if (
mycredits<40)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 40);            
                    
ServerCommand("exec newweaponon");
                    
PrintToChatAll("%N Used !store2 to enable Uber Upgrades New Weapons!!"param1);
                    
PrintToServer("%N Paid for New Weapons"param1);
                    
EmitSoundToAll(CHEER);
                }
            }
            else if (
StrEqual(item"1015"))
            {
                if (
mycredits<50)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 50);            
                    
ServerCommand("sm_aia2 #%d 125"GetClientUserId(param1));
                    
PrintToChat(param1"Enjoy 2 Minutes of Unlimited Ammo!");
                    
PrintToServer("%N Paid for 2 mins of unlimited ammo"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            else if (
StrEqual(item"1016"))
            {
                if (
mycredits<50)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 50);            
                    
ServerCommand("sm_forcertd #%d powerplay"GetClientUserId(param1));
                    
PrintToChat(param1"Enjoy the PowerPlay perk!");
                    
PrintToServer("%N Paid for PowerPlay"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            else if (
StrEqual(item"1017"))
            {
                if (
mycredits<60)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 60);            
                    
ServerCommand("exec v6");
                    
PrintToChatAll("%N Used !store2 to give everyone a Mega Gift!!"param1);
                    
PrintToServer("%N Paid for Mega Gift"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            else if (
StrEqual(item"1018"))
            {
                if (
mycredits<50)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
int MyNumber GetRandomInt(1,100);
                    if(
MyNumber 50)
                    {
                        
PrintToChat(param1"You Just Gambled 50 Credits and you WON 50 Credits!");
                        
Store_SetClientCredits(param1mycredits 50);
                        
PrintToServer("%N Gambled 50 Credits and Won"param1);                        
                        
EmitSoundToClient(param1CHEER);                        
                    } 
                    else
                    {
                        
PrintToChat(param1"You Just Gambled 50 Credits and you LOST 50 Credits!");
                        
Store_SetClientCredits(param1mycredits 50);
                        
PrintToServer("%N Gambled 50 Credits and Lost"param1);                            
                        
EmitSoundToClient(param1BOO);                        
                    }
                }
            }
            else if (
StrEqual(item"1019"))
            {
                if (
mycredits<100)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
int MyNumber GetRandomInt(1,100);
                    if(
MyNumber 50)
                    {
                        
PrintToChat(param1"You Gambled 100 Credits and you WON 100 Credits!");
                        
Store_SetClientCredits(param1mycredits 100);
                        
PrintToServer("%N Gambled 100 Credits and Won"param1);                        
                        
EmitSoundToClient(param1CHEER);                        
                    } 
                    else
                    {
                        
PrintToChat(param1"You Gambled 100 Credits and you LOST 100 Credits!");
                        
Store_SetClientCredits(param1mycredits 100);
                        
PrintToServer("%N Gambled 100 Credits and Lost"param1);                            
                        
EmitSoundToClient(param1BOO);                        
                    }
                }
            }
            else if (
StrEqual(item"1020"))
            {
                if (
mycredits<30)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 30);            
                    
ServerCommand("sm_forcertd #%d homingprojectiles"GetClientUserId(param1));
                    
PrintToChat(param1"Enjoy the Homing Projectiles RTD perk!");
                    
PrintToServer("%N Paid for Homing Projectiles RTD perk"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            else if (
StrEqual(item"1021"))
            {
                if (
mycredits<500)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 500);            
                    
ServerCommand("sm_bewizard #%d"GetClientUserId(param1));
                    
PrintToChat(param1"Enjoy being Merasmus the Wizard!");
                    
PrintToServer("%N Paid for Merasmus Boss"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            else if (
StrEqual(item"1022"))
            {
                if (
mycredits<500)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 500);            
                    
ServerCommand("sm_bte #%d"GetClientUserId(param1));
                    
PrintToChat(param1"Enjoy being the Monoculus!");
                    
PrintToServer("%N Paid for Monoculus Boss"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            else if (
StrEqual(item"1023"))
            {
                if (
mycredits<10)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 10);            
                    
ServerCommand("sm_forcertd @humans good"GetClientUserId(param1));
                    
PrintToChatAll("%N Used !store2 to give all Players a Random Good Perk!"param1);
                    
PrintToServer("%N Paid for Good Perk for Players"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }            
            else if (
StrEqual(item"2000"))
            {
                
PrintToChat(param1"No Prize for You.");
                
PrintToServer("Gave Spells to %N"param1);
                
EmitSoundToClient(param1BOO);            
            }
            if (
StrEqual(item"1024"))
            {
                if (
mycredits<20)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 20);            
                    
ServerCommand("sm_spellbook @humans");
                    
PrintToChatAll("%N Used !store2 to give all Players 10 Fireball Spells!"param1);
                    
PrintToServer("%N Paid for 10 Fireball Spells for all Players"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            if (
StrEqual(item"1025"))
            {
                if (
mycredits<20)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 20);            
                    
ServerCommand("exec nospybots");
                    
PrintToChatAll("%N Used !store2 to Remove all Spy Bots"param1);
                    
PrintToServer("%N Paid to Remove Spy Bots"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            if (
StrEqual(item"1026"))
            {
                if (
mycredits<20)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 20);            
                    
ServerCommand("exec nomedicbots");
                    
PrintToChatAll("%N Used !store2 to Remove all Medic Bots"param1);
                    
PrintToServer("%N Paid to Remove Medic Bots"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            else if (
StrEqual(item"1027"))
            {
                if (
mycredits<10)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
int MyNumber GetRandomInt(1,100);
                    if(
MyNumber 50)
                    {
                        
PrintToChat(param1"You Just Gambled 10 Credits and you WON 10 Credits!");
                        
Store_SetClientCredits(param1mycredits 10);
                        
PrintToServer("%N Gambled 10 Credits and Won"param1);                        
                        
EmitSoundToClient(param1CHEER);                        
                    } 
                    else
                    {
                        
PrintToChat(param1"You Just Gambled 10 Credits and you LOST 10 Credits!");
                        
Store_SetClientCredits(param1mycredits 10);
                        
PrintToServer("%N Gambled 10 Credits and Lost"param1);                            
                        
EmitSoundToClient(param1BOO);                        
                    }
                }
            }
            else if (
StrEqual(item"1030"))
            {
                if (
mycredits<20)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 20);            
                    
ServerCommand("sm_beangryrobot #%d"GetClientUserId(param1));
                    
PrintToChat(param1"Enjoy being the Angry Robot!");
                    
PrintToServer("%N Paid for Angry Robot"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            else if (
StrEqual(item"1031"))
            {
                if (
mycredits<40)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 40);            
                    
ServerCommand("sm_bericochet #%d"GetClientUserId(param1));
                    
PrintToChat(param1"Enjoy being the Giant Ricochet Soldier Robot!");
                    
PrintToServer("%N Paid for Giant Ricochet Soldier Robot"param1);
                    
EmitSoundToClient(param1CHEER);
                }                
            }
            else if (
StrEqual(item"1032"))
            {
                if (
mycredits<40)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 40);            
                    
ServerCommand("sm_bericochetpyro #%d"GetClientUserId(param1));
                    
PrintToChat(param1"Enjoy being the Giant Ricochet Pyro Robot!");
                    
PrintToServer("%N Paid for Giant Ricochet Pyro Robot"param1);
                    
EmitSoundToClient(param1CHEER);
                }                
            }
            else if (
StrEqual(item"1033"))
            {
                if (
mycredits<20)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 20);            
                    
ServerCommand("sm_besam #%d"GetClientUserId(param1));
                    
PrintToChat(param1"Enjoy being the Mighty Samurai Warrior!");
                    
PrintToServer("%N Paid for the Mighty Samurai Warrior"param1);
                    
EmitSoundToClient(param1CHEER);
                }                
            }
            else if (
StrEqual(item"1034"))
            {
                if (
mycredits<500)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 500);            
                    
ServerCommand("sm_bewolfman #%d"GetClientUserId(param1));
                    
PrintToChat(param1"Enjoy being the WolfMann BOSS!");
                    
PrintToServer("%N Paid for WolMann Boss"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }
            else if (
StrEqual(item"1035"))
            {
                if (
mycredits<300)
                {
                    
PrintToChat(param1"You don't have enough store credits available to spend");
                }
                else
                {            
                    
Store_SetClientCredits(param1mycredits 300);            
                    
ServerCommand("sm_beskeletonking #%d"GetClientUserId(param1));
                    
PrintToChat(param1"Enjoy being the Skeleton King BOSS!");
                    
PrintToServer("%N Paid for Skeleton King Boss"param1);
                    
EmitSoundToClient(param1CHEER);
                }
            }            
        }
    }



duce1nik 07-05-2020 02:17

Re: Execute a plugin command from a menu.
 
PC Gamer,

Thank you for your reply.

It still not working for me.

My goal is to create a menu and call command for plugin that I installed.

For example, I installed F-18 Airstrike ( https://forums.alliedmods.net/showthread.php?t=187567 ). If I typed sm_strike in the console it will bring up the Air Strike Menu. I would like to call the same command from the my own menu instead of typing it console.


I confirmed the if statement is getting hit becuase ServerCommand("sm_slap Player1"); work in that statement, but ServerCommand("sm_strike"); is not working.


Please see code below.

PHP Code:



public PMenu(Handle:menuMenuAction:actionparam1param2)
{
switch (
action)
    {
    case 
MenuAction_Select:
        {
            new 
String:item[64];
            
GetMenuItem(menuparam2itemsizeof(item));
            if (
StrEqual(item,"Option1"))
            {
                
//this DO NOT work when call from the menu
                
ServerCommand("sm_strike");
                
                
//This work when call from the menu.
                
ServerCommand("sm_slap Player1");
            }
            
        }
        case 
MenuAction_End:
        {
            
delete menu;
        }
    }




Cruze 07-05-2020 03:33

Re: Execute a plugin command from a menu.
 
Maybe because in sm_strike, there's a condition given like:
Code:

if(!client)
return Plugin_Handled;


PC Gamer 07-05-2020 14:32

Re: Execute a plugin command from a menu.
 
If you need the player to issue the sm_strike command and the player has access to it you could use the FakeClientCommand like this:

PHP Code:

            if (StrEqual(item,"Option1"))
            {
                
//this works when called from the menu
                
FakeClientCommand(param1"sm_strike");
                
                
//This also works when called from the menu.
                
ServerCommand("sm_slap Player1");
            } 


duce1nik 07-05-2020 23:00

Re: Execute a plugin command from a menu.
 
Cruze - Thank you for your reply.

PC Gamer- FakeClientCommand() worked. Thanks you.


All times are GMT -4. The time now is 12:57.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.