[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(playerid, reason) { 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(playerid, 0xE6E6E6E6, "Seu veiculo anterior foi destruido."); ShowModelSelectionMenu(playerid, veiculosmList, "Escolha seu novo carro", 50, 0x000000AA); TogglePlayerControllable(playerid,0); } else { ShowModelSelectionMenu(playerid, veiculosmList, "Escolha seu carro", 50, 0x000000AA); TogglePlayerControllable(playerid,0); } } return 1; }
public OnPlayerModelSelection(playerid, response, listid, modelid) { if(listid == veiculosmList) { if(response) { new Float:X, Float:Y, Float:Z, Float:Angle; GetPlayerPos(playerid, X, Y, Z); GetPlayerFacingAngle(playerid, Angle); VeiculoCriado[playerid] = AddStaticVehicleEx(modelid, X, Y, Z, Angle, -1, -1, -1); PutPlayerInVehicle(playerid, VeiculoCriado[playerid], 0); LinkVehicleToInterior(VeiculoCriado[playerid], GetPlayerInterior(playerid)); SetVehicleVirtualWorld(VeiculoCriado[playerid], GetPlayerVirtualWorld(playerid)); CriouCarro[playerid] = 1; TogglePlayerControllable(playerid,1); } } else SendClientMessage(playerid, 0xE6E6E6E6, "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(playerid, posx,posy,posz); CriouCarro[playerid] = 1; VeiculoCriado[playerid] = 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); CriouCarro[playerid] = 1; VeiculoCriado[playerid] = 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); CriouCarro[playerid] = 1; VeiculoCriado[playerid] = CreateVehicle(432, posx+4, posy, posz, 0, 0, 0, 0, 0); } if(listitem == 3) {
GetPlayerPos(playerid, posx,posy,posz); CriouCarro[playerid] = 1; VeiculoCriado[playerid] = CreateVehicle(481, posx+4, posy, posz, 0, 0, 0, 0, 0); } if(listitem == 4) {
GetPlayerPos(playerid, posx,posy,posz); CriouCarro[playerid] = 1; VeiculoCriado[playerid] = CreateVehicle(510, posx+4, posy, posz, 0, 0, 0, 0, 0); } if(listitem == 5) {
GetPlayerPos(playerid, posx,posy,posz); CriouCarro[playerid] = 1; VeiculoCriado[playerid] = CreateVehicle(446, posx+4, posy, posz, 0, 0, 0, 0, 0); } if(listitem == 6) {
GetPlayerPos(playerid, posx,posy,posz); CriouCarro[playerid] = 1; VeiculoCriado[playerid] = CreateVehicle(535, posx+4, posy, posz, 0, 0, 0, 0, 0); } if(listitem == 7) {
GetPlayerPos(playerid, posx,posy,posz); CriouCarro[playerid] = 1; VeiculoCriado[playerid] = CreateVehicle(541, posx+4, posy, posz, 0, 0, 0, 0, 0); } if(listitem == 8) {
GetPlayerPos(playerid, posx,posy,posz); CriouCarro[playerid] = 1; VeiculoCriado[playerid] = CreateVehicle(494, posx+4, posy, posz, 0, 0, 0, 0, 0); } if(listitem == 9) {
GetPlayerPos(playerid, posx,posy,posz); CriouCarro[playerid] = 1; VeiculoCriado[playerid] = CreateVehicle(411, posx+4, posy, posz, 0, 0, 0, 0, 0); } if(listitem == 10) {
GetPlayerPos(playerid, posx,posy,posz); CriouCarro[playerid] = 1; VeiculoCriado[playerid] = CreateVehicle(451, posx+4, posy, posz, 0, 0, 0, 0, 0); } if(listitem == 11) {
GetPlayerPos(playerid, posx,posy,posz); CriouCarro[playerid] = 1; VeiculoCriado[playerid] = CreateVehicle(506, posx+4, posy, posz, 0, 0, 0, 0, 0); } if(listitem == 12) {
GetPlayerPos(playerid, posx,posy,posz); CriouCarro[playerid] = 1; VeiculoCriado[playerid] = CreateVehicle(560, posx+4, posy, posz, 0, 0, 0, 0, 0); } if(listitem == 13) {
GetPlayerPos(playerid, posx,posy,posz); VeiculoCriado[playerid] = CreateVehicle(400, posx+4, posy, posz, 0, 0, 0, 0, 0); } if(listitem == 14) {
GetPlayerPos(playerid, posx,posy,posz); CriouCarro[playerid] = 1; VeiculoCriado[playerid] = CreateVehicle(522, posx+4, posy, posz, 0, 0, 0, 0, 0); } if(listitem == 15) {
GetPlayerPos(playerid, posx,posy,posz); CriouCarro[playerid] = 1; VeiculoCriado[playerid] = CreateVehicle(468, posx+4, posy, posz, 0, 0, 0, 0, 0); } if(listitem == 16) {
GetPlayerPos(playerid, posx,posy,posz); CriouCarro[playerid] = 1; VeiculoCriado[playerid] = CreateVehicle(471, posx+4, posy, posz, 0, 0, 0, 0, 0); } if(listitem == 17) {
GetPlayerPos(playerid, posx,posy,posz); CriouCarro[playerid] = 1; VeiculoCriado[playerid] = CreateVehicle(431, posx+4, posy, posz, 0, 0, 0, 0, 0); } } } return 1; }
CMD:da(playerid) { if(IsPlayerConnected(playerid)) { if(CriouCarro[playerid] == 1) { DestroyVehicle(VeiculoCriado[playerid]); VeiculoCriado[playerid] = INVALID_VEHICLE_ID; CriouCarro[playerid] = 0; SendClientMessage(playerid, 0xE6E6E6E6, "Veiculo destruido com sucesso."); } else { SendClientMessage(playerid, 0xE6E6E6E6, "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(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; }
|