AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   A little help (https://forums.alliedmods.net/showthread.php?t=339091)

QuickDroLLL 08-15-2022 13:50

A little help
 
hello every one quickdrolll here so basicly how i can add menu items by just ini file.

kww 08-15-2022 15:40

Re: A little help
 
I think, in plugin_init you need to parse that ini file and build a menu depending on what u have in that file.

How simply... If I could understand that parsing routines...

EDIT: I think you can look at https://github.com/OciXCrom/SimpleMenu

lexzor 08-15-2022 16:17

Re: A little help
 
PHP Code:

#include <amxmodx>
#include <amxmisc>

#define FILE_NAME "menuitems.ini"

//dynamic array method
new Array:g_aMenuItems;


//double array method
#define MAX_ITEMS 10 //items num
new g_szItemsMenu[MAX_ITEMS][64];

public 
plugin_init()
{
    
g_aMenuItems ArrayCreate(64);
    
readFile()
    
register_clcmd("openMenu""open_menu");
}

public 
plugin_end()
{
    
ArrayDestroy(g_aMenuItems);
}

readFile()
{
    new 
szFile[128], szConfigsDir[64], iFile;
    
get_configsdir(szConfigsDircharsmax(szConfigsDir))
    
formatex(szFilecharsmax(szFile), "%s/%s"szConfigsDirFILE_NAME);

    if((
iFile fopen(szFile"r")) && iFile)
    {
        new 
szFileData[128], i;
        while(
fgets(iFileszFileDatacharsmax(szFileData)))
        {
            
trim(szFileData);
            if(!
szFileData[0] || szFileData[0] == ';')
                continue;

            
//dynamic array method
            
ArrayPushString(g_aMenuItemsszFileData);

            
//double array method an (index of bounds error would be thrown if you would have more than MAX_ITEMS menu items in your menu);
            
copy(g_szItemsMenu[i], charsmax(g_szItemsMenu[]), szFileData);
            
i++
        }
    }
}

public 
open_menu(id)
{
    new 
iMenu menu_create("This is my focking menu""menu_handler"), szItem[64];

    
//dynamic array method
    
for(new 0ArraySize(g_aMenuItems); i++)
    {
        
ArrayGetString(g_aMenuItemsiszItemcharsmax(szItem));
        
menu_additem(iMenuszItem);
    }
    
//

    //double array method 
    
for(new 0MAX_ITEMSi++)
    {
        if(
g_szItemsMenu[i][0] != EOS)
            
menu_additem(iMenug_szItemsMenu[i]);
    }
    
//

    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL);
    if(
is_user_connected(id))
        
menu_display(idiMenu0, -1);
}

public 
menu_handler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }

    
client_print(idprint_chat"Wow! You pressed a button!")
    
open_menu(id);

    return 
PLUGIN_CONTINUE;



QuickDroLLL 08-15-2022 19:37

Re: A little help
 
Quote:

Originally Posted by lexzor (Post 2786528)
PHP Code:

#include <amxmodx>
#include <amxmisc>

#define FILE_NAME "menuitems.ini"

//dynamic array method
new Array:g_aMenuItems;


//double array method
#define MAX_ITEMS 10 //items num
new g_szItemsMenu[MAX_ITEMS][64];

public 
plugin_init()
{
    
g_aMenuItems ArrayCreate(64);
    
readFile()
    
register_clcmd("openMenu""open_menu");
}

public 
plugin_end()
{
    
ArrayDestroy(g_aMenuItems);
}

readFile()
{
    new 
szFile[128], szConfigsDir[64], iFile;
    
get_configsdir(szConfigsDircharsmax(szConfigsDir))
    
formatex(szFilecharsmax(szFile), "%s/%s"szConfigsDirFILE_NAME);

    if((
iFile fopen(szFile"r")) && iFile)
    {
        new 
szFileData[128], i;
        while(
fgets(iFileszFileDatacharsmax(szFileData)))
        {
            
trim(szFileData);
            if(!
szFileData[0] || szFileData[0] == ';')
                continue;

            
//dynamic array method
            
ArrayPushString(g_aMenuItemsszFileData);

            
//double array method an (index of bounds error would be thrown if you would have more than MAX_ITEMS menu items in your menu);
            
copy(g_szItemsMenu[i], charsmax(g_szItemsMenu[]), szFileData);
            
i++
        }
    }
}

public 
open_menu(id)
{
    new 
iMenu menu_create("This is my focking menu""menu_handler"), szItem[64];

    
//dynamic array method
    
for(new 0ArraySize(g_aMenuItems); i++)
    {
        
ArrayGetString(g_aMenuItemsiszItemcharsmax(szItem));
        
menu_additem(iMenuszItem);
    }
    
//

    //double array method 
    
for(new 0MAX_ITEMSi++)
    {
        if(
g_szItemsMenu[i][0] != EOS)
            
menu_additem(iMenug_szItemsMenu[i]);
    }
    
//

    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL);
    if(
is_user_connected(id))
        
menu_display(idiMenu0, -1);
}

public 
menu_handler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }

    
client_print(idprint_chat"Wow! You pressed a button!")
    
open_menu(id);

    return 
PLUGIN_CONTINUE;



what a greatfull help thank you !!

QuickDroLLL 08-15-2022 19:39

Re: A little help
 
Quote:

Originally Posted by kww (Post 2786525)
I think, in plugin_init you need to parse that ini file and build a menu depending on what u have in that file.

How simply... If I could understand that parsing routines...

EDIT: I think you can look at https://github.com/OciXCrom/SimpleMenu

thank you for your help


All times are GMT -4. The time now is 00:05.

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