Wie bekomme ich den Spielernamen?

Ich habe einen Satz von Befehlsblöcken, die folgendes tun:

  1. Testen Sie, dass alle Spieler einen Schädel in ihrem Inventar haben
  2. Wenn nicht, geben Sie allen Spielern einen Schädel
  3. Töte alle Spieler

Grundsätzlich, wenn jemand den Schädel fallen lässt, wird ihnen ein anderer gegeben und dann getötet. (Ein Weg, um wieder zu ihrem Spawn Punkt).

Offensichtlich, im mehrschichtigen das verursacht einige Probleme.

  1. Wenn ein Spieler den Schädel nicht hat, läuft der Test positiv, auch wenn andere es haben.
  2. Alle Spieler erhalten dann einen weiteren Schädel und lassen diejenigen, die es nicht mit mehr als einem fallen lassen.
  3. Alle Spieler werden dann getötet.

Gibt es einen Weg, wo ich den Namen des Spielers speichern kann, der den Schädel fallen gelassen hat, dann nur die folgenden Aktionen auf sie?

Grundsätzlich möchte ich in der Lage sein, @a mit einem Spielernamen dynamisch zu ersetzen.

Auch, gibt es eine Möglichkeit, dass ich erkennen kann, ob ein Spieler hat richtig geklickt das Element in ihre heiße Bar anstatt wenn sie es fallen gelassen haben?

  • Produkt beschwören
  • Wie kann ich einen Befehlsblock noch einmal in Minecraft sagen?
  • Wie erkenne ich, ob Spieler genügend EXP-Level haben?
  • Minecraft Befehlsblock Test für bestimmte Spieler
  • Machen Sie einen bestimmten Block unbillig?
  • Ich kann einen Block nicht mit einem Befehlsblock ersetzen!
  • 3 Solutions collect form web for “Wie bekomme ich den Spielernamen?”

    Kontext:

    In der Minecraft 14w08a, ein Schnappschuss zwischen 1,8 und 1,7, kannst du nun einen Gegenstand im Inventar eines Spielers testen, indem du 0 Items dieses Typs löschst, wie im Schnappschuss, fügte er die Möglichkeit hinzu, die Anzahl der zu entfernenden Elemente anzugeben.

     /clear [Player] [Item] [Data] [Count] [NBT Tags] 

    Außer, es bedeutet, dass wir die Person identifizieren müssen und es gibt keine Möglichkeit, dass Sie die Person in diesem erfassen können. Also müssen wir dem Spieler einen Bezeichner geben.


    Wie machen wir es?

    Bildbeschreibung hier eingeben
    Dies ist ein Modul. Wiederholen Sie diese Kontraktion so oft wie die Anzahl der Spieler, die Sie verfolgen möchten. Also, 50 Spieler bedeutet, dass dies 50 Mal, aber das Ersetzen der SpielerID für eine andere Zahl, vorzugsweise plus eins zum vorherigen.

    Schritt 1: Erstellen Sie einen Bezeichner.
    Mit Befehlsblöcken müssen Sie jedem Spieler, den Sie einen Wert in einer Dummy-Score testen möchten, zuweisen. Lass uns eine Partitur mit dem Namen playerID , die ein Dummy-Wert ist.

     /scoreboard objectives add playerID dummy playerID 

    Also, wann immer du einen Spieler testen möchtest (wenn es sich um eine PvP / Kommando-Block-verwandte Karte handelt, müssen alle Spieler eine Nummer zugewiesen werden, wenn die Verbindung / das Spiel beitreten, nicht spektakuliert).

    Schritt 1b.

    Schaffe ein Tor Alle Spieler müssen auf sie gehen, wenn das Spiel beginnt. Wenn der erste Spieler darauf vorangeht, wird ihnen ein Scoreboard-Wert in der objektiven "playerID" zugewiesen. Dies ist, was wir verwenden werden, um jeden Spieler zu identifizieren.

     /scoreboard players set @p playerID 1 

    Nun, der nächste Spieler muss entweder auf eine andere Druckplatte gehen, oder man kann die gleiche Druckplatte geben eine andere Nummer (komplizierter, nicht zu sagen, wie).
    Basierend auf Ihren Kommentaren, machen Sie ein zweites Tor für den zweiten Spieler und so weiter.

    Dieses Tor sollte /scoreboard players set @p playerID 2 und so weiter.

    Schritt 2: Jetzt müssen wir für jeden Spieler a /testfor

    Lege eine schnelle Uhr (bei etwa 10 Hz, schaltet 10 mal pro Sekunde ein). Sie können schneller gehen – aber es funktioniert nicht mit Repeatern / Komparatoren etc. Dieser Puls geht in einen Befehlsblock mit diesem Befehl:

     /clear @p[score_playerID=1,score_playerID_min=1] minecraft:Skull 0 0 

    Dadurch wird der Spieler mit dem SpielerID-Score von 1 Null Schädel gelöscht.
    Wenn der Spieler einen Schädel in seinem Inventar hat, wird er nichts davon löschen und "true" ausgeben.
    Wenn der Spieler keinen Schädel in seinem Inventar hat … (obwohl es versucht, keine Schädel zu löschen, prüft es, ob es Schädel gibt. /clear Befehle Ausgabe false wenn das Element nicht gefunden wird, unabhängig davon, wie viele muss sein Entfernt.)

    Also, stelle einen Komparator aus, der aus dem /clear [blah blah blah] Befehlsblock herausgeht, der zu einem anderen Befehlsblock ausgegeben wird. Nun, lass uns das "Oh, dieser Kerl passt zu diesem Citeria."

     /scoreboard objectives create hasSkull dummy hasSkull /scoreboard players set @p[score_playerID=1,score_playerID_min=1] hasSkull 1 

    Wenn Sie möchten, dass die Partitur automatisch auf 0 zurückkehrt, wenn der Spieler den Schädel verliert, machen Sie einfach ein Flip-Flop-Tor (eines, das nach links ausgibt, wenn der Eingang eingeschaltet ist und rechts, wenn der Eingang ausgeschaltet ist usw.), Wenn der Eingang falsch ist, gibt er ein Signal an einen Befehlsblock aus, der:

     /scoreboard players set @p[score_playerID=1,score_playerID_min=1] hasSkull 0 

    Schritt 3: Das lästige Bit
    Jetzt wiederholen Sie so viele Module wie Sie für Spieler benötigen. Dieses Mal, ändern Sie die Partitur, die Sie testen, zum Beispiel: /clear @p[score_playerID=2,score_playerID_min=2] minecraft:Skull 0 0 statt /clear @p[score_playerID=1,score_playerID_min=1] minecraft:Skull 0 0 etcra.

    Schritt 4: etwas mit ihnen machen.
    Jetzt haben Sie ein Ziel, das eine Punktzahl von '1' zu jedem mit einem Schädel in ihrem Inventar gibt … Oder '0' zu denen ohne einen, können Sie nur einen Befehlsblock machen, der Sachen den Spielern mit der Kerbe tut Von 1

    Erstellen Sie einen Befehlsblock, der dafür testet, auf einer 20Hz-Uhr (erfrischt 20 mal pro Sekunde, die schnellste Uhr) … oder langsamer, wenn Sie es wünschen.

     /[something] @p[score_hasSkull=1,score_hasSkull_min=1] [more parameters] 

    Zum Beispiel: /kill @a[score_hasSkull=1,score_hasSkull_min=1] (Kills jeder, der einen Schädel hat)

    In diesem Schnappschuss kannst du es wohl nicht machen, aber jetzt kommt der Befehl / execute wirklich aus;)

    /execute @p ~ ~ ~ clear @p minecraft::Skull 0 0 zu überprüfen, ob er einen Schädel hat (wie @aytimothy sagte)

    Verdrahtet bis zu einem Komparator und Redstone Repeater zu einem nächsten Befehlsblock:

    /execute @p ~ ~ ~ give @p minecraft:skull 1

    Auf diese Weise müssen Sie nicht auf das Erstellen von UIDs an jeden Spieler angewiesen sein.

    Diese Antwort basiert auf der obigen Antwort.

    Sie können IDs mit einer einzigen Druckplatte geben, indem Sie wie folgt ausführen:

    • Setzen Sie einen Komparator an den Befehlsblock mit tp , wo Sie einen Befehlsblock anhängen, der einen Befehlsblock mit dem nächsten Befehlssatz genau platziert, wo der vorherige Befehlsblock war (bei Bedarf mit einem Repeater, so dass Sie genug Verzögerung für den neuen Befehlsblock haben Sofort auslösen).
    • In gleicher Weise können Sie den Befehl des zweiten Befehlsblocks durch einen ersetzen, der den ersten Befehl ersetzt, indem er die ID 3 gibt.
    • Durch die Verkettung von Befehlsblöcken auf diese Weise (kann je nachdem, wie viele Spieler Sie erlauben können) nervig sein, können Sie die Befehlsblöcke aktualisieren ihre Befehle mit jeder ID.
    • Am Ende der Kette machst du einen Befehlsblock, der einen Befehl setzt, der einen Befehl setzt, der einen Befehl setzt … und so weiter, der den ersten Befehl in den Spieler-Zuschauer-Modus wechselt.

    Und natürlich fügst du den tp Befehlsblock an den ID-Einstellbefehlsblock und halte ihn unverändert.

    Um zu veranschaulichen, was passiert, wenn dies läuft, habe ich die Befehle für eine Kette von drei Befehlsblöcken geschrieben.

    Annahmen (es sollte klar sein, was sich in Abhängigkeit von der tatsächlichen Situation ändern sollte, wenn nicht jemand, der es in den Kommentaren klären lässt, ich bin jetzt zu müde):

    • Der erste Befehlsblock befindet sich auf den Koordinaten 0, 10, 0.
    • Die Kette orientiert sich an positivem X.
    • Es gibt genau einen Repeater nach jedem Komparator.
    • Der Laich des Spiels selbst ist bei 100, 100, 100.

    Befehle:

     scoreboard players set @p playerID 1 tp @p 100 100 100 setblock 0 10 0 minecraft:command_block 0 replace {Command:scoreboard players set @p playerID 2,TrackOutput:0} setblock 3 10 0 minecraft:command_block 0 replace {Command:setblock 0 10 0 minecraft:command_block 0 replace {Command:scoreboard players set @p playerID 3,TrackOutput:0},TrackOutput:0} setblock 6 10 0 minecraft:command_block 0 replace {Command:setblock 3 10 0 minecraft:command_block 0 replace {Command:setblock 0 10 0 minecraft:command_block 0 replace {Command:gamemode 3 @p,TrackOutput:0},TrackOutput:0},TrackOutput:0} 

    Bemerkungen:

    • Die Befehle werden mit MCStacker erzeugt.
    • Der TrackOutput-Parameter muss möglicherweise entfernt werden, da es möglicherweise 1,9-spezifisch ist.
    • Diese Kette wird nicht getestet, da ich nicht auf Multiplayer arbeiten kann.

    Was soll passieren:

    • Der erste Spieler tritt auf die Druckplatte.
    • Der Spieler bekommt die ID 1.
    • Der Spieler wird zum Spiel-Laich teleportiert.
    • Die Befehls- scoreboard players set @p playerID 2 für den ersten Befehlsblock gesetzt.
    • Der Befehl setblock 0 10 0 minecraft:command_block 0 replace {Command:scoreboard players set @p playerID 3,TrackOutput:0} ist für den zweiten Befehlsblock gesetzt (oder der dritte, wenn du den tp Befehlsblock zählst).
    • Der Befehl setblock 3 10 0 minecraft:command_block 0 replace {Command:setblock 0 10 0 minecraft:command_block 0 replace {Command:gamemode 3 @p,TrackOutput:0},TrackOutput:0} ist für den dritten Befehlsblock gesetzt.
    • Der zweite Spieler tritt auf die Druckplatte.
    • Der Spieler bekommt die ID 2.
    • Der Spieler wird teleportiert.
    • Erster Befehlsblock erhält scoreboard players set @p playerID 3 .
    • Zweiter Befehlsblock erhält setblock 0 10 0 minecraft:command_block 0 replace {Command:gamemode 3 @p,TrackOutput:0} .
    • Dritter Befehlsblock bekommt, was er hat.
    • Dritter Spieler bekommt ID 3 und wird teleportiert.
    • Erster Befehlsblock bekommt gamemode 3 @p .
    • Zweite und dritte Befehlsblöcke bekommen was sie haben.
    • Jeder zukünftige Spieler geht in den Zuschauer-Modus, wird teleportiert, und alle Befehlsblöcke erhalten die Befehle, die sie bereits haben.

    Diese Regelung kann verlängert werden. Wenn jemand es mag, und ist gut bei Webapp-Codierung, fühlen Sie sich frei, einen Generator zu schreiben.

    Auch in den neuen Schnappschüssen für 1.9 wird es viel einfacher: Man kann direkt auf Spieler achten, die Schädel mit scoreboard .