Sonde, die zurückkehrt: Aus welchem ​​Mineralfeld sammelte es Ressourcen?

Wenn ich eine Probe habe, die mit Mineralien zurück zur Basis zurückkehrt (ausgegebene Reihenfolge "ProbeHarvest", 1), woher weiß ich, woher es abgebaut wurde? Ich möchte einen Auslöser schreiben, der die Sonde befiehlt, frühzeitig auf das Mineralfeld zurückzukehren.

Um zu klären: Ich habe einen Auslöser, dessen Handlung einer von denen ist:

  • Um Ressourcen wieder an Nexus zurückzugeben:

    TriggerAddEventUnitOrder(null, "ProbeHarvest", 1)

  • Verwendet eine Fähigkeit, Ressourcen zurück zu Nexus zurückzugeben:

    TriggerAddEventUnitAbility(null, "ProbeHarvest", 1, c_abilHarvestStageApproachDropOff, false)

Und in der Trigger-Aktion möchte ich lernen, dass es abgebaut wurde.

Anmerkung: Ich weiß, wie man lernt, wenn sich die Sonde dem Mineralfeld TriggerAddEventUnitOrder(null, "ProbeHarvest", 0) , aber ich brauche diese Informationen zu diesem Zeitpunkt nicht .

  • Starcraft II - Bist du in einer Liga stecken, sobald du platziert bist?
  • Gibt es Kanon oder sonst weit verbreitete Namen für Gruppen von Starcraft 2 Einheiten?
  • Sind die original Starcraft 2 WoL und HotS DVDs noch nützlich für die Installation des Spiels?
  • Wie teste ich einige meiner Truppen in eine andere Kontrollgruppe effektiv in Starcraft 2?
  • Wie ist die Anzahl der Spiele, die im Spielverlauf vorhanden sind, bestimmt?
  • Wie gut ist Hard AI?
  • 2 Solutions collect form web for “Sonde, die zurückkehrt: Aus welchem ​​Mineralfeld sammelte es Ressourcen?”

    Du musst auf Units lesen (alles was du anklickst). Jede Einheit hat eine ID.

    Als nächstes müssen Sie einen Auslöser verwenden . Wenn ein Mähdrescher von einem Mineralpflaster zu ernten beginnt, werden Sie einen Auslöser machen, der diesen Mähdrescher dem Mineralpflaster zuweist.

    Hier kannst du die Grundlagen der Auslöser lernen.

    Also, sobald eine Sonde beginnt zu ernten, können Sie einen Countdown auslösen oder was auch immer Sie im Sinn haben. Dann in diesem Auslöser werden Sie es befehlen, zurück zu der ID zu gehen, die gerade geerntet wurde, aus der sich die Ressourcen befinden, die es derzeit sammelt oder die X / Y-Achse auf der Karte (ich nehme auch an, dass es andere Möglichkeiten gibt, zu bekommen Die ID dessen, was es kam)

    Zuerst – die Fähigkeit, Ressourcen zu sammeln, ist in mehrere Phasen unterteilt, jeder kann als Triggerereignis verwendet werden. Du brauchst die Aufträge nicht zu überprüfen, sondern nur was das Gerät eigentlich macht.

    • TriggerAddEventUnitAbility(null, "ProbeHarvest", 0, ApproachDropOffHarvest) – Einheit ist die Vorbereitung des Mineralfeldes für die Ernte
    • ...(null, "ProbeHarvest", 0, WaitatResourceHarvest) – Einheit erreichte den Ressourcenknoten und begann darauf zu warten (evtl. eine andere Einheit ernte hier schon?). Dies wird ausgelöst, auch wenn kein tatsächliches Warten benötigt wird (es wartet auf 0 Sekunden).
    • ...(null, "ProbeHarvest", 0, HarvestHarvest) – die Einheit befindet sich am Ressourcenknoten und begann mit der Ernte
    • ...(null, "ProbeHarvest", 1, WaittoReturnHarvest) – Einheit fertig sammeln Ressourcen. Nach diesem Ereignis gibt es in der Regel eine kurze Zeit, wenn die Sonde im Leerlauf auf dem Mineralfeld mit den gesammelten Ressourcen sitzt.
    • ...(null, "ProbeHarvest", 1, ApproachDropOffHarvest) – die Einheit begann sich dem Drop-off-Gebäude (Nexus)
    • ...(null, "ProbeHarvest", 1, WaitforDropOffHarveset) – das Gerät erreichte das Drop-off-Gebäude und begann darauf zu warten. Im Grundspielmechaniker gibt es keine Wartezeit, aber das wird sowieso immer ausgelöst. Sie können sich vorstellen, ein benutzerdefiniertes Spiel, wo ein Mähdrescher kann nicht wieder Ressourcen, wenn ein anderes ist derzeit so.
    • ...(null, "ProbeHarvest", 1, DropOffHarveset) – das Gerät fällt die gesammelten Ressourcen in die Bank des Spielers.

    Für die Ereignisse, die als "ProbeHarvest", 0 markiert sind "ProbeHarvest", 0 können Sie lernen, welches Mineralfeld es direkt über EventUnitTargetTunit() nähert. Für "ProbeHarvest", 1 (Rückgabe der Einheit), diese Funktion würde dir dann die Drop-off-Gebäudeeinheit zurückgeben.

    Was Sie tun können, ist, dass beim Ernten beginnt ( HarvestHarvest ), speichern Sie die Ziel-Mineral-Feld-Einheit in einem benutzerdefinierten "Feld" Ihrer Sonde, und dann abrufen die Informationen in den nächsten Auslöser, wenn Sie zurückkehren.

    Für die Erstellung von benutzerdefinierten Feldern können Sie diese Antwort überprüfen: https://gaming.stackexchange.com/a/192794/92581

    Mit dieser Lösung hättest du:

     (Trigger) onStartGettingResources Events TriggerAddEventUnitAbility(null, "ProbeHarvest", 0, c_abilHarvestStageHarvest, false) Local Variables minerals <unit> EventUnitTargetUnit() Actions StoreUnitWithUnit(EventUnit(), "miningFrom", minerals) (Trigger) onStartReturningResources Events TriggerAddEventUnitAbility(null, "ProbeHarvest", 1, c_abilHarvestStageApproachDropOff, false) Local Variables minerals <unit> GetUnitWithUnit(EventUnit(), "miningFrom") Actions //use the "minerals" 

    Wo StoreUnitWithUnit und GetUnitWithUnit sind die Gegenstücke von Getter / Setter für benutzerdefinierte Felder, die Arbeit mit Einheiten statt Integer.

    Beachten Sie, dass dies noch Fehler verursachen kann, wenn das Mineralfeld, das die Sonde geerntet hat, erschöpft ist.