CommandBlock  Résolu Mettre une latence ou désactiver le clic droit temporairement

Discussion dans 'Support Command Blocks' créé par michris, 19 Mai 2019.

Tags:
  1. michris

    michris Bucheron

    Inscrit:
    8 Mai 2019
    Messages:
    29
    J'aime reçus:
    1
    Bonjour , je fais actuellement un market avec des panneaux qui setblock de la redstone mais en cliquant sur 2 items qui ont le meme prix en meme temps , les commandblock s'activent quand meme et give les items voulu pour le prix d'un seul donc j'aimerais bien savoir si on peut mettre une latence aux clic droit (avec mining fatigue j'y arrive pas mais peut être que c'est possible) ou complètement désactiver le clic droit (avec un scoreboard qui détecté le clic droit et fait en sorte qu'on puisse pas cliquer pendant 2s ou quoi) svp
    Version : 1.8.9 vanilla
     
  2. Eglaios

    Eglaios Dieu de gunwars.io

    Inscrit:
    14 Avril 2018
    Messages:
    148
    J'aime reçus:
    20
    Si tu détectes un clic sur des panneaux, le mieux, c'est d'invoquer temporairement une entité invisible, sans particules, invulnérable, silent, NoAI, NoGravity etc.
    Le but étant de recouvrir temporairement le panneau avec une hitbox invisible, rendant un clic droit dessus impossible.

    Autre méthode : le scoreboard. Comme tu peux mettre jusqu'à 4 clickEvents sur un panneaux, tu peux mettre la première commande comme "execute @p[score_<un score>=0] ~ ~ ~ setblock redstone block...", puis la deuxième commande en "scoreboard players set @p <un score> 1"
    Donc quand le joueur clique, ça place le bloc s'il n'a pas un score de 1, puis ça le lui met à 1. Tant qu'il n'est pas remis à 0, recliquer ne fera rien. Tu peux remettre son score à 0 via le système activé par le panneau
    (Du coup, en multijoueur, ça risque de ne pas marcher...)

    Tu aurais un screenshot du système que tu utilises avec le panneau?
     
  3. michris

    michris Bucheron

    Inscrit:
    8 Mai 2019
    Messages:
    29
    J'aime reçus:
    1
    upload_2019-5-20_16-29-24.png
    Sa donne ça , le panneau place un bloc de redstone allumant le commandblock 1 et 2 ( qui setblock air + testfor l'inventaire de l'item voulu ) , la 3 qui testfor un 2e stack (vu que j'ai besoin de 128 emeraudes donc 2 stack ( je detecte par slot ) , le commandblock 4 pour setblock le commandblock 2 et 3 pour les desactiver , et 5 pour clear/give et title. mais le problème est que quand on clique sur 2 panneaux ou + en même temps , les systèmes s'allument tous et détectent l'inventaire avant qu'il soit clear donc on peut glitch un peu le système , sinon , je pense que si je rajoute le /scoreboard (dans les panneaux) qui /summon une entity invisible dans le joueur le suivant partout et en le /kill juste après (par exemple a coté de commandblock 4) , je pense que même en multi , sa devrait marché ? par exemple un /execute @a[r=10] ~ ~ ~ kill @e[type=(mob)]

    EDIT : je viens de trouver une autre solution plutôt simpliste mais assez efficace je trouve : j'active le panneau , donc tout marche bien , seulement , j'ai /fill en bas du market des commandblocks qui ont pour commandes :
    /summon ArmorStand ~ ~63 ~ {Invisible:1,Invulnerable:1,DisabledSlots:2039583}
    Qui sera activé par le panneau , ce qui fait que le market entier sera rempli d'armorstand invulnérable , invisible pour pas gêner et disableslot pour éviter de poser un item dessus , et à côté des commandes de give/clear etc... je mettrais un commandblock pour activer un autre commandblock au centre du market avec une commande :
    /kill @e[type=ArmorStand,r=15]
    (la redstone sera instant supprimé avec un /setblock ~ ~1 ~ air) , c'est pratique mais je sais pas si sa laguera beaucoup (en multi) de /summon 450 entity (la surface de mon market) à chaque achat
     
    #3 michris, 20 Mai 2019
    Dernière édition: 20 Mai 2019
  4. Eglaios

    Eglaios Dieu de gunwars.io

    Inscrit:
    14 Avril 2018
    Messages:
    148
    J'aime reçus:
    20
    Ah oui!
    Mais je vois que tu utilises un système avec torches de redstone et tout, c'est un peu galère, je vais voir si tu ne peux pas juste optimiser le système
     
  5. michris

    michris Bucheron

    Inscrit:
    8 Mai 2019
    Messages:
    29
    J'aime reçus:
    1
    J'utilise ce système en profondeur car j'ai environ 50 systèmes un peu collés , donc j'ai pas l'espace de construire sur la longueur, sinon je viens de tester ma méthode et elle marche bien en solo pour l'instant.

    EDIT : Enfaites je le met pas à l'endroit où l'achat est effectué mais l'endroit ou les commandblock sont reset car si quelqu'un fait un achat sans avoir les items requis , il y aura les armorstand qui seront pas kill
     
  6. michris

    michris Bucheron

    Inscrit:
    8 Mai 2019
    Messages:
    29
    J'aime reçus:
    1
    upload_2019-5-20_18-6-53.png
    Petit problème enfaites que je viens de remarquer en gamemode 3 , les armorstands protègent pas des coins ,même si la zone est recouverte , ce n'est pas protégé , du coup pour y remédier , j'aimerais savoir si on peut pas faire un tp permanent d'un armorstand a l'endroit où regarde un joueur ? car dans le joueur , s'il avance sa ne marche pas. Ou une autre méthode si tu as les connaissances requises.
    Sinon ta technique marche pas en multi ? car elle m'a l'air faisable :/execute score -> setblock puis /score add et /score reset dans le système ? pour le joueur @p
     
  7. Eglaios

    Eglaios Dieu de gunwars.io

    Inscrit:
    14 Avril 2018
    Messages:
    148
    J'aime reçus:
    20
    Je sais pas mais je viens de te faire un système que tu vas aimer, je pense...
    Hmmm... bravo mon minecraft vient de planter, je redémarre et je t'envoie ça lol
     
  8. Eglaios

    Eglaios Dieu de gunwars.io

    Inscrit:
    14 Avril 2018
    Messages:
    148
    J'aime reçus:
    20
    Avant tout, crée un objectif "Buying" de type dummy.
    déJà, voici la commande que tu utiliseras pour la pancarte de shop :

    /setblock ~ ~1 ~ wall_sign 1 0 {Text1:"{\"text\":\"LIGNE 1\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/scoreboard players set @p Buying 1\"}}",Text2:"{\"text\":\"LIGNE 2\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/setblock -227 6 -416 redstone_block\"}}"}
    Traduction : Met le score de Buying du joueur activateur à 1, puis place un bloc de redstone aux coordonnées spécifiées

    Mets le texte que tu veux, l'important, c'est les clickEvent. Tu devras ensuite construire ceci (voir ci-dessous). Après, tu remplaceras les coordonnées du setblock de la commande ci-dessus de façon à placer le bloc de redstone à l'endroit où j'ai dessiné ce magnifique cube bleu!

    Avant de passer aux commandes, assure-toi que la pancarte place bien le bloc de redstone à l'emplacement prévu.
    2019-05-20_14.39.56.png

    Si la pancarte est bien configurée, tu peux passer aux commandes :

    Bloc 1 :
    Code:
    /setblock ~ ~1 ~ air
    Sert à retirer le bloc de redstone

    Bloc 2 :
    Code:
    clear @p[score_Buying=1,score_Buying_min=1] minecraft:emerald 0 0
    Sert à compter le nombre d'émeraudes dans l'inventaire de tout joueur ayant un score Buying de 1 (donc ayant cliqué)

    Bloc 3 :
    Code:
    stats block ~-1 ~ ~ set AffectedItems @p[score_Buying=1,score_Buying_min=1] Buying
    Sert à stocker le nombre d'émeraudes dans l'inventaire du joueur directement dans son score Buying.
    /!\Important/!\ Remplace "~ ~-1 ~" de façon à cibler la position du bloc 2!!

    Bloc 4 :
    Code:
    tellraw @a[score_Buying=127] ["",{"text":"Tu n'as pas assez d'émeraudes!","color":"red"}]
    Envoie un message si le joueur a moins de 128 émeraudes

    Bloc 5 :
    Code:
    tellraw @a[score_Buying_min=128] ["",{"text":"Achat effectué avec succès!","color":"green"}]
    Envoie un message si le joueur a 128 émeraudes ou plus

    Bloc 6 :
    Code:
    give @p[score_Buying_min=128] minecraft:dragon_egg
    Donne l'objet acheté au joueur s'il a 128 émeraudes ou plus

    Bloc 7 :
    Code:
    clear @p[score_Buying_min=128] minecraft:emerald 0 128
    Clear 128 émeraudes si l'achat a été validé

    Bloc 8 :
    Code:
    /scoreboard players reset @a[score_Buying_min=0] Buying
    Reset le score Buying; une fois l'achat terminé, le joueur ne sera plus affecté si le système est réactivé par un autre joueur
     
    michris apprécie ceci.
  9. Eglaios

    Eglaios Dieu de gunwars.io

    Inscrit:
    14 Avril 2018
    Messages:
    148
    J'aime reçus:
    20
    Ce système est vraiment pas mal : Compatible en multijoueur, temps d'exécution : ~1 tick, le panneau est spammable, système très compact,... Tu me diras ce que tu en penses...
     
    michris apprécie ceci.
  10. michris

    michris Bucheron

    Inscrit:
    8 Mai 2019
    Messages:
    29
    J'aime reçus:
    1
    Merci , j'essaierai de faire sa meme si avec le manque de place sa va être dur mais je me deboruillerai
     

Partager cette page