Nerf l'effet de Force

Sala

Aventurier
27 Février 2021
23
0
3
18
Bonjour,
J'ai créé un plugin LG UHC mais je ne sais pas comment nerf l'effet de Force que les Loups-Garous reçoivent la nuit. Je ne sais pas si ça peut marcher en faisant le screen que j'ai envoyé mais j'ai l'impression que la force ne change pas et reste en normal.
Merci de votre aide !
1618579187890.png
 
Dernière édition:

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 129
161
460
247
21
Mìlhüsa
Bonsoir,

En Java, -(9/10) = 0, car il s'agit de la division entière « 9 divisé par 10 égal 0 reste 9 ».
Si tu veux la division décimale, tu dois convertir une de tes opérandes en nombre flottant : -(9.f/10) ≈ -0.9f.

Mais dans ton cas, le constructeur de PotionEffect n'accepte qu'un nombre entier int comme amplificateur, et non pas de nombre décimal float, donc ça ne t'avance pas à grand-chose. De plus je ne sais pas trop ce qu'est censé faire une potion de force niveau -I.

Bref concrètement tu ne peux pas donner aux joueurs un effet de force moins puissant, tu dois faire autrement que par un effet de potion.
L'évènement EntityDamageByEntityEvent devrait convenir.

Par contre je ne sais pas ce que tu as avec tes variables lgxrole2, mais tu es censé contenir tous tes joueurs dans une collection.
Java:
for(Player player : players) {
    if(player.role == Role.WEREWOLF) {
        // [...]
    }
}
Cela rendra ton code infiniment plus lisible, t'éviteras de copier cinq fois la même ligne, et tu pourras avoir une infinité de joueurs sans rien changer, parce que le code ne prend pas en compte un joueur en particulier mais tous les joueurs un par un. D'où le principe des collections, qui permettent de traiter des objets d'une taille potentiellement infinie.

Cordialement,
ShE3py
 

Sala

Aventurier
27 Février 2021
23
0
3
18
Bonsoir,
Dans la majorité des plugins LG UHC, les joueurs qui sont LG possèdent force mais les dégâts sont réduis en prenant compte les épées (types d'épées, haches, poings etc.) et enchantements (sharpness).
Mais dans ce cas-là je ne sais pas comment faire XD (Je n'ai jamais utilisé le EntityDamageByEntityEvent donc je ne sais pas trop d'où partir xD).
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 129
161
460
247
21
Mìlhüsa
Il faudrait que tu me donnes un exemple concret de ce que tu veux faire, avec des valeurs concrètes et non pas des « sont réduits », car je n'ai aucune idée de si c'est supposé être un nombre ou un pourcentage, et par rapport à quoi sont-ils réduits, aucune idée non plus.
Après les nombres ne sont pas obligés d'être réalistes, tu peux mettre un +10 000%, mais au moins ça me permet de savoir où mettre ces nombres, libre à toi de peaufiner après.

Et sinon pour l'évènement EntityDamageByEntityEvent, ça dépend de la version de Spigot que tu utilises.
 

Sala

Aventurier
27 Février 2021
23
0
3
18
J'utilises un spigot 1.8.8. Et par exemple au lieu que ce soit une force à 120% (de base je crois), il faudrait que ce soit 30% et que les épées, outils et enchantements soit pris en comptes (pas un dégâts fixe).
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 129
161
460
247
21
Mìlhüsa
une force à 120% (de base je crois)
Tu sais, il existe un wiki pour avoir les valeurs exactes, et c'est un peu absurde de vouloir faire quelque chose moins puissant qu'une autre chose que tu ne sais pas. Bref, +1.5 cœur de dégâts par niveau, ce n'est pas un +20%.

Si tu veux mettre un +30% de dégâts :
Java:
@EventHandler
public void onEntityDamageByEntity(EntityDamageByEntityEvent e) {
   Entity damager = e.getDamager();
   if(!(damager instanceof Player))
      return;
   
   Player attacker = (Player) damager;
   // todo: check if `attacker` is a werewolf
   
   // todo: check if the attacked entity is a player?
   
   e.setDamage(e.getDamage() * 1.3);
}