SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 13/01/2020, 04:14 PM   #1
Sants
Little Clucker
 
Sants's Avatar
 
Join Date: May 2019
Location: Brasília, Brazil
Posts: 15
Reputation: 0
Default Dialog em Dialog (socorro)

Boa tarde,

Estou montando uma GM de Dayz, e me ocorreu um problema: A dialog de logar(que está em dof2) está aparecendo quando um item da lista do inventário é clicado.
Procurei vastamente e vi que nenhuma das outras soluções se encaixavam no meu problema, se puderem me ajudar ficarei grato
Dialogs definidas com id diferentes:
Code:
#define DIALOG_LOGAR 1
#define DIALOG_REGISTRO 2
#define DIALOG_INVENTARIO 3
public OnDialogResponse:
Code:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	new arquivo[40],  name [MAX_PLAYER_NAME];
	GetPlayerName(playerid, name, 32);
	format(arquivo, 40, "Contas/%s.ini", name);
	if(dialogid == DIALOG_REGISTRO)
	{
		if(!strval(inputtext))
		{
			ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registre sua conta","Conta não registrada\n digite una senha para se registrar!", "Registrar", "Cancelar");
			SendClientMessage(playerid, -1 , "[DAYZ] Erro, Digite apenas números para se registrar.");
			return 1;
		}
		if(!response)
		{
			Kick(playerid);
			return 1;
		}
		else
		{
			Player[playerid][Senha] = strval(inputtext);
			DOF2_CreateFile(arquivo);
			GetPlayerPos(playerid, pPosX[playerid], pPosY[playerid], pPosZ[playerid]);
			GetPlayerFacingAngle(playerid, pPosA[playerid]);
			pInterior[playerid] = GetPlayerInterior(playerid);
			Player[playerid][Skin] = GetPlayerSkin(playerid);
			DOF2_SetInt(arquivo, "Senha", Player[playerid][Senha]);
			DOF2_SetInt(arquivo, "Assassinatos", Player[playerid][Assassinatos]);
			DOF2_SetInt(arquivo, "Morreu", Player[playerid][Morreu]);
			DOF2_SetInt(arquivo, "Level", Player[playerid][Level]);
			DOF2_SetInt(arquivo, "Skin", Player[playerid][Skin]);
			DOF2_SetInt(arquivo, "CashEmConta", Player[playerid][CashEmConta]);
			DOF2_SetFloat(arquivo, "PosX", pPosX[playerid]);
			DOF2_SetFloat(arquivo, "PosY", pPosY[playerid]);
			DOF2_SetFloat(arquivo, "PosZ", pPosZ[playerid]);
			DOF2_SetFloat(arquivo, "PosA", pPosA[playerid]);
			DOF2_SetInt(arquivo, "Interior", pInterior[playerid]);
			DOF2_SaveFile();
			SendClientMessage(playerid, -1, "[DAYZ] Sua conta foi registrada, Agora digite sua senha para logar!");
			ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", "Conta registrada \n digite sua senha para logar! \n Se errar 3 vezes será kickado!","Logar", "Cancelar");
		}
	}
	if(dialogid == DIALOG_LOGAR)
	{
		if(!response) return Kick(playerid);
		format(Player[playerid][Senha],  30, DOF2_GetString(arquivo, "Senha"));
		if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Digite a senha!\nDigite sua senha cadastrada para logar!\nSe errar 3 vezes sera kickado!", "Confirma", "Cancelar");
		if(strcmp(inputtext, Player[playerid][Senha], true) == 0)
		{

			Player[playerid][Skin] = DOF2_GetInt(arquivo, "Skin");
			Player[playerid][Level] = DOF2_GetInt(arquivo, "Level");
			SetPlayerScore(playerid, Player[playerid][Level]);
			SetPlayerSkin(playerid, Player[playerid][Skin]);
			// Quando ele loga com sucesso, carrega as informações acima.
		}
	}	
	else
	{
		ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", "Conta registrada \n digite sua senha para logar! \n Se errar 3 vezes será kickado!","Logar", "Cancelar");
		ErroSenha[playerid]++;
		if(ErroSenha[playerid] == 3)
		{
			SendClientMessage(playerid, -1, "Você foi kickado por errar 3 vezes a sua senha!");
			Kick(playerid);
			return 0;			
		}
	}
	// ----------- //
	if(dialogid==DIALOG_INVENTARIO)
	{
	
		if(response)
		{
			if(listitem == 0)
			{
				SendClientMessage(playerid, COR_AVISO, "aaaa");//quando clica nesse item volta pra dialog de login
				return 0;
			}
			if(listitem == 1)
			{
				SendClientMessage(playerid, COR_AVISO, "bbbbbb");
				return 1;
			}
		}
	}
	return 1;
}
Sants is offline   Reply With Quote
Old 13/01/2020, 04:28 PM   #2
Ermanhaut
Gangsta
 
Ermanhaut's Avatar
 
Join Date: Apr 2016
Location: Brazil
Posts: 653
Reputation: 47
Default Re: Dialog em Dialog (socorro)

Simples conflito de dialogid.
Para evitar isso, utilize enum para numera-los:
Code:
enum {
  DIALOG_LOGIN,  // Isso equivale a 1
  DIALOG_REGISTRO, // 2
  DIALOG_ETC // 3
};
__________________
try, try and try again
Ermanhaut is offline   Reply With Quote
Old 13/01/2020, 04:47 PM   #3
Sants
Little Clucker
 
Sants's Avatar
 
Join Date: May 2019
Location: Brasília, Brazil
Posts: 15
Reputation: 0
Default Re: Dialog em Dialog (socorro)

Então jovem, como eu disse o problema não esta na dialogid eu.
Eu coloquei no enum e continua a mesma coisa. E não faço ideia do que pode ser.
__________________
Só quero aprender pawn.
Sants is offline   Reply With Quote
Old 13/01/2020, 04:52 PM   #4
RiqueP
Gangsta
 
RiqueP's Avatar
 
Join Date: Jan 2014
Posts: 855
Reputation: 58
Default Re: Dialog em Dialog (socorro)

Pq usa return 1 e outras vezes return 0? Altere todos para 1 e caso use algum filterscript que tenha dialogs, APENAS O ULTIMO RETURN deve retornar 0. Tente isso e veja se da tudo certo.
__________________
Discord: RiqueP#1666
RiqueP is offline   Reply With Quote
Old 13/01/2020, 04:56 PM   #5
Sants
Little Clucker
 
Sants's Avatar
 
Join Date: May 2019
Location: Brasília, Brazil
Posts: 15
Reputation: 0
Default Re: Dialog em Dialog (socorro)

Alterei e continua a mesma coisa.
__________________
Só quero aprender pawn.
Sants is offline   Reply With Quote
Old 13/01/2020, 05:01 PM   #6
RiqueP
Gangsta
 
RiqueP's Avatar
 
Join Date: Jan 2014
Posts: 855
Reputation: 58
Default Re: Dialog em Dialog (socorro)

Seu codigo possui um else no lugar errado.
__________________
Discord: RiqueP#1666
RiqueP is offline   Reply With Quote
Old 13/01/2020, 05:06 PM   #7
Sants
Little Clucker
 
Sants's Avatar
 
Join Date: May 2019
Location: Brasília, Brazil
Posts: 15
Reputation: 0
Default Re: Dialog em Dialog (socorro)

Seria o ultimo else? Tentei arrumar colocando ele dentro do ultimo if, só que não consigo logar
__________________
Só quero aprender pawn.
Sants is offline   Reply With Quote
Old 13/01/2020, 05:10 PM   #8
RiqueP
Gangsta
 
RiqueP's Avatar
 
Join Date: Jan 2014
Posts: 855
Reputation: 58
Default Re: Dialog em Dialog (socorro)

PHP Code:
public OnDialogResponse(playeriddialogidresponselistiteminputtext[]) {
    new 
arquivo[40],  name [MAX_PLAYER_NAME];
    
GetPlayerName(playeridname32);
    
format(arquivo40"Contas/%s.ini"name);

    if(
dialogid == DIALOG_REGISTRO) {
        if(!
strval(inputtext)) {
            
ShowPlayerDialog(playeridDIALOG_REGISTRODIALOG_STYLE_PASSWORD"Registre sua conta","Conta não registrada\n digite una senha para se registrar!""Registrar""Cancelar");
            
SendClientMessage(playerid, -"[DAYZ] Erro, Digite apenas números para se registrar.");
            return 
1;
        }
        if(!
response) {
            
Kick(playerid);
            return 
1;
        }
        
Player[playerid][Senha] = strval(inputtext);
    
        
GetPlayerPos(playeridpPosX[playerid], pPosY[playerid], pPosZ[playerid]);
        
GetPlayerFacingAngle(playeridpPosA[playerid]);
    
        
pInterior[playerid] = GetPlayerInterior(playerid);
        
Player[playerid][Skin] = GetPlayerSkin(playerid);

        
DOF2_CreateFile(arquivo);
        
DOF2_SetInt(arquivo"Senha"Player[playerid][Senha]);
        
DOF2_SetInt(arquivo"Assassinatos"Player[playerid][Assassinatos]);
        
DOF2_SetInt(arquivo"Morreu"Player[playerid][Morreu]);
        
DOF2_SetInt(arquivo"Level"Player[playerid][Level]);
        
DOF2_SetInt(arquivo"Skin"Player[playerid][Skin]);
        
DOF2_SetInt(arquivo"CashEmConta"Player[playerid][CashEmConta]);
        
DOF2_SetFloat(arquivo"PosX"pPosX[playerid]);
        
DOF2_SetFloat(arquivo"PosY"pPosY[playerid]);
        
DOF2_SetFloat(arquivo"PosZ"pPosZ[playerid]);
        
DOF2_SetFloat(arquivo"PosA"pPosA[playerid]);
        
DOF2_SetInt(arquivo"Interior"pInterior[playerid]);
        
DOF2_SaveFile();

        
SendClientMessage(playerid, -1"[DAYZ] Sua conta foi registrada, Agora digite sua senha para logar!");
        
ShowPlayerDialog(playeridDIALOG_LOGARDIALOG_STYLE_PASSWORD"Login""Conta registrada \n digite sua senha para logar! \n Se errar 3 vezes será kickado!","Logar""Cancelar");
        return 
1;
    }
    else if(
dialogid == DIALOG_LOGAR)
    {
        if(!
response)
            return 
Kick(playerid);
            
        
format(Player[playerid][Senha],  30DOF2_GetString(arquivo"Senha"));
    
        if(!
strlen(inputtext))
            return 
ShowPlayerDialog(playeridDIALOG_LOGARDIALOG_STYLE_PASSWORD"Logar""Digite a senha!\nDigite sua senha cadastrada para logar!\nSe errar 3 vezes sera kickado!""Confirma""Cancelar");
        
        if(
strcmp(inputtextPlayer[playerid][Senha], true) == 0) {

            
Player[playerid][Skin] = DOF2_GetInt(arquivo"Skin");
            
Player[playerid][Level] = DOF2_GetInt(arquivo"Level");
            
SetPlayerScore(playeridPlayer[playerid][Level]);
            
SetPlayerSkin(playeridPlayer[playerid][Skin]);
            
// Quando ele loga com sucesso, carrega as informações acima.
        
}
        else {
            if((++
ErroSenha[playerid]) == 3) {
                
SendClientMessage(playerid, -1"Você foi kickado por errar 3 vezes a sua senha!");
                
Kick(playerid);
                return 
1;            
            }
            
ShowPlayerDialog(playeridDIALOG_LOGARDIALOG_STYLE_PASSWORD"Login""Conta registrada \n digite sua senha para logar! \n Se errar 3 vezes será kickado!","Logar""Cancelar");
        }
        return 
1;
    }
    else if(
dialogid==DIALOG_INVENTARIO) {
        if(
response) {
            if(
listitem == 0) {
                
SendClientMessage(playeridCOR_AVISO"aaaa");//quando clica nesse item volta pra dialog de login
                
return 1;
            }
            else if(
listitem == 1) {
                
SendClientMessage(playeridCOR_AVISO"bbbbbb");
                return 
1;
            }
        }
        return 
1;
    }
    return 
1;

(Estou pelo celular, se deixei passar algo me avise)

@EDIT

Na ultima dialog do inventário, você pode usar switch ao invés de sair dando if. É o ideal nessa situação e ele funciona melhor também.
__________________
Discord: RiqueP#1666
RiqueP is offline   Reply With Quote
Old 13/01/2020, 05:21 PM   #9
Sants
Little Clucker
 
Sants's Avatar
 
Join Date: May 2019
Location: Brasília, Brazil
Posts: 15
Reputation: 0
Default Re: Dialog em Dialog (socorro)

Voltou tudo para o começo, logo tranquilamente o problema é na hora que eu escolho o item da lista.
__________________
Só quero aprender pawn.
Sants is offline   Reply With Quote
Old 13/01/2020, 05:25 PM   #10
RiqueP
Gangsta
 
RiqueP's Avatar
 
Join Date: Jan 2014
Posts: 855
Reputation: 58
Default Re: Dialog em Dialog (socorro)

Poste o comando que abre o inventário. Você deve ter passado o ID errado para ShowPlayerDialog.
__________________
Discord: RiqueP#1666
RiqueP is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
CLEO - Automatically select from DIALOG, when DIALOG is opened, and click the first button. AlaDyn172 Scripting Help 0 05/12/2019 02:43 AM
[DIALOG]How i Create A dialog Whent Player Login To Enter in Dialog The Password donhu789 Scripting Help 8 29/09/2013 08:15 AM
Warning: PlayerDialogResponse PlayerId: 0 dialog ID doesn't match last sent dialog ID Blackazur Scripting Help 1 30/04/2013 07:25 PM
[19:58:45] Warning: PlayerDialogResponse PlayerId: 28 dialog ID doesn't match last sent dialog ID, what it means? niels44 Scripting Help 6 13/06/2012 06:53 PM
Big problem (PlayerDialogResponse PlayerId: 57 dialog ID doesn't match last sent dialog ID) RingoRus Server Support 3 12/06/2012 06:54 PM


All times are GMT. The time now is 07:04 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.