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