Starcraft-2

探測返回:從哪個礦區採集資源?

  • November 23, 2014

如果我有一個帶著礦物返回基地的探測器(下達命令“ProbeHarvest”,1),我怎麼知道它是從哪裡開采的?我想寫一個觸發器,命令探測器提前返回礦場。

澄清一下:我有一個觸發器,其動作是其中之一:

  • 為了將資源返回給 Nexus:

TriggerAddEventUnitOrder(null, "ProbeHarvest", 1)

  • 使用了將資源返回給 Nexus 的能力:

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

在觸發動作中,我想知道它是從中探勘的。

注意:我知道當探測器接近礦場 時如何獲知,但那時TriggerAddEventUnitOrder(null, "ProbeHarvest", 0)我不需要這些資訊。

首先——收集資源能力分為幾個階段,每個階段都可以作為觸發事件。您不需要檢查訂單,而只需檢查單位實際在做什麼。

  • TriggerAddEventUnitAbility(null, "ProbeHarvest", 0, ApproachDropOffHarvest)- 單位正在接近礦場進行收穫
  • ...(null, "ProbeHarvest", 0, WaitatResourceHarvest)- 單位到達資源節點並開始等待(也許另一個單位已經在這裡收割了?)。即使不需要實際等待(它等待 0 秒),也會觸發此操作。
  • ...(null, "ProbeHarvest", 0, HarvestHarvest)- 單位在資源節點並開始收割
  • ...(null, "ProbeHarvest", 1, WaittoReturnHarvest)- 單位完成收集資源。在此事件之後,通常會有一小段時間,探頭在收集到的資源的礦場閒置。
  • ...(null, "ProbeHarvest", 1, ApproachDropOffHarvest)- 單位開始接近落客大樓 (Nexus)
  • ...(null, "ProbeHarvest", 1, WaitforDropOffHarveset)- 單位到達下車大樓並開始等待。在基本的遊戲機制中,沒有等待時間,但無論如何都會觸發。您可以想像一個自定義遊戲,其中一台收割機無法返回資源,而另一台目前正在這樣做。
  • ...(null, "ProbeHarvest", 1, DropOffHarveset)- 該單位正在將收集到的資源放入玩家的銀行。

對於標記為的事件,"ProbeHarvest", 0您可以了解它直接通過哪個礦場接近EventUnitTargetTunit()。但是,對於"ProbeHarvest", 1(單元返回),該功能將給您返回下車建築單元。

您可以做的是,在收穫開始時HarvestHarvest

要創建自定義欄位,您可以查看以下答案:https ://gaming.stackexchange.com/a/192794/92581

使用該解決方案,您將擁有:

(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"

自定義欄位的 getter/ setter對應的位置StoreUnitWithUnitGetUnitWithUnit位置,使用單位而不是整數。

請注意,當探針採集的礦場耗盡時,這仍然會導致錯誤。

你需要閱讀單位(任何你可以點擊的東西)。每個單元都有一個 ID。

接下來,您將不得不使用觸發器。當收割機開始從礦物更新檔中收割時,您將創建一個觸發器,將該收割機分配給礦物更新檔。

您可以在此處了解觸發器的基礎知識。

因此,一旦探針開始收穫,您就可以觸發倒計時或任何您想到的事情。然後在那個觸發器中,您將命令它返回到它剛剛收穫的 ID,可以從它目前正在收集的資源或地圖上的 X/Y 軸中找到它(我還假設還有其他方法可以獲得它來自的ID)

引用自:https://gaming.stackexchange.com/questions/192524