Aller au contenu
  • 0

Optimiser ce code ?


Invité

Question

Posté(e)

Bonjour,

 

J'ai fait un système d'elo sauf que bah c'est pas du tout optimisé.

J'aimerais savoir si vous pouviez optimisé un peu tout cela ?

 

Le code :

[spoiler=Code]

every 5 seconds in world "spawn":
   loop all players:
       if {elo.ran.%uuid of loop-player%} <= 1000:
           set {rank.ran.%uuid of loop-player%} to "Non Placé"
       if {elo.ran.%uuid of loop-player%} >= 1050:
           set {rank.ran.%uuid of loop-player%} to "Bronze |"
       if {elo.ran.%uuid of loop-player%} >= 1110:
           set {rank.ran.%uuid of loop-player%} to "Bronze ||"
       if {elo.ran.%uuid of loop-player%} >= 1180:
           set {rank.ran.%uuid of loop-player%} to "Bronze |||"
       if {elo.ran.%uuid of loop-player%} >= 1260:
           set {rank.ran.%uuid of loop-player%} to "Argent |"
       if {elo.ran.%uuid of loop-player%} >= 1350:
           set {rank.ran.%uuid of loop-player%} to "Argent ||"
       if {elo.ran.%uuid of loop-player%} >= 1450:
           set {rank.ran.%uuid of loop-player%} to "Argent |||"
       if {elo.ran.%uuid of loop-player%} >= 1600:
           set {rank.ran.%uuid of loop-player%} to "Diamant : Aigle |"
       if {elo.ran.%uuid of loop-player%} >= 1750:
           set {rank.ran.%uuid of loop-player%} to "Diamant : Aigle ||"
       if {elo.ran.%uuid of loop-player%} >= 1950:
           set {rank.ran.%uuid of loop-player%} to "Diamant : Aigle |||"
       if {elo.ran.%uuid of loop-player%} >= 2250:
           set {rank.ran.%uuid of loop-player%} to "Diamant : Chalenger"
       if {elo.ran.%uuid of loop-player%} >= 2500:
           set {rank.ran.%uuid of loop-player%} to "Aigle d'or"

 

 

 

Merci.

7 réponses à cette question

Messages recommandés

  • 0
Posté(e)

J'ai une suggestion, c'est que au moment on le score du joueur augmente, tu fous tout ce bordel dans le code, comme ça ya pas besoin de faire un check toutes les 5 secondes, y'aura juste le check quand il gagne de l'xp! C'est plus simple et ça évite le lag :)

Et pour optimiser encore plus ce bordel, tu mets les if juste après, en gros tu ajoutes une tabulation après chaque if, parce que si le joueur a moins de 1600 points, pas besoin d'aller vérifier si il en a 1900 juste après! Donc ça ferait un peu ça:

event que tu veux:
 add 10 to {elo.ran.%uuid of player%}
 if {elo.ran.%uuid of player%} <= 1000:
   set {rank.ran.%uuid of player%} to "Non Placé"
 if {elo.ran.%uuid of player%} >= 1050:
   set {rank.ran.%uuid of player%} to "Bronze I"
   if {elo.ran.%uuid of player%} >= 1110:
     set {rank.ran.%uuid of player%} to "Bronze II"
     if {elo.ran.%uuid of player%} >= 1180:
       set {rank.ran.%uuid of player%} to "Bronze III"
       if {elo.ran.%uuid of player%} >= 1260:
         set {rank.ran.%uuid of player%} to "Argent I"
         if {elo.ran.%uuid of player%} >= 1350:
           set {rank.ran.%uuid of player%} to "Argent II"
           if {elo.ran.%uuid of player%} >= 1450:
             set {rank.ran.%uuid of player%} to "Argent III"
             if {elo.ran.%uuid of player%} >= 1600:
               set {rank.ran.%uuid of player%} to "Diamant : Aigle I"
               if {elo.ran.%uuid of player%} >= 1750:
                 set {rank.ran.%uuid of player%} to "Diamant : Aigle II"
                 if {elo.ran.%uuid of player%} >= 1950:
                   set {rank.ran.%uuid of player%} to "Diamant : Aigle III"
                   if {elo.ran.%uuid of player%} >= 2250:
                     set {rank.ran.%uuid of player%} to "Diamant : Challenger"
                     if {elo.ran.%uuid of player%} >= 2500:
                     set {rank.ran.%uuid of player%} to "Aigle d'or"

  • 0
Posté(e)

Ahhh merci pour ton aide ;);):D

 

Je reviens vers toi si besoin en est !

  • 0
Posté(e)

Si tu avais utiliser une formule mathématique au lieu de mettre des valeurs au pifs ça pourrais surement s'optimiser beaucoup plus (mais bon tu aurais eu moins de contrôle sur ton code) d'ailleur tu as un truc bizarre sur tes valeurs : en générale entre chaque palier tu augmente à chaque fois un peu plus la difference de ELO, cependant à ce moment là :

        if {elo.ran.%uuid of loop-player%} >= 1950:
           set {rank.ran.%uuid of loop-player%} to "Diamant : Aigle |||"
       if {elo.ran.%uuid of loop-player%} >= 2250:
           set {rank.ran.%uuid of loop-player%} to "Diamant : Chalenger"
       if {elo.ran.%uuid of loop-player%} >= 2500:
           set {rank.ran.%uuid of loop-player%} to "Aigle d'or"

 

 

tu demande +300 pour passer Chalenger puis +250 pour passer Aigle d'or , c'est le seul moment où il y a une régression dans le changement de palier.

 

Pour ton code ce n'est pas un gros problème de tester des condition commes celle-ci, ça ne fais pas de lag, mais évidement comme le propose N1ark insert ceci à chaque augmentation de ELO et non chaque seconde.

 

Enfin, pour réduire le nombre de conditions tester, je te suggère ceci (le code est plus long mais aussi plus optimiser au final :cool::

# On limite les conditions en faisant un premier tri entre les joueurs à faible et haut ELO
if elo between 0 and 500:       # la pluspart de tes joueurs seront dans cette catégorie, donc il faut la tester en priorité pour eviter de faire 1 million d'autres conditions
   if elo >= 250:              # j'ai pris des valeurs au pif evidement
       set rank
       stop                    # on arrete le calcule car inutile de le continuer
   if elo >= 100:
       set rank
       stop
   set rank                    # pas besoin de 'if' pour celui là, il s'agit de ton rank par defaut entre 0 et 99 ELO
   stop
else if elo between 501 and 1000:       # beaucoup moins de joueurs dnas cette categorie mais toujours plus que dans le ELO superieur à 1000
   if elo >= 800:
       set rank
       stop
   if elo >= 650:
       set rank
       stop
   if elo >= 501:
       set rank
       stop
   else:                               # les joueurs avec un ELO superieur à 1000 seront beaucoup plus rare
       if elo >= 2500:
           set rank
           stop
       if elo >= 1001:
           set rank
           stop

 

Si ton système d’attribution d'un score ELO est correct, sache que c'est extrêmement compliquer d'atteindre 2500 !!!

  • 0
Posté(e)

Hum Hum. En fait les elos augmentent de 10 (En commençant par 50) à chaque pallié. J'ai du aire une erreur de frappe ^^

 

Pour ce qui est de ta proposition, c'est plutôt bien mais les joueurs au dessus de 1000 seront directement au niveau diamant (vu que la plupart des joueurs sont en dessous c'est facile de monté.) Moi je veux du "challenge" !

Sinon merci de ton aide ^^

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