Bonjour,
Qui n'a pas rêver de pouvoir faire comme sur les site et faire une pagination dans un gui ! ?
Voici le code expliquer :
#--
# Choisissons le nombre de pages, ici le gui fait 54 slots
# 52 car 2 slots qui sont réservés à la pagination.
#--
options:
n_par_page : 52
#--
# Commande de gui avec un nombre pour choisir la page
#
command /gui [<number>]:
trigger:
#--
#--
# Ici comme je n’avais pas d'idée pour remplir les variables j'ai fait une boucle pour remplir a i+1 la variable de liste
set {_i} to 0
loop 180 times:
add {_i} to {_list::*}
add 1 to {_i}
#
#--
#--
# Ici on fait la pagination, on fait en gros la taille de la liste dans mon cas 180/52 arrondi au supérieur.
set {_NbPage} to round up size of {_List::*}/{@n_par_page}
#
#--
#--
# On vérifie si le nombre max de pages dans l'argument si c'est supérieur ou inférieur à 0 alors on a droit à un message
if arg-1 is higher than {_NbPage}:
message "&cErreur : il n'y a que &61 à &6%{_NbPage}% &cpages !"
else if arg-1 <= 0:
message "&cErreur : il n'y a que &61 à &6%{_NbPage}% &cpages !"
#
#--
#--
# Ici nous allons simplement faire du code dans le else->if on set i sur 0, car nous n'avons
# pas renseigné de page. Pour le else->else on met arg sur 1, puis -1, car si l'on met /gui 1
# et qu'on fait la commande le chiffre de départ sera 1, or on veut que ce soit 0? Donc 1-1*52 = 0
# chiffre de départ =0. Si l'on met 2, 2-1*52 = 52, donc ça commencera de 53, car ça part de 1 l’index de la liste.
# C'est compliqué je vous l'accorde, mais ce sont des algorithmes super importants qu'on utilise de partout.
else:
if arg-1 is not set:
set {_i} to 0
set {_currentpage} to 0
else:
set {_arg} to arg-1
set {_currentpage} to arg-1
remove 1 from {_arg}
set {_i} to {_arg}*{@n_par_page}
#
#--
wait 1 ticks
open chest with 6 row named "&e>>&6Essaie&e<<" to player
set {_n} to 0 # Chiffre pour les slots.
set {_max} to size of {_List::*}
loop {@n_par_page} times:
add 1 to {_i}
if {_List::%{_i}%} is set:
evaluate "format slot {_n} of player with paper named ""&b%{_List::%{_i}%}%"" to be unstealable"
#--
# Partie de la pagination, on regarde la page actuelle on ajoute 1 ou -1 pour le suivant ou précédent. Sauf que si on est sur 0 et qu'on
# fait -1 on obtient du caca, j'ai donc fait une vérification pour savoir si la page-1 <= 0.
if {_n}+1 = 52:
set {_newpage} to {_currentpage}-1
if {_newpage} <= 0:
evaluate "format slot 52 of player with red stained glass pane named ""&c> Aucune page précédente"" to be unstealable"
else:
evaluate "format slot 52 of player with red stained glass pane named ""&b> Page précédente (%{_newpage}%)"" to close then run [make player execute command ""gui %{_newpage}%""]"
#
# Ici j'ai du regarder si la page est sur 0, sinon ça fais gui 0+1 (gui 1) et du coup ça reste sur la même page...
if {_currentpage} = 0:
set {_newpage} to {_currentpage}+2
else:
set {_newpage} to {_currentpage}+1
evaluate "format slot 53 of player with green stained glass pane named ""&b> Page suivante (%{_newpage}%)"" to close then run [make player execute command ""gui %{_newpage}%""]"
#
#--
#--
# On regarde si i (correspond à l'index de la liste) est = à la valeur max, si c'est le cas on fais un exit loop.
else if {_i} = {_max}:
set {_newpage} to {_currentpage}-1
evaluate "format slot 53 of player with red stained glass pane named ""&b> Page précédente (%{_newpage}%)"" to close then run [make player execute command ""gui %{_newpage}%""]"
exit loop
add 1 to {_n}
#
#--
Hastebin : http://hastebin.com/epamivorop.vala
Un merci à chouyoux pour son code à plat :
ICI
Si ce tutoriel vous a aidé s'il vous plaît faites un 'J'aime' :D