作者vinxu (咕嚕咕嚕魔法陣)
看板WarCraft
標題[WE ]觸發陣列索引值抓取的方法
時間Sun Mar 9 04:40:44 2008
我原本是想用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)