public OnPlayerEnterDynamicCP(playerid, checkpointid)
{
if(checkpointid == BusCP[0])
{
BusCP[1] = CreateDynamicCP(1547.3561,-2284.1187,13.4841,3.0,-1,-1,playerid,1000);
GameTextForPlayer(playerid, "Aguarde passageiros...", 3000, 3);
TogglePlayerControllable(playerid,0);
SetTimerEx("Linhas",3000, false,"i",playerid);
DestroyDynamicCP(BusCP[0]);
}
if(checkpointid == BusCP[1])
{
BusCP[2] = CreateDynamicCP(1400.5472,-2284.7380,13.4667,3.0,-1,-1,playerid,1000);
DestroyDynamicCP(BusCP[1]);
}
if(checkpointid == BusCP[2])
{
BusCP[3] = CreateDynamicCP(1368.4954,-2173.5496,13.4840,3.0,-1,-1,playerid,1000);
DestroyDynamicCP(BusCP[2]);
}
return 1;
}
if(//...){ } else if(//...){ } else if(//...){ } else{ } // Seu cуdigo if(checkpointid == BusCP[0]) { BusCP[1] = CreateDynamicCP(1547.3561,-2284.1187,13.4841,3.0,-1,-1,playerid,1000); GameTextForPlayer(playerid, "Aguarde passageiros...", 3000, 3); TogglePlayerControllable(playerid,0); SetTimerEx("Linhas",3000, false,"i",playerid); DestroyDynamicCP(BusCP[0]); } else if(checkpointid == BusCP[1]) { BusCP[2] = CreateDynamicCP(1400.5472,-2284.7380,13.4667,3.0,-1,-1,playerid,1000); DestroyDynamicCP(BusCP[1]); } else if(checkpointid == BusCP[2]) { BusCP[3] = CreateDynamicCP(1368.4954,-2173.5496,13.4840,3.0,-1,-1,playerid,1000); DestroyDynamicCP(BusCP[2]); }
Tenta destruir o checkpoint antes de setar um novo.
E tambйm aprenda a usar a funзгo switch, ela й usada especificamente para situaзхes assim, onde vocК tem que fazer vбrias verificaзхes. Mais uma coisa, para fazer mъltiplas verificaзхes com if, vocк deve fazer desse jeito: Code:
if(//...){ } else if(//...){ } else if(//...){ } else{ } // Seu cуdigo if(checkpointid == BusCP[0]) { BusCP[1] = CreateDynamicCP(1547.3561,-2284.1187,13.4841,3.0,-1,-1,playerid,1000); GameTextForPlayer(playerid, "Aguarde passageiros...", 3000, 3); TogglePlayerControllable(playerid,0); SetTimerEx("Linhas",3000, false,"i",playerid); DestroyDynamicCP(BusCP[0]); } else if(checkpointid == BusCP[1]) { BusCP[2] = CreateDynamicCP(1400.5472,-2284.7380,13.4667,3.0,-1,-1,playerid,1000); DestroyDynamicCP(BusCP[1]); } else if(checkpointid == BusCP[2]) { BusCP[3] = CreateDynamicCP(1368.4954,-2173.5496,13.4840,3.0,-1,-1,playerid,1000); DestroyDynamicCP(BusCP[2]); } |
new playerJobCheckpoint[MAX_PLAYERS] = -1; // Cria uma variбvel que tem valor padrгo de -1, ela й usada para checar qual o prуximo checkpoint sera setado CMD:trabalhar(playerid){ // Um exemplo de comando para setar o primeiro checkpoint para o player if(playerJob[playerid] == 0){ // Se for motorista de фnibus playerJobCheckpoint[playerid] = 0; // Usamos a variбvel SetPlayerCheckpoint(playerid, X, Y, Z, 3.0); // Coordenadas do primeiro checkpoint } } public OnPlayerEnterCheckpoint(playerid){ // Quando o player entra em um checkpoint switch(playerJobCheckpoint[playerid]){ // Vamos checar qual й o valor da variбvel que criamos case 0:{ // Se for 0, mostra o primeiro checkpoint para o player playerJobCheckpoint[playerid] = 1; // Ele entrou no primeiro checkpoint, entгo falamos que o prуximo й o 1 SetPlayerCheckpoint(playerid, 1547.3561, -2284.1187, 13.4841, 3.0); // Setamos o checkpoint GameTextForPlayer(playerid, "Aguarde passageiros...", 3000, 3); TogglePlayerControllable(playerid, 0); SetTimerEx("Linhas", 3000, false, "i", playerid); } case 1:{ // Quandpo ele entrar no prуximo checkpoint, vai ser chamado este case aqui, pois o valor da variavel й 1 agora playerJobCheckpoint[playerid] = 2; SetPlayerCheckpoint(playerid, 1400.5472, -2284.7380, 13.4667, 3.0); } case 2:{ // E assim por diante... playerJobCheckpoint[playerid] = 2; SetPlayerCheckpoint(playerid, 1368.4954, -2173.5496, 13.4840, 3.0); } } return DisablePlayerCheckpoint(playerid); // Toda vez que o player entrar num checkpoint, ele serб desabilitado. Mas isso aqui й opicional }
Eu faria assim:
Code:
new playerJobCheckpoint[MAX_PLAYERS] = -1; // Cria uma variбvel que tem valor padrгo de -1, ela й usada para checar qual o prуximo checkpoint sera setado CMD:trabalhar(playerid){ // Um exemplo de comando para setar o primeiro checkpoint para o player if(playerJob[playerid] == 0){ // Se for motorista de фnibus playerJobCheckpoint[playerid] = 0; // Usamos a variбvel SetPlayerCheckpoint(playerid, X, Y, Z, 3.0); // Coordenadas do primeiro checkpoint } } public OnPlayerEnterCheckpoint(playerid){ // Quando o player entra em um checkpoint switch(playerJobCheckpoint[playerid]){ // Vamos checar qual й o valor da variбvel que criamos case 0:{ // Se for 0, mostra o primeiro checkpoint para o player playerJobCheckpoint[playerid] = 1; // Ele entrou no primeiro checkpoint, entгo falamos que o prуximo й o 1 SetPlayerCheckpoint(playerid, 1547.3561, -2284.1187, 13.4841, 3.0); // Setamos o checkpoint GameTextForPlayer(playerid, "Aguarde passageiros...", 3000, 3); TogglePlayerControllable(playerid, 0); SetTimerEx("Linhas", 3000, false, "i", playerid); } case 1:{ // Quandpo ele entrar no prуximo checkpoint, vai ser chamado este case aqui, pois o valor da variavel й 1 agora playerJobCheckpoint[playerid] = 2; SetPlayerCheckpoint(playerid, 1400.5472, -2284.7380, 13.4667, 3.0); } case 2:{ // E assim por diante... playerJobCheckpoint[playerid] = 2; SetPlayerCheckpoint(playerid, 1368.4954, -2173.5496, 13.4840, 3.0); } } return DisablePlayerCheckpoint(playerid); // Toda vez que o player entrar num checkpoint, ele serб desabilitado. Mas isso aqui й opicional } |
public OnPlayerEnterDynamicCP(playerid, checkpointid)
{
if(checkpointid == BusCP[0])
{
DestroyDynamicCP(BusCP[0]);
BusCP[1] = CreateDynamicCP(1547.3561,-2284.1187,13.4841,3.0,-1,-1,playerid,1000);
GameTextForPlayer(playerid, "Aguarde passageiros...", 3000, 3);
TogglePlayerControllable(playerid,0);
SetTimerEx("Linhas",3000, false,"i",playerid);
}
else if(checkpointid == BusCP[1])
{
DestroyDynamicCP(BusCP[1]);
BusCP[2] = CreateDynamicCP(1400.5472,-2284.7380,13.4667,3.0,-1,-1,playerid,1000);
}
else if(checkpointid == BusCP[2])
{
DestroyDynamicCP(BusCP[2]);
BusCP[3] = CreateDynamicCP(1368.4954,-2173.5496,13.4840,3.0,-1,-1,playerid,1000);
}
else
return 0;
return 1;
}
Tente desta maneira:
PHP Code:
|
Linhas
public Linhas(playerid)
{
TogglePlayerControllable(playerid,1);
GameTextForPlayer(playerid, "Prossiga sua viagem", 3000, 3);
return 1;
}
public OnPlayerEnterDynamicCP(playerid, checkpointid)
{
if(checkpointid == BusCP[0])
{
BusCP[1] = CreateDynamicCP(1547.3561,-2284.1187,13.4841,3.0,-1,-1,playerid,1000);
GameTextForPlayer(playerid, "Aguarde passageiros...", 3000, 3);
TogglePlayerControllable(playerid,0);
SetTimerEx("Linhas",3000, false,"i",playerid);
DestroyDynamicCP(BusCP[0]);
}
else if(checkpointid == BusCP[1])
{
BusCP[2] = CreateDynamicCP(1400.5472,-2284.7380,13.4667,3.0,-1,-1,playerid,1000);
DestroyDynamicCP(BusCP[1]);
}
else if(checkpointid == BusCP[2])
{
BusCP[3] = CreateDynamicCP(1368.4954,-2173.5496,13.4840,3.0,-1,-1,playerid,1000);
DestroyDynamicCP(BusCP[2]);
}
else // Esse й um debug, o problema pode nгo ser os operadores lуgicos...
{
SendClientMessage(playerid, -1, "1");
}
return 1;
}
if - Й usado para checar uma condiзгo
else if - Caso a condiзгo acima falhe, essa vai ser checada. else - Caso Nenhum dos casos acima acontecer, essa entra em aзгo. PHP Code:
|
Qual o comando pro jogador comeзar o trabalho?
Ele que mostra o primeiro checkpoint para o player? |
if(listitem == 0)
{
BusCP[0] = CreateDynamicCP(1601.0640,-2250.5215,13.3564, 3.0,-1,-1,playerid,1000);
SendClientMessage(playerid, -1, "[SERVER] Sua rota foi marcada em seu GPS.");
}