Aller au contenu

Pagination en GUI [Niveau : Complexe]


Messages recommandés

Posté(e)

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

  • J'aime 1
  • 6 mois après...
Posté(e)

Merci de citer la bonne persone par rapport au code que tu partage ^^

La base est de chouyoux oui, mais une partie du code que tu expliqué est de moi ;)

 

Regarde bien le poste en entier ;)

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.