AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   [Help] Merging old and new menu script (https://forums.alliedmods.net/showthread.php?t=168662)

egbertjan 10-02-2011 10:21

[Help] Merging old and new menu script
 
Hello,

I wanted to merge the old and the new menu used to select my class, but I kinda failed doing so.
The old script looks like this:
PHP Code:

public select_class(id,lx[])
{
    if(
is_user_bot(id)) return
    new 
flags[11]
    
get_cvar_string("diablo_classes",flags,10)
    new 
text[512]
    new 
keys read_flags(flags)
    
    
asked_klass[id]=0
    
    format
(text511,"\ySelect Class - ^n")
    
    for(new 
i=0;i<9;i++)
    {
        
format(text511,"%s%s%d. %s  Level :%d ^n",text,(keys)&(1<<i)?"\w":"\d",i+1,Race[i+1], lx[i+1])
    }
    

    
show_menu(idkeystext


And the new one will look something like this:

PHP Code:

public select_class(id,lx)
{
    new 
menu menu_create("\rSelect class:""select_class_menu");
    
menu_additem(menu"\wMage""1"0);
    
menu_additem(menu"\wMonk""2"0);
    
menu_additem(menu"\wPaladin""3"0);
    
menu_additem(menu"\wAssassin""4"0);
    
menu_additem(menu"\wNecromancer""5"0);
    
menu_additem(menu"\wBarbarian""6"0);
    
menu_additem(menu"\wNinja""7"0);
    
menu_additem(menu"\wDemonHunter""8"0);
    
menu_additem(menu"\wPirate""9"0);
    
menu_setprop(menuMPROP_EXITMEXIT_ALL);
    
menu_display(idmenu0);


There are 2 important things for me.
1) When the menu comes up I want to see the level the class is (Mage Level: xx
2) Currently the menu is based on cvars, when certain cvars are disabled that means that the class is also disabled.

PHP Code:

register_cvar("diablo_classes""abcdefghi")   
// a Mage 
// b Paladin 
// c Monk 
// d Assassin    
// e Barbarian 
// f Necromancer 
// g Ninja
// h Demon Hunter 
// i Pirate 

And the select menu:
PHP Code:

public select_class_menu(idkey

    
g_haskit[id] = 0
    
switch(key
    { 
        case 
0
        {    
            
player_class[id] = Mage    
        
}
        case 
1
        {    
            
player_class[id] = Monk
        
}
        case 
2
        {    
            
player_class[id] =  Paladin
            
for (new i=033i++){
            
count_jumps(i)
            
JumpsLeft[i]=JumpsMax[i]
            }
        }
        case 
3
        {    
            
player_class[id] = Assassin
        
}
        case 
4
        {            
            
player_class[id] = Necromancer
            g_haskit
[id] = 1
        
}
        case 
5
        {    
            
player_class[id] = Barbarian    
        
}
        case 
6
        {    
            
player_class[id] = Ninja
        
}
        case 
7
        {    
            
player_class[id] = Demon_Hunter
            g_GrenadeTrap
[id] = 1
        
}    
        case 
8
        {    
            
player_class[id] = Pirate
        
}        
        
    }
    
client_print(id,print_chat,"[Diablo Mod] Type /classinfo to get more information about your class!")
    
LoadXP(idplayer_class[id])
    
CurWeapon(id)
    
give_knife(id)
    return 
PLUGIN_HANDLED


Thanks in advance.

Gooogle 10-02-2011 13:36

Re: [Help] Merging old and new menu script
 
PHP Code:

public select_class(id,lx[])
{
    if(
is_user_bot(id)) return
    
    
asked_klass[id]=0
    
    
new szText[555 char]
    
    
//formatex(szText, charsmax(szText), "Select Class")
    
new ClassMenu menu_create("Select Class""select_class_menu")
        
    
formatex(szTextcharsmax(szText), "Mage^t^tLevel: %d"lx[1])
    
menu_additem(ClassMenuszText"1"0)
        
    
formatex(szTextcharsmax(szText), "Monk^t^tLevel: %d"lx[2])
    
menu_additem(ClassMenuszText"2"0)
    
    
formatex(szTextcharsmax(szText), "Paladin^t^tLevel: %d"lx[3])
    
menu_additem(ClassMenuszText"3"0)
    
    
formatex(szTextcharsmax(szText), "Assassin^t^tLevel: %d"lx[4])
    
menu_additem(ClassMenuszText"4"0)
    
    
formatex(szTextcharsmax(szText), "Necromancer^t^tLevel: %d"lx[5])
    
menu_additem(ClassMenuszText"5"0)
    
    
formatex(szTextcharsmax(szText), "Barbarian^t^tLevel: %d"lx[6])
    
menu_additem(ClassMenuszText"6"0)

    
formatex(szTextcharsmax(szText), "Ninja^t^tLevel: %d"lx[7])
    
menu_additem(ClassMenuszText"7"0)
    
    
formatex(szTextcharsmax(szText), "Demon Hunter^t^tLevel: %d"lx[8])
    
menu_additem(ClassMenuszText"8"0)
    
    
formatex(szTextcharsmax(szText), "Pirate^t^tLevel: %d"lx[9])
    
menu_additem(ClassMenuszText"9"0)
        
    
menu_setprop(ClassMenuMPROP_EXIT MEXIT_NEVER);
    
menu_display(idClassMenu0);



public 
select_class_menu(idClassMenuitem

    if(
item == MENU_EXIT)
    {
        
menu_destroy(ClassMenu);
        return 
PLUGIN_HANDLED;
    }
    
    new 
Data[7], Name[64];
    new 
AccessCallback;
    
menu_item_getinfo(ClassMenuitemAccessData,5Name63Callback);
    
    new 
Key str_to_num(Data);
    
g_haskit[id] = 0
    
    
switch(Key
    { 
        case 
1:
        {
            
player_class[id] = Mage
        
}
        case 
2
        {    
            
player_class[id] = Monk
        
}
        case 
3
        {    
            
player_class[id] = Paladin
            
            
for (new i=033i++){
                
count_jumps(i)
                
JumpsLeft[i]=JumpsMax[i]
            }
        }
        case 
4
        {    
            
player_class[id] = Assassin
        
}
        case 
5
        {    
            
player_class[id] = Necromancer
            g_haskit
[id] = 1
        
}
        case 
6
        {    
            
player_class[id] = Barbarian
        
}
        case 
7:
        {
            
player_class[id] = Ninja
        
}
        case 
8:
        {
            
player_class[id] = Demon_Hunter
            g_GrenadeTrap
[id] = 1
        
}
        case 
9:
        {
            
player_class[id] = Pirate
        
}
    }
    
    
client_print(id,print_chat,"[Diablo Mod] Type /classinfo to get more information about your class!")
    
LoadXP(idplayer_class[id])
    
CurWeapon(id)
    
give_knife(id)
    
    return 
PLUGIN_HANDLED


That should work.

egbertjan 10-02-2011 13:40

Re: [Help] Merging old and new menu script
 
That's just awesome! Thank you very much!

Edit: The restrictions don't work propperly.

Gooogle 10-02-2011 13:43

Re: [Help] Merging old and new menu script
 
Restrictions?

egbertjan 10-02-2011 13:55

Re: [Help] Merging old and new menu script
 
Yes, at the first post :
PHP Code:

    get_cvar_string("diablo_classes",flags,10)
    new 
keys read_flags(flags

Those flags represent the flags used per class. Lets say Mage has flag a, Monk flag b, Paladin flag c etcetra.
diablo_classes "abcdefghi" means all classes are pickable, but when I do for instance diablo_classes "abcdefgh" then the Pirate class is not pickable.

fysiks 10-02-2011 14:00

Re: [Help] Merging old and new menu script
 
You have to use a callback on each of the menu items and in the callback check if the class is enable or disables.

Connor already did it for you: http://forums.alliedmods.net/showpos...&postcount=339

egbertjan 10-02-2011 14:11

Re: [Help] Merging old and new menu script
 
Thanks fysiks, I didn't quite understand what connor posted there, but since I'm trying to learn every day now I got it working by testing it here and there.
The outcome is now:
PHP Code:

/* ================================================================================ */
public select_class(id,lx[])
{
    if(
is_user_bot(id)) return
    
    
asked_klass[id]=0
    
    
new szText[555 char]
    new 
iCallBack menu_makecallback("CheclItemEnabled"); 
    
    
formatex(szTextcharsmax(szText), "Select Class")
    new 
ClassMenu menu_create(szText"select_class_menu")
        
    
formatex(szTextcharsmax(szText), "Mage^t^tLevel: %d"lx[1])
    
menu_additem(ClassMenuszText"1", .callback iCallBack)
        
    
formatex(szTextcharsmax(szText), "Monk^t^tLevel: %d"lx[2])
    
menu_additem(ClassMenuszText"2", .callback iCallBack)
    
    
formatex(szTextcharsmax(szText), "Paladin^t^tLevel: %d"lx[3])
    
menu_additem(ClassMenuszText"3", .callback iCallBack)
    
    
formatex(szTextcharsmax(szText), "Assassin^t^tLevel: %d"lx[4])
    
menu_additem(ClassMenuszText"4", .callback iCallBack)
    
    
formatex(szTextcharsmax(szText), "Necromancer^t^tLevel: %d"lx[5])
    
menu_additem(ClassMenuszText"5", .callback iCallBack)
    
    
formatex(szTextcharsmax(szText), "Barbarian^t^tLevel: %d"lx[6])
    
menu_additem(ClassMenuszText"6", .callback iCallBack)

    
formatex(szTextcharsmax(szText), "Ninja^t^tLevel: %d"lx[7])
    
menu_additem(ClassMenuszText"7", .callback iCallBack)
    
    
formatex(szTextcharsmax(szText), "Demon Hunter^t^tLevel: %d"lx[8])
    
menu_additem(ClassMenuszText"8", .callback iCallBack)
    
    
formatex(szTextcharsmax(szText), "Pirate^t^tLevel: %d"lx[9])
    
menu_additem(ClassMenuszText"9", .callback iCallBack)
        
    
menu_setprop(ClassMenuMPROP_EXIT MEXIT_NEVER);
    
menu_display(idClassMenu0);

/* ================================================================================ */
public CheclItemEnabled(idiMenuiItem)
{
    static 
diablo_classes
    
if( !diablo_classes )
    {
        
diablo_classes get_cvar_pointer("diablo_classes"// do this in plugin_init...
    
}
    new 
flags[11]
    
get_pcvar_string(diablo_classesflagscharsmax(flags))
    new 
Keys read_flags(flags)

    return 
Keys & (1<<iItem) ? ITEM_ENABLED ITEM_DISABLED // this will enable/disable the menu by disabling client keys and formatting with \d if disabled


Connor his script needed some modifing,b ut eventually I got it to work thanks to you three! :D
Thanks once again.


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

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