View Single Post
Author Message
JPTRON
Junior Member
Join Date: Jun 2020
Old 06-15-2020 , 14:19   Menu just fade out after chosing an option.
Reply With Quote #1

Hi,

I'm trying to code a basic paged menu where people can choose a knife to play with. (no skins)

When I call the command the menu shows on, but when I select something, it just fades out. I can't even change the page.

PHP Code:
enum Slots
{
    
Slot_Primary,
    
Slot_Secondary,
    
Slot_Knife,
    
Slot_Grenade,
    
Slot_C4,
    
Slot_None
};

Menu g_KnifeMenu null;

stock bool IsValidClient(int client)
{
    return (
client >= && client <= MaxClients && !IsFakeClient(client) && IsClientConnected(client) && IsClientInGame(client) && !IsClientSourceTV(client));
}

stock bool RemoveWeaponBySlot(int clientSlots slot)
{
    
int entity_index GetPlayerWeaponSlot(clientslot);
    if(
entity_index 0)
    {
        
RemovePlayerItem(cliententity_index);
        
AcceptEntityInput(entity_index"Kill");
        return 
true;
    }
    return 
false;
}

public 
void OnPluginStart()
{
    
RegConsoleCmd("sm_knife"cmd_knife);
}

public 
Action cmd_knife(int clientint args)
{
    if(
IsValidClient(client) && IsPlayerAlive(client) && GetClientTeam(client) == CS_TEAM_CT)
    {    
        
g_KnifeMenu BuildKnifeMenu();
        
g_KnifeMenu.Display(clientMENU_TIME_FOREVER);
    }
    
    
delete g_KnifeMenu;
    return 
Plugin_Handled;
}

Menu BuildKnifeMenu()
{
    
File file OpenFile("knives.txt""rt");
    if(
file == null)
    {
        return 
null;
    }
    
    
Menu menu = new Menu(ChangeKnifeMenu);
    
char knifename[255];
    
    while(!
file.EndOfFile() && file.ReadLine(knifenamesizeof(knifename)))
    {
        if (
knifename[0] == ';' || !IsCharAlpha(knifename[0]))
        {
            continue;
        }
        
        
int len strlen(knifename);
        
        for (
int i 0leni++)
        {
            if (
IsCharSpace(knifename[i]))
            {
                
knifename[i] = '\0';
                break;
            }
        }
        
        
menu.AddItem(knifenameknifename);
    }
    
    
file.Close();
    
    
menu.SetTitle("Knife:");
    
    return 
menu;
}

public 
int ChangeKnifeMenu(Menu menuMenuAction actionint param1int param2)
{
    if (
action == MenuAction_Select)
    {
        
char info[32];
        
char knife[32];
        
char givestring[32];
 
        
bool found menu.GetItem(param2infosizeof(info));
 
        
PrintToChat(param1"\x01 \x0E%s \x08equipped"info);
         
         
RemoveWeaponBySlot(param1Slot_Knife);
     
             if(
StrEqual(info,"CT"))
             {
                 
GivePlayerItem(param1"weapon_knife");
             }
             else if(
StrEqual(info,"T"))
             {
                 
GivePlayerItem(param1"weapon_knife_t");
             }
             else if(
StrEqual(info,"Classic"))
             {
                 
knife "css";
             }
             else if(
StrEqual(info,"m9 bayonet"))
             {
                 
knife "m9_bayonet";
             }
             else if(
StrEqual(info,"huntsman"))
             {
                 
knife "tactical";
             }
             else if(
StrEqual(info,"shadow daggers"))
             {
                 
knife "push";
             }
             else if(
StrEqual(info,"golden"))
             {
                 
knife "knifegg";
             }
             else if(
StrEqual(info,"bowie"))
             {
                 
knife "survival_bowie";
             }
             else if(
StrEqual(info,"navaja"))
             {
                 
knife "gypsy_jackknife";
             }
             else if(
StrEqual(info,"talon"))
             {
                 
knife "widowmaker";
             }
             else if(
StrEqual(info,"spectral"))
             {
                 
knife "ghost";
             }
             else if(
StrEqual(info,"survival"))
             {
                 
knife "canis";
             }
             else if(
StrEqual(info,"paracord"))
             {
                 
knife "cord";
             }
             else if(
StrEqual(info,"nomad"))
             {
                 
knife "outdoor";
             }
                             
         
Format(givestringsizeof(givestring), "weapon_knife_%s"knife);
         
         if(!
StrEqual(info,"CT") && !StrEqual(info,"T"))
         {
             
GivePlayerItem(param1givestring);
         }       
    }

JPTRON is offline