精華區beta WarCraft 關於我們 聯絡資訊
我原本是想用GUI的設定變數Set來指定觸發陣列的值。 例如:Set TempTriggerA[Loop A] = TempTrigger<預置> 不過後來發現,只要call DestroyTrigger() 陣列中任何一個,整個陣列中的都會受到影響 也就是說,用GUI來設定的話,只是指向,而不是新建。 後來經過larchrono的提示(#17qMownz),我終於找到方法了。 使用方法:(都要用到自訂腳本) 1.先用CreateTrigger()來建立觸發變數。 set udg_TempTriggerA[GetForLoopIndexA()] = CreateTrigger( ) 在這邊黃字是觸發陣列的變數名稱,視你的設定而更改。 綠色字是陣列的索引,這邊我是用迴圈來跑的,用的是迴圈變數A 2.再用TriggerAddAction函數來增加觸發的動作內容。以下為一行,自己連一起吧。 call TriggerAddAction (udg_TempTriggerA[GetForLoopIndexA()], function Trig_TempTrigger_Actions ) 這個黃字跟綠色就不用多再解釋了吧?XD 紅色的字為你要增加動作內容的觸發名稱。 經過以上兩步,就完成了觸發陣列的建立了。 (注意,以上兩步不能在地圖初始化事件那個觸發使用, 不然編譯時會出現找不到函數的問題。也就是說不能在讀圖那段期間使用) 至於抓取觸發陣列的索引編號,則使用迴圈For和條件IF來作比對。 比對 若(本觸發) = TempTriggerA[A] 則 TriggerIndex = A 那個TriggerIndex就是索引值了。 我簡單的存了個地圖,有興趣的可以抓下來看看。 http://www.badongo.com/file/8190731 輸入add #則會將事件-經過時間3秒加到TempTriggerA[#] 輸入run #則會執行TempTriggerA[#] 好了,講解就到這邊,作個拋磚引玉,至於如何運用,存乎一心, 就看各人的創造力了。  以上。 =====下面是我運用的方法,已經知道怎麼用的可以跳過了XD===== 我通常是拿來增加部隊傷害事件,或是用在必須每個玩家都寫一次的觸發上。 部隊傷害事件的話,會先設一個觸發陣列TempTrigger[]、布林陣列TrigerEmpty[] 整數MaxNumber、Index Index = 0 用迴圈A跑1到MaxNumber 若TriggerEmpty[A]為真   則set Index = A 若Index = 0 //Index為零代表整個陣列都不是空的 則Set MaxNumber = MaxNumber +1 Set Index = MaxNumber 然後再用index當陣列索引值來建立陣列與動作內容,以避免不必要的浪費 並在動作內容中加上當該部隊死亡時將該觸發Destroy掉,並將TriggerEmpty設為真。 -- 至於玩家的話,就用抓取索引值來當作玩家編號囉XD... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.127.92.170 編輯,補充一點內容 ※ 編輯: vinxu 來自: 59.127.92.170 (03/09 04:49)
vinxu:順便想問一下,Destroy掉後的觸發陣列會佔空間嗎? 03/09 04:50
vinxu:如果不佔的話,那就不用像我用的那麼麻煩,就max值一直加就 03/09 04:51
vinxu:好了XD.... 03/09 04:52
vinxu:我這樣解說應該很容易看懂吧?要用的話只要照著copy就好了 03/09 04:53
vinxu:只要修改紅、黃跟綠色的部份就好了 03/09 04:54
vinxu:只外,如何抓取計時器的索引值?只要設定觸發陣列,然後用 03/09 04:55
vinxu:加入事件的方式,加到相對應的觸發陣列中,並抓取觸發陣列 03/09 04:56
vinxu:的索引值就好了 03/09 04:57
vinxu:先到這吧,睏了,來去睡,大家早安 囧 03/09 04:57
larchrono:推XD 03/09 12:43
※ 編輯: vinxu 來自: 59.127.92.170 (07/03 16:50)