[Ajuda] Sу funciona o primeiro case:
#1

Bom, concertei o sistema de org vip, mas agora os case estгo com problema, exemplo eu tenho 24 case pra minhas 24 orgs, do case 1 ao 24 vai usar o equiparOrgsNormais(playerid); que no caso й da stock equiparOrgsNormais(playerid)

PHP код:
stock equiparOrgsNormais(playerid) {
    
ResetPlayerWeapons(playerid);
    
SetPlayerArmour(playerid100.0);
    
SetPlayerHealth(playerid100.0);
    
GivePlayerWeapon(playerid11);
    
GivePlayerWeapon(playerid1610);
    
GivePlayerWeapon(playerid242001);
    
GivePlayerWeapon(playerid252001);
    
GivePlayerWeapon(playerid292001);
    
GivePlayerWeapon(playerid312001);
    
GivePlayerWeapon(playerid342001);
    
SendClientMessage(playerid, -1"{12FFEF}[ORG VIP]: {FFFFFF}Vocк pegou seus equipamentos!");
    new 
EuSouFoda[MAX_PLAYERS];
    
format(EuSouFodasizeof(EuSouFoda), "%s pegou seu equipamento de org VIP."PlayerName(playerid));
    
ProxDetector(30.0playeridEuSouFodaCOLOR_PURPLECOLOR_PURPLECOLOR_PURPLECOLOR_PURPLECOLOR_PURPLE);
    return 
true;

Somente as orgs 3, 6 e 15 usam a stock equiparOrgEBTER(playerid) que no caso й:

PHP код:
stock equiparOrgEBTER(playerid) {
    
ResetPlayerWeapons(playerid);
    
SetPlayerArmour(playerid100.0);
    
SetPlayerHealth(playerid100.0);
    
GivePlayerWeapon(playerid11);
    
GivePlayerWeapon(playerid1610);
    
GivePlayerWeapon(playerid242001);
    
GivePlayerWeapon(playerid27100);
    
GivePlayerWeapon(playerid292001);
    
GivePlayerWeapon(playerid312001);
    
GivePlayerWeapon(playerid342001);
    
GivePlayerWeapon(playerid364);
    
SendClientMessage(playerid, -1"{12FFEF}[ORG VIP]: {FFFFFF}Vocк pegou seus equipamentos!");
    new 
EuSouFoda[MAX_PLAYERS];
    
format(EuSouFodasizeof(EuSouFoda), "%s pegou seu equipamento de org VIP."PlayerName(playerid));
    
ProxDetector(30.0playeridEuSouFodaCOLOR_PURPLECOLOR_PURPLECOLOR_PURPLECOLOR_PURPLECOLOR_PURPLE);
    return 
true;

Com algumas armas a mais, mas as armas para todas as orgs vгo de acordo com a case: 1 se eu colocar na case um vai receber equiparOrgEBTER(playerid); todas as orgs recebem as armas equiparOrgEBTER(playerid); e se eu colocar na case: 1 equiparOrgsNormais(playerid); todas as orgs recebem na org vip as armas da stock equiparOrgsNormais(playerid)


Acho que deu pra entender, por que acontece isso?


Minhas cases:

PHP код:
switch(PlayerInfo[playerid][pMembro] || PlayerInfo[playerid][pLider]) {
                case 
1equiparOrgsNormais(playerid);
                case 
2equiparOrgsNormais(playerid);
                case 
3equiparOrgEBTER(playerid);
                case 
4equiparOrgsNormais(playerid);
                case 
5equiparOrgsNormais(playerid);
                case 
6equiparOrgEBTER(playerid);
                case 
7equiparOrgsNormais(playerid);
                case 
8equiparOrgsNormais(playerid);
                case 
9equiparOrgsNormais(playerid);
                case 
10equiparOrgsNormais(playerid);
                case 
11equiparOrgsNormais(playerid);
                case 
12equiparOrgsNormais(playerid);
                case 
13equiparOrgsNormais(playerid);
                case 
14equiparOrgsNormais(playerid);
                case 
15equiparOrgEBTER(playerid);
                case 
16equiparOrgsNormais(playerid);
                case 
17equiparOrgsNormais(playerid);
                case 
18equiparOrgsNormais(playerid);
                case 
19equiparOrgsNormais(playerid);
                case 
20equiparOrgsNormais(playerid);
                case 
21equiparOrgsNormais(playerid);
                case 
22equiparOrgsNormais(playerid);
                case 
23equiparOrgsNormais(playerid);
                case 
24equiparOrgsNormais(playerid);
                } 
Obrigado por quem tentar ajudar!
Reply
#2

A clбusula colocada no switch tem como respostas possнveis apenas 0 e 1.
Reply
#3

Mostre mais cуdigo na zona do switch pois o problema nгo parece estar ai

Porйm deve estar nos valores que vc estб a dar nessas variбveis que devem ser apenas true ou false
Reply
#4

Quote:
Originally Posted by PT
Посмотреть сообщение
Mostre mais cуdigo na zona do switch pois o problema nгo parece estar ai

Porйm deve estar nos valores que vc estб a dar nessas variбveis que devem ser apenas true ou false
Ele colocou uma condicional no switch. O resultado sempre serб 0 ou 1.
Reply
#5

Foi o que falei na segunda parte da resposta olha lб xD
Reply
#6

Eu acho que achei o erro, tenho que em vez de PlayerInfo[playerid][pMembro] || PlayerInfo[playerid][pLider] puxar as orgs como funзao, tenho elas em outro stock, mas como puxo elas como funзao para aquele switch?

PHP код:
stock getOrgName(Orgid) {
    new 
OrgName[25];
    switch(
Orgid) {
        case 
1OrgName "Polнcia Militar";
        case 
2OrgName "B.O.P.E";
        case 
3OrgName "Exйrcito";
        case 
4OrgName "SA:MU";
        case 
5OrgName "Aztecas";
        case 
6OrgName "Hamas";
        case 
7OrgName "Prefeito";
        case 
8OrgName "Hitmans";
        case 
9OrgName "Repуrter";
        case 
10OrgName "Tбxista";
        case 
11OrgName "Polнcia Federal";
        case 
12OrgName "Cosa Nostra";
        case 
13OrgName "Yakuza";
        case 
14OrgName "Grove Street";
        case 
15OrgName "Al'Qaeda";
        case 
16OrgName "Polнcia Civil";
        case 
17OrgName "Ballas";
        case 
18OrgName "Los Vagos";
        case 
19OrgName "Comando Vermelho";
        case 
20OrgName "Sons Of Anarchy";
        case 
21OrgName "Hells Angels";
        case 
22OrgName "Triads";
        case 
23OrgName "P.C.C";
        case 
24OrgName "Mecвnicos";
    }
    return 
OrgName;

Reply
#7

Vocк com certeza deve ter uma variбvel no enum do PlayerInfo que armazena o ID da org que o jogador faz parte, logo, sу precisa fazer isso:

pawn Код:
switch(PlayerInfo[playerid][pOrg]) { // coloca a variбvel que guarda o ID da org que o player participa
    case 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24: equiparOrgsNormais(playerid);
    case 3, 6, 15: equiparOrgEBTER(playerid);
}
Reply
#8

Nгo sei se resolvera mas tente usar a funзгo acima desse jeito:

pawn Код:
stock getOrgName(Orgid) {
    new OrgName[25];
    switch(Orgid) {
        case 1: OrgName = "Polнcia Militar"; break;
        case 2: OrgName = "B.O.P.E"; break;
        case 3: OrgName = "Exйrcito"; break;
        case 4: OrgName = "SA:MU"; break;
        case 5: OrgName = "Aztecas"; break;
        case 6: OrgName = "Hamas"; break;
        case 7: OrgName = "Prefeito"; break;
        case 8: OrgName = "Hitmans"; break;
        case 9: OrgName = "Repуrter"; break;
        case 10: OrgName = "Tбxista"; break;
        case 11: OrgName = "Polнcia Federal"; break;
        case 12: OrgName = "Cosa Nostra"; break;
        case 13: OrgName = "Yakuza"; break;
        case 14: OrgName = "Grove Street"; break;
        case 15: OrgName = "Al'Qaeda"; break;
        case 16: OrgName = "Polнcia Civil"; break;
        case 17: OrgName = "Ballas"; break;
        case 18: OrgName = "Los Vagos"; break;
        case 19: OrgName = "Comando Vermelho"; break;
        case 20: OrgName = "Sons Of Anarchy"; break;
        case 21: OrgName = "Hells Angels"; break;
        case 22: OrgName = "Triads"; break;
        case 23: OrgName = "P.C.C"; break;
        case 24: OrgName = "Mecвnicos"; break;
    }
    return OrgName;
}
E tambйm acho que nгo tem como vocк utilizar o operador "||" no switch.

Bom lembrar que o switch й uma condiзгo que necessita do comando break; no final de cada case por conta da linha abaixo poder ser chamada automaticamente.
Reply
#9

Nunca usei break em nenhuma switch, nunca deu problema.
Reply
#10

Quote:
Originally Posted by matheusspohr
Посмотреть сообщение
Nunca usei break em nenhuma switch, nunca deu problema.
Nгo sei no pawn, faz muito tempo q nгo programo isso e nem usava o switch, no PHP й assim, acredito que nгo mude muita coisa em relaзгo ao pawn mas sei la, vale a pena tentar.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)