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

Résolu Give aléatoire d'items

Discussion dans 'Commands blocks & Redstone' créé par odadjian, 23 Juin 2015.

  1. odadjian

    odadjian Enter the World

    Inscrit:
    24 Oct 2011
    Messages:
    16
    Points:
    71
    Sexe:
    Homme
    Salut à tous !

    J'en appelle aux calés de la redstone et des command blocks !

    Je cherche à faire un système (via un coffre ou un interrupteur) pour que les joueurs obtiennent aléatoirement des objets.

    Exemple:
    "JeanKevin et ses amis vont sur la map hunger games de leur Realm; chacun leur tour ils s'élancent au coeur de la map et doivent appuyer sur un bouton pour se stuffer avant la phase de survie.
    En appuyant sur ce bouton ils reçoivent un (ou des) items de façon aléatoire".

    Est-ce possible ? et si oui comment ?
    Merci d'avance les copains !!
     
  2. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 694
    Points:
    180
    Sexe:
    Homme
    Ouep, tu as plusieurs solutions à disposition.
    Soit avec un mob spawner: avec une commande, tu fais apparaître un mob spawner qui te fait poper un objet aléatoire en utilisant le tag SpawnPotentials (cf la page wiki pour la structure).
    Soit avec un spreadplayers: Tu fais un "plancher" avec des blocs de commandes dans lesquels tu mets tout les /give possibles comme ceci:
    [​IMG]
    Et tu fais un /spreadplayer avec un ArmorStand par exemple qui se téléportera aléatoirement sur l'une des plaques et qui déclenchera une des commandes.
    La première solution à l'avantage d'être compacte, la seconde d'être facile à modifier.
     
    • J'aime J'aime x 1
  3. odadjian

    odadjian Enter the World

    Inscrit:
    24 Oct 2011
    Messages:
    16
    Points:
    71
    Sexe:
    Homme
    Je vais tester ça, merci !!

    Bon je dois être un peu idiot, mais je comprend rien à la page wiki pour ta première solution...

    Peux tu m'en dire un peux plus sur la réalisation de la seconde ?
     
    #3 odadjian, 23 Juin 2015
    Dernière édition par un modérateur: 23 Juin 2015
  4. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 694
    Points:
    180
    Sexe:
    Homme
    Attention aux doubles posts !

    Vu que j'utilise les deux actuellements, voici deux exemples:
    - Avec spawner
    Code (cpp):
    setblock ~ ~1 ~ mob_spawner 0 replace {MaxNearbyEntities:1s,RequiredPlayerRange:16s,SpawnCount:1s,SpawnData:{EntityId:"Item",Item:{id:"minecraft:stone",Count:1b,Damage:0s},Fire:300s},MaxSpawnDelay:20s,Delay:0s,EntityId:"Item",id:"MobSpawner",SpawnRange:1s,MinSpawnDelay:2s,SpawnPotentials:[0:{Type:"Item",Properties:{Health:5s,EntityId:"Item",Item:{id:"minecraft:spawn_egg",Count:1b,Damage:62s}},Weight:1},1:{Type:"Item",Properties:{Health:5s,EntityId:"Item",Item:{id:"minecraft:spawn_egg",Count:1b,Damage:95s}},Weight:1},2:{Type:"Item",Properties:{EntityId:"Item",Item:{id:"minecraft:spawn_egg",Count:1b,Damage:92s}},Weight:1},3:{Type:"Item",Properties:{EntityId:"Item",Item:{id:"minecraft:spawn_egg",Count:1b,Damage:68s}},Weight:1},4:{Type:"Item",Properties:{EntityId:"Item",Item:{id:"minecraft:spawn_egg",Count:1b,Damage:100s}},Weight:1}]}
    Il y a juste le premier objet qui n'est pas aléatoire (c'est pour cela que je le fais d'auto-détruire), mais ensuite tout les objets sont aléatoires. Et on peut choisir d'attribuer un poid (weight) à chaque objet pour augmenter ses chances d'apparaître.
    Il est possible de créer un spawner de ce genre en utilisant les filtres MCEdit suivants: Create Spawner et Combine Spawner

    - Avec spreadplayers
    J'ai 49 commandes, je veux en exécuter une au hasard, j'ai placé toutes mes commandes comme ceci avec un ArmorStand appelé "RandomP".
    [​IMG]
    A chaque fois que je fais cette commande, l'ArmorStand va être téléporté aléatoirement sur une des plaques:
    Code (cpp):
    /spreadplayers 31 30 1 3 false @e[name=RandomP]
    (31,30) correspond aux coordonnées du centre de mon carré de 7*7
     
  5. odadjian

    odadjian Enter the World

    Inscrit:
    24 Oct 2011
    Messages:
    16
    Points:
    71
    Sexe:
    Homme
    Bon du coup j'ai fait la deuxième méthode, comme tu m'as montré, le seul problème c'est que mon command block qui est sensé fair TP l'armorstand ne fonctionne pas. voilà ce qu'il m'affiche:

    [14:21:49] The number you have entered (5.0) is too small, it must be at least 45.0



    Alors que je ne pense pas m'être trompé dans ma commande:

    /spreadplayers 3846 98 44 5 false @e[name=RANDOMmachine]

    [​IMG] [​IMG]

    (3846 98 44) sont les coordonnées du bloc central de mon carré de 11/11
    Mon armorstand est rennomé " RANDOMmachine "
     
    #5 odadjian, 23 Juin 2015
    Dernière édition: 23 Juin 2015
  6. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 694
    Points:
    180
    Sexe:
    Homme
    La commande /spreadplayers ne prend pas en compte l'altitude.
    Il faut donc mettre:
    Code (cpp):
    /spreadplayers 3846 44 1 5 false @e[name=RANDOMmachine]
     
  7. odadjian

    odadjian Enter the World

    Inscrit:
    24 Oct 2011
    Messages:
    16
    Points:
    71
    Sexe:
    Homme
    Je crois que je suis maudit...

    Je fais tout bien et maintenant j'ai ça :

    [11:38:01] That entity cannot be found


    C'est décourageant (et sans doute pour toi aussi ! ^^ )
     
  8. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 694
    Points:
    180
    Sexe:
    Homme
    Si tu tapes ça, tu as quoi ?
    Code (cpp):
    /testfor @e[name=RANDOMmachine]
    Si tu n'as pas de résultat, essaye ceci:
    Code (cpp):
    /summon ArmorStand 3846 64 44 {CustomName:"RANDOMmachine"}
    Puis réessaye le /spreadplayers. Je pense que tu as dû te tromper en nommant l'ArmorStand.
     
  9. odadjian

    odadjian Enter the World

    Inscrit:
    24 Oct 2011
    Messages:
    16
    Points:
    71
    Sexe:
    Homme
    raaaah ! et là ça affiche qu'il est impossible d'invoquer l'entité en dehors du monde...

    C'est peut être idiot mais y'a t'il un conflit du au fait que je sois sur un Realm ?

    Parce que là je comprend pas, je fais tout bien, j'ai vérifier 10 fois les commandes...

    Y'a t'il une incidence sur l'endroit où tu places ton armorstand au début ?
     
  10. Mlakuss

    Mlakuss Rédacteur

    Inscrit:
    7 Sept 2013
    Messages:
    1 694
    Points:
    180
    Sexe:
    Homme
    Ah, c'est parce que tu es trop éloigné. Il faut que ce soit dans des chunks chargés (soit un joueur à proximité soit près du point de spawn)
     
  11. odadjian

    odadjian Enter the World

    Inscrit:
    24 Oct 2011
    Messages:
    16
    Points:
    71
    Sexe:
    Homme
    Donc je l'ai dans le cube alors...

    Je vais faire des test pour voir si effectivement quand les autres joueurs sont dans la zone d'hunger-games ça marche; sinon j'essairai de trouver un autre moyen!

    :facepalm2:


    En tout cas merci à toi !!!
     
  12. nyrox13

    nyrox13 Nouveau

    Inscrit:
    7 Juil 2015
    Messages:
    3
    Points:
    25
    Sexe:
    Homme
    Tu n'as qu'à faire un clone de toute ta machinerie que tu replace au spawn de la map (là ou tu spawn quand tu charges pour la première fois, ou quand tu meurs sans avoir dormi dans un lit.).
     

Partager cette page