Portal SAMP
[Ajuda] [Ajuda] criação de veiculo em dialog - 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] criação de veiculo em dialog (/showthread.php?tid=1786)



[Ajuda] criação de veiculo em dialog - xxxjhonatan_wi - 29/10/2021

Bom, eu estou com problema na hora de criar o veiculo através da dialog novamente.

Ex: Eu criei o sistema de spwanar o veículo pela dialog, até ai tudo certo.

Criei uma verificação que: Se o player já tiver criado um veículo, ele não pode criar outro.

E por último criei o código de deletar o veículo. O problema é que mesmo depois de excluir o veículo, eu não passo pela verificação.
Fica constando que eu ainda tenho o veículo criado.

CODIGO CRIAÇÃO:


Código:
CMD:va(playerid)
{
    if(PlayerInfo[playerid][veiculo] == 1) return SendClientMessage(playerid, -1, "Voce ja tem um veiculo criado! Use: /da para destruir o veiculo criado.");
    ShowPlayerDialog(playerid, 5, DIALOG_STYLE_LIST, "{FFFFFF}Escolha um veiculo", "{B22222}Hunter\n{B22222}Hydra\n{B22222}Rhino\n{FFFFFF}Bmx\n{FFFFFF}Mountain-Bike\n{FFFFFF}Squalo(Lancha)\n{FFFFFF}Slamvan\n{FFFFFF}Bullet\n{FFFFFF}Hotring-Racer\n{FFFFFF}Infernus\n{FFFFFF}Turismo\n{FFFFFF}Super-GT\n{FFFFFF}Sultan\nLandstalker\n{FFFFFF}Nrg-500\n{FFFFFF}Sanchez\n{FFFFFF}QuadBike\n{FFFFFF}Onibus", "Pegar", "Cancelar");
    return 1;
}


PS:Não sei se é necessário colocar a parte do dialogresponse.

CODIGO DELETAR VEICULO CRIADO:


Código:
CMD:da(playerid)
{
    for(new veiculoo = 0; veiculoo < MAX_VEHICLES; veiculoo++) DestroyVehicle(PlayerInfo[playerid][veiculo]);
    return 1;
}



RE: [Ajuda] criação de veiculo em dialog - xbruno1000x - 29/10/2021

Ajeita essa fonte aí do tópico e envie o trecho desse código na OnDialogResponse para ajudarmos.


RE: [Ajuda] criação de veiculo em dialog - xxxjhonatan_wi - 29/10/2021

(29/10/2021 21:37)xbruno1000x Escreveu: Ajeita essa fonte aí do tópico e envie o trecho desse código na OnDialogResponse para ajudarmos.


Código:
if(dialogid == 5) // DIALOG DO /VA
    {
        if(response)
        {
            new Float:posx,Float:posy,Float:posz;
            if(listitem == 0)
            {
                if(PlayerInfo[playerid][Admin] < 3) return SendClientMessage(playerid, -1, "{B22222}[Breaking Peace] > {FFFFFF}veiculo restrito aos admins nivel 3 pra cima!");
                GetPlayerPos(playerid, posx,posy,posz);
                PlayerInfo[playerid][veiculo] = CreateVehicle(425, posx+4, posy, posz, 0, 0, 0, 0, 0);
            }
            if(listitem == 1)
            {
                if(PlayerInfo[playerid][Admin] < 4) return SendClientMessage(playerid, -1, "{B22222}[Breaking Peace] > {FFFFFF}veiculo restrito aos admins nivel 4 pra cima!");
                GetPlayerPos(playerid, posx,posy,posz);
                PlayerInfo[playerid][veiculo] = CreateVehicle(520, posx+4, posy, posz, 0, 0, 0, 0, 0);
            }
            if(listitem == 2)
            {
                if(PlayerInfo[playerid][Admin] < 4) return SendClientMessage(playerid, -1, "{B22222}[Breaking Peace] > {FFFFFF}veiculo restrito aos admins nivel 4 pra cima!");
                GetPlayerPos(playerid, posx,posy,posz);
                PlayerInfo[playerid][veiculo] = CreateVehicle(432, posx+4, posy, posz, 0, 0, 0, 0, 0);
            }
            if(listitem == 3)
            {
                GetPlayerPos(playerid, posx,posy,posz);
                PlayerInfo[playerid][veiculo] = CreateVehicle(481, posx+4, posy, posz, 0, 0, 0, 0, 0);
            }
            if(listitem == 4)
            {
                GetPlayerPos(playerid, posx,posy,posz);
                PlayerInfo[playerid][veiculo] = CreateVehicle(510, posx+4, posy, posz, 0, 0, 0, 0, 0);
            }
            if(listitem == 5)
            {
                GetPlayerPos(playerid, posx,posy,posz);
                PlayerInfo[playerid][veiculo] = CreateVehicle(446, posx+4, posy, posz, 0, 0, 0, 0, 0);
            }
            if(listitem == 6)
            {
                GetPlayerPos(playerid, posx,posy,posz);
                PlayerInfo[playerid][veiculo] = CreateVehicle(535, posx+4, posy, posz, 0, 0, 0, 0, 0);
            }
            if(listitem == 7)
            {
                GetPlayerPos(playerid, posx,posy,posz);
                PlayerInfo[playerid][veiculo] = CreateVehicle(541, posx+4, posy, posz, 0, 0, 0, 0, 0);
            }
            if(listitem == 8)
            {
                GetPlayerPos(playerid, posx,posy,posz);
                PlayerInfo[playerid][veiculo] = CreateVehicle(494, posx+4, posy, posz, 0, 0, 0, 0, 0);
            }
            if(listitem == 9)
            {
                GetPlayerPos(playerid, posx,posy,posz);
                PlayerInfo[playerid][veiculo] = CreateVehicle(411, posx+4, posy, posz, 0, 0, 0, 0, 0);
            }
            if(listitem == 10)
            {
                GetPlayerPos(playerid, posx,posy,posz);
                PlayerInfo[playerid][veiculo] = CreateVehicle(451, posx+4, posy, posz, 0, 0, 0, 0, 0);
            }
            if(listitem == 11)
            {
                GetPlayerPos(playerid, posx,posy,posz);
                PlayerInfo[playerid][veiculo] = CreateVehicle(506, posx+4, posy, posz, 0, 0, 0, 0, 0);
            }
            if(listitem == 12)
            {
                GetPlayerPos(playerid, posx,posy,posz);
                PlayerInfo[playerid][veiculo] = CreateVehicle(560, posx+4, posy, posz, 0, 0, 0, 0, 0);
            }
            if(listitem == 13)
            {
                GetPlayerPos(playerid, posx,posy,posz);
                PlayerInfo[playerid][veiculo] = CreateVehicle(400, posx+4, posy, posz, 0, 0, 0, 0, 0);
            }
            if(listitem == 14)
            {
                GetPlayerPos(playerid, posx,posy,posz);
                PlayerInfo[playerid][veiculo] = CreateVehicle(522, posx+4, posy, posz, 0, 0, 0, 0, 0);
            }
            if(listitem == 15)
            {
                GetPlayerPos(playerid, posx,posy,posz);
                PlayerInfo[playerid][veiculo] = CreateVehicle(468, posx+4, posy, posz, 0, 0, 0, 0, 0);
            }
            if(listitem == 16)
            {
                GetPlayerPos(playerid, posx,posy,posz);
                PlayerInfo[playerid][veiculo] = CreateVehicle(471, posx+4, posy, posz, 0, 0, 0, 0, 0);
            }
            if(listitem == 17)
            {
                GetPlayerPos(playerid, posx,posy,posz);
                PlayerInfo[playerid][veiculo] = CreateVehicle(431, posx+4, posy, posz, 0, 0, 0, 0, 0);
            }
        }
    }
    return 1;
}



RE: [Ajuda] criação de veiculo em dialog - xbruno1000x - 29/10/2021

Código:
if(PlayerInfo[playerid][veiculo] == 1)
Isso não existe. Ou a variável é de ID do veículo, ou é booleana para conferir se criou ou não criou um veículo.


Código:
PlayerInfo[playerid][veiculo] = CreateVehicle(471, posx+4, posy, posz, 0, 0, 0, 0, 0);
Além disso, o valor tem uma chance minuscula de ser igual a 1. O primeiro veículo criado pelo servidor será valor 1, o segundo valor 2 e assim por diante.



Código:
CMD:da(playerid)
{
    for(new veiculoo = 0; veiculoo < MAX_VEHICLES; veiculoo++) DestroyVehicle(PlayerInfo[playerid][veiculo]);
    return 1;
}


Esse looping não serve de nada, você criou um looping que não é usado.

Resumidamente:
Adicione uma booleana para definir quando o player pode e quando não pode criar um veículo.
Remova o looping que não foi utilizado e torne a booleana falsa quando o player usar o comando /da.


RE: [Ajuda] criação de veiculo em dialog - MrThúúG - 30/10/2021

Fiz em mSelection. 
Código PHP:
#include <a_samp>
#include <zcmd>
#define Lista_Carros        "mSelection/carros.txt"
#include <mSelection>

new VeiculoCriado[MAX_PLAYERS];
new 
CriouCarro[MAX_PLAYERS];
new 
veiculosmList mS_INVALID_LISTID;

public 
OnGameModeInit()
{
    
veiculosmList LoadModelSelectionMenu(Lista_Carros);
}
public 
OnPlayerConnect(playerid)
{
    
CriouCarro[playerid] = 0;
    
VeiculoCriado[playerid] = 0;
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{
    if(
CriouCarro[playerid] == 1)
    {
        
DestroyVehicle(VeiculoCriado[playerid]);
        
VeiculoCriado[playerid] = INVALID_VEHICLE_ID;
        
CriouCarro[playerid] = 0;
    }
    return 
1;
}

CMD:cv(playerid)
{
    if(
IsPlayerConnected(playerid))
    {
        if(
CriouCarro[playerid] == 1)
        {
            
DestroyVehicle(VeiculoCriado[playerid]);
            
VeiculoCriado[playerid] = INVALID_VEHICLE_ID;
            
CriouCarro[playerid] = 0;
            
SendClientMessage(playerid0xE6E6E6E6"Seu veiculo anterior foi destruido.");
            
ShowModelSelectionMenu(playeridveiculosmList"Escolha seu novo carro"500x000000AA);
            
TogglePlayerControllable(playerid,0);
        }
        else
        {
            
ShowModelSelectionMenu(playeridveiculosmList"Escolha seu carro"500x000000AA);
            
TogglePlayerControllable(playerid,0);
        }
    }
    return 
1;
}

public 
OnPlayerModelSelection(playeridresponselistidmodelid)
{
    if(
listid == veiculosmList)
    {
        if(
response)
        {
            new 
Float:XFloat:YFloat:ZFloat:Angle;
            
GetPlayerPos(playeridXYZ);
            
GetPlayerFacingAngle(playeridAngle);
            
VeiculoCriado[playerid] = AddStaticVehicleEx(modelidXYZAngle, -1, -1, -1);
            
PutPlayerInVehicle(playeridVeiculoCriado[playerid], 0);
            
LinkVehicleToInterior(VeiculoCriado[playerid], GetPlayerInterior(playerid));
            
SetVehicleVirtualWorld(VeiculoCriado[playerid], GetPlayerVirtualWorld(playerid));
            
CriouCarro[playerid] = 1;
            
TogglePlayerControllable(playerid,1);
        }
    }
    else
    
SendClientMessage(playerid0xE6E6E6E6"Você cancelou o menu de carros!");
    
TogglePlayerControllable(playerid,1);
    return 
1;


Dentro da pasta scriptfiles crie uma pasta chamada mSelection e dentro dela crie um arquivo chamado carros.txt e cole o code abaixo no arquivo.

Código:
400 -16.0 0.0 -35.0
401 -16.0 0.0 -35.0
402 -16.0 0.0 -35.0
404 -16.0 0.0 -35.0
560 -16.0 0.0 -35.0
405 -16.0 0.0 -35.0
410 -16.0 0.0 -35.0
411 -16.0 0.0 -35.0
412 -16.0 0.0 -35.0
413 -16.0 0.0 -35.0
415 -16.0 0.0 -35.0
418 -16.0 0.0 -35.0
419 -16.0 0.0 -35.0
422 -16.0 0.0 -35.0
424 -16.0 0.0 -35.0
426 -16.0 0.0 -35.0
429 -16.0 0.0 -35.0
434 -16.0 0.0 -35.0
436 -16.0 0.0 -35.0
439 -16.0 0.0 -35.0
442 -16.0 0.0 -35.0
444 -16.0 0.0 -35.0
445 -16.0 0.0 -35.0
451 -16.0 0.0 -35.0
458 -16.0 0.0 -35.0
459 -16.0 0.0 -35.0
461 -16.0 0.0 -35.0
462 -16.0 0.0 -35.0
463 -16.0 0.0 -35.0
466 -16.0 0.0 -35.0
467 -16.0 0.0 -35.0
468 -16.0 0.0 -35.0
474 -16.0 0.0 -35.0
475 -16.0 0.0 -35.0
478 -16.0 0.0 -35.0
479 -16.0 0.0 -35.0
480 -16.0 0.0 -35.0
481 -16.0 0.0 -35.0
483 -16.0 0.0 -35.0
487 -16.0 0.0 -35.0
491 -16.0 0.0 -35.0
492 -16.0 0.0 -35.0
496 -16.0 0.0 -35.0
500 -16.0 0.0 -35.0
506 -16.0 0.0 -35.0
507 -16.0 0.0 -35.0
508 -16.0 0.0 -35.0
517 -16.0 0.0 -35.0
518 -16.0 0.0 -35.0
521 -16.0 0.0 -35.0
522 -16.0 0.0 -35.0
527 -16.0 0.0 -35.0
533 -16.0 0.0 -35.0
534 -16.0 0.0 -35.0
535 -16.0 0.0 -35.0
536 -16.0 0.0 -35.0
541 -16.0 0.0 -35.0
542 -16.0 0.0 -35.0
545 -16.0 0.0 -35.0
549 -16.0 0.0 -35.0
550 -16.0 0.0 -35.0
551 -16.0 0.0 -35.0
554 -16.0 0.0 -35.0
555 -16.0 0.0 -35.0
558 -16.0 0.0 -35.0
559 -16.0 0.0 -35.0
560 -16.0 0.0 -35.0
561 -16.0 0.0 -35.0
562 -16.0 0.0 -35.0
565 -16.0 0.0 -35.0
566 -16.0 0.0 -35.0
567 -16.0 0.0 -35.0
572 -16.0 0.0 -35.0
573 -16.0 0.0 -35.0
575 -16.0 0.0 -35.0
576 -16.0 0.0 -35.0
579 -16.0 0.0 -35.0
580 -16.0 0.0 -35.0
581 -16.0 0.0 -35.0
585 -16.0 0.0 -35.0
587 -16.0 0.0 -35.0
588 -16.0 0.0 -35.0
589 -16.0 0.0 -35.0
600 -16.0 0.0 -35.0
602 -16.0 0.0 -35.0
603 -16.0 0.0 -35.0
604 -16.0 0.0 -35.0
605 -16.0 0.0 -35.0



RE: [Ajuda] criação de veiculo em dialog - xxxjhonatan_wi - 30/10/2021

(29/10/2021 23:55)xbruno1000x Escreveu:
Código:
if(PlayerInfo[playerid][veiculo] == 1)
Isso não existe. Ou a variável é de ID do veículo, ou é booleana para conferir se criou ou não criou um veículo.


Código:
PlayerInfo[playerid][veiculo] = CreateVehicle(471, posx+4, posy, posz, 0, 0, 0, 0, 0);
Além disso, o valor tem uma chance minuscula de ser igual a 1. O primeiro veículo criado pelo servidor será valor 1, o segundo valor 2 e assim por diante.



Código:
CMD:da(playerid)
{
    for(new veiculoo = 0; veiculoo < MAX_VEHICLES; veiculoo++) DestroyVehicle(PlayerInfo[playerid][veiculo]);
    return 1;
}


Esse looping não serve de nada, você criou um looping que não é usado.

Resumidamente:
Adicione uma booleana para definir quando o player pode e quando não pode criar um veículo.
Remova o looping que não foi utilizado e torne a booleana falsa quando o player usar o comando /da.

Você pode transformar tudo que você falou no sistema pra funcionar? Eu só entendi um pouco, e não sei bem colocar na prática pra entender de fato k


RE: [Ajuda] criação de veiculo em dialog - MrThúúG - 30/10/2021

No topo do GM arrume isso

Código PHP:
new VeiculoCriado[MAX_PLAYERS];
new 
CriouCarro[MAX_PLAYERS]; 

Na Public OnPlayerConnect

Código PHP:
CriouCarro[playerid] = 0;
VeiculoCriado[playerid] = 0

Em OnplayerDisconnect Cole isso para limpar a variavel e destruir o veiculo quando o player der disconnect.

Código PHP:
    if(CriouCarro[playerid] == 1)
    {
        
DestroyVehicle(VeiculoCriado[playerid]);
        
VeiculoCriado[playerid] = INVALID_VEHICLE_ID;
        
CriouCarro[playerid] = 0;
    } 

Agora substitua os comandos e o dialog por esse...

Código PHP:
    if(dialogid == 5// DIALOG DO /VA
    
{

        if(
response)
        {

            new 
Float:posx,Float:posy,Float:posz;
            if(
listitem == 0)
            {

                if(
PlayerInfo[playerid][Admin] < 3) return SendClientMessage(playerid, -1"{B22222}[Breaking Peace] > {FFFFFF}veiculo restrito aos admins nivel 3 pra cima!");
                
GetPlayerPos(playeridposx,posy,posz);
                
CriouCarro[playerid] = 1;
                
VeiculoCriado[playerid] =  CreateVehicle(425posx+4posyposz00000);
            }
            if(
listitem == 1)
            {
            
                if(
PlayerInfo[playerid][Admin] < 4) return SendClientMessage(playerid, -1"{B22222}[Breaking Peace] > {FFFFFF}veiculo restrito aos admins nivel 4 pra cima!");
                
GetPlayerPos(playeridposx,posy,posz);
                
CriouCarro[playerid] = 1;
                
VeiculoCriado[playerid] =  CreateVehicle(520posx+4posyposz00000);
            }
            if(
listitem == 2)
            {

                if(
PlayerInfo[playerid][Admin] < 4) return SendClientMessage(playerid, -1"{B22222}[Breaking Peace] > {FFFFFF}veiculo restrito aos admins nivel 4 pra cima!");
                
GetPlayerPos(playeridposx,posy,posz);
                
CriouCarro[playerid] = 1;
                
VeiculoCriado[playerid] =  CreateVehicle(432posx+4posyposz00000);
            }
            if(
listitem == 3)
            {

                
GetPlayerPos(playeridposx,posy,posz);
                
CriouCarro[playerid] = 1;
                
VeiculoCriado[playerid] =  CreateVehicle(481posx+4posyposz00000);
            }
            if(
listitem == 4)
            {

                
GetPlayerPos(playeridposx,posy,posz);
                
CriouCarro[playerid] = 1;
                
VeiculoCriado[playerid] =  CreateVehicle(510posx+4posyposz00000);
            }
            if(
listitem == 5)
            {

                
GetPlayerPos(playeridposx,posy,posz);
                
CriouCarro[playerid] = 1;
                
VeiculoCriado[playerid] =  CreateVehicle(446posx+4posyposz00000);
            }
            if(
listitem == 6)
            {

                
GetPlayerPos(playeridposx,posy,posz);
                
CriouCarro[playerid] = 1;
                
VeiculoCriado[playerid] =  CreateVehicle(535posx+4posyposz00000);
            }
            if(
listitem == 7)
            {

                
GetPlayerPos(playeridposx,posy,posz);
                
CriouCarro[playerid] = 1;
                
VeiculoCriado[playerid] =  CreateVehicle(541posx+4posyposz00000);
            }
            if(
listitem == 8)
            {


                
GetPlayerPos(playeridposx,posy,posz);
                
CriouCarro[playerid] = 1;
                
VeiculoCriado[playerid] =  CreateVehicle(494posx+4posyposz00000);
            }
            if(
listitem == 9)
            {

                
GetPlayerPos(playeridposx,posy,posz);
                
CriouCarro[playerid] = 1;
                
VeiculoCriado[playerid] =  CreateVehicle(411posx+4posyposz00000);
            }
            if(
listitem == 10)
            {

                
GetPlayerPos(playeridposx,posy,posz);
                
CriouCarro[playerid] = 1;
                
VeiculoCriado[playerid] =  CreateVehicle(451posx+4posyposz00000);
            }
            if(
listitem == 11)
            {

                
GetPlayerPos(playeridposx,posy,posz);
                
CriouCarro[playerid] = 1;
                
VeiculoCriado[playerid] =  CreateVehicle(506posx+4posyposz00000);
            }
            if(
listitem == 12)
            {

                
GetPlayerPos(playeridposx,posy,posz);
                
CriouCarro[playerid] = 1;
                
VeiculoCriado[playerid] =  CreateVehicle(560posx+4posyposz00000);
            }
            if(
listitem == 13)
            {


                
GetPlayerPos(playeridposx,posy,posz);
                
VeiculoCriado[playerid] =  CreateVehicle(400posx+4posyposz00000);
            }
            if(
listitem == 14)
            {

                
GetPlayerPos(playeridposx,posy,posz);
                
CriouCarro[playerid] = 1;
                
VeiculoCriado[playerid] =  CreateVehicle(522posx+4posyposz00000);
            }
            if(
listitem == 15)
            {

                
GetPlayerPos(playeridposx,posy,posz);
                
CriouCarro[playerid] = 1;
                
VeiculoCriado[playerid] =  CreateVehicle(468posx+4posyposz00000);
            }
            if(
listitem == 16)
            {

                
GetPlayerPos(playeridposx,posy,posz);
                
CriouCarro[playerid] = 1;
                
VeiculoCriado[playerid] =  CreateVehicle(471posx+4posyposz00000);
            }
            if(
listitem == 17)
            {

                
GetPlayerPos(playeridposx,posy,posz);
                
CriouCarro[playerid] = 1;
                
VeiculoCriado[playerid] =  CreateVehicle(431posx+4posyposz00000);
            }
        }
    }
    return 
1;
}

CMD:da(playerid)
{
    if(
IsPlayerConnected(playerid))
    {
        if(
CriouCarro[playerid] == 1)
        {
            
DestroyVehicle(VeiculoCriado[playerid]);
            
VeiculoCriado[playerid] = INVALID_VEHICLE_ID;
            
CriouCarro[playerid] = 0;
            
SendClientMessage(playerid0xE6E6E6E6"Veiculo destruido com sucesso.");
        }
        else
        {
            
SendClientMessage(playerid0xE6E6E6E6"Voce nao criou nenhum veiculo.");
        }
 }
    return 
1;
}

CMD:va(playerid)
{
    if(CriouCarro[playerid] == 1) return SendClientMessage(playerid, -1"Voce ja tem um veiculo criado! Use: /da para destruir o veiculo criado.");
    ShowPlayerDialog(playerid5DIALOG_STYLE_LIST"{FFFFFF}Escolha um veiculo""{B22222}Hunter\n{B22222}Hydra\n{B22222}Rhino\n{FFFFFF}Bmx\n{FFFFFF}Mountain-Bike\n{FFFFFF}Squalo(Lancha)\n{FFFFFF}Slamvan\n{FFFFFF}Bullet\n{FFFFFF}Hotring-Racer\n{FFFFFF}Infernus\n{FFFFFF}Turismo\n{FFFFFF}Super-GT\n{FFFFFF}Sultan\nLandstalker\n{FFFFFF}Nrg-500\n{FFFFFF}Sanchez\n{FFFFFF}QuadBike\n{FFFFFF}Onibus""Pegar""Cancelar");
    return 1;