Como hago esto en OnDialogResponse -
Infernux - 26.05.2015
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
Re: Como hago esto en OnDialogResponse -
SickAttack - 26.05.2015
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[])
Re: Como hago esto en OnDialogResponse -
Infernux - 26.05.2015
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
Re: Como hago esto en OnDialogResponse -
SickAttack - 26.05.2015
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!
Re: Como hago esto en OnDialogResponse -
Infernux - 26.05.2015
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!
Re: Como hago esto en OnDialogResponse -
SickAttack - 26.05.2015
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.
Re: Como hago esto en OnDialogResponse -
Infernux - 26.05.2015
Bueno lo intentarй asн, gracias
Respuesta: Como hago esto en OnDialogResponse -
admantis - 27.05.2015
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
Re: Como hago esto en OnDialogResponse -
spell - 27.05.2015
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.
Re: Como hago esto en OnDialogResponse -
SickAttack - 27.05.2015
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?