SA-MP Forums Archive
[Ayuda] Error usando DIALOG [Novato] - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: [Ayuda] Error usando DIALOG [Novato] (/showthread.php?tid=490819)



[Ayuda] Error usando DIALOG [Novato] - Casvill - 28.01.2014

Hola!
Es la primera vez que intento usar los dialog's, y me topй con un error.
Un comando para elegir autos/motos

El compilador no lo muestra, pero al probar el cуdigo en el juego, no puedo elegir motos, y al elegir entre autos o motos, cualquiera que elija me saca un auto.

Aquн el cуdigo:
Код:
#define DIALOG 1  //defino DIALOG
//este es el comando:
 if (strcmp("/vehiculos" , cmdtext, true, 10) == 0)
  {
    ShowPlayerDialog(playerid, DIALOG, DIALOG_STYLE_LIST, "VEHICULOS:", "Autos\nMotos", "Seleccionar", "Cancelar");

  }

Y aquн el DialogResponse, aquн debe estar el bug, pero no sй cual es :S

Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
  if(response)
  {
     new vehicle, Float:x, Float:y, Float:z, Float:angle;
     GetPlayerPos( playerid, x, y, z );
     GetPlayerFacingAngle( playerid, angle );

    
	switch(dialogid)
   	{
     case 1:
           {
             ShowPlayerDialog(playerid,DIALOG, DIALOG_STYLE_LIST, "Autos", "Infernus\nTurismo", "Seleccionar", "Cancelar");
             if(response)
             {
			  switch(listitem)
		      {
		        case 0:
		        {
                  vehicle = CreateVehicle( 411, x, y, z, angle, -1, -1, -1);
                  LinkVehicleToInterior( vehicle, GetPlayerInterior( playerid ) );
                  SetVehicleVirtualWorld( vehicle, GetPlayerVirtualWorld( playerid ) );
                  PutPlayerInVehicle(playerid,vehicle,0);
		        }
		       
		        case 1:
		        {
                  vehicle = CreateVehicle( 451, x, y, z, angle, -1, -1, -1);
                  LinkVehicleToInterior( vehicle, GetPlayerInterior( playerid ) );
                  SetVehicleVirtualWorld( vehicle, GetPlayerVirtualWorld( playerid ) );
                  PutPlayerInVehicle(playerid,vehicle,0);
		        }
			   }
             }
		   }
	 case 2:
		   {
             ShowPlayerDialog(playerid, DIALOG+1, DIALOG_STYLE_LIST, "Motos", "FCR-900\nNRG-500", "Seleccionar", "Cancelar");
			 if(response)
			 {
			   switch(listitem)
			   {
			     case 0:
                 {
                   vehicle = CreateVehicle( 521, x, y, z, angle, -1, -1, -1);
                   LinkVehicleToInterior( vehicle, GetPlayerInterior( playerid ) );
                   SetVehicleVirtualWorld( vehicle, GetPlayerVirtualWorld( playerid ) );
                   PutPlayerInVehicle(playerid,vehicle,0);
			     }
			     case 1:
			     {
                   vehicle = CreateVehicle( 522, x, y, z, angle, -1, -1, -1);
                   LinkVehicleToInterior( vehicle, GetPlayerInterior( playerid ) );
                   SetVehicleVirtualWorld( vehicle, GetPlayerVirtualWorld( playerid ) );
                   PutPlayerInVehicle(playerid,vehicle,0);
			     }
			    }
			  }
			}
	}
  }

 return 1;
}
Quй es lo que hice mal?
Es la primera vez que pruebo usar esto -.-"

Gracias de antemano.


Respuesta: [Ayuda] Error usando DIALOG [Novato] - Tirael - 28.01.2014

Segъn tu cуdigo siempre te mostrara el mismo dialog.

Dentro del case 1 del switch tienes este cуdigo:

pawn Код:
ShowPlayerDialog(playerid,DIALOG, DIALOG_STYLE_LIST, "Autos", "Infernus\nTurismo", "Seleccionar", "Cancelar");
Eso hace que siempre salga el mismo dialog, si lo retiras dejaras ejecutar correctamente el dialog.


Respuesta: [Ayuda] Error usando DIALOG [Novato] - Casvill - 28.01.2014

Quote:
Originally Posted by Tirael
Посмотреть сообщение
Segъn tu cуdigo siempre te mostrara el mismo dialog.

Dentro del case 1 del switch tienes este cуdigo:

pawn Код:
ShowPlayerDialog(playerid,DIALOG, DIALOG_STYLE_LIST, "Autos", "Infernus\nTurismo", "Seleccionar", "Cancelar");
Eso hace que siempre salga el mismo dialog, si lo retiras dejaras ejecutar correctamente el dialog.
Y cуmo debo cambiarlo o quй?

Gracias por responder


Respuesta: [Ayuda] Error usando DIALOG [Novato] - OTACON - 28.01.2014

pawn Код:
ShowPlayerDialog(playerid,ID_DIALOG, DIALOG_STYLE_LIST, "Autos", "coche1\coche2\ncoche3\ncoche4", "Seleccionar", "Cancelar");
pawn Код:
#define ID_DIALOG (1)
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){

    new vehicle, Float:x, Float:y, Float:z, Float:angle;
    GetPlayerPos( playerid, x, y, z );
    GetPlayerFacingAngle( playerid, angle );

    switch(dialogid){
        case ID_DIALOG:{
            if(response){
                switch(listitem){
                    case 0:{
                      vehicle = CreateVehicle( 411, x, y, z, angle, -1, -1, -1);
                      LinkVehicleToInterior( vehicle, GetPlayerInterior( playerid ) );
                      SetVehicleVirtualWorld( vehicle, GetPlayerVirtualWorld( playerid ) );
                      PutPlayerInVehicle(playerid,vehicle,0);
                    }
                    case 1:{
                      vehicle = CreateVehicle( 451, x, y, z, angle, -1, -1, -1);
                      LinkVehicleToInterior( vehicle, GetPlayerInterior( playerid ) );
                      SetVehicleVirtualWorld( vehicle, GetPlayerVirtualWorld( playerid ) );
                      PutPlayerInVehicle(playerid,vehicle,0);
                    }
                    case 2:{
                       vehicle = CreateVehicle( 521, x, y, z, angle, -1, -1, -1);
                       LinkVehicleToInterior( vehicle, GetPlayerInterior( playerid ) );
                       SetVehicleVirtualWorld( vehicle, GetPlayerVirtualWorld( playerid ) );
                       PutPlayerInVehicle(playerid,vehicle,0);
                    }
                    case 3:{
                       vehicle = CreateVehicle( 522, x, y, z, angle, -1, -1, -1);
                       LinkVehicleToInterior( vehicle, GetPlayerInterior( playerid ) );
                       SetVehicleVirtualWorld( vehicle, GetPlayerVirtualWorld( playerid ) );
                       PutPlayerInVehicle(playerid,vehicle,0);
                    }
                    //ETC...
                }
            }
        }
    }

    return false;
}



Respuesta: [Ayuda] Error usando DIALOG [Novato] - Casvill - 28.01.2014

Quote:
Originally Posted by OTACON
Посмотреть сообщение
pawn Код:
ShowPlayerDialog(playerid,ID_DIALOG, DIALOG_STYLE_LIST, "Autos", "coche1\coche2\ncoche3\ncoche4", "Seleccionar", "Cancelar");
pawn Код:
#define ID_DIALOG (1)
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){

    new vehicle, Float:x, Float:y, Float:z, Float:angle;
    GetPlayerPos( playerid, x, y, z );
    GetPlayerFacingAngle( playerid, angle );

    switch(dialogid){
        case ID_DIALOG:{
            if(response){
                switch(listitem){
                    case 0:{
                      vehicle = CreateVehicle( 411, x, y, z, angle, -1, -1, -1);
                      LinkVehicleToInterior( vehicle, GetPlayerInterior( playerid ) );
                      SetVehicleVirtualWorld( vehicle, GetPlayerVirtualWorld( playerid ) );
                      PutPlayerInVehicle(playerid,vehicle,0);
                    }
                    case 1:{
                      vehicle = CreateVehicle( 451, x, y, z, angle, -1, -1, -1);
                      LinkVehicleToInterior( vehicle, GetPlayerInterior( playerid ) );
                      SetVehicleVirtualWorld( vehicle, GetPlayerVirtualWorld( playerid ) );
                      PutPlayerInVehicle(playerid,vehicle,0);
                    }
                    case 2:{
                       vehicle = CreateVehicle( 521, x, y, z, angle, -1, -1, -1);
                       LinkVehicleToInterior( vehicle, GetPlayerInterior( playerid ) );
                       SetVehicleVirtualWorld( vehicle, GetPlayerVirtualWorld( playerid ) );
                       PutPlayerInVehicle(playerid,vehicle,0);
                    }
                    case 3:{
                       vehicle = CreateVehicle( 522, x, y, z, angle, -1, -1, -1);
                       LinkVehicleToInterior( vehicle, GetPlayerInterior( playerid ) );
                       SetVehicleVirtualWorld( vehicle, GetPlayerVirtualWorld( playerid ) );
                       PutPlayerInVehicle(playerid,vehicle,0);
                    }
                    //ETC...
                }
            }
        }
    }

    return false;
}
Pero cуmo hago para que, si elige ejemplo coche1 entonces saque otro dialog mostrando la lista de coches guardada en coche 1.

Como en el cуdigo que puse, si elige autos muestra una lista de autos y los puede escoger, si elige motos muestra una lista de motos y las puede escoger.

Gracias por responder, como siempre seco en tus respuestas xD


Respuesta: [Ayuda] Error usando DIALOG [Novato] - OTACON - 28.01.2014

pawn Код:
switch(dialogid){
        case ID_DIALOG+0:{
            if(response){
                switch(listitem){
                    case 0:{
                        ShowPlayerDialog(playerid,ID_DIALOG+1, DIALOG_STYLE_LIST, "MMenu Autos 1", "coche1\coche2\ncoche3\ncoche4", "Seleccionar", "Cancelar");
                    }
                    //ETC...
                }
            }
        }
    }

    switch(dialogid){ //menu 1
        case ID_DIALOG+1:{
            if(response){
                switch(listitem){
                    case 0:{{
                    //ACA TU FUNCION
                        ShowPlayerDialog(playerid,ID_DIALOG+1, DIALOG_STYLE_LIST, "MMenu Autos 1", "coche1\coche2\ncoche3\ncoche4", "Seleccionar", "Cancelar");
                    }
                    case 1:{{
                    //ACA TU FUNCION
                        ShowPlayerDialog(playerid,ID_DIALOG+1, DIALOG_STYLE_LIST, "MMenu Autos 1", "coche1\coche2\ncoche3\ncoche4", "Seleccionar", "Cancelar");
                    }
                    case 2:{{
                    //ACA TU FUNCION
                        ShowPlayerDialog(playerid,ID_DIALOG+1, DIALOG_STYLE_LIST, "MMenu Autos 1", "coche1\coche2\ncoche3\ncoche4", "Seleccionar", "Cancelar");
                    }
                    case 3:{{
                    //ACA TU FUNCION
                        ShowPlayerDialog(playerid,ID_DIALOG+1, DIALOG_STYLE_LIST, "MMenu Autos 1", "coche1\coche2\ncoche3\ncoche4", "Seleccionar", "Cancelar");
                    }
                    //ETC...
                }
            }else{ //cuando cancelas el menu vuelve al principal
                ShowPlayerDialog(playerid,ID_DIALOG+1, DIALOG_STYLE_LIST, "MMenu Autos 1", "coche1\coche2\ncoche3\ncoche4", "Seleccionar", "Cancelar");
            }
        }
   }



Respuesta: [Ayuda] Error usando DIALOG [Novato] - BruceDickinson - 28.01.2014

mira tambien las ids de los dialogos que no se te mezclen


Respuesta: [Ayuda] Error usando DIALOG [Novato] - Tirael - 28.01.2014

pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
  if(response)
  {
     new vehicle, Float:x, Float:y, Float:z, Float:angle;
     GetPlayerPos( playerid, x, y, z );
     GetPlayerFacingAngle( playerid, angle );


    switch(dialogid)
    {
     case 1:
           {
             //Aquн tu error ====> ShowPlayerDialog(playerid,DIALOG, DIALOG_STYLE_LIST, "Autos", "Infernus\nTurismo", "Seleccionar", "Cancelar");
            // Eso se ejecutaba antes del switch y por eso no funcionaba
             if(response)
             {
              switch(listitem)
              {
                case 0:
                {
                  vehicle = CreateVehicle( 411, x, y, z, angle, -1, -1, -1);
                  LinkVehicleToInterior( vehicle, GetPlayerInterior( playerid ) );
                  SetVehicleVirtualWorld( vehicle, GetPlayerVirtualWorld( playerid ) );
                  PutPlayerInVehicle(playerid,vehicle,0);
                }

                case 1:
                {
                  vehicle = CreateVehicle( 451, x, y, z, angle, -1, -1, -1);
                  LinkVehicleToInterior( vehicle, GetPlayerInterior( playerid ) );
                  SetVehicleVirtualWorld( vehicle, GetPlayerVirtualWorld( playerid ) );
                  PutPlayerInVehicle(playerid,vehicle,0);
                }
               }
             }
           }
     case 2:
           {
             ShowPlayerDialog(playerid, DIALOG+1, DIALOG_STYLE_LIST, "Motos", "FCR-900\nNRG-500", "Seleccionar", "Cancelar");
             if(response)
             {
               switch(listitem)
               {
                 case 0:
                 {
                   vehicle = CreateVehicle( 521, x, y, z, angle, -1, -1, -1);
                   LinkVehicleToInterior( vehicle, GetPlayerInterior( playerid ) );
                   SetVehicleVirtualWorld( vehicle, GetPlayerVirtualWorld( playerid ) );
                   PutPlayerInVehicle(playerid,vehicle,0);
                 }
                 case 1:
                 {
                   vehicle = CreateVehicle( 522, x, y, z, angle, -1, -1, -1);
                   LinkVehicleToInterior( vehicle, GetPlayerInterior( playerid ) );
                   SetVehicleVirtualWorld( vehicle, GetPlayerVirtualWorld( playerid ) );
                   PutPlayerInVehicle(playerid,vehicle,0);
                 }
                }
              }
            }
    }
  }

 return 1;
}