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