Paginas por dialogs -
Ghost112397 - 26.10.2016
Buenas, alguien podrнa darme un empujуn sobre como hacer paginas por dialogs? no sй si me explico, estoy haciendo un dialog que obtiene todas las casas existentes y quisiera que se muestren 20 casas por pбgina, y colocar "Siguiente" como ъltima fila en el dialog, y pasar a la siguiente pбgina y que muestre las demбs casas, y asн sucesivamente, no sй si me explico.
Muchas gracias de antemano.
Respuesta: Paginas por dialogs -
Z0MBERTH - 26.10.2016
MAX_LOAD_HOUSES = 20
Respuesta: Paginas por dialogs -
Ghost112397 - 26.10.2016
Quote:
Originally Posted by Zo0mer
MAX_LOAD_HOUSES = 20
|
Agradezco tu comentario, pero sinceramente eso no me orienta hacia ningъn lado xD
Respuesta: Paginas por dialogs -
dannypanda05 - 26.10.2016
їDe quй servidor viste eso? їY que lenguaje de guardado de datos usas?
Respuesta: Paginas por dialogs -
Ghost112397 - 26.10.2016
Quote:
Originally Posted by dannypanda05
їDe quй servidor viste eso? їY que lenguaje de guardado de datos usas?
|
Lo he visto hace algunos aсos pero no recuerdo de que servidor exactamente. En la actualidad vengo desarrollando mi servidor desde cero hace ya un tiempito y se me ocurriу hacer algo asн. Uso SQLite, aunque no va al caso, yo simplemente quiero una orientaciуn o un ejemplo de un script de una lista en dialog que al llegar a determinado nъmero de variables mostradas, se cree una nueva pбgina y tenga la opciуn de pasar a esta, y asн sucesivamente.
Respuesta: Paginas por dialogs -
Zume - 27.10.2016
Lo que quieres podrнa ser asн:
PHP код:
enum CasaEnum {
casaTrue,
casaPrecio
};
new CasasInfo[100][CasaEnum];
new PageView[MAX_PLAYERS];
stock OpenDialog(playerid) {
OpenDialogIn(playerid, 0);
}
stock OpenDialogIn(playerid, start) {
PageView[playerid] = start;
OpenDialogEx(playerid, PageView[playerid]);
}
stock OpenDialogEx(playerid, start) {
new
p = start,
str[512],
init = p*20,
end = init + 20,
p1 = 0
;
if((p1 = GetMaxHousesPages()) < p) {
return printf("Error: No hay mas de %i paginas de casas", p1+1);
}
for(new i = init; i < end; i++) if(CasasInfo[i][casaTrue]) {
printf("Casa ID %i - Precio: $%i", i, CasasInfo[i][casaPrecio]);
}
if(start > 0) {
printf("Atras");
}
if(p < p1) {
printf("Siguiente");
}
return 1;
}
stock GetMaxHousesPages() {
return (CountHouses() / 20) - 1;
}
stock CountHouses() {
new s = 0;
for( new i ; i < sizeof(CasasInfo); i++) if(CasasInfo[i][casaTrue]) {
s ++;
}
return s;
}
y acб un pequeсo simulador (estб en print para ver los resultados sin tener que ir a probar el diбlogo.. Solamente remplaza el code por el format dentro del bucle.. Y ten en cuenta que muestra solamente casas que existen por lo que si una no tiene casaTrue no lo mostrarб y "i" no serб siempre el ID de la casa ..)
PHP код:
main() {
// # Simulador del script
for(new i = 0; i < sizeof(CasasInfo); i++) if(!CasasInfo[i][casaTrue]) {
CasasInfo[i][casaTrue] = true;
CasasInfo[i][casaPrecio] = random(250);
printf("Loaded %i for $%i", i, CasasInfo[i][casaPrecio]);
}
printf("-------------------------");
new playerid = 0,
page = 4;
OpenDialogIn(playerid, page);
}
Desde ahн puedes establecer la pбgina, si estбs en la ъltima pбgina no te mostrarб "siguiente" si estбs en la primera no te mostrarб "atrбs" si estбs al medio de este rango te muestra ambas.
Para hacer el cambio de pбgina fнjate en la variable y nada mбs aumentala o reducela..
Otra cosa, GetMaxHousesPages obtiene la cantidad de casas para el script interno, ya que las casas comienzan desde el ID 0 (por ello al ser 0 multiplicado por 20 es 0 la primera comenzarб desde lo primero valga la redundancia ..) asн que si quieres saber la cantidad real a la funciуn anterior hace falta sumarle 1
otra cosa: Es recomendable agregar una constante y sustituir el 20 por la constante para evitar tener que cambiar todos los nъmeros al agregar o reducir el nъmero de pбginas.
De otra forma podrнas utilizar el SQLite con el LIMIT pero eso requerirнa una consulta de lo cual no sй si el servidor estй frecuentemente conectado a la base de datos por lo que puedes no obtener siempre los datos "actuales" del juego