Switch & case
#1

Hey!

My question is.. is there some other way to make this values to let it compile? Because Pawncc says me it's a duplicate of case. Is there any solution?

pawn Code:
switch(newexperience)
    {
        case 1000..2500:        SetPlayerLevel(playerid, 2);
        case 2500..4500:        SetPlayerLevel(playerid, 3);
        case 4500..7000:        SetPlayerLevel(playerid, 4);
        case 7000..10000:       SetPlayerLevel(playerid, 5);
        case 10000..13500:      SetPlayerLevel(playerid, 6);
        case 13500..17500:      SetPlayerLevel(playerid, 7);
        case 17500..22000:      SetPlayerLevel(playerid, 8);
        case 22000..27000:      SetPlayerLevel(playerid, 9);
        case 27000..32500:      SetPlayerLevel(playerid, 10);
        case 32500..38500:      SetPlayerLevel(playerid, 11);
        case 38500..45500:      SetPlayerLevel(playerid, 12);
        case 45500..53000:      SetPlayerLevel(playerid, 13);
        case 53000..61000:      SetPlayerLevel(playerid, 14);
        case 61000..69500:      SetPlayerLevel(playerid, 15);
        case 69500..78500:      SetPlayerLevel(playerid, 16);
        case 78500..88000:      SetPlayerLevel(playerid, 17);
        case 88000..98000:      SetPlayerLevel(playerid, 18);
        case 98000..108500:     SetPlayerLevel(playerid, 19);
        case 108500:            SetPlayerLevel(playerid, 20);
        default:                SetPlayerLevel(playerid, 1);
    }
P.S
I won't use 'if'

edit://
By the way, this one works fine, but it's taking ages to compile script (i've just remove a one amount of value)
pawn Code:
switch(newexperience)
    {
        case 1000..2499:        SetPlayerLevel(playerid, 2);
        case 2500..4499:        SetPlayerLevel(playerid, 3);
        case 4500..6999:        SetPlayerLevel(playerid, 4);
        case 7000..9999:       SetPlayerLevel(playerid, 5);
        case 10000..13499:      SetPlayerLevel(playerid, 6);
        case 13500..17499:      SetPlayerLevel(playerid, 7);
        case 17500..21999:      SetPlayerLevel(playerid, 8);
        case 22000..26999:      SetPlayerLevel(playerid, 9);
        case 27000..32499:      SetPlayerLevel(playerid, 10);
        case 32500..38499:      SetPlayerLevel(playerid, 11);
        case 38500..45499:      SetPlayerLevel(playerid, 12);
        case 45500..52999:      SetPlayerLevel(playerid, 13);
        case 53000..60999:      SetPlayerLevel(playerid, 14);
        case 61000..69499:      SetPlayerLevel(playerid, 15);
        case 69500..78499:      SetPlayerLevel(playerid, 16);
        case 78500..87999:      SetPlayerLevel(playerid, 17);
        case 88000..97999:      SetPlayerLevel(playerid, 18);
        case 98000..108499:     SetPlayerLevel(playerid, 19);
        case 108500:            SetPlayerLevel(playerid, 20);
        default:                SetPlayerLevel(playerid, 1);
    }
Reply
#2

You can't use the same number on different cases.

pawn Code:
switch(newexperience)
{
    case 1000..2499: SetPlayerLevel(playerid, 2);//These 2 are now ok
    case 2500..4499: SetPlayerLevel(playerid, 3);
   
   
    case 4500..7000: SetPlayerLevel(playerid, 4);//7000
    case 7000..10000: SetPlayerLevel(playerid, 5);//and 7000 are duplicates (not allowed)
   
    default: SetPlayerLevel(playerid, 1);
}
Reply
#3

Yep, read my first post again. But it's preety stupid that takes a long time to compile.
Reply
#4

If you think about it, that is really a HUGE switch statement. It will always take long to compile.
Reply
#5

So, that sounds like i just need to stay to 'if'

pawn Code:
if(newexperience >= 1000 && newexperience < 2500)           SetPlayerLevel(playerid, 2);
    else if(newexperience >= 2500 && newexperience < 4500)      SetPlayerLevel(playerid, 3);
    else if(newexperience >= 4500 && newexperience < 7000)      SetPlayerLevel(playerid, 4);
    else if(newexperience >= 7000 && newexperience < 10000)     SetPlayerLevel(playerid, 5);
    else if(newexperience >= 10000 && newexperience < 13500)    SetPlayerLevel(playerid, 6);
    else if(newexperience >= 13500 && newexperience < 17500)    SetPlayerLevel(playerid, 7);
    else if(newexperience >= 17500 && newexperience < 22000)    SetPlayerLevel(playerid, 8);
    else if(newexperience >= 22000 && newexperience < 27000)    SetPlayerLevel(playerid, 9);
    else if(newexperience >= 27000 && newexperience < 32500)    SetPlayerLevel(playerid, 10);
    else if(newexperience >= 32500 && newexperience < 38500)    SetPlayerLevel(playerid, 11);
    else if(newexperience >= 38500 && newexperience < 45500)    SetPlayerLevel(playerid, 12);
    else if(newexperience >= 45500 && newexperience < 53000)    SetPlayerLevel(playerid, 13);
    else if(newexperience >= 53000 && newexperience < 61000)    SetPlayerLevel(playerid, 14);
    else if(newexperience >= 61000 && newexperience < 69500)    SetPlayerLevel(playerid, 15);
    else if(newexperience >= 69500 && newexperience < 78500)    SetPlayerLevel(playerid, 16);
    else if(newexperience >= 78500 && newexperience < 88000)    SetPlayerLevel(playerid, 17);
    else if(newexperience >= 88000 && newexperience < 98000)    SetPlayerLevel(playerid, 18);
    else if(newexperience >= 98000 && newexperience < 108500)   SetPlayerLevel(playerid, 19);
    else if(newexperience >= 108500)                            SetPlayerLevel(playerid, 20);
    else                                                        SetPlayerLevel(playerid, 1);
Oke, thanks.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)