Je vais passer par une fonction mais il est possible de faire la même chose avec une commande
function Page(page: number,joueur: player)
Valeurs des options:
{_page} : la page que l'on souhaite affichée
{_joueur} : le joueur à qui on affiche la page
Je note Y la hauteur que l'on dispose et X la quantité à afficher.
X : number
Y : number
Dans notre fonction Page il faut logiquement saisir une page existante.
Je note nP, le nombre de page existante.
nP = rounded up (X / (Y * 9))
On aura une valeur de {_page} variant de 1 à nP, première condition de notre code trouvée
function Page(page: number,joueur: player):
if check [{_page} is bigger than 0]->[{_page} is smaller or equal to rounded up (X / (Y * 9))]:
Admettons nos éléments X sont stockés dans une liste.
Il faut donc afficher seulement les bons éléments et ne pas dépasser dans notre inventaire.
Pour cela on doit définir un intervalle avec comme bornes les limites à dépasser et à ne pas dépasser:
set {_index} to 0
# à chaque nouvelle boucle on ajoute 1
loop {notreliste::*}:
# code non dévoilé
add 1 to {_index}
On aura donc comme borne
[{_page} * (Y * 9) - Y * 9 ; {_page} * Y * 9[
Exemple avec une hauteur de 4 et une page de 3:
[3 * (5 * 9) - 5 * 9 ; 3 * 5 * 9[
[90 ; 135[
5 * 9 = 45
135 - 90 = 45
Ajout des conditions dans notre fonction:
function Page(page: number,joueur: player):
if check [{_page} is bigger than 0]->[{_page} is smaller or equal to rounded up (X / (Y * 9))]:
set {_index} to 0
loop {notreliste::*}:
if {_index} >= {_page} * (Y * 9) - Y * 9:
if {_index} < {_page} * Y * 9:
# create a gui slot {_index} - (Y * 9)*({_page} - 1} of {_joueur} ...
add 1 to {_index}
Bonus: Faire des items pour changer les pages:
Condition pour savoir si la page {_page} n'est pas la dernière pas:
if rounded up (size of {notreliste::*} / (Y * 9 - 9)) is bigger than {_page}:
Condition pour savoir si la page {_page} est la dernière:
if rounded up (size of {notreliste::*} / (Y * 9 - 9)) is equal to {_page}:
Condition pour savoir si il y a plus d'une page disponible:
if rounded up (size of {notreliste::*} / (Y * 9 - 9)) is bigger than 1:
On intègre cela dans notre code et c'est terminé, vous pouvez bien sûr ajouter des conditions si vous le souhaitez, ceci est juste le minimum pour avoir un système de page fonctionnel:
Code entier:[spoiler=Ouvrir]
function Page(page: number,joueur: player):
if check [{_page} is bigger than 0]->[{_page} is smaller or equal to rounded up (X / (Y * 9))]:
set {_index} to 0
loop {notreliste::*}:
if {_index} >= {_page} * (Y * 9) - Y * 9:
if {_index} < {_page} * Y * 9:
# create a gui slot {_index} - (Y * 9)*({_page} - 1} of {_joueur} ...
add 1 to {_index}
if rounded up (size of {notreliste::*} / (Y * 9 - 9)) is bigger than {_page}:
set {_next} to {_page} + 1
# create a gui slot <slot> of {_joueur} with <item> to run function Page({_next}, sender)
else if rounded up (size of {notreliste::*} / (Y * 9 - 9)) is equal to {_page}:
if rounded up (size of {notreliste::*} / (Y * 9 - 9)) is not 1:
# create a gui slot <slot> of {_joueur} with <item> to run function Page(1, sender)
Code pour tester:
function Page(page: number,joueur: player):
if check [{_page} > 0]->[{_page} is smaller or equal to rounded up (size of {var::*} / (5 * 9))]:
if inventory name of current inventory of {_joueur} is not "§cPage %{_page}%/%rounded up (size of {var::*} / (5 * 9))%":
open virtual chest inventory with size 6 named "§cPage %{_page}%/%rounded up (size of {var::*} / (5 * 9))%" to {_joueur}
wait 3 ticks
set {_index} to 0
loop {var::*}:
if {_index} >= {_page} * (5 * 9) - 5 * 9:
if {_index} < {_page} * 5 * 9:
create a gui slot {_index} - (5 * 9) * ({_page} - 1) of {_joueur} with "%loop-value%" parsed as number of stone to do Nothing
add 1 to {_index}
if rounded up (size of {var::*} / (5 * 9 - 9)) is bigger than {_page}:
set {_next} to {_page} + 1
create a gui slot 45 of {_joueur} with paper to run function Page({_next}, {_joueur})
else if rounded up (size of {var::*} / (5 * 9 - 9)) is not 1:
create a gui slot 45 of {_joueur} with paper to run function Page(1, {_joueur})
command /var:
trigger:
loop a random integer between 123 and 321 times:
add a random integer between 0 and 9 to {var::*}
command /menu:
trigger:
Page(1, sender)
command /clearvar:
trigger:
size of {var::*} is not 0
clear {var::*}