由于我还是一知半解,又请教了寒心大大,真心感谢寒心大大,大半夜的帮我解答问题:
TheNinth 23:37:54
寒心大大在不在?
寒心 23:38:09
在呢
TheNinth 23:38:15
请教问题…………
Marker的
寒心 23:38:42
嗯 不过我不一定能说清楚 需要有例子来说比较简单
你可以看看雷诺的狙击槍
TheNinth 23:39:37
我在这个帖子里问了一下医疗技能的marker设置原理http://bbs.islga.org/read-htm-tid-869340.html
但还是没明白…………
寒心 23:39:50
我看到这个帖子了呢
TheNinth 23:40:02
file:///C:/Users/user/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif求救啊,寒心大大
寒心 23:40:56
我具体看看
TheNinth 23:41:08
嗯,麻烦寒心大大了
寒心 23:43:32
我先问个问题 你弄数据是xml还是编辑器里面?
TheNinth 23:43:43
编辑器里面
寒心 23:43:55
怪不得呢
TheNinth 23:43:59
??
寒心 23:44:00
你能看懂xml吗?
TheNinth 23:44:10
能看懂吧,不过看着不习惯
寒心 23:44:34
如果可以的话 你把关于治疗技能的一套数据 抽出来 研究一下 你现在提出的问题应该就迎刃而解了
TheNinth 23:45:01
看XML版本的是吧
寒心 23:45:37
mark 是一个树桩的继承的东西 因此从编辑器中你很难看明白如何继承 有何父类
嗯 是的
TheNinth 23:46:27
好的,我开编辑器
<CAbilEffectTarget id="MedivacHeal">
<EditorCategories value="Race:Terran,AbilityorEffectType:Units"/>
<TargetFilters value="Biological,Visible;Self,Enemy,Structure,Missile,Uncommandable,Dead,Hidden,Invulnerable"/>
<Range value="4"/>
<Arc value="14.9963"/>
<AutoCastRange value="6"/>
<AcquireAttackers value="1"/>
<DefaultError value="RequiresHealTarget"/>
<Flags index="AllowMovement" value="1"/>
<Flags index="AutoCast" value="1"/>
<Flags index="AutoCastOn" value="1"/>
<Flags index="NoDeceleration" value="1"/>
<Flags index="ReExecutable" value="1"/>
<Flags index="Smart" value="1"/>
<TargetSorts RequestCount="1">
<SortArray value="TSAlliancePassive"/>
<SortArray value="TSLifeFraction"/>
<SortArray value="TSDistance"/>
</TargetSorts>
<SmartValidatorArray value="healSmartTargetFilters"/>
<SmartValidatorArray value="NotWarpingIn"/>
<AutoCastValidatorArray value="healCasterMinEnergy"/>
<AutoCastValidatorArray value="NotWarpingIn"/>
<UseMarkerArray index="Approach" value="0"/>
<UseMarkerArray index="Prep" value="0"/>
<CmdButtonArray index="Execute" DefaultButtonFace="Heal"/>
<AutoCastAcquireLevel value="Defensive"/>
<AutoCastFilters value="Visible;Neutral,Enemy,Missile,Stasis,Dead,Invulnerable"/>
</CAbilEffectTarget>
这个是吧
寒心 23:47:11
是的
寒心 23:48:13
然后再找他的下级Effect
TheNinth 23:48:44
我在治疗技能的XML里面没有看到Marker相关的内容……
寒心 23:49:37
你先看Effect 我看一下父类
TheNinth 23:49:48
哦,好的
寒心 23:53:57
我看编辑器看看吧 很久没看这个了
TheNinth 23:54:11
麻烦寒心大大了
寒心 23:58:08
Abil
<SMarker>
<Link value="Abil/##id##"/>
<MatchFlags index="Link" value="1"/>
<MismatchFlags index="Id" value="1"/>
</SMarker>
Effect
<CEffect default="1">
<EditorCategories value="Race:Neutral"/>
<Marker Link="Effect/##id##"/>
</CEffect>
你在技能和效果中看不到Mark的设定很正常 他们在Core的父类中设定的 要理解这两套父类的设定
TheNinth 23:59:06
嗯
寒心 23:59:42
在技能中 设定的是<MismatchFlags index="Id" value="1"/>
技能是这个治疗技能的入口 这里设定的无视"Id"
这个可以理解吧
TheNinth 0:00:02
无视Id是指?
寒心 0:00:08
等下说这个
TheNinth 0:00:10
好的
寒心 0:00:51
在效果中 设定的是<Marker Link="Effect/##id##"/>
意思是这个效果会为目标带上名为 "Effect/##id##"的 Marker
##id## 在这里等于 这个id="MedivacHeal"
TheNinth 0:01:01
嗯
寒心 0:01:26
无视Id是指?
renee的解释比较到位
你仔细理解下
id 和 Link是两种分类
ID是不同单位 Link是自己对技能或者效果的自定义命名
TheNinth 0:02:20
就是说xxx效果给A单位和B单位分别加上了Marker,这两个Marker的Id是不同 的是吧?
寒心 0:02:22
这里命名是一样的 都叫做 Effect/MedivacHeal
而不同的单位在这里 Link相同 但ID不同
TheNinth 0:02:49
嗯
寒心 0:02:52
嗯
寒心 0:04:27
Mark的结构你可以这样理解
id="A" + Link="Effect/MedivacHeal" + "Count="1?2?3?这里是层数"
TheNinth 0:05:09
层数是指?
寒心 0:05:16
<CEffectCreateHealer id="MedivacHeal">
<EditorCategories value="Race:Terran"/>
<ValidatorArray value="noMarkers"/>
<ValidatorArray value="NotWarpingIn"/>
<ValidatorArray value="HiddenCompareAB"/>
<ValidatorArray value="HiddenCompareBA"/>
<ValidatorArray value="NotSpineCrawlerUprooted"/>
<ValidatorArray value="NotSporeCrawlerUprooted"/>
<ValidatorArray value="NotVortexd"/>
<DrainVital value="Energy"/>
<DrainVitalCostFactor value="0.33"/>
<RechargeVitalRate value="3"/>
</CEffectCreateHealer>
那么在验证器中value="noMarkers"则不会考虑ID相同的Marker了
就是说 如果这个效果或者技能不断的、持续的或者多次的对同一目标造成影响 则会加多次Marker
Marker是可以用来计数的
你玩lol吗?
TheNinth 0:06:09
嗯
不玩……
寒心 0:06:31
没事 本来想举个例子 呵呵
用治疗技能理解Mark不好 你可以看看雷诺狙击枪
TheNinth 0:07:17
是不是这样:如果不勾选Mismatch Id的话,治疗效果每次发挥作用都会给被治疗单位的Maker+1?
寒心 0:08:14
如果不勾选Mismatch Id的话,因为有"noMarkers"存在,只治疗一下就停止了
因为他认为有Marker了 "noMarkers"的验证器内容是Marker层数=0
TheNinth 0:08:44
层数是指?
寒心 0:08:59
Marker的次数
TheNinth 0:08:59
Count的叠加值?
寒心 0:09:10
是的
默认是每次效果+1如果选择上了Mismatch Id的话,"noMarkers"验证器中就不会比较相同id的Mark层数了
TheNinth 0:10:57
那么此时noMarker验证器以什么作为标准进行比较呢?
寒心 0:11:07
Link
Link="Effect/MedivacHeal"
TheNinth 0:11:18
就是说同一个Id的link?
寒心 0:11:56
不同Id之间才会去比较相同link的计数
这样说吧
寒心 0:14:27
A B两个治疗飞机
A 自己加上的Marker是 id="A" + Link="Effect/MedivacHeal" + "Count="++1<每次效果加1层>" =》MarkerA
B 自己加上的Marker是 id="B" + Link="Effect/MedivacHeal" + "Count="++1<每次效果加1层>" =》MarkerB
A 去治疗的时候 虽然Conter在叠加,但因为自己看不到和自己相同ID的Marker因此无视了 MarkerA的数量
但B看A治疗的单位 虽然无视了自己的MarkerB 但看到了MarkerA的数量 所以不会重复治疗了
TheNinth 0:19:17
也就是说,对于A的noMarker来说,MarkerA无论多大他都不管,别的单位是能够看到A的marker数值的,所以noMarker 发挥作用,不能重复治疗了?
我想我明白了,多谢寒心大大了啊!
|