Como hago esto en OnDialogResponse
#1

Buenas, quiero hacer algo con el sistema de negocios, que al hacer click en un negocio pase X cosa con ese negocio, pero no sй como averiguar la Id del negocio, no se si me expliquй bien, acб dejo el cуdigo:

pawn Код:
CMD:test(playerid, params[])
{
new vstring[1000], zone[MAX_ZONE_NAME];
                        for(new n; n < MAX_NEGOCIOS; n++)
                        {
                            if(Negocio[n][nTipo] == 1)
                            {
                                GetBizz3DZone(n, zone, sizeof(zone));
                                format(vstring, sizeof(vstring), "%s\n%s - Direcciуn: %s # %d", vstring, Negocio[n][nNombreNegocio], zone, n);
                            }
                            Dialogo(playerid, Dialogo_GPS_Sevens, LIST, "{00C4FF}> {FFFFFF} Ubicaciones de tiendas Se7en {GPS}",vstring, "Localizar", "Cancelar");
                        }
return 1;
}
En ondialogrsponse...


pawn Код:
case Dialogo_GPS_Sevens:
        {
            if(response)
            {
                for(new n; n < MAX_NEGOCIOS; n++)
                {
                    if(Negocio[n][nTipo] == 1)
                    {
                        Mensaje(playerid, Color_Info, "Se ha marcado en el mapa la ubicaciуn de la tienda.");
                        FijarCheckpoint(playerid, Negocio[n][nExteriorX], Negocio[n][nExteriorY], Negocio[n][nExteriorZ], 1.0);
                        PlayerPlaySound(playerid, 1138, 0,0,0);
                    }
                }
            }
        }
Lo que necesito es que al clickear en el dialgo de /test, en ondialogresponse se pueda saber cual es la id del negocio... (La cual aparece en /test en la lista), no se si me haga entender...

Espero respuestas, gracias
Reply
#2

Si es un dialogo de tipo lista, entonces utiliza "listitem". Y si tu dialogo esta dividida en paginas, multiplica el numero total de resultados en una pagina por el numero de pagina en la que estйs, substrae el resultado por el numero total de resultados en una pagina y luego sumale el valor de "listitem" para obtener el id correcto.

pawn Код:
OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
Reply
#3

Quote:
Originally Posted by SickAttack
Посмотреть сообщение
Si es un dialogo de tipo lista, entonces utiliza "listitem". Y si tu dialogo esta dividida en paginas, multiplica el listitem por el numero de pagina para obtener el id correcto.

pawn Код:
OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
Hola gracias por responder, pero no me queda muy claro como usar listitem en este caso, porque digamos que el negocio id 40 estб en la lнnea 2 del dialog, osea que al usar listitem, no quedarнa como si el id del negocio fuera 2? O que, como puedo hacerlo... Si me podes ayudar te lo agradecerнa
Reply
#4

Quote:
Originally Posted by Infernux
Посмотреть сообщение
Hola gracias por responder, pero no me queda muy claro como usar listitem en este caso, porque digamos que el negocio id 40 estб en la lнnea 2 del dialog, osea que al usar listitem, no quedarнa como si el id del negocio fuera 2? O que, como puedo hacerlo... Si me podes ayudar te lo agradecerнa
Digamos que tienes la lista dividida en paginas y que cada pagina contiene 20 elementos. Ahora supongamos que estas en la pagina numero 3 y haces clic en el 2do elemento. Entonces para calcular el id, multiplica el numero total de resultados en una pagina (que es 20) por la pagina en la que estйs (que es 3), luego substrae el resultado por el numero total de resultados en una pagina (que es 20) y luego le sumas la cantidad que posee "listitem" (que es 2 en este caso porque hicimos clic en el 2do elemento).

- Perdуn por la confusiуn del ultimo post. Nose en que estaba pensando, porque lo puse mal, pero ya lo corrige!
Reply
#5

Quote:
Originally Posted by SickAttack
Посмотреть сообщение
Digamos que tienes la lista dividida en paginas y que cada pagina contiene 20 elementos. Ahora supongamos que estas en la pagina numero 3 y haces clic en el 2do elemento. Entonces para calcular el id, multiplica el numero total de resultados en una pagina (que es 20) por la pagina en la que estйs (que es 3), luego substrae el resultado por el numero total de resultados en una pagina (que es 20) y luego le sumas la cantidad que posee "listitem" (que es 2 en este caso porque hicimos clic en el 2do elemento).
No, osea a ver, te lo pongo asн:

Digamos que asi tengo el dialog:

id: 1
id: 3
id: 5
id: 20
id: 35
id: 45
id: 50

No lo tengo divivido por paginas, cada id que te mostrй es un espacio en el dialog, osea un \n o listitem.

Como hago que al hacer click en el listitem 4 (el cual vendria siendo id: 35) se me marque el checkpoint en las coordenadas del negocio 35? (Por ejemplo).

Gracias!
Reply
#6

Quote:
Originally Posted by Infernux
Посмотреть сообщение
No, osea a ver, te lo pongo asн:

Digamos que asi tengo el dialog:

id: 1
id: 3
id: 5
id: 20
id: 35
id: 45
id: 50

No lo tengo divivido por paginas, cada id que te mostrй es un espacio en el dialog, osea un \n o listitem.

Como hago que al hacer click en el listitem 4 (el cual vendria siendo id: 35) se me marque el checkpoint en las coordenadas del negocio 35? (Por ejemplo).

Gracias!
Guarda los resultados en un array porque asн dinбmicamente no lo vas a obtener sin mucho bardo, o haz el ciclo de nuevo y luego comprueba si es el mismo.
Reply
#7

Bueno lo intentarй asн, gracias
Reply
#8

Casi dos meses atrбs resolvн una duda similar, espero que sea de tu ayuda:
http://forum.sa-mp.com/showpost.php?...37&postcount=3
Reply
#9

Podes uaar un truquito, es analizar el item clixkeado como string y no como listitem. En ondialogresponse cuando seleccionas una lista inputtext sera igual al nombre del нtem que clickeaste.

Mostras el dialogo, supongamos que el formato es asн

ID | Nombre ejemplo
5 | pizza snacks
pawn Код:
new buff[512];
format(..)
SjowPlayerDialog()
Y cuando el tipo clickea, en ondialogresponse:
pawn Код:
new
    id, // acб guardas el id
    name[50];

sscanf(inputtext, "p<|>ds[50]", id, name);
// listo, ahora id vale el negocio que clickeaste y name el nombre.
Reply
#10

Quote:
Originally Posted by spell
Посмотреть сообщение
Podes uaar un truquito, es analizar el item clixkeado como string y no como listitem. En ondialogresponse cuando seleccionas una lista inputtext sera igual al nombre del нtem que clickeaste.

Mostras el dialogo, supongamos que el formato es asн

ID | Nombre ejemplo
5 | pizza snacks
pawn Код:
new buff[512];
format(..)
SjowPlayerDialog()
Y cuando el tipo clickea, en ondialogresponse:
pawn Код:
new
    id, // acб guardas el id
    name[50];

sscanf(inputtext, "p<|>ds[50]", id, name);
// listo, ahora id vale el negocio que clickeaste y name el nombre.
Y estas consiente que los negocios pueden tener el mismo nombre?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)