Portal SAMP
[Ajuda] Percurso por mapicon - 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] Percurso por mapicon (/showthread.php?tid=859)

Páginas: 1 2


Percurso por mapicon - LeleziiN - 04/03/2021

Como posso ta criando um percurso só com MapIcons pois estou criando um sistema pra uma profissão e estou precisando disso. Poderiam mim explica como faço pfvr, ficaria muito agradecido


RE: Percurso por mapicon - Levi.M - 04/03/2021

Seria tipo na rota final? Se for use createmapicon e seta a posicao que vc quer, dps se quiser destroi.


RE: Percurso por mapicon - LeleziiN - 04/03/2021

(04/03/2021 12:56)Levi.M Escreveu: Seria tipo na rota final? Se for use createmapicon e seta a posicao que vc quer, dps se quiser destroi.

Certo mais como faço pra quando eu pegar a terceira sacola o mapicon muda para outra posição?

Comando de pegar a sacola de lixo
Código PHP:
if(strcmp(cmd"/coletar"true) == 0)
    {
        if(
Profissao[playerid] == Gari || VerificarADM(playerid) == 1)
        {
            if(
IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playeridCORX1"| ERRO | Você não pode coletar lixo dentro de um veiculo!");
            
/*else */if(!profissaoCar[playerid] == false)
            {
                new 
Float:vehxFloat:vehyFloat:vehz;
        
           GetVehiclePos(profissaoCar[playerid], vehxvehyvehz);
                if(
IsPlayerInRangeOfPoint(playerid40.0vehxvehyvehz))
                {
                    for (new 
0sizeof(lixosLatasPos); a++)
                    {
                        if(
IsPlayerInRangeOfPoint(playerid2.0lixosLatasPos[a][0],lixosLatasPos[a][1],lixosLatasPos[a][2]))
                    
    {
                    
        if(lixosLatasPos[a][3] == 3.0)
                    
        {
                    
            if(profissaoCarregandoOJG[playerid])
                    
            {
                        
            SendClientMessage(playeridCORX1"| ERRO | Você já está com uma sacola de lixo na mão!");
                    
                return 1;
                                }
                                else
                                {
                        
            SendClientMessage(playeridCOR_MARA2"| INFO | Você coletou um saco de lixo com sucesso! Para colocá-lo no caminhão, vá no checkpoint atrás do mesmo.");
                    
                SendClientMessage(playeridCOR_MARA2"| INFO | Você pode largar o saco de lixo utilizando a tecla 'N'.");
                        
            Update3DTextLabelText(lixosLatasText[a], 0xFFFFFFFF"{f2da3c}Caçamba 2/3:\n{FFFFFF}Use /coletar para pegar um saco de lixo.");
                        
            lixosLatasPos[a][3] = 2.0;
                        
            //ApplyAnimation(playerid, "CARRY", "LIFTUP", 4.1, 0, 1, 1, 0, 0, 0);
                        
            //ApplyAnimation(playerid, "CARRY", "PUTDWN", 4.1, 0, 1, 1, 0, 0, 0);
                        
            ApplyAnimation(playerid"CARRY""LIFTUP105"4.1011000);
                        
            SetPlayerAttachedObject(playerid2126550.10.070.04180.00.00.00.50.50.5);
                    
                DisablePlayerCheckpoint(playerid);
                    
                SetPlayerCheckpoint(playerid, (vehx+4.0), vehyvehz3.0);
                    
                profissaoCarregandoOJG[playerid] = true;
                    
                return 1;
                                }
                
            }
                
            else if(lixosLatasPos[a][3] == 2.0)
                
            {
                
                if(profissaoCarregandoOJG[playerid])
                
                {
                    
                return SendClientMessage(playeridCORX1"| ERRO | Você já está com uma sacola de lixo na mão!");
                                }
                                else
                                {
                    
                SendClientMessage(playeridCOR_MARA2"| INFO | Você coletou um saco de lixo com sucesso! Para colocá-lo no caminhão, vá no checkpoint atrás do mesmo.");
                    
                SendClientMessage(playeridCOR_MARA2"| INFO | Você pode largar o saco de lixo utilizando a tecla 'N'.");
                    
                Update3DTextLabelText(lixosLatasText[a], 0xFFFFFFFF"{ff4500}Caçamba 1/3:\n{FFFFFF}Use /coletar para pegar um saco de lixo.");
                    
                lixosLatasPos[a][3] = 1.0;
                    
                //ApplyAnimation(playerid, "CARRY", "LIFTUP", 4.1, 0, 1, 1, 0, 0, 0);
                    
                //ApplyAnimation(playerid, "CARRY", "PUTDWN", 4.1, 0, 1, 1, 0, 0, 0);
                    
                ApplyAnimation(playerid"CARRY""LIFTUP105"4.1011000);
                    
                SetPlayerAttachedObject(playerid2126550.10.070.04180.00.00.00.50.50.5);
                    
                DisablePlayerCheckpoint(playerid);
                    
                SetPlayerCheckpoint(playerid, (vehx+4.0), vehyvehz3.0);
                    
                profissaoCarregandoOJG[playerid] = true;
                    
            }
                    
            return 1;
                
            }
                
            else if(lixosLatasPos[a][3] == 1.0)
                
            {
                
                if(profissaoCarregandoOJG[playerid])
                
                {
                    
                SendClientMessage(playeridCORX1"| ERRO | Você já está com uma sacola de lixo na mão!");
                
                    return 1;
                                }
                                else
                                {
                    
                SendClientMessage(playeridCOR_MARA2"| INFO | Você coletou um saco de lixo com sucesso! Para colocá-lo no caminhão, vá no checkpoint atrás do mesmo.");
                    
                SendClientMessage(playeridCOR_MARA2"| INFO | Você pode largar o saco de lixo utilizando a tecla 'N'.");
                    
                SendClientMessage(playeridCOR_ORKUT"| INFO | Você coletou um saco de lixo.");
                    
                Update3DTextLabelText(lixosLatasText[a], 0xFFFFFFFF"{f2543c}Caçamba vazia\n{FFFFFF}Siga para outra, pra recolher os sacos de lixo.");
                    
                lixosLatasPos[a][3] = 0.0;
                    
                //ApplyAnimation(playerid, "CARRY", "LIFTUP", 4.1, 0, 1, 1, 0, 0, 0);
                    
                //ApplyAnimation(playerid, "CARRY", "PUTDWN", 4.1, 0, 1, 1, 0, 0, 0);
                    
                ApplyAnimation(playerid"CARRY""LIFTUP105"4.1011000);
                    
                SetPlayerAttachedObject(playerid2126550.10.070.04180.00.00.00.50.50.5);
                    
                DisablePlayerCheckpoint(playerid);
                    
                SetPlayerCheckpoint(playerid, (vehx+4.0), vehyvehz3.0);
                    
                profissaoCarregandoOJG[playerid] = true;
                    
            }
                    
            return 1;
                
            }
                
            else
                
            {
                
                SendClientMessage(playeridCORX1"| ERRO | Essa lixeira está vazia procure outra!");
                
                return 1;
                
            }
                
        }
                    }
                    
SendClientMessage(playeridCORX1"| ERRO | Você não está próximo de uma lixeira!");
                    return 
1;
                }
                else
                {
                    
SendClientMessage(playeridCOR_ORKUT"| INFO | Você não está próximo do seu carro de lixo!");
                    
SendClientMessage(playeridCOR_ORKUT"| INFO | Foi marcado no seu radar o local do seu carro de lixo!");
    
                SetPlayerMapIcon(playerid492163.3389,-1979.0389,13.5534560MAPICON_GLOBAL_CHECKPOINT );
            
        PlayerPlaySound(playerid10570.00.010.0 );
        
               //SetPlayerMapIcon(playerid, GPS_ID, vehx, vehy, vehz, GPS_ICON, 0, MAPICON_GLOBAL);
        
               //PlayerPlaySound(playerid, 1057, 0 ,0, 0);
        
               //HQ[playerid] = true;
                    
return 1;
                }
            }
            else
            {
                
SendClientMessage(playeridCORX1"| ERRO | Vá até a fabrica de reciclagem para buscar um caminhão!");
                return 
1;
            }
        }
           else
        {
              SendClientMessage(playerid,CORX1,"| ERRO | Você não tem permissão!");
        
    return 1;
    
    }
    } 



RE: Percurso por mapicon - Levi.M - 04/03/2021

Você destrói, e cria o novo, com a nova posição. 
Código:
RemovePlayerMapIcon(playerid, id do map icon aqui);
//logo abaixo crie o novo mapicon com a posição desejada!



RE: Percurso por mapicon - LeleziiN - 04/03/2021

(04/03/2021 14:42)Levi.M Escreveu: Você destrói, e cria o novo, com a nova posição. 
Código:
RemovePlayerMapIcon(playerid, id do map icon aqui);
//logo abaixo crie o novo mapicon com a posição desejada!

Bom fiz dessa forma quando eu aperto "F" para entrar no veiculo aparece o MapIcon até ai tudo certo mais quando eu esvazio a lixeira o MapIcon destruir e na hora de criar outro em outra posição, ele criar na mesma posição que é a primeira

Parte do comando

Código PHP:
if(strcmp(cmd"/coletar"true) == 0)
    {
        if(
Profissao[playerid] == Gari || VerificarADM(playerid) == 1)
        {
            if(
IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playeridCORX1"| ERRO | Você não pode coletar lixo dentro de um veiculo!");
            
/*else */if(!profissaoCar[playerid] == false)
            {
                new 
Float:vehxFloat:vehyFloat:vehz;
        
           GetVehiclePos(profissaoCar[playerid], vehxvehyvehz);
                if(
IsPlayerInRangeOfPoint(playerid40.0vehxvehyvehz))
                {
                    for (new 
0sizeof(lixosLatasPos); a++)
                    {
                        if(
IsPlayerInRangeOfPoint(playerid2.0lixosLatasPos[a][0],lixosLatasPos[a][1],lixosLatasPos[a][2]))
                    
    {
                    
        if(lixosLatasPos[a][3] == 3.0)
                    
        {
                    
            if(profissaoCarregandoOJG[playerid])
                    
            {
                        
            SendClientMessage(playeridCORX1"| ERRO | Você já está com uma sacola de lixo na mão!");
                    
                return 1;
                                }
                                else
                                {
                        
            SendClientMessage(playeridCOR_MARA2"| INFO | Você coletou um saco de lixo com sucesso! Para colocá-lo no caminhão, vá no checkpoint atrás do mesmo.");
                    
                SendClientMessage(playeridCOR_MARA2"| INFO | Você pode largar o saco de lixo utilizando a tecla 'N'.");
                        
            Update3DTextLabelText(lixosLatasText[a], 0xFFFFFFFF"{f2da3c}Caçamba 2/3:\n{FFFFFF}Use /coletar para pegar um saco de lixo.");
                        
            lixosLatasPos[a][3] = 2.0;
                        
            //ApplyAnimation(playerid, "CARRY", "LIFTUP", 4.1, 0, 1, 1, 0, 0, 0);
                        
            //ApplyAnimation(playerid, "CARRY", "PUTDWN", 4.1, 0, 1, 1, 0, 0, 0);
                        
            ApplyAnimation(playerid"CARRY""LIFTUP105"4.1011000);
                        
            SetPlayerAttachedObject(playerid2126550.10.070.04180.00.00.00.50.50.5);
                    
                DisablePlayerCheckpoint(playerid);
                    
                SetPlayerCheckpoint(playerid, (vehx+4.0), vehyvehz3.0);
                    
                profissaoCarregandoOJG[playerid] = true;
                    
                return 1;
                                }
                
            }
                
            else if(lixosLatasPos[a][3] == 2.0)
                
            {
                
                if(profissaoCarregandoOJG[playerid])
                
                {
                    
                return SendClientMessage(playeridCORX1"| ERRO | Você já está com uma sacola de lixo na mão!");
                                }
                                else
                                {
                    
                SendClientMessage(playeridCOR_MARA2"| INFO | Você coletou um saco de lixo com sucesso! Para colocá-lo no caminhão, vá no checkpoint atrás do mesmo.");
                    
                SendClientMessage(playeridCOR_MARA2"| INFO | Você pode largar o saco de lixo utilizando a tecla 'N'.");
                    
                Update3DTextLabelText(lixosLatasText[a], 0xFFFFFFFF"{ff4500}Caçamba 1/3:\n{FFFFFF}Use /coletar para pegar um saco de lixo.");
                    
                lixosLatasPos[a][3] = 1.0;
                    
                //ApplyAnimation(playerid, "CARRY", "LIFTUP", 4.1, 0, 1, 1, 0, 0, 0);
                    
                //ApplyAnimation(playerid, "CARRY", "PUTDWN", 4.1, 0, 1, 1, 0, 0, 0);
                    
                ApplyAnimation(playerid"CARRY""LIFTUP105"4.1011000);
                    
                SetPlayerAttachedObject(playerid2126550.10.070.04180.00.00.00.50.50.5);
                    
                DisablePlayerCheckpoint(playerid);
                    
                SetPlayerCheckpoint(playerid, (vehx+4.0), vehyvehz3.0);
                    
                profissaoCarregandoOJG[playerid] = true;
                    
            }
                    
            return 1;
                
            }
                
            else if(lixosLatasPos[a][3] == 1.0)
                
            {
                
                if(profissaoCarregandoOJG[playerid])
                
                {
                    
                SendClientMessage(playeridCORX1"| ERRO | Você já está com uma sacola de lixo na mão!");
                
                    return 1;
                                }
                                else
                                {
                    
                SendClientMessage(playeridCOR_MARA2"| INFO | Você coletou um saco de lixo com sucesso! Para colocá-lo no caminhão, vá no checkpoint atrás do mesmo.");
                    
                SendClientMessage(playeridCOR_MARA2"| INFO | Você pode largar o saco de lixo utilizando a tecla 'N'.");
                    
                SendClientMessage(playeridCOR_ORKUT"| INFO | Você coletou um saco de lixo.");
                    
                Update3DTextLabelText(lixosLatasText[a], 0xFFFFFFFF"{f2543c}Caçamba vazia\n{FFFFFF}Siga para outra, pra recolher os sacos de lixo.");
                    
                lixosLatasPos[a][3] = 0.0;
                    
                //ApplyAnimation(playerid, "CARRY", "LIFTUP", 4.1, 0, 1, 1, 0, 0, 0);
                    
                //ApplyAnimation(playerid, "CARRY", "PUTDWN", 4.1, 0, 1, 1, 0, 0, 0);
                    
                ApplyAnimation(playerid"CARRY""LIFTUP105"4.1011000);
                    
                SetPlayerAttachedObject(playerid2126550.10.070.04180.00.00.00.50.50.5);
                    
                DisablePlayerCheckpoint(playerid);
                    
                SetPlayerCheckpoint(playerid, (vehx+4.0), vehyvehz3.0);
                    
                profissaoCarregandoOJG[playerid] = true;
                    
                RemovePlayerMapIcon(playerid49);
                    
                SetPlayerMapIcon(playerid49lixosLatasPos[a][0],lixosLatasPos[a][1],lixosLatasPos[a][2], 110MAPICON_GLOBAL);
                    
                PlayerPlaySound(playerid10570.00.010.0 );
                    
            }
                    
            return 1;
                
            }
                
            else
                
            {
                
                SendClientMessage(playeridCORX1"| ERRO | Essa lixeira está vazia procure outra!");
                
                return 1;
                
            }
                
        }
                    }
                    
SendClientMessage(playeridCORX1"| ERRO | Você não está próximo de uma lixeira!");
                    return 
1;
                }
                else
                {
                    
SendClientMessage(playeridCOR_ORKUT"| INFO | Você não está próximo do seu carro de lixo!");
                    
SendClientMessage(playeridCOR_ORKUT"| INFO | Foi marcado no seu radar o local do seu carro de lixo!");
    
                SetPlayerMapIcon(playerid492163.3389,-1979.0389,13.5534560MAPICON_GLOBAL_CHECKPOINT);
            
        PlayerPlaySound(playerid10570.00.010.0 );
        
               //HQ[playerid] = true;
                    
return 1;
                }
            }
            else
            {
                
SendClientMessage(playeridCORX1"| ERRO | Vá até a fabrica de reciclagem para buscar um caminhão!");
                return 
1;
            }
        }
           else
        {
              SendClientMessage(playerid,CORX1,"| ERRO | Você não tem permissão!");
        
    return 1;
    
    }
    } 



RE: Percurso por mapicon - Levi.M - 04/03/2021

A variavel esta setando a posicao antiga! Tem que atualizar a variavel.


RE: Percurso por mapicon - xbruno1000x - 05/03/2021

Use a include cpstream.inc, com ela você pode usar um mapicon de forma similar a um checkpoint.

https://raw.githubusercontent.com/hlgamesbr/Includes/master/cpstream.inc


RE: Percurso por mapicon - LeleziiN - 05/03/2021

(04/03/2021 19:45)Levi.M Escreveu: A variavel esta setando a posicao antiga! Tem que atualizar a variavel.

E como devia fica pode mim da um exemplo pfvr?
São 30 lixeiras no servidor


RE: Percurso por mapicon - Levi.M - 05/03/2021

Deixa os checkpoints randômicos, depois só colocar a variavel em
Código PHP:
SetPlayerMapIcon(playerid49cordx,cordy,cordz560MAPICON_GLOBAL_CHECKPOINT); 

Essa parte aqui está funcionando?
Código PHP:
RemovePlayerMapIcon(playerid49);
SetPlayerMapIcon(playerid49lixosLatasPos[a][0],lixosLatasPos[a][1],lixosLatasPos[a][2], 110MAPICON_GLOBAL); 



RE: Percurso por mapicon - LeleziiN - 05/03/2021

(05/03/2021 11:37)Levi.M Escreveu: Essa parte aqui está funcionando?
Código PHP:
RemovePlayerMapIcon(playerid49);
SetPlayerMapIcon(playerid49lixosLatasPos[a][0],lixosLatasPos[a][1],lixosLatasPos[a][2], 110MAPICON_GLOBAL); 

Sim, mais quando termino de recolher a ultima sacola da lixeira ai em vez dela aparecer em outra lixeira, ela aparece na qual eu estou coletando.
Como resolver isso?