探測返回:從哪個礦區採集資源?
如果我有一個帶著礦物返回基地的探測器(下達命令“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對應的位置
StoreUnitWithUnit
和GetUnitWithUnit
位置,使用單位而不是整數。請注意,當探針採集的礦場耗盡時,這仍然會導致錯誤。
你需要閱讀單位(任何你可以點擊的東西)。每個單元都有一個 ID。
接下來,您將不得不使用觸發器。當收割機開始從礦物更新檔中收割時,您將創建一個觸發器,將該收割機分配給礦物更新檔。
您可以在此處了解觸發器的基礎知識。
因此,一旦探針開始收穫,您就可以觸發倒計時或任何您想到的事情。然後在那個觸發器中,您將命令它返回到它剛剛收穫的 ID,可以從它目前正在收集的資源或地圖上的 X/Y 軸中找到它(我還假設還有其他方法可以獲得它來自的ID)