Raised This Month: $51 Target: $400
 12% 

Solved pass information through menu


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
lexzor
Veteran Member
Join Date: Nov 2020
Old 10-01-2021 , 14:27   pass information through menu
Reply With Quote #1

hello, i have this code

PHP Code:

open_invite_menu
(itemszClanNameszClanTag);

public 
open_invite_menu(id, const clanname[64], const clantag[64])
{
    new 
szTitle[64], szItem[2][64];
    
formatex(szTitlecharsmax(szTitle), "%L"id"PLAYER_INVITED_MENU_TITLE"clanname);
    new 
iMenu menu_create(szTitle"open_invite_menu_handler");

    
formatex(szItem[0], charsmax(szItem[]), "%L"id"DELETE_CLAN_FIRST_OPTION");
    
menu_additem(iMenuszItem[0]);

    
formatex(szItem[1], charsmax(szItem[]), "%L"id"DELETE_CLAN_SECOND_OPTION");
    
menu_additem(iMenuszItem[1]);

    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL);
    
menu_display(idiMenu0);
}

public 
open_invite_menu_handler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(id);
        return 
PLUGIN_HANDLED;
    }

    switch(
item)
    {
        case 
0:
        {
            
//code...
        
}

        case 
1:
        {
            
//get clanname and clantag
        
}
    }

    return 
PLUGIN_CONTINUE;

how can i pass clanname and clantag in handler function ?

i have no idea how to do this using menu natives but i saw a code a long time ago where the creator did smth like this

Last edited by lexzor; 10-03-2021 at 10:37.
lexzor is offline
Bugsy
AMX Mod X Moderator
Join Date: Feb 2005
Location: NJ, USA
Old 10-01-2021 , 17:53   Re: pass information through menu
Reply With Quote #2

3rd param in menu_additem and menu_item_getinfo

Here's how you can pack 2 strings in one:
PHP Code:
new const szClanName[] = "My Clan Name";
new const 
szClanTag[] = ".:Some Tag";
    
new 
iMenu szClanInfo32 ];
new 
iClanNameEndPos formatexszClanInfo] , charsmaxszClanInfo ) - szClanName szClanName );
server_print"endpos=%d" iClanNameEndPos );
szClanInfoiClanNameEndPos ] = 'Z';
copyszClanInfoiClanNameEndPos ] , charsmaxszClanInfo ) - iClanNameEndPos szClanTag );
szClanInfo] = iClanNameEndPos;
menu_additemiMenu "my item" szClanInfo );
        
    
//In handler/callback
new iMenu iItem iAccess szInfo32 ] , szName32 ];
menu_item_getinfoiMenu iItem iAccess szInfo charsmaxszInfo ) , szName charsmaxszName ) );
copyszInfo charsmaxszInfo ) , szClanInfo );
szInfoszInfo] + ] = EOS;
server_print"Name=[%s] Tag=[%s]" szInfo] , szInfoszInfo] + ] ); 
__________________

Last edited by Bugsy; 10-01-2021 at 23:41.
Bugsy is offline
lexzor
Veteran Member
Join Date: Nov 2020
Old 10-02-2021 , 19:45   Re: pass information through menu
Reply With Quote #3

i really don t understand how to uset menu_item_getinfo

PHP Code:
public open_invite_menu(id, const clanname[], const clantag[], inviterid)
{
    new 
szData[64];
    
formatex(szDatacharsmax(szData), "%s#%s#%i"clannameclantaginviterid);
    new 
szTitle[64], szItem[2][64];
    
// string szdata is formated correct
    
formatex(szTitlecharsmax(szTitle), "%L"id"PLAYER_INVITED_MENU_TITLE"clanname);
    new 
iMenu menu_create(szTitle"open_invite_menu_handler");

    
formatex(szItem[0], charsmax(szItem[]), "%L"id"FIRST_OPTION");
    
menu_additem(iMenuszItem[0], szData);

    
formatex(szItem[1], charsmax(szItem[]), "%L"id"SECOND_OPTION");
    
menu_additem(iMenuszItem[1], szData);

    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL);
    
menu_display(idiMenu0);

how i get info
PHP Code:
new iInviteriMenuiItemiAccessszData[32], szClanName[32], szClanTag[32], szInviter[32];
    
menu_item_getinfo(iMenuiItemiAccessszDatacharsmax(szData))
    
replace_all(szDatacharsmax(szData), "#"" ");
    
parse(szDataszClanNamecharsmax(szClanName), szClanTagcharsmax(szClanTag), szInvitercharsmax(szInviter));

    
iInviter str_to_num(szInviter); 
the output of szData is empty. why ?

Last edited by lexzor; 10-02-2021 at 19:48.
lexzor is offline
Bugsy
AMX Mod X Moderator
Join Date: Feb 2005
Location: NJ, USA
Old 10-02-2021 , 19:47   Re: pass information through menu
Reply With Quote #4

Are you using it in your menu handler?
__________________
Bugsy is offline
lexzor
Veteran Member
Join Date: Nov 2020
Old 10-03-2021 , 10:15   Re: pass information through menu
Reply With Quote #5

yes

PHP Code:

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

    new 
szClanName[64], szClanTag[64];
    
copy(szClanNamecharsmax(szClanName), g_UserData[id][ClanName]);
    
copy(szClanTagcharsmax(szClanTag), g_UserData[id][ClanTag]);

    
item += 1;

    
/*if(!equal(g_UserData[item][ClanName], "NONE"))
    {
        client_print_color(id, print_team_default, "%s %L", g_szTag, id, "INVITED_ALREADY_MEMBER", g_UserData[item][szName], g_UserData[item][ClanName]);
        return PLUGIN_HANDLED;
    }*/

    
    
if(!is_user_connected(item))
    {
        
client_print_color(idprint_team_default"%s %L"g_szTagid"INVITED_PLAYER_OFFLINE");
        return 
PLUGIN_HANDLED;
    }

    
open_invite_menu(itemszClanNameszClanTagid); //OPEN INVITE MENU TO INVITED PLAYER AND PASSING CLANNAME, CLANTAG AND INVITER ID

    
client_print_color(idprint_team_default"%s %L"g_szTagid"INVITATION_SENT"g_UserData[item][szName]);

    return 
PLUGIN_CONTINUE;
}

public 
open_invite_menu(id, const clanname[], const clantag[], inviterid)
{
    new 
szData[64];
    
formatex(szDatacharsmax(szData), "%s#%s#%i"clannameclantaginviterid);
    new 
szTitle[64], szItem[2][64];
    
//if i print szdata it will shot it correct
    
formatex(szTitlecharsmax(szTitle), "%L"id"PLAYER_INVITED_MENU_TITLE"clanname);
    new 
iMenu menu_create(szTitle"open_invite_menu_handler");

    
formatex(szItem[0], charsmax(szItem[]), "%L"id"FIRST_OPTION");
    
menu_additem(iMenuszItem[0], szData);

    
formatex(szItem[1], charsmax(szItem[]), "%L"id"SECOND_OPTION");
    
menu_additem(iMenuszItem[1], szData); //passing string to handler

    
server_print("1szData: %s"szData);

    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL);
    
menu_display(idiMenu0);
}

public 
open_invite_menu_handler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(id);
        return 
PLUGIN_HANDLED;
    }

    new 
iInviteriMenuiAccessszData[32], szClanName[32], szClanTag[32], szInviter[32];
    
menu_item_getinfo(iMenuitemiAccessszDatacharsmax(szData));
    
replace_all(szDatacharsmax(szData), "#"" ");
    
parse(szDataszClanNamecharsmax(szClanName), szClanTagcharsmax(szClanTag), szInvitercharsmax(szInviter));
    
iInviter str_to_num(szInviter);
    
server_print("szData: %s, item: %i"szDataitem); // szdata is empty, item is printed correct

    
switch(item)
    {
        case 
0:
        {
            
client_print_color(iInviterprint_team_default"%s %L"g_szTagiInviter"INVITE_DECLINED"g_UserData[id][szName]);
            
client_print_color(idprint_team_default"%s %L"g_szTagid"PLAYER_DECLINED_INVITATION"g_UserData[iInviter][ClanName], g_UserData[iInviter][ClanName]);
        }

        case 
1:
        {
            
client_print_color(iInviterprint_team_default"%s %L"g_szTagiInviter"INVITE_ACCEPTED"g_UserData[id][szName]);
            
client_print_color(idprint_team_default"%s %L"g_szTagid"PLAYER_ACCEPTED_INVITATION"g_UserData[id][ClanName]);
            
copy(g_UserData[id][ClanName], charsmax(g_UserData[][ClanName]), g_UserData[iInviter][ClanName]);
            
copy(g_UserData[id][ClanTag], charsmax(g_UserData[][ClanTag]), g_UserData[iInviter][ClanTag]);
            
server_print("3 szClanName: %s, szClanTag: %s, iInviter: %i, userdataname: %s, userdatatag: %s"szClanNameszClanTagiInviterg_UserData[iInviter][ClanName], g_UserData[iInviter][ClanTag]);
            
set_player_clan(idszClanName);
        }
    }

    return 
PLUGIN_CONTINUE;
}

public 
set_player_clan(idclanname[])
{
    
server_print("set_player_clan clanname:%s");
    new 
szQuery[512];
    
formatex(szQuerycharsmax(szQuery), "UPDATE `%s` SET `clan` = '%s' WHERE `steamid` = '%s'"clannameg_UserData[id][szAuthid]);
    
server_print("set_player_clan, clanname: %s"clanname);
    
SQL_ThreadQuery(g_SqlTuple"FreeHandle"szQuery);

    new 
szQuery2[512];
    
formatex(szQuerycharsmax(szQuery), "INSERT INTO `%s` \
    (`member_name`,`steamid`,`is_clan_leader`,`is_second_leader`) \
    VALUES \
    ('%s','%s','0','0')"
clannameg_UserData[id][szName], g_UserData[id][szAuthid]);
    
SQL_ThreadQuery(g_SqlTuple"FreeHandle"szQuery2);


Last edited by lexzor; 10-03-2021 at 10:30.
lexzor is offline
lexzor
Veteran Member
Join Date: Nov 2020
Old 10-03-2021 , 10:37   Re: pass information through menu
Reply With Quote #6

solved

actually i created a new variable for menu identifier

so
PHP Code:
menu_item_getinfo(iMenuitemiAccessszDatacharsmax(szData)); 
->

PHP Code:
menu_item_getinfo(menuitemiAccessszDatacharsmax(szData)); 
Thanks
lexzor is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


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


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