Portal SAMP
[Ajuda] Ajuda com dialog (response) - 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 com dialog (response) (/showthread.php?tid=4832)



Ajuda com dialog (response) - Alfarr Heimrik - 09/07/2024

Código PHP:
case DIALOG_COMANDOS:
{
    if(
response)
    {
        if(listitem == 0)
        {
            new 
Message[5000];
            
strcat(Message"Comandos Gerais\n");
            
strcat(Message"Comandos Casa\n");
            
strcat(Message"Comandos Empresa\n");
            
strcat(Message"Comandos Veiculo\n");
            
strcat(Message"Procedimentos Roleplay");
            
ShowPlayerDialog(playeridDIALOG_COMANDOSPLAYERDIALOG_STYLE_LIST"Comandos Player"Message"Selecionar""Voltar");
        }
    }
    return 
1;
}

case 
DIALOG_COMANDOSPLAYER:
{
    if(listitem == 0)
    {
        if(response)
        {
            new Message[5000];
            strcat(Message"Os comandos gerais ainda nao foram definidos");
            ShowPlayerDialog(playerid5000DIALOG_STYLE_MSGBOX"Comandos Gerais"Message"Visto""Voltar");
        }
        else
        {
            
ShowPlayerDialog(playeridDIALOG_COMANDOSDIALOG_STYLE_LIST"Comandos disponiveis para a sua conta"DialogCMDS"Selecionar""Fechar");
        }
        return 
1;
    }


Boa noite. Se possível me ajudem, por favor.
Não estou conseguindo retornar a DIALOG_COMANDOS quando o player clica em "Voltar" na DIALOG_COMANDOSPLAYER. Ao invés de
mostrar a dialog, a função apenas é encerrada.


RE: Ajuda com dialog (response) - Aranha - 09/07/2024

(09/07/2024 00:17)Alfarr Heimrik Escreveu:
Código PHP:
case DIALOG_COMANDOS:
{
    if(
response)
    {
        if(listitem == 0)
        {
            new 
Message[5000];
            
strcat(Message"Comandos Gerais\n");
            
strcat(Message"Comandos Casa\n");
            
strcat(Message"Comandos Empresa\n");
            
strcat(Message"Comandos Veiculo\n");
            
strcat(Message"Procedimentos Roleplay");
            
ShowPlayerDialog(playeridDIALOG_COMANDOSPLAYERDIALOG_STYLE_LIST"Comandos Player"Message"Selecionar""Voltar");
        }
    }
    return 
1;
}

case 
DIALOG_COMANDOSPLAYER:
{
    if(listitem == 0)
    {
        if(response)
        {
            new Message[5000];
            strcat(Message"Os comandos gerais ainda nao foram definidos");
            ShowPlayerDialog(playerid5000DIALOG_STYLE_MSGBOX"Comandos Gerais"Message"Visto""Voltar");
        }
        else
        {
            
ShowPlayerDialog(playeridDIALOG_COMANDOSDIALOG_STYLE_LIST"Comandos disponiveis para a sua conta"DialogCMDS"Selecionar""Fechar");
        }
        return 
1;
    }


Boa noite. Se possível me ajudem, por favor.
Não estou conseguindo retornar a DIALOG_COMANDOS quando o player clica em "Voltar" na DIALOG_COMANDOSPLAYER. Ao invés de
mostrar a dialog, a função apenas é encerrada.
Se eu entendi era isso que precisava?
Código:
case DIALOG_COMANDOS:
{
    if(response)
    {
        

        if(listitem == 0)
        {
            

            new Message[5000];
            strcat(Message, "Comandos Gerais\n");
            strcat(Message, "Comandos Casa\n");
            strcat(Message, "Comandos Empresa\n");
            strcat(Message, "Comandos Veiculo\n");
            strcat(Message, "Procedimentos Roleplay");
            ShowPlayerDialog(playerid, DIALOG_COMANDOSPLAYER, DIALOG_STYLE_LIST, "Comandos Player", Message, "Selecionar", "Voltar");
        }

    }
    else
    {
        
        ShowPlayerDialog(playerid, DIALOG_COMANDOS, DIALOG_STYLE_LIST, "Comandos disponiveis para a sua conta", DialogCMDS, "Selecionar", "Fechar");

    }
    return 1;
}



RE: Ajuda com dialog (response) - Alfarr Heimrik - 09/07/2024

(09/07/2024 10:22)Aranha Escreveu: Se eu entendi era isso que precisava?
Código:
case DIALOG_COMANDOS:
{
    if(response)
    {
        

        if(listitem == 0)
        {
            

            new Message[5000];
            strcat(Message, "Comandos Gerais\n");
            strcat(Message, "Comandos Casa\n");
            strcat(Message, "Comandos Empresa\n");
            strcat(Message, "Comandos Veiculo\n");
            strcat(Message, "Procedimentos Roleplay");
            ShowPlayerDialog(playerid, DIALOG_COMANDOSPLAYER, DIALOG_STYLE_LIST, "Comandos Player", Message, "Selecionar", "Voltar");
        }

    }
    else
    {
        
        ShowPlayerDialog(playerid, DIALOG_COMANDOS, DIALOG_STYLE_LIST, "Comandos disponiveis para a sua conta", DialogCMDS, "Selecionar", "Fechar");

    }
    return 1;
}

O que estou precisando entender é o seguinte:
Segue o código abaixo com o comentario ( // )
Código PHP:
case DIALOG_COMANDOSPLAYER:
{
    if(listitem == 0)
    {
        if(response)
        {
            new Message[5000];
            strcat(Message"Os comandos gerais ainda nao foram definidos");
            ShowPlayerDialog(playerid5000DIALOG_STYLE_MSGBOX"Comandos Gerais"Message"Visto""Voltar");
        }
        else 
// Aqui não deveria retornar a dialog abaixo, caso o player escolhesse o botão 2? Bem, não está funcionando. O que eu deveria fazer?
        
{
            
ShowPlayerDialog(playeridDIALOG_COMANDOSDIALOG_STYLE_LIST"Comandos disponiveis para a sua conta"DialogCMDS"Selecionar""Fechar");
        }
        return 
1;
    }


No caso, deveria retornar essa dialog aqui:

Código PHP:
case DIALOG_COMANDOS:
{
    if(
response)
    {
        if(listitem == 0)
        {
            new 
Message[5000];
            
strcat(Message"Comandos Gerais\n");
            
strcat(Message"Comandos Casa\n");
            
strcat(Message"Comandos Empresa\n");
            
strcat(Message"Comandos Veiculo\n");
            
strcat(Message"Procedimentos Roleplay");
            
ShowPlayerDialog(playeridDIALOG_COMANDOSPLAYERDIALOG_STYLE_LIST"Comandos Player"Message"Selecionar""Voltar");
        }
        if(
listitem == 1)
        {
            new 
Message[5000];
            
strcat(Message"Auxiliar\n");
            
strcat(Message"Moderador\n");
            
strcat(Message"Administrandor\n");
            
strcat(Message"Gerente\n");
            
strcat(Message"Diretor\n");
            
strcat(Message"Fundador\n");
            
strcat(Message"Todos os comandos disponiveis");
            
ShowPlayerDialog(playeridDIALOG_COMANDOSADMINDIALOG_STYLE_LIST"Selecione o cargo"Message"Selecionar""Voltar");
        }
        if(
listitem == 2)
        {
            new 
Message[5000];
            
strcat(Message"Nivel 1\n");
            
strcat(Message"Nivel 2");
            
ShowPlayerDialog(playeridDIALOG_COMANDOSPREMIUMDIALOG_STYLE_LIST"Selecione o nivel de seu status premium"Message"Selecionar""Voltar");
        }
    }
    return 
1;


Comando:
Código PHP:
CMD:comandos(playeridparams[]) return I-HRP:cmds(playerid,params);
CMD:cmds(playeridparams[]) {
    
DialogCMDS[0] = EOS;
    
strcat(DialogCMDS"Comandos Player\n");
    if(
Player[playerid][pAdmin] > 0strcat(DialogCMDS"Comandos Admin\n");
    if(
Player[playerid][pPremium] > 0strcat(DialogCMDS"Comandos Premium");
    
ShowPlayerDialog(playeridDIALOG_COMANDOSDIALOG_STYLE_LIST"Comandos disponiveis para a sua conta"DialogCMDS"Selecionar""Fechar");
    return 
1;




RE: Ajuda com dialog (response) - xbruno1000x - 09/07/2024

Só pra você entender a estrutura de uma dialog:
Código:
case DIALOG_COMANDOSPLAYER:
{
    if(response)
    {
        if(listitem == 0)
        {
            new Message[5000];
            strcat(Message, "Os comandos gerais ainda nao foram definidos");
            ShowPlayerDialog(playerid, 5000, DIALOG_STYLE_MSGBOX, "Comandos Gerais", Message, "Visto", "Voltar");
        }
    } else {
        return ShowPlayerDialog(playerid, DIALOG_COMANDOS, DIALOG_STYLE_LIST, "Comandos disponiveis para a sua conta", DialogCMDS, "Selecionar", "Fechar");
    }
}

Primeiro você precisa testar se houve resposta, para depois verificar o listitem. Se não houve resposta, não vai ter nenhum listitem selecionado.

Segundo que a else precisaria ser uma alternativa para resposta. Senão houver resposta, acontecerá coisa x. Você havia colocado uma else para o listitem.

E por último, é provável que a dialog não retorne nada se a variavel DialogCMDS estiver vazia. Pelo menos nesse trecho de código você não fez nada para preenche-la.


RE: Ajuda com dialog (response) - Alfarr Heimrik - 11/07/2024

(09/07/2024 21:57)xbruno1000x Escreveu: Só pra você entender a estrutura de uma dialog:
Código:
case DIALOG_COMANDOSPLAYER:
{
    if(response)
    {
        if(listitem == 0)
        {
            new Message[5000];
            strcat(Message, "Os comandos gerais ainda nao foram definidos");
            ShowPlayerDialog(playerid, 5000, DIALOG_STYLE_MSGBOX, "Comandos Gerais", Message, "Visto", "Voltar");
        }
    } else {
        return ShowPlayerDialog(playerid, DIALOG_COMANDOS, DIALOG_STYLE_LIST, "Comandos disponiveis para a sua conta", DialogCMDS, "Selecionar", "Fechar");
    }
}

Primeiro você precisa testar se houve resposta, para depois verificar o listitem. Se não houve resposta, não vai ter nenhum listitem selecionado.

Segundo que a else precisaria ser uma alternativa para resposta. Senão houver resposta, acontecerá coisa x. Você havia colocado uma else para o listitem.

E por último, é provável que a dialog não retorne nada se a variavel DialogCMDS estiver vazia. Pelo menos nesse trecho de código você não fez nada para preenche-la.

Consegui entender onde eu estava errando e consegui resolver.
Obrigado Smile