La petite histoire : (dispensable)
Je travaille sur un MMORPG et avait organisé la gestion de l'expérience tel que si une entité meurt, le loot est partagé entre les personnes l'ayant frappé selon cette équation :
xp donné à un joueur A=loot initial du mob ÷ nombre de coups reçus par le mob x nombre de coups donnés au mob par le joueur A
L'objectif correspondant au loot initial est défini lors de la création du mob.
L'objectif des coups reçus est incrémenté de 1 chaque fois qu'un second objectif de type stat.damage.taken est différent de 0. Ce dernier objectif est ensuite réinitialisé.
Le problème survient pour le dernier objectif : en effet, si j'utilise un banal "stat.damage.dealt", le joueur A pourra effectuer ce glitch :
-Frapper des cochons (sans les tuer)
-Tuer un Boss
-Gagner l'xp correspondant au loot initial du Boss ÷ nombre de coups reçus par le Boss x nombre de coups donnés par le joueur A au Boss et au cochon
Pour éviter ce bug, j'ai pour l'instant trouvé cela :
1.Détecter des dommages :
-Je crée un objectif de type stat.damage.taken pour le mob.
-Je crée un objectif de type stat.damage.dealt pour le joueur A.
-Si ces deux objectifs sont égaux, je sais que le mob a reçu des dommages du joueur A.
2. Étiqueter les entités :
-Heu...c'est là que je bloque et c'est pourquoi je demande votre aide...pour infos, chaque joueur aura un numéro d'id unique via scoreboard.
-après l'étiquetage, on réinitialise les objectifs de l'étape 1
En bref : je connais la victime, je connais l'attaquant. Comment ajouter un NBTag à l'attaquant de façon à ce que lorsqu'il frappe une autre entité, son score à l'objectif stat.damage.dealt soit mis à 0 ?
Je travaille sur un MMORPG et avait organisé la gestion de l'expérience tel que si une entité meurt, le loot est partagé entre les personnes l'ayant frappé selon cette équation :
xp donné à un joueur A=loot initial du mob ÷ nombre de coups reçus par le mob x nombre de coups donnés au mob par le joueur A
L'objectif correspondant au loot initial est défini lors de la création du mob.
L'objectif des coups reçus est incrémenté de 1 chaque fois qu'un second objectif de type stat.damage.taken est différent de 0. Ce dernier objectif est ensuite réinitialisé.
Le problème survient pour le dernier objectif : en effet, si j'utilise un banal "stat.damage.dealt", le joueur A pourra effectuer ce glitch :
-Frapper des cochons (sans les tuer)
-Tuer un Boss
-Gagner l'xp correspondant au loot initial du Boss ÷ nombre de coups reçus par le Boss x nombre de coups donnés par le joueur A au Boss et au cochon
Pour éviter ce bug, j'ai pour l'instant trouvé cela :
1.Détecter des dommages :
-Je crée un objectif de type stat.damage.taken pour le mob.
-Je crée un objectif de type stat.damage.dealt pour le joueur A.
-Si ces deux objectifs sont égaux, je sais que le mob a reçu des dommages du joueur A.
2. Étiqueter les entités :
-Heu...c'est là que je bloque et c'est pourquoi je demande votre aide...pour infos, chaque joueur aura un numéro d'id unique via scoreboard.
-après l'étiquetage, on réinitialise les objectifs de l'étape 1
En bref : je connais la victime, je connais l'attaquant. Comment ajouter un NBTag à l'attaquant de façon à ce que lorsqu'il frappe une autre entité, son score à l'objectif stat.damage.dealt soit mis à 0 ?