Raised This Month: $ Target: $400
 0% 

Restricting classes based on level.


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
egbertjan
Senior Member
Join Date: Mar 2007
Location: The Netherlands
Old 10-29-2011 , 06:16   Restricting classes based on level.
Reply With Quote #1

Hello,

I've been asking for this somewhere else, but no replies so I tried to work on it a little bit myself.

The idea is to restrict a class based on the total amount of levels all your classes got combined.

Currently I got it like this:
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"); 
    new 
AllClasses lx[1] + lx[2] + lx[3] + lx[4] + lx[5] + lx[6] + lx[7] + lx[8] + lx[9] + lx[10] + lx[11] + lx[12];
    
    
    
formatex(szTextcharsmax(szText), "Select Class ^nTotal Levels: %d^nPage: ",AllClasses)
    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)

    
formatex(szTextcharsmax(szText), "Sniper^t^tLevel: %d"lx[11])
    
menu_additem(ClassMenuszText"11", .callback iCallBack)
    
    
formatex(szTextcharsmax(szText), "Priest^t^tLevel: %d"lx[12])
    
menu_additem(ClassMenuszText"12", .callback iCallBack)
    
    
formatex(szTextcharsmax(szText), "Stalker (Donator)^t^tLevel: %d"lx[10])
    
menu_additem(ClassMenuszText"10"ADMIN_LEVEL_F)    
  
            
    
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[13]
    
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

/* ================================================================================ */
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
        
}
        case 
10:
        {
            
player_class[id] = Stalker
        
}    
        case 
11:
        {
            
player_class[id] = Sniper
        
}        
        case 
12:
        {
            
player_class[id] = Priest
        
}
    }
    if (
player_class[id] == Ninja || player_class[id] == Assassin) {
    
client_cmd(id,"_cl_autowepswitch 0")
    } else {
    
client_cmd(id,"_cl_autowepswitch 1")
    }
    
    
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
}  
/* ================================================================================ */ 
As you could see I figured out how to select all levels together, but I would also like the make a restriction. When you are level 50 (or any other kind of level) there has to be a check if he has passed a certain amount of total level. So I tried to make this check, but I failed at it.

I was thinking to make a check for example:

PHP Code:
/* ================================================================================ */
public select_class(id,lx[])
{
    new 
boolpassedcheck[33
    new 
AllClasses lx[1] + lx[2] + lx[3] + lx[4] + lx[5] + lx[6] + lx[7] + lx[8] + lx[9] + lx[10] + lx[11] + lx[12];
    if(
is_user_bot(id)) return
    if (
AllClasses 100) {
    
passedcheck[id] = true
    
} else {
    
passedcheck[id] = false
    
}
    if (
player_lvl[id] > 50 && passedcheck[id]) {
    
asked_klass[id]=0
    
    
new szText[555 char]
    new 
iCallBack menu_makecallback("CheclItemEnabled"); 
    
    
    
    
formatex(szTextcharsmax(szText), "Select Class ^nTotal Levels: %d^nPage: ",AllClasses)
    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)

    
formatex(szTextcharsmax(szText), "Sniper^t^tLevel: %d"lx[11])
    
menu_additem(ClassMenuszText"11", .callback iCallBack)
    
    
formatex(szTextcharsmax(szText), "Priest^t^tLevel: %d"lx[12])
    
menu_additem(ClassMenuszText"12", .callback iCallBack)
    
    
formatex(szTextcharsmax(szText), "Stalker (Donator)^t^tLevel: %d"lx[10])
    
menu_additem(ClassMenuszText"10"ADMIN_LEVEL_F)    
      
    
menu_setprop(ClassMenuMPROP_EXIT MEXIT_NEVER);
    
menu_display(idClassMenu0);
    } else {
    
changerace(id)
    
client_print(id,print_chat,"[Diablo Mod] You have to level other classes before you can continue this class.")
    }


/* ================================================================================ */ 
But now it is setting the message upon trying to select the class all the time. I assume because he cannot select a class and so cannot load the level and so an endless loop.
Does anyone have a suggestion? Please tell me, I am really in need of this.
egbertjan is offline
 



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 14:25.


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