Augmenter la cadence de tir d'un squelette en 1.13+

Ce post est-il à votre goût? (2 réponses par personne)

  • Parfait!

    Votes: 0 0.0%
  • Trop long

    Votes: 0 0.0%
  • Pas bien expliqué

    Votes: 0 0.0%
  • Sujet inintéressant

    Votes: 0 0.0%
  • Pièces jointes dysfonctionnelles

    Votes: 0 0.0%

  • Total voters
    0

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Ben en fait, j'ai répondu à un post sur ce sujet et ma réponse était tellement énorme que je la copie-colle simplement ici... - C'est fait en 1.13.2!! -

Eeet voilà, j'ai fini! ça fait une vingtaine de blocs de commande pour gérer le système!

Bon, alors le fonctionnement : Quand le squelette se trouve à une distance de moins de 16 blocs d'un joueur, il se met à tirer dans la direction où il regarde (S'il repère le joueur, il le regardera donc les flèches seront tirées dans la bonne direction). Evidemment, s'il n'a pas repéré le joueur, il tirera dans une direction inutile, mais bon.

Tu peux modifier n'importe quoi sur le squelette, du moment qu'il garde son tag "boss". C'est uniquement ça (et son objectif "Reload") qui lui permet d'être affecté par le système.

Le squelette tire dans la direction vers laquelle il regarde; idéalement, ça serait préférable d'organiser le combat sur une surface assez plane, comme une salle, un plateau, une plateforme,...

voilà tout ce dont tu as besoin ci-dessous...

La structure :
Pour voir quelle commande va dans quel bloc, je te conseille d'ouvrir l'image dans une nouvelle fenêtre pour éviter de devoir remonter tout le temps

Infos sur les blocs de commande :
Bleu : Répétition - inconditionnel - par la redstone (ou toujours actif, du moment qu'ils sont activés au bon moment...)
Beige : Impulsion - inconditionnel - par la redstone (c'est juste pour invoquer le squelette)
Vert : Chaîne - conditionnel - toujours actif
2019-03-27_18.42.05.png
Avant de passer au contenu des blocs, il y a quelques commandes que tu dois absolument exécuter pour le bon fonctionnement du système, juste quelques scores.
Code:
/scoreboard objectives add Reload dummy
Code:
/scoreboard objectives add pos_x dummy
Code:
/scoreboard objectives add pos_y dummy
Code:
/scoreboard objectives add pos_z dummy

Maintenant, les commandes correspondant à chaque bloc :
Si jamais quelqu'un lit ça et ne le savait pas, inutile de tout réécrire; sélectionnez chaque commande, faites ctrl+c (copier), allez dans l'interface du bloc de commande et faites ctrl+v (coller)!! -Ou téléchargez directement la map-

A :
Code:
execute as @a at @s run execute as @e[distance=..16,type=minecraft:skeleton,tag=boss,scores={Reload=0}] at @s run summon minecraft:armor_stand ^ ^ ^40 {NoGravity:1b,Tags:["ShootDirection"],Invisible:1b}
B:
Code:
execute as @a at @s run scoreboard players set @e[distance=..16,type=minecraft:skeleton,tag=boss,scores={Reload=0}] Reload 10
C:
Code:
execute as @e[type=minecraft:skeleton,tag=boss,scores={Reload=10}] run execute store result score @s pos_x run data get entity @s Pos[0] 10
D:
Code:
execute as @e[type=minecraft:skeleton,tag=boss,scores={Reload=10}] run execute store result score @s pos_y run data get entity @s Pos[1] 10
E:
Code:
execute as @e[type=minecraft:skeleton,tag=boss,scores={Reload=10}] run execute store result score @s pos_z run data get entity @s Pos[2] 10
F:
Code:
execute as @e[type=minecraft:skeleton,tag=boss,scores={Reload=10}] at @s run execute store result score @e[type=armor_stand,tag=ShootDirection,distance=39.8..40.2] pos_x run data get entity @e[type=minecraft:armor_stand,tag=ShootDirection,limit=1,distance=39.8..40.2] Pos[0] 10
G:
Code:
execute as @e[type=minecraft:skeleton,tag=boss,scores={Reload=10}] at @s run execute store result score @e[type=armor_stand,tag=ShootDirection,distance=39.8..40.2] pos_y run data get entity @e[type=minecraft:armor_stand,tag=ShootDirection,limit=1,distance=39.8..40.2] Pos[1] 10
H:
Code:
execute as @e[type=minecraft:skeleton,tag=boss,scores={Reload=10}] at @s run execute store result score @e[type=armor_stand,tag=ShootDirection,distance=39.8..40.2] pos_z run data get entity @e[type=minecraft:armor_stand,tag=ShootDirection,limit=1,distance=39.8..40.2] Pos[2] 10
I:
Code:
execute as @e[type=minecraft:skeleton,tag=boss,scores={Reload=10}] at @s run tp @e[type=minecraft:armor_stand,tag=ShootDirection,distance=39.8..40.2] @s
J:
Code:
execute as @e[type=minecraft:skeleton,tag=boss,scores={Reload=10}] at @s run scoreboard players operation @s pos_x -= @e[type=armor_stand,tag=ShootDirection,limit=1,sort=nearest] pos_x
K:
Code:
execute as @e[type=minecraft:skeleton,tag=boss,scores={Reload=10}] at @s run scoreboard players operation @s pos_y -= @e[type=armor_stand,tag=ShootDirection,limit=1,sort=nearest] pos_y
L:
Code:
execute as @e[type=minecraft:skeleton,tag=boss,scores={Reload=10}] at @s run scoreboard players operation @s pos_z -= @e[type=armor_stand,tag=ShootDirection,limit=1,sort=nearest] pos_z
M:
Code:
execute as @e[type=minecraft:skeleton,scores={Reload=10}] run kill @e[type=minecraft:armor_stand,tag=ShootDirection,limit=1,sort=nearest]
N:
Code:
execute as @e[type=minecraft:skeleton,tag=boss,scores={Reload=10}] at @s anchored eyes positioned ^ ^ ^1 run summon minecraft:arrow ~ ~ ~ {Color:-1,Tags:["arrow"]}
O:
Code:
execute as @e[type=minecraft:skeleton,scores={Reload=10}] at @s run execute store result entity @e[tag=arrow,limit=1,sort=nearest] Motion[0] double -0.004 run scoreboard players get @s pos_x
P:
Code:
execute as @e[type=minecraft:skeleton,scores={Reload=10}] at @s run execute store result entity @e[tag=arrow,limit=1,sort=nearest] Motion[1] double -0.004 run scoreboard players get @s pos_y
Q:
Code:
execute as @e[type=minecraft:skeleton,scores={Reload=10}] at @s run execute store result entity @e[tag=arrow,limit=1,sort=nearest] Motion[2] double -0.004 run scoreboard players get @s pos_z
R:
Code:
execute as @e[type=minecraft:skeleton,tag=boss,scores={Reload=10}] at @s run data merge entity @e[type=minecraft:arrow,limit=1,sort=nearest,tag=arrow] {Tags:["thrown"]}
S:
Code:
scoreboard players remove @e[type=minecraft:skeleton,scores={Reload=1..}] Reload 1
T:
Code:
kill @e[type=minecraft:arrow,tag=thrown,nbt={inGround:1b}]
U:
Code:
/summon minecraft:skeleton ~ ~1 ~ {Tags:["boss"],PersistenceRequired:1,HandItems:[{id:"minecraft:bow",Count:1b},{}],CustomName:"{\"text\":\"King Bone\",\"color\":\"dark_red\",\"bold\":\"true\"}",CustomNameVisible:1}
V:
Code:
/scoreboard players set @e[tag=boss] Reload 0
Les blocs U et V, c'est simplement pour invoquer un squelette à tir rapide. la commande du V doit être exécutée après la U, pour que le squelette aie le score Reload, très important.

Voici les intructions si tu veux changer les paramètres comme la vitesse de tir :
Comme il y a beaucoup de commandes, je te mets un fichier texte complet avec chaque commande. C'est très aidant, car tu peux utiliser ctrl+f pour trouver tous les termes pareils

Pour changer la vitesse de tir (sur les commandes du fichier texte, que tu recopieras après) :
-Mets le curseur en haut du fichier texte; utilise ctrl+f et tape "Reload". Chaque fois que tu vois "Reload 10" (qui n'apparaît qu'une fois) ou "Reload=10", remplace le "10" par la durée de recharge que tu veux (voir plus bas pour voir ce que ça représente).
Attention, il y a des "10" qui ne se trouvent pas après un "Reload", par exemple après "pos[0]". Ne les change pas!
-À 10 de Reload, le squelette tire une flèche tous les 10 ticks. 20 ticks = une seconde, donc il tire deux flèches par seconde. À toi de régler!

Pour changer la distance maximale requise entre le joueur et le squelette pour déclencher les tirs :
-Juste 2 commandes à changer : dans les blocs A et B, il y a "distance=..16". Remplace le "16" par la distance maximale que tu veux (le 16 équivaut au rayon de détection d'un squelette normal)

Pour changer la vitesse des flèches :
-Dans les blocs O,P et Q, remplace "-0.004" par la vitesse que tu veux (-0.003 tire moins loin, -0.005 tire plus loin). Je pense que -0.004 est suffisant pour un squelette normal...

Le principe du système (pour les intéressés, et puis c'est toujours mieux)
-Les squelettes avec le tag "boss" à moins de 16 blocs d'un joueur se font d'abord détecter la direction de leur regard et leur "timer" est mis en marche.
-À chaque cycle du timer avec le score "Reload", une flèche (sans particule!) est tirée dans la direction du regard du squelette "boss"
-Une fois tirées, les flèches invoquées prennent le tag "thrown"
-Les flèches dans le sol portant le tag "thrown" sont automatiquement supprimées pour éviter le lag.

Remarque : les commandes ajoutent des flèches, mais le squelette tire lui aussi en même temps! Comme les flèches de son arc ne prennent pas le tag "thrown", elles resteront quand même par terre... ce qui n'est pas forcément mauvais, vu que ça laissera une trace du combat sans garder un max de flèches.

Si tu utilises les tags d'entité et les scoreboards déjà, je te mets une liste des noms de ceux que j'ai utilisé, pour éviter que tu les réutilises pour d'autres systèmes de la map :
Objectifs :
"Reload" - "pos_x" - "pos_y" - "pos_z"
Tags :
"boss" - "arrow" - "thrown" - "ShootDirection"

Dans les fichiers joints, je te mets le dossier de la map fonctionnelle ainsi que le fichier texte contenant toutes les commandes nécessaires.
Si tu as des questions encore, n'hésite pas!


À ton service!
 

Fichiers joints

  • Squelette Rapid Fire-map 1.13.2.zip
    739.1 KB · Affichages: 375
  • CommandesSqueletteRapide1.13.txt
    4.2 KB · Affichages: 321
Dernière édition:
  • J'aime
Reactions: FunkyToc

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Je sais pas trop faire pour les one-command mais si quelqu'un peut en faire un avec ce système, ça serait cool pour la communauté...