Does This Need Else If?
#1

pawn Код:
stock UpdateRank(playerid)
{
    new string[128];
    if(PInfo[playerid][Owner] == 1) return format(pRank[playerid],128,"Server Owner");
    if(PInfo[playerid][Level] < 500) return format(pRank[playerid],128,"Administrator");
    if(PInfo[playerid][Missionspassed] >= 0 && PInfo[playerid][Missionspassed] < 10) return format(pRank[playerid],128,"New Trucker");
    if(PInfo[playerid][Missionspassed] >= 10 && PInfo[playerid][Missionspassed] < 25) return format(pRank[playerid],128,"Trucker");
    if(PInfo[playerid][Missionspassed] >= 25 && PInfo[playerid][Missionspassed] < 45) return format(pRank[playerid],128,"Advancing Trucker");
    if(PInfo[playerid][Missionspassed] >= 45 && PInfo[playerid][Missionspassed] < 65) return format(pRank[playerid],128,"Advanced Trucker");
    if(PInfo[playerid][Missionspassed] >= 65 && PInfo[playerid][Missionspassed] < 90) return format(pRank[playerid],128, "Respected Trucker");
    if(PInfo[playerid][Missionspassed] >= 90 && PInfo[playerid][Missionspassed] < 115) return format(pRank[playerid],128,"Trucking Maniac");
    if(PInfo[playerid][Missionspassed] >= 115 && PInfo[playerid][Missionspassed] < 145) return format(pRank[playerid],128,"Trucking is my life!");
    if(PInfo[playerid][Missionspassed] >= 145 && PInfo[playerid][Missionspassed] < 170) return format(pRank[playerid],128,"Trucking Addicted");
    if(PInfo[playerid][Missionspassed] >= 170) return pRank[playerid] = "Trucking God";
    format(string,sizeof(string),"%s",pRank[playerid]);
    Update3DTextLabelText(Ranklbl[playerid],green2,string);
    return 1;
}
Reply
#2

In short, no.
Reply
#3

Not needed - But I read on the internet that it's better to do

pawn Код:
if
else if
else if
else if
else if
Reply
#4

I think it will be much better to use
pawn Код:
else if
Reply
#5

I have to inform you your function will stop executing mid-way, because you're using return where it is not needed at all. So only the variable will be updated, not the text label.
Reply
#6

couldn't be bothered adding brackets for you..

pawn Код:
stock UpdateRank(playerid)
{
    new string[40];
    if(PInfo[playerid][Missionspassed] >= 0 && PInfo[playerid][Missionspassed] < 10) format(pRank[playerid], 15, "New Trucker");
    else if(PInfo[playerid][Missionspassed] >= 10 && PInfo[playerid][Missionspassed] < 25) format(pRank[playerid],10,"Trucker");
    else if(PInfo[playerid][Missionspassed] >= 25 && PInfo[playerid][Missionspassed] < 45) format(pRank[playerid],20,"Advancing Trucker");
    else if(PInfo[playerid][Missionspassed] >= 45 && PInfo[playerid][Missionspassed] < 65) format(pRank[playerid],20,"Advanced Trucker");
    else if(PInfo[playerid][Missionspassed] >= 65 && PInfo[playerid][Missionspassed] < 90) format(pRank[playerid],20, "Respected Trucker");
    else if(PInfo[playerid][Missionspassed] >= 90 && PInfo[playerid][Missionspassed] < 115) format(pRank[playerid],20,"Trucking Maniac");
    else if(PInfo[playerid][Missionspassed] >= 115 && PInfo[playerid][Missionspassed] < 145) format(pRank[playerid],21,"Trucking is my life!");
    else if(PInfo[playerid][Missionspassed] >= 145 && PInfo[playerid][Missionspassed] < 170) format(pRank[playerid],20,"Trucking Addicted");
    else if(PInfo[playerid][Missionspassed] >= 170) pRank[playerid] = "Trucking God";
    else format(string, sizeof(string), "%s", pRank[playerid]);
    if(PInfo[playerid][Owner] == 1) strcat(pRank[playerid], "- Server Owner", 40);
    if(PInfo[playerid][Level] < 500) strcat(pRank[playerid], "- Administrator", 40);
    Update3DTextLabelText(Ranklbl[playerid], green2, string);
    return 1;
}
Reply
#7

Better to use switch, actually.

pawn Код:
switch(PInfo[playerid][Missionspassed])
{
    case 0..9: {}
    case 10..24: {}
    case 25..44: {}
    case 45..64: {}
    case 65..89: {}
    case 90..114: {}
    case 115..144: {}
    case 145..169: {}
    default: {}
}
Reply
#8

Also, don't use format to copy strings, use this instead:
pawn Код:
#define strcpy(%0,%1,%2) \
    strcat((%0[0] = '\0', %0), %1, %2)

//format(pRank[playerid], 15, "New Trucker");
strcpy(pRank[playerid], "New Trucker", 15);
Macro by ******
Reply
#9

Using switch is indeed the best thing here. But to answer the else-question: Else is a good thing to use here, as it can safe you 50% of the conditions and so optimizes the code a lot:

pawn Код:
stock UpdateRank(playerid)
{
    new string[128];
    if(PInfo[playerid][Owner] == 1) return format(pRank[playerid],128,"Server Owner");
    if(PInfo[playerid][Level] < 500) return format(pRank[playerid],128,"Administrator");
    if(PInfo[playerid][Missionspassed] >= 0 && PInfo[playerid][Missionspassed] < 10) return format(pRank[playerid],128,"New Trucker");
    else if(/*PInfo[playerid][Missionspassed] >= 10 && */PInfo[playerid][Missionspassed] < 25) return format(pRank[playerid],128,"Trucker");
    else if(/*PInfo[playerid][Missionspassed] >= 25 && */PInfo[playerid][Missionspassed] < 45) return format(pRank[playerid],128,"Advancing Trucker");
    // first condition is already checked, so not needed
    // ...
}
Reply
#10

pawn Код:
format(pRank[playerid],128,"New Trucker");
Guys, what's with this?!

Did the more efficient version stop working all of the sudden?
pawn Код:
pRank[playerid] = "New Trucker";
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)