CommandBlock Redstone Création Permettre un réactivation d'un command block après un temps défini (1.12.2)

...

Architecte en herbe
13 Mars 2016
71
9
97
28
Bonjour à tous,

Alors voilà j'aimerai permettre une réactivation d'un command block après un temps que je définirai moi même.
Pour la plupart du temps se sera un command block tjrs actif avec la command testfor. J'imagine qu'on peux le faire via un système de redstone mais long et pénible à réaliser. J'aimerai donc savoir si il y a une command possible. Tout cela serai dans le but d'empêcher un tellraw de se répéter en boucle trop souvent.

Merci d'avance pour vos réponses.
 

MrAlinoë

I'm the cutest Bunny, deal with it ;)
7 Août 2016
119
21
130
24
Belgique
www.mralinoe.be
Tu peux utiliser les scoreboards comme timer...
Cela dit tu pourrais donner plus de précisions:
- Multijoueurs ou solo?
- Si multijoueur, est il important que les joueurs voient le tellraw en même temps ou on s'en fout (si on s'en fout, c'est mieux et plus fiable)?
 

...

Architecte en herbe
13 Mars 2016
71
9
97
28
Merci encore pour une de tes réponses rapides et complètes. En fait les scoreboard sont la solution à tout les problèmes x)
Par contre je t'avouerai ne pas voir précisemment comment est ce qu'on peux les utiliser pour des timer.
Et pour ta réponse oui en mode solo je suis tjrs sur ma map aventure.
Et je ne sais pas encore si je vais mettre les dialogues d'un coup pour tout le monde ou si c'est chacun son tour. Je pense plus que ce sera chacun pour soi.
 

MrAlinoë

I'm the cutest Bunny, deal with it ;)
7 Août 2016
119
21
130
24
Belgique
www.mralinoe.be
C'est simple en fait.
Code:
#Init Commands:
/scoreboard objectives add ev_timer dummy

Le timer en scoreboard est simple, on monte constamment le score du compteur, je te rassure, ça n'affecte pas les performances.
Ces commandes sont un timer simple qui ne se reset pas, si tu veux lancer plusieurs tellraw a des moments précis et différents, c'est la marche à suivre...
Code:
#Constant Commands:
#Timer Command:
/scoreboard players add @a ev_timer 1

#Event trigger:
#A tellraw:
/tellraw @a[score_ev_timer_min=۞,score_ev_timer=۞] {Ton Tellraw}
#A execute:
/execute @a[score_ev_timer_min=۞,score_ev_timer=۞] ~ ~ ~ /setblock ~ ~ ~ redstone_block

۞ est la variable de temps, on compte le temps en tick (20t / 1sec).
Il est possible de simplement reset le timer pour le relancer, si tu souhaites créer une boucle...
Cette commande doit bien évidement être exécutée après, sinon le timer va se reset avant de s’exécuter...
Code:
#Code of Reset:
/scoreboard players set @a[score_ev_timer_min=۞,score_ev_timer=۞] 0

Le défaut de cette technique est la désynchronisation des différents joueurs, si la map est solo, pas de problème.
Il est cela dit possible de se servir d'une entité comme compteur, ce qui permet de centraliser l’exécution de commande pour tous les joueurs et corrige ce soucis.
 

...

Architecte en herbe
13 Mars 2016
71
9
97
28
Merci pour la précision mais je ne comprend pas trop le fait de devoir mettre une commande execute après le tellraw. De plus la commande reset remet les point de tout le monde à zéro pour le timer c'est ça ?
 

MrAlinoë

I'm the cutest Bunny, deal with it ;)
7 Août 2016
119
21
130
24
Belgique
www.mralinoe.be
Le tellraw et l’exécute ne servent que d'exemple... Juste histoire de montrer que tu peux déclencher des actions avec ce système...
Le reset que je t'ai donné agit de manière indépendante pour chaque joueur, elle ne reset que les joueurs ayant atteint le score voulu sur le scoreboard et les autres qui ne l'on pas encore atteints continuent de monter...

Je ne sais pas si c'est clair...

Si tu souhaite avoir une commande qui reset les timers de tout les joueurs en même temps, la voici:
Code:
#Can't be constant:
/scoreboard players set @a 0
 

...

Architecte en herbe
13 Mars 2016
71
9
97
28
Je te remercie vraiment pour ton aide mais je ne voit pas vraiment pas comment ce timer s'utilise en sachant que j'ai le testfor qui s'active lorsque un joueur s'approche d'un mob pour le tellraw. Autrement dit le command block est tjrs actif mais j'aimerai que le tellraw ne puisse pas être lancé pour éviter une répétition en boucle. Désolé si je me répète j'avais peur qu'il y est confusion. Merci encore pour le temps que tu me consacre.
 

MrAlinoë

I'm the cutest Bunny, deal with it ;)
7 Août 2016
119
21
130
24
Belgique
www.mralinoe.be
Y a confusion...

Ce que tu demandes, c'est que le tellraw ne se déclenche que si le joueur s'approche du mob, histoire d'éviter les répétitions infinies...
Si c'est ça j'ai besoin d'infos, le tellraw se déclenche dès que le joueur est assez proche, mais si le joueur s'en va et reviens après, doit-il se re-déclencher?
 

...

Architecte en herbe
13 Mars 2016
71
9
97
28
C'est bien ce que je pensais : je m'étais mal exprimé. En fait le tellraw se déclenche qd le joueur s'approche du mob. Pour éviter les répétions trop rapides comme lorsque le joueur passe du bloc juste à côté pour revenir devant le mob je voulais empêcher l'activation du tellraw sur une certaine durée et qu'il se réactive lorsque le joueur ce décide de reparler au PNJ. Mon but est de créer une ambiance à la pokémon si tu voit ce que je veux dire x)
 

MrAlinoë

I'm the cutest Bunny, deal with it ;)
7 Août 2016
119
21
130
24
Belgique
www.mralinoe.be
Il y a une solution toute bête...

Utiliser des systèmes de tags par distance, c'est simple...
Code:
#Constant execution
/tellraw @a[r=3,tag=!trigger] {}
/scoreboard players tag @a[r=3] add trigger
/scoreboard players tag @a[rm=5] remove trigger
Comment ça marche? C'est simple on lance le tellraw dès que le joueur est assez loin, dans le sélecteur de ce dernier il y a une interdiction pour le tag "trigger", tag qui n'est pas actif mais qu'il le sera à la commande suivante, le tellraw ne s’exécute donc qu'une fois.

On retire le tag "trigger" passé une certaine distance loin du mob, la distance doit être plus élevée que celle des autres sélecteurs sans quoi ça ne sert à rien...

Cette solution est simple et tu peux facilement l'utiliser plusieurs fois en changeant juste les données, je te conseille bien sûr de les faire exécuter par tes PNJ plutôt que par des blocs de commandes afin de ne pas avoir des soucis avec les distance...