WarCraft 板


LINE

我又來了,這次要教學的是部隊受傷當event的觸發 目的: 1.event不會越來越肥 2.不必針對每一個技能另外寫jass 舉個例子 當曹仁放食腐群之後,被打到的人所受的傷會補到曹仁身上 如果在WE自學手冊中,這玩意叫血波,作者是hobill 當一張地圖中,有很多技能需要用到單體、多人的被傷害事件時,就需要寫很多jass 用我的方法,就不必了,只需要貼Jass,然後記住使用規則 使用方法,拿我的雷神之怒來當例子,就需要寫2個觸發 第一個觸發是當使用雷神之怒時觸發 AngerOfLighting event unit 使技能生效 condition (Ability being cast) 等於 雷神之怒 action XXX set tempCaster=(last created unit) set tempTarget=target unit of ability being cast set tempTrigger=AngerOfLightingSub<gen> set tempInt=level of 雷神之怒 for Trigger unit Custom Script:call DamagedEventTrigger() 然後是第2個 AngerOfLightingSub event condition action YYY 其中tempCaster是用來判斷誰的攻擊擊中(或技能)時觸發 tempTarget則是受傷時觸發的部隊 tempInt是用來存一些之後會用到的值(當然你可以自己增加) tempTrigger是觸發時需要執行的事,我的設計中是直接存成另一個觸發 XXX是用來創造隱藏施法單位的code(也可以直接把tempCaster設成自己) YYY是之後要跑的技能內容 也就是說,我的觸發中,tempCaster是隱藏施法單位 tempTarget是第一隻,也就是我瞄準的人 tempInt我存的是散開的雷電數量 tempTrigger為AngerOfLightingSub XXX我是創一隻單位放連鎖打第一隻(就是上面的tempCaster) YYY則是處理產生打到之後散開的雷電 所以一共需要5個變數就可以處理,還外加一個Cache,這個東西需在地圖一開始init 加這2句就可以了 Game Cache - Create a game cache from wowVer.w3v (wowVer.w3v可自己隨便換名字) set Cache = Last Created game cache 而每個技能拆成三部分 1.放技能的時候 2.受傷(這部份jass控制) 3.技能效果 Q1:範圍技怎麼辦? A1:在1.中先抓出可能會被打到的人 然後pick every unit in unitgroup去做set tempTarget跟call DamagedEventTrigger() Q2:在被呼叫的觸發中,怎麼知道抓打人跟被打的部隊? A2:變數等同於部隊受傷的事件,如Damage Source Unit等等 而被暫存的那個數字則一樣叫作tempInt 再來是Jass部分,一樣是貼上就好 使用前在地圖中提到是Damaged Jass Powered by gyd會更感激 ============================================================================ //damaged unit專用觸發:DamagedEventTrigger() function H2I takes handle h returns integer return h return 0 endfunction function H2S takes handle h returns string return I2S(H2I(h)) endfunction function I2T takes integer i returns trigger local trigger t return i return t endfunction //damaged unit專用觸發:DamagedEventTrigger() function DamagedEventTrigger_Actions takes nothing returns nothing local string TrgingTrgStr = H2S(GetTriggeringTrigger()) //如果是因為死亡而觸發,就刪除這個觸發 if ( H2I(GetDyingUnit()) != H2I(null)) then call FlushStoredMission(udg_Cache, TrgingTrgStr) call DestroyTrigger(GetTriggeringTrigger()) endif //檢驗傷害來源是否為Caster if ( H2I(GetEventDamageSource()) != GetStoredInteger( udg_Cache, TrgingTrgStr, "DETcaster" ) ) then return endif //執行該執行的事 set udg_tempInt = GetStoredInteger( udg_Cache, TrgingTrgStr, "DETnum") call TriggerExecute( I2T(GetStoredInteger( udg_Cache, TrgingTrgStr, "DETtrg" )) ) call FlushStoredMission(udg_Cache, TrgingTrgStr) call DestroyTrigger(GetTriggeringTrigger()) endfunction //========================= function DamagedEventTrigger takes nothing returns nothing local trigger tTrigger = CreateTrigger() local string TrgingTrgStr = H2S(tTrigger) call TriggerRegisterUnitEvent(tTrigger, udg_tempTarget, EVENT_UNIT_DAMAGED ) call TriggerRegisterUnitEvent(tTrigger, udg_tempTarget, EVENT_UNIT_DEATH ) call TriggerAddAction( tTrigger, function DamagedEventTrigger_Actions ) //在cache中存入 udg_tempCaster(等下要被當做caster),udg_tempTrigger(等下要被執行) call StoreInteger( udg_Cache, TrgingTrgStr , "DETcaster", H2I( udg_tempCaster) ) call StoreInteger( udg_Cache, TrgingTrgStr , "DETtrg", H2I( udg_tempTrigger ) ) call StoreInteger( udg_Cache, TrgingTrgStr , "DETnum", udg_tempInt) endfunction --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.171.58.70
1F:→ gyd:這東西一直都是寫jass的主因,而用我的jass,完全不必寫到jass 05/06 18:40
2F:→ justagame:gj....不過剛從java抽身 晚點再看好了-_- 05/06 19:07
3F:推 greelate:推 05/06 19:31
4F:推 BlueLex:推 05/06 20:56
5F:推 wix3000:大推,不過我看不懂XD 05/06 21:24
6F:推 gonzdevour:推。 05/06 21:48
7F:推 SvcChaos:推 05/06 22:39
8F:推 fni653:不懂但推 05/06 22:59
9F:推 wu2183:推 05/06 23:05
10F:推 kevin31723:問一下 這類的東西都直接複製貼上就可以了嗎? 05/06 23:51
11F:推 wix3000:不要天真了,孩子 囧 05/07 00:54
就是這麼天真
12F:推 kevin31723:囧...那還是要自己去寫啥JASS喔= = 05/07 02:01
13F:推 kevin31723:樓樓上的...這句話是啥意思 再來是Jass部分,一樣是貼上 05/07 02:22
的確是不用寫jass了 可是我在文章裡提到的概念要懂 要自己把你的技能拆成2份,就可以直接套用 如果還有不懂,可以直接告訴我你想要怎樣的技能效果 我可以直接套給你看 再強調一次,一般寫這種需要用到部隊受傷當事件的觸發 如果想考慮到event越來越肥的處理 (解釋一下,因為每次event一直加入不同部隊,然後部隊死了event還在) 就得自己寫jass處理 而使用我的方法,只需要直接貼上jass,這部分的處理就可以直接交給jass作 當然這東西的使用方法不比前面的物品合成Jass+Gui 但還是可以把工夫省到完全不必自己另外寫jass 我在發表上來之前,也測試過遞迴呼叫 譬如聖騎的復仇者之盾 在打到一個目標之後會再找下一個目標去打,彈9次 而在彈9次的動作中,我就是利用上面的東西來作的 直接在sub觸發中自己把自己設成tempTrigger,damage source為tempCaster 然後從旁邊抓出tempTarget及tempInt=tempInt-1再呼叫DamagedEventTrigger() 就直接達成盾在打到一個目標之後彈往下一個 (不過這東西我在1_08版才更新就是了) 有問題歡迎找碴
14F:推 yybear:....不懂程式也是硬要推 05/07 02:47
※ 編輯: gyd 來自: 218.171.58.70 (05/07 12:16)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP