15.03.2011, 22:55
Bom, nгo achei tutorial sobre switch no search entгo resolvi criar um.
O que й o switch?
Switch й como um substituto ao if e else if, nгo й tгo eficaz mas й muito parecido e em alguns casos atй melhor por ser mais organizado.
Qual a diferenзa entre o else if e o switch?
Vamos tomar por exemplo o comando /admins, em vez de vocк criar um if seguido de vбrios else if pra cada nнvel de admin a aparecer no /admins voce sу irб precisar criar um switch(funзгo) seguido de cases, o case servirб como o else if mas de uma maneira mais compacta pois sу armazenarб o numero(enum) a ser verificado, abaixo o exemplo do /admins por if e o /admins por switch.
O exemplo acima mostra como seria um /admins usando else if, veja como ficaria este comando usando switch abaixo
Criando o seu switch:
Crie seu switch com a funзгo a ser verificada que quiser, mas siga este formato abaixo:
Vocк pode tambйm modificar a forma do case, pra procurar por mais de um resultado como no exemplo abaixo:
em um if vocк teria que usar algo maior como este abaixo
Vocк pode tambйm verificar resultados de um numero a outro, como no exemplo abaixo.
Em if ficaria assim
Abaixo um exemplo bem distinto dos cases:
Crйditos: Chainksain que me ensinou usar Switch.
Crнticas: Manda brasa.
Sugestхes: Sу falar.
Bom, procurei mas nгo achei, se jб tiver outro tutorial de switch moderador sinta-se avontade pra apagar.
Vi que muita gente nгo sabia o que era switch, espero que gostem.
O que й o switch?
Switch й como um substituto ao if e else if, nгo й tгo eficaz mas й muito parecido e em alguns casos atй melhor por ser mais organizado.
Qual a diferenзa entre o else if e o switch?
Vamos tomar por exemplo o comando /admins, em vez de vocк criar um if seguido de vбrios else if pra cada nнvel de admin a aparecer no /admins voce sу irб precisar criar um switch(funзгo) seguido de cases, o case servirб como o else if mas de uma maneira mais compacta pois sу armazenarб o numero(enum) a ser verificado, abaixo o exemplo do /admins por if e o /admins por switch.
pawn Код:
if (strcmp(cmd, "/admins", true) == 0)
{
for(new i = 0; i <= MAX_PLAYERS; i++) {
if(IsPlayerConnected(i) == 1 && PlayerInfo[i][pAdmin] > 0) {
if(PlayerInfo[i][pTrampo] == 1) { GetPlayerName(i, sendername, sizeof(sendername));
if(PlayerInfo[i][pAdmin] == 1)
{
format(string, 256, "Nome: %s [Moderador] (Trabalhando)", sendername);
SendClientMessage(playerid, COR_ADMINS, string);
}
if(PlayerInfo[i][pAdmin] == 2)
{
format(string, 256, "Nome: %s [Administraзгo Nнvel 2] (Trabalhando)", sendername);
SendClientMessage(playerid, COR_ADMINS, string);
}
if(PlayerInfo[i][pAdmin] == 3)
{
format(string, 256, "Nome: %s [ Administraзгo Nнvel 3] (Trabalhando)", sendername);
SendClientMessage(playerid, COR_ADMINS, string);
}
}
}
return 1;
}
pawn Код:
if (strcmp(cmd, "/admins", true) == 0) {
for(new i = 0; i <= MAX_PLAYERS; i++) {
switch(PlayerInfo[i][pAdmin])//Funзгo a ser verificada {
case 1: { format(string, 256, "Nome: %s [Moderador] (Trabalhando)", sendername);
SendClientMessage(playerid, COR_ADMINS, string); //Se a funзгo verificada for igual a 1 }
case 2: { format(string, 256, "Nome: %s [Administrador nнvel 2] (Trabalhando)", sendername);
SendClientMessage(playerid, COR_ADMINS, string); //Se a funзгo verificada for igual a 2 }
case 3: { format(string, 256, "Nome: %s [Administrador nнvel 3] (Trabalhando)", sendername);
SendClientMessage(playerid, COR_ADMINS, string); //Se a funзгo verificada for igual a 3 }
default: { Aqui a funзгo a ser execultada caso nada se iguale aos resultados acima. } } }
return 1;
}
Crie seu switch com a funзгo a ser verificada que quiser, mas siga este formato abaixo:
pawn Код:
switch (Funзгo) //Coloque por exemplo um PlayerInfo[player][info] ou qualquer outra coisa
{
case 1: { O que deve ser executado caso seja igual a 1 }
case 2: { O que deve ser executado caso seja igual a 2 }
case 3: { O que deve ser executado caso seja igual a 3 }
default: { O que deve ser executado caso nгo seja igual aos exemplos acima } //Nгo obrigatуrio
}
pawn Код:
case 1, 2, 3: { O que deve ser executado caso seja igual a 1, 2 ou 3 }
pawn Код:
if (Funзгo == 1 || Funзгo == 2 || Funзгo == 3) { O que deve ser executado caso a funзгo seja igual a 1, 2 ou 3 return 1; }
pawn Код:
case 1 .. 10: { O que deve ser executado caso o resultado se enquadre entre 1 e 10 }
pawn Код:
if (Funзгo >= 1 && Funзгo <= 3) { O que deve ser executado caso a Funзгo se enquadre entre ou igual 1 ou 4 return 1; }
pawn Код:
if (strcmp(cmd, "/org", true) == 0)
{
switch (PlayerInfo[playerid][pMembro])
{
case 1 .. 3:
{
SendClientMessage(playerid, Cor, "Vocк pertence a uma org igual ou entre 1 e 3");
}
case 7, 8, 10:
{
SendClientMessage(playerid, Cor, "Vocк pertence a org 7, 8 ou 10");
}
case 4:
{
SendClientMessage(playerid, Cor, "Vocк pertence a org 4");
}
default:
{
SendClientMessage(playerid, Cor, "Vocк pertence a uma org que nгo й 1, 2, 3, 4, 7, 8 ou 10");
}
}
return 1:
}
Crнticas: Manda brasa.
Sugestхes: Sу falar.
Bom, procurei mas nгo achei, se jб tiver outro tutorial de switch moderador sinta-se avontade pra apagar.
Vi que muita gente nгo sabia o que era switch, espero que gostem.