Aller au contenu
  • 0

Taux de réussite à l'arc & actualisation


Question

Posté(e)

Salut tout le monde !!!

 

Récemment, un ami et moi-même avons codé un petit skript permettant de calculer le pourcentage de tire à l'arc réussi. Un tir réussi est, si et seulement si la flèche du joueur touche un autre joueur. ^^

Notre Skript fonctionne bien, le seul problème étant que l'actualisation du taux ne se fait que lorsque la flèche touche un joueur... J'ai essayé de déplacer les calculs dans un "every 1 tick" mais j'obtient des résultats totalement incohérent... Si vous avez une idée de comment le faire, et, pourquoi pas, d'optimiser notre skript actuelle avec quelques conseils, on est preneur !! :)

 

Voici le skript :

 

on damage:
   if projectile exists:
       if projectile is arrow:
           loop {players::*}:
               if "%loop-value%" is "%attacker%":
                   if victim is a player:
                       loop {players::*}:
                       add 1 to {hit::%loop-index%}
                       set {noob::%loop-index%} to {tir::%loop-index%}-{hit::%loop-index%}
                       set {ratioHit::%loop-index%} to 100*({hit::%loop-index%}/({hit::%loop-index%}+{noob::%loop-index%}))
                       send "&2Nombre de tir : &4%{tir::%loop-index%}%" to attacker
                       send "&2Touché : &4%{hit::%loop-index%}%" to attacker
                       send "&2Raté : &4%{noob::%loop-index%}%" to attacker
                       send "&2Ratio : &4%{ratioHit::%loop-index%}%" to attacker

on shoot:
   if projectile exists:
       if projectile is arrow:
           loop {players::*}:
               if {players::%loop-index%} is shooter:
                   add 1 to {tir::%loop-index%}

À savoir que le {player::*} contient la liste des joueurs actifs ^^

Merci d'avance de votre aide ! :)

14 réponses à cette question

Messages recommandés

  • 0
Posté(e)

C'est ce que l'on avait fait au départ ^^

Le problème étant que l’événement nous est obligatoire pour incrémenter de 1 les coups réussis :/

Merci tout de même de ta réponse ^^

  • 0
Posté(e)
J'ai essayé de déplacer les calculs dans un "every 1 tick"

Pffou très mauvaise idée xD

  • 0
Posté(e)
Je suis pas convaincu que ce soit trop une bonne idée de fouiller une liste à chaque tir huh.

Tu parles de la liste {Player::*} ? Si oui, c'est aussi parce qu'elle ne contient pas tout les joueurs mais juste une partie ^^"

Mais si tu as un moyen d'optimiser tout ça, je suis preneur, étant encore débutant dans ce domaine, il me semble normal que mon code ne soit pas très propre ^^"

  • 0
Posté(e)

Ui c'est ça. Mais ce que je me dis surtout, c'est que ça pourrait solliciter plus ton serveur pour un principe qui visait je pense à optimiser. D'autant plus que si tu as plus de joueurs dans la liste que de joueurs connectés, ça risque de piétiner encore plus.

  • J'aime 1
  • 0
Posté(e)

Bâ oui mais le problème étant qu'il faut bien que je récupère l'index du joueur pour enregistrer le score dans une autre liste ^^"

Que je m'explique car c'est sûrement du bricolage : ^^"

Chaque joueur de la liste à un index (jusqu'à là, normal) et lorsque j'enregiste un score dans une autre liste, c'est au même index pour que je puisse savoir que le joueur de l'index 3 de {players::*} à le score de l'index 3 de {hit::*} x)

  • 0
Posté(e)
L'index est pas obligé d'être un nombre. Tu peux mettre ça :

{Tir::%uuid of player%}

Ah ! Intéressant ^^

Donc ici, le UUID joue le rôle "d'index" ? :p

  • 0
Posté(e)
le seul problème étant que l'actualisation du taux ne se fait que lorsque la flèche touche un joueur... J'ai essayé de déplacer les calculs dans un "every 1 tick" mais j'obtient des résultats totalement incohérent... Si vous avez une idée de comment le faire,

Personnes ? :)

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