Paginas por dialogs
#1

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.
Reply
#2

MAX_LOAD_HOUSES = 20
Reply
#3

Quote:
Originally Posted by Zo0mer
Посмотреть сообщение
MAX_LOAD_HOUSES = 20
Agradezco tu comentario, pero sinceramente eso no me orienta hacia ningъn lado xD
Reply
#4

їDe quй servidor viste eso? їY que lenguaje de guardado de datos usas?
Reply
#5

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.
Reply
#6

Lo que quieres podrнa ser asн:

PHP код:
enum CasaEnum {
    
casaTrue,
    
casaPrecio
};
new 
CasasInfo[100][CasaEnum];
new 
PageView[MAX_PLAYERS];
stock OpenDialog(playerid) {
    
OpenDialogIn(playerid0);
}
stock OpenDialogIn(playeridstart) {
       
PageView[playerid] = start;
       
OpenDialogEx(playeridPageView[playerid]);
}
stock OpenDialogEx(playeridstart) {
    new
        
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 
initendi++) if(CasasInfo[i][casaTrue]) {
        
printf("Casa ID %i - Precio: $%i"iCasasInfo[i][casaPrecio]);
    }
    if(
start 0) {
        
printf("Atras");
    }
    if(
p1) {
        
printf("Siguiente");
    }
    return 
1;
}
stock GetMaxHousesPages() {
    return (
CountHouses() / 20) - 1;
}
stock CountHouses() {
    new 
0;
    for( new 
sizeof(CasasInfo); i++) if(CasasInfo[i][casaTrue]) {
        
++;
    }
    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 0sizeof(CasasInfo); i++) if(!CasasInfo[i][casaTrue]) {
        
CasasInfo[i][casaTrue] = true;
        
CasasInfo[i][casaPrecio] = random(250);
        
printf("Loaded %i for $%i"iCasasInfo[i][casaPrecio]);
    }
    
printf("-------------------------");
    new 
playerid 0,
        
page 4;
    
    
OpenDialogIn(playeridpage);

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
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)