Portal SAMP
[Ajuda] Problemas com dialogs - 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] Problemas com dialogs (/showthread.php?tid=1828)



Problemas com dialogs - LukaGoldberg - 10/11/2021

Olá pessoal, eu estou com problemas ao encaminhar uma pessoa que acabou de responder uma dialog para outra dialog, isso aconteceu recentemente e estou com problemas para terminar a minha gm por causa desse bug chato.

Bem, como falei, eu tento fazer a pessoa responder outra dialog após ela responder uma, porém... ela simplesmente não aparece!
A dialog de registro atualmente ainda está funcionando, porém as outras não...

Aqui está um dos códigos que não aparece:
Código:
    if(dialogid == DIALOG_TABLET)
    {
        if(response)
        {
            switch(listitem)
            {
                case 0:{
                    ShowPlayerDialog(playerid, DIALOG_DIGITARN_FICHA, DIALOG_STYLE_INPUT, "Banco de Dados Policial", "Digite o nome do suspeito a ser consultado.", "Confirmar", "Cancelar");
                }
                case 1:{
                    ShowPlayerDialog(playerid, DIALOG_AUTUARSUSPEITO, DIALOG_STYLE_INPUT, "Banco de dados policial", "Informe o nome do suspeito a ser autuado. [ Nome_Sobrenome ]", "Confirmar", "Cancelar");
                }
            }
        }
    }
Essa que acabei de digitar é a "home" podemos dizer, ela aparece, porém quando tento selecionar qualquer uma das alternativas, não acontece nada!
Código:
CMD:tablet(playerid)
{
    if(Policial[playerid] == false) return SendClientMessage(playerid, Vermelho, "SCRP: Você não tem um tablet!");

    ShowPlayerDialog(playerid, DIALOG_TABLET, DIALOG_STYLE_LIST, "Banco de Dados Policial de San Cristus", "Buscar ficha de um individuo\nAutuar um individuo", "Confirmar", "Desligar");
    new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z);
    for(new i; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
               if(IsPlayerInRangeOfPoint(i, 5.0, X, Y, Z))
               {
                   new StringTexto[500];
                  format(StringTexto, sizeof(StringTexto), "**[%d] O oficial %s pega seu tablet e liga-o.", playerid, pName(playerid));
                SendClientMessage(i, RoxoFraco, StringTexto);
                SetPlayerChatBubble(playerid, StringTexto, 0xFF0000FF, 100.0, 5000);
                }
        }    
    }    
    return 1;
}
Esse é o comando, mas eu acho que ele não tem muito a ver
Agora vou mandar a dialog que era pra aparecer após a resposta do player:
Código:
    if(dialogid == DIALOG_DIGITARN_FICHA)
    {
        format(Variavel[playerid], 250, "%s", strval(inputtext));
        format(Arquivo, sizeof(Arquivo), "Contas/%s", Variavel[playerid]);
        if(!DOF2_FileExists(Arquivo)) return SendClientMessage(playerid, Vermelho, "TABLET: Suspeito nao encontrado no sistema nacional.");
        if(!IsPlayerConnected(GetPlayerID(Variavel[playerid]))) return SendClientMessage(playerid, Vermelho, "O suspeito não foi encontrado em nosso sistema.");
        if(!response) return ShowPlayerDialog(playerid, DIALOG_TABLET, DIALOG_STYLE_LIST, "Banco de Dados Policial de San Cristus", "Buscar ficha de um individuo", "Confirmar", "Desligar");
        new string1[250], string2[500];
        format(string1, 250, "Ficha de individuo: %s", inputtext);
        format(string2, 500, "Nome: %s\nSexo: %s\nNivel de procurado: %d\nPassagens pela policia: %d\nNo sistema penitenciario: %s", Variavel[playerid], GetSexo(Player[GetPlayerID(Variavel[playerid])][Sexo]), FichaSuspeito[GetPlayerID(Variavel[playerid])][Procurado], FichaSuspeito[GetPlayerID(Variavel[playerid])][Passagens]);
        ShowPlayerDialog(playerid, DIALOG_FICHASUSPEITO, DIALOG_STYLE_MSGBOX, string1, string2, "Desligar", "");
    }


Espero que alguém possa me ajudar, isso atrasou muito a abertura do meu servidor.


RE: Problemas com dialogs - ipsLuan - 10/11/2021

A melhor forma de ver o que está acontecendo é através de debug para saber até aonde o seu código está sendo executado.
Mas antes disso, verifique se você não juntou os dialogs com o mesmo identificador.

Para "debugar/depurar" o código, use a função print(f) da própria biblioteca do SA-MP para identificar todas as linhas do código, bem como também na callback que executa ao chamar algum dialog para verificar os parâmetros que estão sendo enviados.

Sugiro também importar em seu servidor as bibliotecas do CrashDetect e Nativechecker para verificar se há algum erro com códigos terceiros.


RE: Problemas com dialogs - LukaGoldberg - 10/11/2021

Olá, eu coloquei uma print e realmente, o código não está chegando, mas eu não estou entendendo, o que pode estar acontecendo que ele não chega no script? Não há nenhum erro

(10/11/2021 20:06)ipsLuan Escreveu: A melhor forma de ver o que está acontecendo é através de debug para saber até aonde o seu código está sendo executado.
Mas antes disso, verifique se você não juntou os dialogs com o mesmo identificador.

Para "debugar/depurar" o código, use a função print(f) da própria biblioteca do SA-MP para identificar todas as linhas do código, bem como também na callback que executa ao chamar algum dialog para verificar os parâmetros que estão sendo enviados.

Sugiro também importar em seu servidor as bibliotecas do CrashDetect e Nativechecker para verificar se há algum erro com códigos terceiros.

.


RE: Problemas com dialogs - xbruno1000x - 11/11/2021

(10/11/2021 21:31)LukaGoldberg Escreveu: Olá, eu coloquei uma print e realmente, o código não está chegando, mas eu não estou entendendo, o que pode estar acontecendo que ele não chega no script? Não há nenhum erro

(10/11/2021 20:06)ipsLuan Escreveu: A melhor forma de ver o que está acontecendo é através de debug para saber até aonde o seu código está sendo executado.
Mas antes disso, verifique se você não juntou os dialogs com o mesmo identificador.

Para "debugar/depurar" o código, use a função print(f) da própria biblioteca do SA-MP para identificar todas as linhas do código, bem como também na callback que executa ao chamar algum dialog para verificar os parâmetros que estão sendo enviados.

Sugiro também importar em seu servidor as bibliotecas do CrashDetect e Nativechecker para verificar se há algum erro com códigos terceiros.

.

Use o printf com parâmetros e confirme que os valores que estão chegando estão certos.

exemplo:
printf("%d", listitem);