[Ajuda] ShowPlayerDialog
#1

Й o seguinte pessoal, oque nгo faz sair para mim do modo difнcil para fбcil dos dialogs do sa-mp й algumas duvidas, tenho um dialog aqui mais ele nгo executa.

Tenho tipo isso..

pawn Код:
ShowPlayerDialog(playerid, 1326, DIALOG_STYLE_MSGBOX, "Concessionбria", "Vocк realmente quer fazer a compra deste veнculo?", "Confirmar", "Cancelar"); // dialog

        if (dialogid == 1326)
        {
            if (response == 1)
            {
                vehsalvar[playerid] = 1;
                TogglePlayerControllable(playerid,1);
                SetVehicleVirtualWorld(ShopCar[playerid], 0);
                Conce[playerid] = 0;
                PrecoCarro(playerid);
            }
            else
            {
                PlayerInfo[playerid][pVeiculoModelo] = 0;
                vehsalvar[playerid] = 0;
                Conce[playerid] = 0;
                TogglePlayerControllable(playerid,1);
                RemovePlayerFromVehicle(playerid);
                SetPlayerVirtualWorld(playerid, 0);
                DestroyVehicle(ShopCar[playerid]);
                SetPlayerPos(playerid,2780.4939, -1812.2635, 11.8438);
                ShowPlayerDialog(playerid, 1319, DIALOG_STYLE_LIST, "Concessionбria", "Venda de um veнculo\nComprar um veнculo", "Selecionar", "Sair");
            }
        }
Nгo estб executando quando clica em Cancelar, pois nгo sei como resolver tenho anos de sa-mp e isso sempre ficou me deixando com raiva..
pawn Код:
if (dialogid == 1326)
        {
            if (response == 1) // estб executando bem "Confirmar"
            {
                vehsalvar[playerid] = 1;
                TogglePlayerControllable(playerid,1);
                SetVehicleVirtualWorld(ShopCar[playerid], 0);
                Conce[playerid] = 0;
                PrecoCarro(playerid);
            }
            else // essa parte aqui nгo executa quando clica em "Cancelar"
            {
                PlayerInfo[playerid][pVeiculoModelo] = 0;
                vehsalvar[playerid] = 0;
                Conce[playerid] = 0;
                TogglePlayerControllable(playerid,1);
                RemovePlayerFromVehicle(playerid);
                SetPlayerVirtualWorld(playerid, 0);
                DestroyVehicle(ShopCar[playerid]);
                SetPlayerPos(playerid,2780.4939, -1812.2635, 11.8438);
                ShowPlayerDialog(playerid, 1319, DIALOG_STYLE_LIST, "Concessionбria", "Venda de um veнculo\nComprar um veнculo", "Selecionar", "Sair");
            }
        }
Reply
#2

Usa o crashdetect e ele te dira o problema.
Reply
#3

Faz um debug pra entender melhor, vocк sу consegue resolver um erro quando vocк entende o erro... ^^
Reply
#4

Mais aqui nгo й debug ou algo parecido, aqui й falta de conhecimento mesmo, pois nгo sei oque colocar aqui para funcionar a parte do "Cancelar", pq sу o "Confirma" funfa. Ou seja, vocк clica em "Cancelar" o dialog sу desaparece, e os cуdigos a ser executados nгo executem, ou seja o dialog parte "Cancelar" nгo funfa, caso tenha alguйm com mais experiencia e saiba do assunto pode me ajudar agradeзo

pawn Код:
if (dialogid == 1326)
        {
            if (response == 1)
            {
                vehsalvar[playerid] = 1;
                TogglePlayerControllable(playerid,1);
                SetVehicleVirtualWorld(ShopCar[playerid], 0);
                Conce[playerid] = 0;
                PrecoCarro(playerid);
            }
            if (response == 0)
            //else - retirei o else, mais nгo mudou nada
            {
                vehsalvar[playerid] = 0;
                Conce[playerid] = 0;
                TogglePlayerControllable(playerid,1);
                RemovePlayerFromVehicle(playerid);
                SetPlayerVirtualWorld(playerid, 0);
                SetPlayerPos(playerid,2780.4939, -1812.2635, 11.8438);
                DestroyVehicle(ShopCar[playerid]);
                OnPlayerCommandText(playerid,"/concessionaria");
                printf("Segunda parte do cуdigo executado com sucesso!");
            }
        }
@edit

Usei debug e nada, nгo executa a parte "Cancelar".
Reply
#5

pawn Код:
if (dialogid == 1326)
        {
            if (response == 0)
            {
                vehsalvar[playerid] = 1;
                TogglePlayerControllable(playerid,1);
                SetVehicleVirtualWorld(ShopCar[playerid], 0);
                Conce[playerid] = 0;
                PrecoCarro(playerid);
            }
            if (response == 1)
            {
                vehsalvar[playerid] = 0;
                Conce[playerid] = 0;
                TogglePlayerControllable(playerid,1);
                RemovePlayerFromVehicle(playerid);
                SetPlayerVirtualWorld(playerid, 0);
                SetPlayerPos(playerid,2780.4939, -1812.2635, 11.8438);
                DestroyVehicle(ShopCar[playerid]);
                OnPlayerCommandText(playerid,"/concessionaria");
                printf("Segunda parte do cуdigo executado com sucesso!");
            }
        }
Tenta ai Eu Testei aqui e Funcionou
Reply
#6

Vou ver aqui, caso contrario vou tentar resolver e pedir ajuda aqui neste tуpico..
Reply
#7

O response sу pode ser 1 ou 0
1 - botгo esquerdo, no caso, Confimar
0 - botгo direito, no caso, Cancelar

faz como o amigo disse, depura seu cуdigo, coloca um printf pra imprimir no console o valor do response.

tira o conteudo do else pra fora da estrutura e coloca um return 1 no fim do if, assim ele para de executar quando chega no final do if(apenas se o response for igual a 1).
Reply
#8

falta de conhecimento sу se for pra usar debug, porque tб errado isso...

E outra, nгo й response 2, й response 0 que indica o botгo de cancelar em sua maioria.

pawn Код:
if (response == 0) //assim
if (!response) //ou assim
sobre o debug, й recomendбvel que tu aplique uma linha de debug em cada linha do escopo problemбtico, quando o escopo й pequeno, semelhante a este seu. Assim a eficiкncia do debug aumenta, vocк sabendo a linha em que o cуdigo parou, vocк saberб oque estб dando erro...

Abraзos.
Reply
#9

Algo tгo simples й incrнvel programadores quase "Profissionais" no assunto nгo explicar isto, O cara especificou no tуpico "Ajuda" estб pedindo para explicarem para ele aonde estб o erro ao invйs de ficarem publicando sу mensagem, Se nгo irб ajuda-lo dizendo aonde estб o erro nгo responda.

Cуdigo funcional e explicaзхes dos erros.

Ajudei? +Rep

Funзгo abaixo continua a mesma:
PHP код:
ShowPlayerDialog(playerid1326DIALOG_STYLE_MSGBOX"Concessionбria""Vocк realmente quer fazer a compra deste veнculo?""Confirmar""Cancelar"); 
Cуdigo arrumado:
PHP код:
        if(dialogid == 1326)
        {
            if(
response
            {
                
vehsalvar[playerid] = 1;
                
TogglePlayerControllable(playerid,1);
                
SetVehicleVirtualWorld(ShopCar[playerid], 0);
                
Conce[playerid] = 0;
                
PrecoCarro(playerid);
            }
            else 
            {
                
PlayerInfo[playerid][pVeiculoModelo] = 0;
                
vehsalvar[playerid] = 0;
                
Conce[playerid] = 0;
                
TogglePlayerControllable(playerid,1);
                
RemovePlayerFromVehicle(playerid);
                
SetPlayerVirtualWorld(playerid0);
                
DestroyVehicle(ShopCar[playerid]);
                
SetPlayerPos(playerid,2780.4939, -1812.263511.8438);
                
ShowPlayerDialog(playerid1319DIALOG_STYLE_LIST"Concessionбria""Venda de um veнculo\nComprar um veнculo""Selecionar""Sair");
            }
        } 
Nгo use:
PHP код:
if(response == 0
/*-- ou --*/
if(response == 1
Use as funзхes de acordo com o botгo clicado com o cуdigo abaixo:
PHP код:
if(response)
{
/*-- Funзгo para o botгo (esquerdo) (---------) --*/
}
else
{
/*-- Funзгo para o botгo (---------) (direito) --*/

Observaзгo: Nгo estou dando aula para ninguйm, apenas ajudando pois as vezes tambйm tenho dъvidas.
Reply
#10

Quote:
Originally Posted by [BOPE]Seu._.Madruga
Посмотреть сообщение
Algo tгo simples й incrнvel programadores quase "Profissionais" no assunto nгo saber explicaristo.
Nгo entendi a quem vocк se referiu, mas pra inicio de conversa, vocк nгo explicou nada, apenas jogou um cуdigo a mais para ele testar. E ainda vem instruir ele a nгo usar if de uma forma, porйm, de outra.

A condicional ali estб certa para ambos os casos, nгo hб motivos para essa sua correзгo "nгo use isto"...


Prefiro explicar oque й debug e vocкs aprenderem sozinhos a corrigirem seus prуprios erros, caso contrбrio, o fуrum vai ser sempre assim cheio de posts de problemas bestas, porque as pessoas nгo tem o hбbito de debugar o cуdigo.

Abraзos.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)