1. Le forum de Minecraft-France va définitivement fermer ses portes. Celui-ci restera en lecture seule mais vous ne pourrez plus y apporter de nouveaux topics. Nous vous invitons à nous rejoindre sur le Discord de Minecraft-France qui permet de présenter vos projets, discuter avec la communauté etc.. Merci à tous d'avoir fait vivre ce forum de nombreuses années. Pour nous rejoindre sur Discord, Cliquez ici

Problèmes avec la deconnexion/reconnexion et les testfor.

Discussion dans 'Mapping' créé par Jbip, 20 Juin 2014.

  1. Jbip

    Jbip Mineur

    Inscrit:
    31 Août 2013
    Messages:
    398
    Points:
    134
    Sexe:
    Homme
    Salut ! Eh oui, c'est encore moi, j'ai trouvé un nouveau bug dans ma map, enfin, bug n'est pas le mot,puisque c'est bien une erreur de système qui "génère" ce problème. Et celui-ci est bien pratique pour dupliquer l'argent et autres trucs.. Et ça c'est pas cool.

    Pourquoi, comment, où s'active mon problème ?
    En fait, c'est du à la connexion/reconnexion. Dans la map se trouve beaucoup de testfors, que j'ai utilisé pour par exemple mon système de killstreaks..
    Vous savez surement comment fonctionne le testfor si vous êtes là. Eh bien, quand le joueur se déconnecte avec le score, où du moins ce qu'il faut pour activer le testfor, celui-ci va tout simplement se désactiver, car le joueur est deconnecté et qu'il n'y a donc plus le score requis pour l'activation du testfor.
    Donc, quand le joueur en question va se reconnecter, il va réactiver le testfor, qui va s'empresser d'activer le comparateur qui va allumer les autres commandes..
    Ce problème est surtout un gros problème pour les killstreaks, qui est actif pour toutes les teams, et qu'un simple déco/reco peut enclencher des bonus..


    Si quelqu'un a une solution, je suis preneur ! :D

    :diamond:Jbip:diamond:
     
  2. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 694
    Points:
    180
    Sexe:
    Homme
    La solution, c'est de ne pas avoir de testfor qui soit constamment actif, ça n'a pas l'air d'être une solution, mais c'est ce qu'il y a de mieux à faire (ou alors rendre ton testfor indépendant des joueurs en utilisant un joueur fantôme et la commande /scoreboard players test). Il n'est pas possible de détecter la déconnexion d'un joueur (mais on peut détecter sa reconnection avec la stat "leaveGame"). Et même si c'est possible, y a forcément un moment où on passe par l'état "faux" dans le testfor.
     
  3. Andarann

    Andarann Enter the World

    Inscrit:
    30 Avr 2014
    Messages:
    17
    Points:
    33
    Sexe:
    Homme
    Crée donc un objectif nommé genre "leave" ou "gameLeave" dans la catégorie stat.leaveGame. Dans tes testfors, ne fait aboutir que à des commandes ne marchant que sur les joueurs pour qui ce score est à 0; et à la fin de tous tes testfors, mets un command block pour réinitialiser le tout
    Code (cpp):
    /scoreboard players set @a[score_nomDuScore_min=1] nomDuScore 0
    .
    J'en profite pour te conseiller très fortement d'abandonner (ou presque) les testfor: ce sont des commandes dépassées depuis l'arrivée de /execute, c'est à dire depuis...un paquet de temps. En vérité, le /testfor n'a le dessus sur le /execute (ou le /scoreboard avec des commandes à côté, mon préféré que je sur-utilise) que pour les petits tests qui demandent peu de rapidité.

    EDIT: Dépassé par Mlakuss ;(
     
  4. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 694
    Points:
    180
    Sexe:
    Homme
    Le /testfor reste très utile dans certains cas mais c'est vrai qu'il se remplace aisément par un /scoreboard ou un /execute (en fonction de ce qui est testé).
     
  5. Andarann

    Andarann Enter the World

    Inscrit:
    30 Avr 2014
    Messages:
    17
    Points:
    33
    Sexe:
    Homme
    Ce serait sans doute un sujet à débat, mais désormais je ne me sers du /testfor que pour les petits tests en général de position, quand je n'ai pas besoin d'effectuer actions rapidement et sur plusieurs joueurs...ou bien pour créer des événements irréversibles/qui s'activent au bout d'un certain temps (une porte qui se déverrouille si le joueur si le joueur a tel truc, ou un explosion à telle position, ou encore une exécution de commandes au bout d'un certain temps etc.).
    J'ai peut-être parlé un peu trop vite tout à l'heure, mais pour être exact je pense qu'on peut dire qu'il est devenu bien moins utile avec 1/L'arrivée des ultra clocks & 2/L'arrivée du /execute. Sa lenteur et son côté bloqué à cause de l'utilisation du comparateur peut-être utile...comme totalement inutile ;)
     
  6. Poslovitch

    Poslovitch Bûcheron

    Inscrit:
    27 Déc 2013
    Messages:
    262
    Points:
    111
    Sexe:
    Homme
    Intéressant tout cela.
    Mais y a une chose qui me chiffonne : c'est la syntaxe de la commande /execute...
     
  7. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 694
    Points:
    180
    Sexe:
    Homme
    /execute <cible> x y z <commande>
    Il faut le comprendre comme s'il fonctionnait de la même manière qu'un testfor sauf que, quand la condition est vraie, une commande s'exécute immédiatement.
    Le x, y et z sont pas forcément utile (sauf cas du /playsound), on met très souvent "~ ~ ~" pour dire que la commande doit être exécutée sur le joueur.
     
  8. Poslovitch

    Poslovitch Bûcheron

    Inscrit:
    27 Déc 2013
    Messages:
    262
    Points:
    111
    Sexe:
    Homme
    Hum.

    En gros, si je veux savoir si un joueur est à tel endroit et si oui, lui faire un effet de Strength, la commande sera celle-ci ? :
    /execute @a[x=<cd.>,y=<cd.>,z=<cd.>,r=1] ~ ~ ~ /effect @a 5 100 1
     
  9. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 694
    Points:
    180
    Sexe:
    Homme
    Non. Si tu mets bien les coordonnées de l'endroit à la place de tes <cd.>, dans ton /effect, c'est "/effect @p 5 100 1" qu'il faut mettre.
     
  10. Poslovitch

    Poslovitch Bûcheron

    Inscrit:
    27 Déc 2013
    Messages:
    262
    Points:
    111
    Sexe:
    Homme
    Ok.

    Je comprends donc un peu mieux le /execute ^^
     
  11. Jbip

    Jbip Mineur

    Inscrit:
    31 Août 2013
    Messages:
    398
    Points:
    134
    Sexe:
    Homme
    Du coup, ça n'arrange pas vraiment mon problème..
    Donc il faudra juste éviter de déco/reco

    EDIT : J'ai finalement trouvé une solution, ça a un rapport avec mon dernier topic sur ce forum, concernant le compteur via levels. Je setblock un redstone block là où il faut pour 3,5,7,etc.. kills. Résultat, plus de duplication de pièces !
    Merci quand même pour vos réponses, j'éviterai d'utiliser les testfor par la suite, sauf si nécessaire :D
     
    #11 Jbip, 26 Juin 2014
    Dernière édition: 26 Juin 2014

Partager cette page