Aller au contenu
  • 0

Simplifier mon code (MMORPG système)


Question

Posté(e)

Mon objectif :

 

Créer comme dans un mmorpg, un système de sorts avec des niveaux pour ces sorts, des équipements qui influent sur les dommages de ces sorts et des caractéristiques qui font elles aussi varier les dommages des sorts.

J'y suis plus ou moins parvenu mais comme vous allez le voir je suis confronté à pas mal de contraintes.

 

Mon problème :

 

Le problème principal est la flexibilité et la taille de mon code, à terme, j'aurais environ 120 sorts avec chacun 5 niveaux, des dizaines d'équipements et des centaines de possibilités de caractéristiques (4 voies personnalisables)

Hors, actuellement je suis obligé d'écrire une 50aine de ligne pour un niveau d'un sort avec un équipement et une tranche de caractéristique (si on multiplie par le nombre de sorts, d'équipements et de possibilités, je vous laisse imaginer les milliers de lignes, et ce n'est pas envisageable).

 

Voici donc mon skript, j'ai essayé de l'expliquer un peu mais je peux détailler si besoin :

 

on right click with 4704:
   if {dmgPression.%player's UUID%} = 0:
       set {dmgPression.%player's UUID%} to {dmgPression.%player's UUID%} + 2
   if {cooldownIop1.%player%} isn't set:
       set {cooldownIop1.%player%} to now
       stop
   set {_waitedIop1} to difference between {cooldownIop1.%player%} and now
   if {_waitedIop1} is less than 4 seconds:
       send "&cTu dois encore attendre %difference between {_waitedIop1} and 4 seconds%"
       stop
   if distance between the target and player is smaller than 4:
       #PRESSION NIVEAU 2
       if {pression.lvl2.%player's uuid%} is true:                                                                #Si Pression est niveau 2
           set {dmgPression.%player's UUID%} to {dmg.%player's UUID%} + 2                                       
           if player is wearing helmet:                                                                        #Si le joueur porte un casque
               set {dmgPression.%player's UUID%} to {dmgPression.%player's UUID%} + 2
               if {force.%player's UUID%} is between 10 and 20:                                                #Si la force est entre 10 et 20
                   set {dmgPression.%player's UUID%} to {dmgPression.%player's UUID%} + 1
                   if {Puissance.%player%} is true:                                                            #Si Puissance est lancé
                       damage target by {dmg.%player's UUID%} + 1 hearts
                       set {cooldownIop1.%player%} to now
                       send "Dégâts infligés : &c%{dmg.%player's UUID%}%&c par &c%entity%&c à &c%target%&c"
                   else:
                       damage target by {dmg.%player's UUID%} hearts
                       set {cooldownIop1.%player%} to now
                       send "Dégâts infligés : &c%{dmg.%player's UUID%}%&c par &c%entity%&c à &c%target%&c"
                   set {dmg.%player's UUID%} to {dmg.%player's UUID%} - 1
               else:                                                                                            #Si la force du joueur n'est pas entre 10 et 20
                   if {Puissance.%player%} is true:                                                            #Si Puissance est lancé
                       damage target by {dmg.%player's UUID%} + 1 hearts
                       set {cooldownIop1.%player%} to now
                       send "Dégâts infligés : &c%{dmg.%player's UUID%}%&c par &c%entity%&c à &c%target%&c"
                   else:
                       damage target by {dmg.%player's UUID%} hearts
                       set {cooldownIop1.%player%} to now
                       send "Dégâts infligés : &c%{dmg.%player's UUID%}%&c par &c%entity%&c à &c%target%&c"
                   set {dmg.%player's UUID%} to {dmg.%player's UUID%} - 1
               set {dmgPression.%player's UUID%} to {dmgPression.%player's UUID%} - 2
           else:                                                                                                #Si le joueur ne porte pas de casque
               if {force.%player's UUID%} is between 10 and 20:                                                #Si la force est entre 10 et 20
                   set {dmgPression.%player's UUID%} to {dmgPression.%player's UUID%} + 1
                   if {Puissance.%player%} is true:                                                            #Si puissance est lancé
                       damage target by {dmg.%player's UUID%} + 1 hearts
                       set {cooldownIop1.%player%} to now
                       send "Dégâts infligés : &c%{dmg.%player's UUID%}%&c par &c%entity%&c à &c%target%&c"
                   else:
                       damage target by {dmg.%player's UUID%} hearts
                       set {cooldownIop1.%player%} to now
                       send "Dégâts infligés : &c%{dmg.%player's UUID%}%&c par &c%entity%&c à &c%target%&c"
                   set {dmgPression.%player's UUID%} to {dmgPression.%player's UUID%} - 1
               else:                                                                                            #Si la force du joueur n'est pas entre 10 et 20
                   if {Puissance.%player%} is true:                                                            #Si puissance est lancé
                       damage target by {dmg.%player's UUID%} + 1 hearts
                       set {cooldownIop1.%player%} to now
                       send "Dégâts infligés : &c%{dmg.%player's UUID%}%&c par &c%entity%&c à &c%target%&c"
                   else:
                       damage target by {dmg.%player's UUID%} hearts
                       set {cooldownIop1.%player%} to now
                       send "Dégâts infligés : &c%{dmg.%player's UUID%}%&c par &c%entity%&c à &c%target%&c"

 

Je précise que le skript que je viens de vous envoyer (à partir de "PRESSION NIVEAU 2") doit être répété encore 4 fois et que ceci n'est que pour un sort, donc comme vous le voyez c'est trop long et encore, la il n'y a qu'un équipement et qu'une tranche de caractéristique comme je l'ai dit;

 

Ce que je vous demande c'est donc de m'aider à simplifier tout ça.

7 réponses à cette question

Messages recommandés

  • 0
Posté(e)

Essaie de limiter les expression qui se repentent, en gros essaie de FACTORISER comme en mathématique.

 

#---------------------------------
       #       Une partie de ton code
       #---------------------------------

       if {force.%player's UUID%} is between 10 and 20:                                                #Si la force est entre 10 et 20
           set {dmgPression.%player's UUID%} to {dmgPression.%player's UUID%} + 1
           if {Puissance.%player%} is true:                                                            #Si puissance est lancé
               damage target by {dmg.%player's UUID%} + 1 hearts
               set {cooldownIop1.%player%} to now
               send "Dégâts infligés : &c%{dmg.%player's UUID%}%&c par &c%entity%&c à &c%target%&c"
           else:
               damage target by {dmg.%player's UUID%} hearts
               set {cooldownIop1.%player%} to now
               send "Dégâts infligés : &c%{dmg.%player's UUID%}%&c par &c%entity%&c à &c%target%&c"
           set {dmgPression.%player's UUID%} to {dmgPression.%player's UUID%} - 1
       else:                                                                                            #Si la force du joueur n'est pas entre 10 et 20
           if {Puissance.%player%} is true:                                                            #Si puissance est lancé
               damage target by {dmg.%player's UUID%} + 1 hearts
               set {cooldownIop1.%player%} to now
               send "Dégâts infligés : &c%{dmg.%player's UUID%}%&c par &c%entity%&c à &c%target%&c"
           else:
               damage target by {dmg.%player's UUID%} hearts
               set {cooldownIop1.%player%} to now
               send "Dégâts infligés : &c%{dmg.%player's UUID%}%&c par &c%entity%&c à &c%target%&c"


       #---------------------------------
       #       Ton code en condense
       #---------------------------------       


       set {_damage} to {dmg.%player's UUID%}          #valeur par defaut, remplace la condition ELSE       
       if {force.%player's UUID%} is between 10 and 20:
           if {Puissance.%player%} is true:                                  
               add {dmgPression.%player's UUID%} to {_damage}      # Je ne suis pas sur que c'est ce que tu voulais faire
       else:                                                                                           
           if {Puissance.%player%} is true:                                   
               add 1 to {_damage}

       damage target by {_damage} hearts
       set {cooldownIop1.%player%} to now
       send "Dégâts infligés : &c%{_damage}%&c par &c%entity%&c à &c%target%&c"

 

 

Ne m'en veux pas mais je n'ai pas lu en détail ton code donc je ne sais pas à quoi sert cette variable et j'ai du en faire un truc bizarre avec {dmgPression.%player's UUID%}

×
×
  • 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.