Portal SAMP
[Ajuda] ajuda no meu codigo - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] ajuda no meu codigo (/showthread.php?tid=3943)



ajuda no meu codigo - LOS_SANTOS - 04/09/2023

ola pessoal criei um emprego de lixeiro mas meu intuito e quando o player usar o comando /lixeiro ele so poderar usar novamente se ele finalizar a missao caso contrario gostaria de que quando ele usar o comando ele so puder usar se terminar a missao 

esse e o codigo que precisa ser corrigido por alguem q tenha mais conhecimento , obs estou aprendendo entao nao me julgue por isso nao estou compreendendo com fica a logica do codigo da maneira que eu quero

Código PHP:
new g_PlayerMission[MAX_PLAYERS];

CMD:lixeiro(playerid)
{
    new vehicleid GetPlayerVehicleID(playerid);
    if(GetVehicleModel(vehicleid) == 408)//se estiver no caminhao id
    {
lixeiro1[playerid] = 1;
SetPlayerCheckpoint(playerid,2171.8494,-1979.3674,13.55472.0);
SendClientMessage(playerid,verde"{FFFF00}[Trabalho]:{FFFFFF}Agora você e um Lixeiro.");
}
else
{
SendClientMessage(playerid,vermelho"{FFFF00}[trabalho]:{FFFFFF}voce nao esta em um caminhao de lixo id 408 ");
}
    if(g_PlayerMission[playerid]==1)
{
}
else
{
SendClientMessage(playerid,vermelho"{FFFF00}[trabalho]:{FFFFFF} conclua a missao primeiro antes de pegar outras missoes");
}

return 
1;
}


new 
lixeiro1[MAX_PLAYERS];
new 
lixeiro2[MAX_PLAYERS];
new 
lixeiro3[MAX_PLAYERS];
new 
lixeiro4[MAX_PLAYERS];
new 
lixeiro5[MAX_PLAYERS];
new 
lixeiro6[MAX_PLAYERS];
new 
lixeiro7[MAX_PLAYERS];
new 
lixeiro8[MAX_PLAYERS];
new 
lixeiro9[MAX_PLAYERS];
new 
lixeiro10[MAX_PLAYERS];
new 
lixeiro11[MAX_PLAYERS];


public 
OnPlayerEnterCheckpoint(playerid)
{
//------------------------------------------------------------------------------
if(lixeiro1[playerid] == 1)
{
        new vehicleid GetPlayerVehicleID(playerid);
if(
GetVehicleModel(vehicleid) == 408)//se estiver no caminhao
{
        SetTimerEx("tempu",10000,false,"i",playerid);
TogglePlayerControllable(playerid,0);
GameTextForPlayer(playerid"recolhendo lixo....1/11"100004);
DisablePlayerCheckpoint(playerid);
lixeiro1[playerid] = 0;
lixeiro2[playerid] = 1;
SetPlayerCheckpoint(playerid,1828.5288,-1926.8643,13.38374.0);
}
else
{
SendClientMessage(playerid, -1"Você precisa do caminhão para coletar o lixo. ");
}
return 
1;
}
//------------------------------------------------------------------------------
if(lixeiro2[playerid] == 1)
{
new 
vehicleid GetPlayerVehicleID(playerid);
if(
GetVehicleModel(vehicleid) == 408)//se estiver no caminhao
{
        SetTimerEx("tempu",10000,false,"i",playerid);
TogglePlayerControllable(playerid,0);
GameTextForPlayer(playerid"recolhendo lixo....2/11"100004);
DisablePlayerCheckpoint(playerid);
lixeiro2[playerid] = 0;
lixeiro3[playerid] = 1;
SetPlayerCheckpoint(playerid,1856.5773,-1268.8737,13.39064.0);
}
else
{
SendClientMessage(playerid, -1"Você precisa do caminhão para coletar o lixo. ");
}
return 
1;
}
//------------------------------------------------------------------------------
if(lixeiro3[playerid] == 1)
{
new 
vehicleid GetPlayerVehicleID(playerid);
if(
GetVehicleModel(vehicleid) == 408)
{
        SetTimerEx("tempu",10000,false,"i",playerid);
TogglePlayerControllable(playerid,0);
GameTextForPlayer(playerid"recolhendo lixo....3/11"100004);
DisablePlayerCheckpoint(playerid);
lixeiro3[playerid] = 0;
lixeiro4[playerid] = 1;
SetPlayerCheckpoint(playerid,1973.9496,-1054.9626,24.39845.0);
SendClientMessage(playerid,-1"{FFFF00}[Trabalho]:{FFFFFF}Há ainda 6 pontos de coleta.");
}
else
{
SendClientMessage(playerid, -1"Você precisa do caminhão para coletar o lixo.");
}
return 
1;
}
//------------------------------------------------------------------------------
if(lixeiro4[playerid] == 1)
{
new 
vehicleid GetPlayerVehicleID(playerid);
if(
GetVehicleModel(vehicleid) == 408)
{
        SetTimerEx("tempu",10000,false,"i",playerid);
TogglePlayerControllable(playerid,0);
GameTextForPlayer(playerid"recolhendo lixo....4/11"100004);
DisablePlayerCheckpoint(playerid);
lixeiro4[playerid] = 0;
lixeiro5[playerid] = 1;
SetPlayerCheckpoint(playerid,2363.1702,-1159.0892,27.45134.0);
SendClientMessage(playerid,-1"{FFFF00}[Trabalho]:{FFFFFF}Há ainda 5 pontos de coleta.");
}
else
{
SendClientMessage(playerid, -1"Você precisa do caminhão para coletar o lixo.");
}
return 
1;
}
//------------------------------------------------------------------------------
if(lixeiro5[playerid] == 1)
{
new 
vehicleid GetPlayerVehicleID(playerid);
if(
GetVehicleModel(vehicleid) == 408)
{
        SetTimerEx("tempu",10000,false,"i",playerid);
TogglePlayerControllable(playerid,0);
GameTextForPlayer(playerid"recolhendo lixo....5/11"100004);
DisablePlayerCheckpoint(playerid);
lixeiro5[playerid] = 0;
lixeiro6[playerid] = 1;
SetPlayerCheckpoint(playerid,2714.9253,-1188.3448,69.22884.0);
SendClientMessage(playerid,-1"{FFFF00}[Trabalho]:{FFFFFF}Há ainda 4 pontos de coleta.");
}
else
{
SendClientMessage(playerid, -1"Você precisa do caminhão para coletar o lixo.");
}
return 
1;
}
//------------------------------------------------------------------------------
if(lixeiro6[playerid] == 1)
{
new 
vehicleid GetPlayerVehicleID(playerid);
if(
GetVehicleModel(vehicleid) == 408)
{
        SetTimerEx("tempu",10000,false,"i",playerid);
TogglePlayerControllable(playerid,0);
GameTextForPlayer(playerid"recolhendo lixo....6/11"100004);
DisablePlayerCheckpoint(playerid);
lixeiro6[playerid] = 0;
lixeiro7[playerid] = 1;
SetPlayerCheckpoint(playerid,2718.3643,-1520.4124,30.04804.0);
SendClientMessage(playerid,-1"{FFFF00}[Trabalho]:{FFFFFF}Há ainda 3 ponto de coleta.");
}
else
{
SendClientMessage(playerid, -1"Você precisa do caminhão para coletar o lixo.");
}
return 
1;
}
//------------------------------------------------------------------------------
if(lixeiro7[playerid] == 1)
{
new 
vehicleid GetPlayerVehicleID(playerid);
if(
GetVehicleModel(vehicleid) == 408)
{
        SetTimerEx("tempu",10000,false,"i",playerid);
TogglePlayerControllable(playerid,0);
GameTextForPlayer(playerid"recolhendo lixo....7/11"100004);
DisablePlayerCheckpoint(playerid);
lixeiro7[playerid] = 0;
lixeiro8[playerid] = 1;
SetPlayerCheckpoint(playerid,2338.2581,-1576.3217,23.80324.0);
SendClientMessage(playerid,-1"{FFFF00}[Trabalho]:{FFFFFF}Há ainda 2 pontso de coleta.");
}
else
{
SendClientMessage(playerid, -1"Você precisa do caminhão para coletar o lixo.");
}
return 
1;
}
//------------------------------------------------------------------------------
if(lixeiro8[playerid] == 1)
{
new 
vehicleid GetPlayerVehicleID(playerid);
if(
GetVehicleModel(vehicleid) == 408)
{
        SetTimerEx("tempu",10000,false,"i",playerid);
TogglePlayerControllable(playerid,0);
GameTextForPlayer(playerid"recolhendo lixo....8/11"100004);
DisablePlayerCheckpoint(playerid);
lixeiro8[playerid] = 0;
lixeiro9[playerid] = 1;
SetPlayerCheckpoint(playerid,2220.6677,-1761.7015,13.36504.0);
SendClientMessage(playerid,-1"{FFFF00}[Trabalho]:{FFFFFF}Há ainda 1 ponto de coleta.");
}
else
{
SendClientMessage(playerid, -1"Você precisa do caminhão para coletar o lixo.");
}
return 
1;
}
//------------------------------------------------------------------------------
if(lixeiro9[playerid] == 1)
{
new 
vehicleid GetPlayerVehicleID(playerid);
if(
GetVehicleModel(vehicleid) == 408)
{
        SetTimerEx("tempu",10000,false,"i",playerid);
TogglePlayerControllable(playerid,0);
GameTextForPlayer(playerid"recolhendo lixo....9/11"100004);
DisablePlayerCheckpoint(playerid);
lixeiro9[playerid] = 0;
lixeiro10[playerid] = 1;
SetPlayerCheckpoint(playerid,2213.1135,-2053.4668,14.09665.0);
SendClientMessage(playerid,-1"{FFFF00}[Trabalho]:{FFFFFF}Leve os lixo até o deposito.");
}
else
{
SendClientMessage(playerid, -1"Você precisa do caminhão para coletar o lixo.");
}
return 
1;
}
//------------------------------------------------------------------------------
if(lixeiro10[playerid] == 1)
{
new 
vehicleid GetPlayerVehicleID(playerid);
if(
GetVehicleModel(vehicleid) == 408)
{
        SetTimerEx("tempu",10000,false,"i",playerid);
TogglePlayerControllable(playerid,0);
GameTextForPlayer(playerid"recolhendo lixo....10/11"100004);
DisablePlayerCheckpoint(playerid);
lixeiro10[playerid] = 0;
lixeiro11[playerid] = 1;
SetPlayerCheckpoint(playerid,2199.1770,-1970.4202,13.78412.0);
SendClientMessage(playerid,-1"{00FF00}Agora vá receber o Dinheiro.");
}
else
{
SendClientMessage(playerid, -1"{FFFF00}[Trabalho]:{FFFFFF}Aqui não é o escritório.");
}
return 
1;
}
//------------------------------------------------------------------------------
if(lixeiro11[playerid] == 1)
{
DisablePlayerCheckpoint(playerid);
lixeiro11[playerid] = 0;
SendClientMessage(playerid,-1"Você conseguiu {FFFFFF}200$ pelo trabalho.");
GameTextForPlayer(playerid,"~h~~g~+200$",5000,5);
GivePlayerMoney(playerid200);
g_PlayerMission[playerid]=1;
}
return 
1;




RE: ajuda no meu codigo - zBreno - 04/09/2023

se você quer bloquear comando bote no começo do comando

if(trabalhando[playerid] == true) return SendClientMessage(playerid,-1, "Você já esta trabalho!");

já existe um fs muito bom com esse trabalho de lixeiro se quiser usar ele como base ta aqui os arquivos https://drive.google.com/drive/folders/1oybFsFzkHBTZUL7X4bm2SofHdnZfVzfB?usp=sharing


RE: ajuda no meu codigo - LOS_SANTOS - 04/09/2023

(04/09/2023 15:07)zBreno Escreveu: se você quer bloquear comando bote no começo do comando

if(trabalhando[playerid] == true) return SendClientMessage(playerid,-1, "Você já esta trabalho!");

já existe um fs muito bom com esse trabalho de lixeiro se quiser usar ele como base ta aqui os arquivos https://drive.google.com/drive/folders/1oybFsFzkHBTZUL7X4bm2SofHdnZfVzfB?usp=sharing

agradeço sua ajuda mas o q realmente eu queria e entender como faco oq pedi la em cima pois eu quero aprender para criar novos empregos mas meso assim obg 

caso eu pegue o fs e coloque eu nunca irei saber a logica pois criei outros empregos e se o player iniciar o comando e nao terminar a missao e for para outra quando ele cegar no checkkpoint de outra missao por exe plo diz que ele nao e lixeiro tende por isso queria o comando para saber a logica ai eu fazendo isso para cada emprego nao corre o risco de buga pois cada profsssao so poderar pegar outra se caso o player terminar tendeu 

vouc tentar ser mis simples , criei essa profisssao lixeiro blz ai eu uso /lixeiro para iniciar ela comeco na missao caso eu nao queira mais jogar nela e escolher outra missao por eemplo /taxista , eu inicio a misssao taxiata mas quando chego no checkpoint diz que nao sou lixeiro porq eu nao finalizei a missao anterior por isso biga ,eu aprendendo a fazer o comando que coloquei la eu iria saber e corrigir esse bugzinho nas missoes


RE: ajuda no meu codigo - Device-Black - 04/09/2023

(04/09/2023 15:45)LOS_SANTOS Escreveu:
(04/09/2023 15:07)zBreno Escreveu: se você quer bloquear comando bote no começo do comando

if(trabalhando[playerid] == true) return SendClientMessage(playerid,-1, "Você já esta trabalho!");

já existe um fs muito bom com esse trabalho de lixeiro se quiser usar ele como base ta aqui os arquivos https://drive.google.com/drive/folders/1oybFsFzkHBTZUL7X4bm2SofHdnZfVzfB?usp=sharing

agradeço sua ajuda mas o q realmente eu queria e entender como faco oq pedi la em cima pois eu quero aprender para criar novos empregos mas meso assim obg 

caso eu pegue o fs e coloque eu nunca irei saber a logica pois criei outros empregos e se o player iniciar o comando e nao terminar a missao e for para outra quando ele cegar no checkkpoint de outra missao por exe plo diz que ele nao e lixeiro tende por isso queria o comando para saber a logica ai eu fazendo isso para cada emprego nao corre o risco de buga pois cada profsssao so poderar pegar outra se caso o player terminar tendeu 

vouc tentar ser mis simples , criei essa profisssao lixeiro blz ai eu uso /lixeiro para iniciar ela comeco na missao caso eu nao queira mais jogar nela e escolher outra missao por eemplo /taxista , eu inicio a misssao taxiata mas quando chego no checkpoint diz que nao sou lixeiro porq eu nao finalizei a missao anterior por isso biga ,eu aprendendo a fazer o comando que coloquei la eu iria saber e corrigir esse bugzinho nas missoes

Basta resetar os valores das variaveis utilizadas pelo emprego.
É um pouco complicado entender isso de uma hora pra outra, se precisar de informações mais especificas pode me chamar no Discord: @devicewhite


RE: ajuda no meu codigo - MateGPlay - 04/09/2023

Analisei seu codigo e respondendo sua duvida, para impedir que o jogador inicie a missão varias vezes sem termina-la, ira precisar armazenar uma variável contendo pelo menos o ponto atual que o jogador esta recolhendo o lixo, ou então se esta sob alguma missão no momento, refiz seu codigo de outra forma para melhor explicação:

Código PHP:
new g_PlayerMission[MAX_PLAYERS];
new 
g_LixeiroCounter[MAX_PLAYERS];
new 
m_PontosColeta[][3] = {
    {
1828.5288,-1926.8643,13.3837},
    {
1856.5773,-1268.8737,13.3906},
    {
1973.9496,-1054.9626,24.3984},
    {
2363.1702,-1159.0892,27.4513},
    {
2714.9253,-1188.3448,69.2288},
    {
2718.3643,-1520.4124,30.0480},
    {
2338.2581,-1576.3217,23.8032},
    {
2220.6677,-1761.7015,13.3650},
    {
2213.1135,-2053.4668,14.0966},
    {
2199.1770,-1970.4202,13.7841}
};

public 
OnPlayerConnect(playerid//ou OnPlayerLogin
{
    
g_PlayerMission[playerid] = -1;
    
m_PontoAtual[MAX_PLAYERS] = -1;    
}

forward ValidMissionCP(playerid, const Float:points[][3]);
public 
ValidMissionCP(playerid, const Float:points[][3]) //verifica se o jogador esta proximo ao Checkpoint da missão
{
    new 
Float:playerPos[3];
    
GetPlayerPos(playeridplayerPos[0], playerPos[1], playerPos[2]);
    for(new 
0sizeof(points); i++)
        if(
GetPlayerDistanceFromPoint(playeridpoints[i][0], points[i][1], points[i][2]) < 5.0)
            return 
true;
    return 
false;
}

CMD:lixeiro(playerid)
{
    if(
g_PlayerMission[playerid] == && m_PontoAtual != -1//se o jogador estiver com a missão de lixeiro e não estiver trabalhando
        
return SendClientMessage(playerid,vermelho"{FFFF00}[trabalho]:{FFFFFF} conclua a missao primeiro antes de pegar outras missoes");
    if(
GetVehicleModel(GetPlayerVehicleID(playerid)) != 408)//se não estiver no caminhao id 408
        
return SendClientMessage(playerid,vermelho"{FFFF00}[trabalho]:{FFFFFF}voce nao esta em um caminhao de lixo id 408!");
    
m_PontoAtual[playerid] = 0//id do ponto de coleta atual do jogador
    
SetPlayerCheckpoint(playerid2171.8494, -1979.367413.55472.0);
    
SendClientMessage(playerid,verde"{FFFF00}[Trabalho]:{FFFFFF}Agora você e um Lixeiro.");
    return 
1;
}


public 
OnPlayerEnterCheckpoint(playerid)
{
//------------------------------------------------------------------------------
    
new vehicleid GetPlayerVehicleID(playerid);
    new 
str[64];
    if(
g_PlayerMission[playerid] == && ValidMissionCP(playeridm_PontosColeta)) //verifica se o jogador esta na missão id 1 | lixeiro
    
{
        if(
m_PontoAtual[playerid] == -1//ponto invalido
            
m_PontoAtual[playerid] = 0//reseta a missão

        
new remaining_Points = (sizeof(m_PontosColeta) - m_PontoAtual[playerid]);
        if(
remaining_Points == 0//não resta passar sob nenhum ponto
        
{
            
DisablePlayerCheckpoint(playerid);
            
m_PontoAtual = -1//fora de missão
            
SendClientMessage(playerid, -1"Você conseguiu {FFFFFF}$200 pelo trabalho.");
            
GameTextForPlayer(playerid,"~h~~g~+200$"50005);
            
GivePlayerMoney(playerid200);
        }

        if(
GetVehicleModel(vehicleid) != 408//se o id não for 408
            
return SendClientMessage(playerid, -1"Você precisa do caminhão para coletar o lixo.");
        
        
m_PontoAtual[playerid]++; //adiciona 1 ao ponto atual
        
TogglePlayerControllable(playerid0);
        
SetTimerEx("tempu"10000false"i"playerid);
        
format(strsizeof(str), "Recolhendo Lixo %d/%d ..."m_PontoAtual[playerid], sizeof(m_PontosColeta));
        
GameTextForPlayer(playeridstr100004);
        
DisablePlayerCheckpoint(playerid);
        
SetPlayerCheckpoint(playeridm_PontosColeta[m_PontoAtual[playerid]][0], m_PontosColeta[m_PontoAtual[playerid]][1], m_PontosColeta[m_PontoAtual[playerid]][2], 4.0);
        
format(strsizeof(str), "[Trabalho] {FFFFFF}Há ainda %d pontos de coleta."remaining_Points);
        
SendClientMessage(playerid0xFFFF00str);

        if(
remaining_Points == 2)
            return 
SendClientMessage(playerid0xFFFF00"[Trabalho] {FFFFFF}Leve os lixo até o deposito.");

        if(
remaining_Points == 1)
            return 
SendClientMessage(playerid0x00FF00"[Trabalho] {FFFFFF}Agora vá receber o Dinheiro.");
    }
    return 
1;


repare que no codigo acima, armazenei na variavel:
Código PHP:
m_PontoAtual[playerid
a contagem de cada lixeiro que ele passa, ou seja caso ele tenha iniciado a missão, ele deixara de ser -1, pois o valor -1 é atribuido quando a missão não esta ocorrendo.

tambem criei um vetor com nome: 
Código PHP:
m_PontosColeta[][3
 que é responsável por armazenar as posições do lixeiros, ele é dinamico, por tanto você pode colocar mais posições no vetor que a missão irá funcionar normalmente.

analisei outros pontos em seu codigos a serem vistos tambem:
Código PHP:
new lixeiro1[MAX_PLAYERS];
new 
lixeiro2[MAX_PLAYERS];
new 
lixeiro3[MAX_PLAYERS];
... 
Não é necessario criar multiplas variaveis com a mesma finalidade, tendo em vista que o objetivo é saber qual o checkpoint deverá ser ativado.

Outro Ponto:

Código PHP:
public OnPlayerEnterCheckpoint(playerid)
{
//------------------------------------------------------------------------------
if(lixeiro1[playerid] == 1)
{
    new vehicleid GetPlayerVehicleID(playerid);
    if(
GetVehicleModel(vehicleid) == 408)//se estiver no caminhao
    
{
        
//....
    
}
}

if(
lixeiro2[playerid] == 1)
{
    new vehicleid GetPlayerVehicleID(playerid);
    if(
GetVehicleModel(vehicleid) == 408)//se estiver no caminhao
    
{
        
//....
    
}
}


Não é necessario criar a mesma variavel e salvar o id do veiculo em cada caso, você pode fazer isso de forma local dentro da função:
Código PHP:
public OnPlayerEnterCheckpoint(playerid

Em geral são esses pontos a serem vistos por agora.

Vale ressaltar que eu costumo a usar as condições negativas primeiro, prefiro fazer dessa forma, faço bom uso do codigo e adapte como quiser, não testei o codigo, por tanto pode ocorrer erros.

Sei que você ainda esta aprendendo, estou aqui para tirar suas duvidas e te ajudar, com o tempo você aprende tudo, caso precise de ajuda, sinta-se a vontade para me contatar.


RE: ajuda no meu codigo - zBreno - 05/09/2023

(04/09/2023 15:45)LOS_SANTOS Escreveu:
(04/09/2023 15:07)zBreno Escreveu: se você quer bloquear comando bote no começo do comando

if(trabalhando[playerid] == true) return SendClientMessage(playerid,-1, "Você já esta trabalho!");

já existe um fs muito bom com esse trabalho de lixeiro se quiser usar ele como base ta aqui os arquivos https://drive.google.com/drive/folders/1oybFsFzkHBTZUL7X4bm2SofHdnZfVzfB?usp=sharing

agradeço sua ajuda mas o q realmente eu queria e entender como faco oq pedi la em cima pois eu quero aprender para criar novos empregos mas meso assim obg 

caso eu pegue o fs e coloque eu nunca irei saber a logica pois criei outros empregos e se o player iniciar o comando e nao terminar a missao e for para outra quando ele cegar no checkkpoint de outra missao por exe plo diz que ele nao e lixeiro tende por isso queria o comando para saber a logica ai eu fazendo isso para cada emprego nao corre o risco de buga pois cada profsssao so poderar pegar outra se caso o player terminar tendeu 

vouc tentar ser mis simples , criei essa profisssao lixeiro blz ai eu uso /lixeiro para iniciar ela comeco na missao caso eu nao queira mais jogar nela e escolher outra missao por eemplo /taxista , eu inicio a misssao taxiata mas quando chego no checkpoint diz que nao sou lixeiro porq eu nao finalizei a missao anterior por isso biga ,eu aprendendo a fazer o comando que coloquei la eu iria saber e corrigir esse bugzinho nas missoes

certo olhe o que fez lixeiro1[playerid] = 1; dentro do comando e depois você usou como a variável que define o checkpoint? lixeiro1[playerid] = 0;

O que aconteceu ai foi que quando você entrou dentro do checkpoint você removeu a profissão de lixeiro e depois você fez isso lixeiro2[playerid] = 1; true / verdadeiro sendo que você entregou o lixo no primeiro checkpoint e não no segundo se ele finalizou a rota 1 a rota 1 é = a 1 e não a 2 as outras rotas sempre são false 0 você tem que definir todas como false pro id dele antes da primeira entrega

if(rota1[playerid] == 0)
{
rota1[playerid] = 1; marca essa rota como entrege
você entregou o lixo na rota 1
}

if(rota1[playerid] == 1)
{
você já entregou o lixo na rota, 1 vá para rota 2!
}

já que você não tá salvando nada por arquivo então você só precisa setar uma variável pra definir a profissão dele em um comando ou em uma caixa de dialogo que ele vai usar pra se tornar lixeiro

lixeiro[playerid] = 1;

nunca no comando onde o cara vai iniciar o trabalho como lixeiro isso não tem lógica alguma ou você cria um menu de profissões ou lá no lixão de los santos que fica perto do emmet bota um npc lá dentro do contêiner pro cara interagir com dialogbox msg e essa variável vai ser setada nele por você

se quando ele inicia um trabalho você quer impedir que ele procure outro trabalho e termine o trabalho atual é só deixar o comando que inicia todos os trabalhos de todas as profissões travados, você bota trabalhando = 0 no on player connect e em todos os comandos que inicia o trabalho

if(trabalhando[playerid] == 0)
{
trabalhando[playerid] = 1;
você iniciou seu trabalho como lixeiro vá para rota x no local x
}
if(trabalhando[playerid] == 1)
{
você já esta trabalhando como lixeiro! termine o serviço atual se quiser procurar outro trabalho
}

como você tá usando checkpoint se ele sair do caminhão o trabalho tem que ser cancelado
na public on player exit vehicle pega o id do caminhão de lixo e

lixeiro[playerid] = 0;
trabalhando[playerid] = 0;

use o plugin streamer pra criar os checkpoints
no caso do cara tentar atropelar as rotas pra terminar o trabalho rápido depois da primeira rota você verifica se ele terminou a rota anterior

if(rota1[playerid] == 0) return send client message termine a primeira rota antes de terminar a segunda


RE: ajuda no meu codigo - White_Blue - 05/09/2023

Não recomendo pedir para outras pessoas completarem o seu código, pois com isso você não vai aprender nada.

Sempre que for colocar um código, o coloque em um bloco de código PHP pois facilita a leitura do código com realce de sintaxe.

Exemplo:
[Imagem: Yv7JIUu.png]


RE: ajuda no meu codigo - LOS_SANTOS - 06/09/2023

(05/09/2023 22:28)White_Blue Escreveu: Não recomendo pedir para outras pessoas completarem o seu código, pois com isso você não vai aprender nada.

Sempre que for colocar um código, o coloque em um bloco de código PHP pois facilita a leitura do código com realce de sintaxe.

Exemplo:
[Imagem: Yv7JIUu.png]

Não pow não pedi pra ele completar não oq eu pedir foi uma ajuda a entender como eu poderia fazer no meu código algo para quando o player usar o comando só usar o mesmo comando caso terminase a missão pois eu não sabia como fazer mais mano me explicou como fazer agora eu irei tentar , pois quando criei esse código sem muitas habilidades criei para quando o player usar o cmd ele pegasse uma missão mas se caso ele não terminasse a missão e pegasse outra ficava bugado aí pedi explicação de como evitar isso agradeço a ajuda de todos