AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Solved Passing array to menu_additem (https://forums.alliedmods.net/showthread.php?t=314931)

iNvectus 03-14-2019 05:42

Passing array to menu_additem
 
Greetings. I want to know if it is possible to pass an array to menu_additem.

Example:
PHP Code:

 #include <amxmodx>

 #define MAX_ZONES 25

 
new Float:fOrigin[MAX_ZONES][3];
 new 
g_iZones 5;
 
 public 
plugin_init()
 {
    
register_plugin("Test Menu""1.00""iNvectus");

    
register_clcmd"test","testMenu" );
 }

 public 
testMenuid )
 {
    new 
menu menu_create"\rPick option:""menu_handler" );
    
get_user_origin(idfOrigin[id], 0);

    for(new 
0g_iZonesi++)
        
menu_additem(menu"Test"fOrigin[i], 0);    // Is this possible, if yes, how to handle it in the menu handler?
    
    
menu_setpropmenuMPROP_EXITMEXIT_ALL );
    
menu_displayidmenu);
   
   return 
PLUGIN_HANDLED;
 }
 
 public 
menu_handleridmenuitem )
 {
    if ( 
item == MENU_EXIT ) {
        
menu_destroymenu );
        return 
PLUGIN_HANDLED;
    }
    new 
szData[33];
    new 
_accessitem_callback;

    
menu_item_getinfomenuitem_access, ?, ?, item_callback );

    
menu_destroymenu );
    return 
PLUGIN_HANDLED;
 } 


<VeCo> 03-14-2019 11:46

Re: Passing array to menu_additem
 
Format a new string with formatex and pass that instead of "Test".

iNvectus 03-14-2019 12:56

Re: Passing array to menu_additem
 
Quote:

Originally Posted by <VeCo> (Post 2643276)
Format a new string with formatex and pass that instead of "Test".

What I want to do is pass the Origin. The test is just the label for the menu item.

<VeCo> 03-14-2019 13:08

Re: Passing array to menu_additem
 
nvm, you'd still need a string, use float_to_str

CrazY. 03-14-2019 13:33

Re: Passing array to menu_additem
 
Code:
new szOrigin[33]; formatex(szOrigin, charsmax(szOrigin), "%.1f %.1f %.1f", fOrigin[0], fOrigin[1], fOrigin[2]) menu_additem(menu, "text", szOrigin); ... new szBuffer[33], szOrigin[3][11], Float:fOrigin[3]; menu_item_getinfo(...) parse(szBuffer, szOrigin[0], charsmax(szOrigin[]), szOrigin[1], charsmax(szOrigin[]), szOrigin[2], charsmax(szOrigin[])); fOrigin[0] = str_to_float(szOrigin[0]); fOrigin[1] = str_to_float(szOrigin[1]); fOrigin[2] = str_to_float(szOrigin[2]);

or

Code:
// Global origin variable new Float:g_fOrigin[33][3]; ... get_user_origin(id, g_fOrigin[id], 0);

iNvectus 03-14-2019 13:45

Re: Passing array to menu_additem
 
Quote:

Originally Posted by CrazY. (Post 2643292)
Code:
new szOrigin[33]; formatex(szOrigin, charsmax(szOrigin), "%.1f %.1f %.1f", fOrigin[0], fOrigin[1], fOrigin[2]) menu_additem(menu, "text", szOrigin); ... new szBuffer[33], szOrigin[3][11], Float:fOrigin[3]; menu_item_getinfo(...) parse(szBuffer, szOrigin[0], charsmax(szOrigin[]), szOrigin[1], charsmax(szOrigin[]), szOrigin[2], charsmax(szOrigin[])); fOrigin[0] = str_to_float(szOrigin[0]); fOrigin[1] = str_to_float(szOrigin[1]); fOrigin[2] = str_to_float(szOrigin[2]);

or

Code:
// Global origin variable new Float:g_fOrigin[33][3]; ... get_user_origin(id, g_fOrigin[id], 0);

Thank you. That would work like a charm


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

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