火炬之光2吧 关注:127,819贴子:1,936,330

【mod教程】攻击x%触发技能(cast skill on strike)的mod研究

只看楼主收藏回复

国庆闲暇时间较多,就研究了下mod。
网上的mod教程有一些,但关于攻击触发技能的mod资料较少,https://bbs.3dmgame.com/thread-4124404-1-1.html,这是3dm的一篇教程,里面提到关于游戏默认的cast skill on strike(攻击触发)技能只有10来个,也就是大家熟知的冰川尖刺、酸雨、火雨、肢解、灼热喷涌、雷电等。
作为war3时代过来的老年人,游戏里技能那么多,攻击如果只能触发这么丁点技能特效,实在不能忍。于是自己试着研究了下,有瑕疵,但也有一点点进展,就此记录下来希望能启迪其他有兴趣的玩家,能将游戏分析得更透彻,发掘更多玩法。
(本人不懂什么编程,也不算熟悉游戏细节,基本上是靠连蒙带猜加推理。mod入门并没有那么困难,属于易学难精)


IP属地:湖北1楼2023-10-01 19:56回复
    研究思路:
    (1)对于熟悉guts的玩家来说,第一步就是打开item菜单,找到阿丽拉之眼,因为这个道具带有攻击触发冰刺的技能效果。

    下图红框里(affiexs栏)的“UNIQUE_PROC_GLACIALSPIKE_5”就是冰川尖刺的技能效果了,也就是affixes。

    关于affiexs和skill也说一下个人理解,一般教程里喜欢把affiexs翻译成词缀,但我感觉affiexs其实是关于技能效果数值的设定。比如我自己编了一个skill叫“疾风步”或者叫“缩地”等等,那么这个技能的名称、持续时间、冷却时间等属性就在skill界面里设置,而技能效果其实是affiexs界面下的“UNIQUE_VELOCITY”(疾速)词缀来定义。也就是说,skill负责技能名称,描述、持续时间等抽象的设定,其效果仍然归属于affiexs管辖。


    IP属地:湖北2楼2023-10-01 19:59
    回复
      (2)打开Data editors下面的affiexs editor菜单,找到词缀“UNIQUE_PROC_GLACIALSPIKE_5”。

      上图右侧的窗口显示这个词缀的一些设定,标题栏effectname,内容是“WC_Glacial Spike”;标题栏effect,内容是cast skill on strike from target(击中目标触发技能)。这个effect栏是词缀的效果选择,具体设置在Data editors——effect editor界面下,是用来编写词缀效果的模板,这个编写难度较大,选择跳过,需要时直接套用即可。
      看回effectname栏,这一栏下的内容是“WC_Glacial Spike”,一开始推测也是一个词缀,可是我找遍effect editor和affiexs editor也没有找到对应的名称。后来无意间打开了skill.raw(用的Raw2dat和火炬之光2DAT编辑器.exe),居然在里面搜索到了这个WC_Glacial Spike。里面内容如下:


      IP属地:湖北3楼2023-10-01 20:02
      回复
        <string>File:***显示的是这个WC_Glacial Spike的路径,原来它不是词缀也不是effect,而是一个skill,所以接下来,就打开Data Editors——skills,找到它。

        右侧的大文本框就是skill的代码区了,里面涉及技能ID(唯一标识),动作特效,冷却时间,dps百分比,关联词缀等属性。


        IP属地:湖北4楼2023-10-01 20:03
        回复
          (3)技能、词缀的关联理顺了,那接下来就是自己弄一个攻击触发技能特效的词缀了。我设想的是做一个35%概率攻击触发蹂躏的affiex,放到阿丽拉之眼的affiexs栏里。
          ①自定义一个WC_ravage(蹂躏)技能:在skill Editor界面media/skills/arbiter/wandchaos路径下clone一个原本就存在的“WC_Eviscerate”(肢解),重命名为“WC_ravage”。
          切换到路径media/skills/berserker/aoeslash,这个skill就是狂战的蹂躏技能了,有15个level。将右侧代码区全部复制到刚刚自定义的WC_ravage的右侧代码区。

          删掉代码里的[level2]~[level15],保留[level1],再根据“WC_Eviscerate”(肢解)做一些调整。代码如下:
          [SKILL]
          <STRING>NAME:wc_ravage
          <TRANSLATE>DISPLAYNAME:Ravage
          <STRING>SKILL_ICON:skillicon_ravage
          <STRING>SKILL_ICON_INACTIVE:skillicon_ravage_gray
          <STRING>ACTIVATION_TYPE:normal
          <STRING>TARGET_ALIGNMENT:EVIL
          <STRING>ANIMATION:special_aoe_slash
          <FLOAT>RANDOMRANGE:0
          <FLOAT>RANGE:3
          <FLOAT>SPEED:1.4
          <INTEGER>COOLDOWNMS:50
          <FLOAT>FINDTARGETANGLE:360
          <FLOAT>TURNRATEOVERRIDE:-1
          <BOOL>HIDDEN:1
          <BOOL>CAN_BE_SILENCED:0
          <INTEGER64>UNIQUE_GUID:-3441112957268435039
          [LEVEL1]
          <FLOAT>RANDOMRANGE:0
          [EVENT_START]
          <STRING>FILE:media/skills/berserker/aoeslash/aoeslash2.layout
          <BOOL>ATTACHES:1
          <FLOAT>WEAPONDAMAGEPCT:46
          <FLOAT>SOAKSCALEPCT:46
          <BOOL>USEDPS:1
          <BOOL>BUILD_CHARGE:1
          [AFFIXES]
          <STRING>AFFIX:BERSERKER_RAVAGE15
          [/AFFIXES]
          [AFFIXES]
          <STRING>TARGET:SELF
          <STRING>AFFIX:BERSERKER_RAVAGE_BUFF
          [/AFFIXES]
          [/EVENT_START]
          [/LEVEL1]
          [/SKILL]
          这个可用于攻击触发的蹂躏skill就做好了。(较粗糙,很多参数不明白)


          IP属地:湖北5楼2023-10-01 20:05
          回复
            ②在affiexs Editor界面下,clone一个UNIQUE_PROC_GLACIALSPIKE_5,重命名为“UNIQUE_PROC_RAVAGE_35”,在右边effectname栏中填入①中自己定义的skill名称“WC_ravage”。在Min,Max栏都填入35(这个就是触发的概率35%)。

            ③在item Editor界面下右键clone一个阿丽拉之眼。点击affiexs栏下的modify,把里面的UNIQUE_PROC_GLACIALSPIKE_5删掉(remove),add②中自定义的“UNIQUE_PROC_RAVAGE_35”。


            IP属地:湖北6楼2023-10-01 20:09
            回复
              至此,一个35%概率攻击触发蹂躏的阿丽拉之眼眸就勉强弄出来了。之所以说是“勉强”是因为在实测中出现了一个问题,我始终想不出办法:狂战的蹂躏是可以触发冰刺、火雨这些skill的,而我自定义的蹂躏也可以触发这些特效,自定义的蹂躏本身也属于可触发的skill,这就导致了循环触发,我只能在代码区加了一个<INTEGER>COOLDOWNMS:50,用冷却时间来避免无限循环,但仍然会触发多次蹂躏,并非完美的攻击触发。这个缺陷就留给大佬们来解决吧。
              附:效果视频
              https://www.bilibili.com/video/BV1tm4y137ZW/?vd_source=f3352319a1d35e8810d21ea2b68bcceb
              (4)补充:这个自定义的阿丽拉之眼眸怎么在游戏中获得:
              我是学的这个教程:https://www.360docs.net/doc/e117250901.html
              自定义一个商人丢在地图上,然后在spawnclasses Editor界面里添加阿丽拉之眼眸的Name(英文的那个)。
              进游戏局域网重新生成世界,就可以找自定义商人购买了。


              IP属地:湖北7楼2023-10-01 20:10
              回复
                理论上是个技能改改都能触发,但是关键是平衡性。我很早的时候试过诸如平a就能触发混乱射击,冰波等等,瞬间游戏就没意思了。


                IP属地:美国来自Android客户端8楼2023-10-01 21:01
                收起回复
                  更新一下:②在affiexs Editor界面下,clone一个UNIQUE_PROC_GLACIALSPIKE_5,重命名为“UNIQUE_PROC_RAVAGE_35”,在右边effectname栏中填入①中自己定义的skill名称“WC_ravage”。在Min,Max栏都填入35(这个就是触发的概率35%)。在右边的effect栏中将“cast skill on strike from target”改成"cast skill",就不会循环触发蹂躏了,只会刮3次。猜测原因可能是:cast skill on strike from target是当技能特效打到怪物身上,也会触发蹂躏,而蹂躏本身也是技能特效,所以一直触发;而cast skill只能靠平a触发,所以即使蹂躏特效打到怪物也不会继续触发蹂躏。
                  效果视频:https://www.bilibili.com/video/BV1D84y127ir/?vd_source=f3352319a1d35e8810d21ea2b68bcceb
                  斩瓜切菜去咯


                  IP属地:湖北9楼2023-10-01 22:32
                  回复


                    IP属地:湖北10楼2023-10-01 22:38
                    回复
                      游戏内本身就存在一个可以循环触发的——提亚马特之眼


                      IP属地:重庆来自Android客户端11楼2023-10-02 14:10
                      回复
                        楼主大大请问你知道修改哪些数据可以增加怪物倍数吗?


                        IP属地:广东12楼2023-10-04 10:38
                        收起回复
                          书接上回,这次来记录一下法术书召唤物替换的修改过程。毕竟游戏中一些孔武有力的怪物和boss让人倍感压力,如能收归己用,那压力感也会变为安全感。
                          还是打开Data Editor栏下的item菜单:

                          接着找到spell(咒语)那一项,里面是各种法术书的设置项:


                          IP属地:湖北13楼2023-10-04 21:06
                          回复
                            这次研究的是召唤物,那就找到summon skeletonVI(6级的召唤骷髅书)为突破口。

                            上回章节里已经提到过,这个红框里effectname栏的内容填写的是skill名称,所以接下来就在Skill Editor界面下去找到这个summon skeleton6的技能。方法还是通过skill.raw转换成txt文件,在里面搜索“summon skeleton”,结果如下:

                            根据这个红框里的路径,在skill界面里找到技能summon skeleton6。


                            IP属地:湖北14楼2023-10-04 21:08
                            回复

                              注意:
                              红框里的<string>就是本次修改的关键,猜测这句话引用的是召唤物的模型及其某些属性的文件,也就是layout文件。
                              先来讲一个直接替换的办法:就是找到游戏中其他人物的召唤技能,将其layout文件路径复制过去,例如:找到漂泊者的召唤暴君(summonbrute)的技能,将红框的里的路径代码整段复制到summon skeleton6技能的对应位置,再保存mod,进游戏就可以发现召唤骷髅的法术书召出来的是暴君了。

                              不过,替换办法能选择的单位有限(因为默认的召唤技能就那几个),游戏里的怪物、boss都没法成为我们的战友。想要更多基友,还得自己定义一个。接下来就是介绍怎么自己创建一个关于召唤物的layout文件了。


                              IP属地:湖北15楼2023-10-04 21:11
                              回复