andon 发表于 2023-5-7 17:00:38

分享自己修改天龙网单技能脚本

本帖最后由 andon 于 2023-5-7 17:11 编辑

谨以此贴献给爱好天龙的朋友们:

最近在某宝上毛毛的店里买了个万紫千红5,玩了一下发现一些小bug,于是尝试修复,此贴记录了修复明教【怒火连斩】bug的过程
(读书人的事能说是bug吗,这叫特性,别问是故意的还是不小心,问就是故意不小心的)

本次修复的bug如下↓↓↓↓↓↓↓↓
          bug1:不进阶和进阶效果相同
          bug2:砍完18刀后,怒火效果会从第一刀重新生效(本来应该是砍完以后怒火效果就失效了,这里成了循环生效)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面记录修复的过程↓↓↓↓↓↓↓↓
      首先查看服务器上的文件,文件传输工具可以用Xftp或者WinSCP,建议打开txt用excel,建议打开lua用notepad++,工具请自行解决
      1.在【/Public/Config】中找到【SkillTemplate.txt】和【SkillData.txt】,把他们复制到电脑上

      2.在【/Server/Config】中找到【StandardImpact.txt】,把他复制到电脑上

      3.打开【SkillTemplate.txt】后找到【怒火连斩】和【怒火连斩·绝杀】找到它们在【SkillData.txt】对应的条目(另外发现这两个技能的【心法ID】是【56】,这个后面会用到)

      4.在【SkillData.txt】中,发现【怒火连斩】和【怒火连斩·绝杀】都指向了【StandardImpact.txt】中的同一个条目,打开【StandardImpact.txt】,
         找到这个条目(因为不同版本技能对应的索引不同,下面用拼音缩写代替),发现与与此技能有关的条目共有21个:
         效果a:nhzt--这是是一个状态,【怒火连斩】和【怒火连斩·绝杀】都指向了这个效果,在此状态持续期间,每次攻击都会对自己触发一次nhcf
         效果b:nhcf--这是一个数据索引,因为nhzt那个条目的属性限制每次只能触发一个效果,而怒火状态下每次攻击需要触发两个状态(加速和加伤害),
                      所以必须引入nhcf,nhcf可以触发很多个效果,此处触发了下面的nhjs(加速)和nhjb(脚本)
         效果c:nhjs--这是一个加速状态,持续时间5秒,怒火每砍一刀都会给自己一个加速5秒的状态
         效果d:nhjb--脚本,用于赋予每一刀不同的伤害加成,这个条目后面写的脚本号为808233
         效果e:nh1、nh2、nh3。。。nh17--一共有17条,都是5秒的加伤害状态,加成依次提高,供nhjb对应的脚本调用

      5.在【Public/Data】中找到【Script.dat】,打开后搜索【808233】,找到这个脚本的路径为【/Script/MyNew/Skill】,在此路径找到【NuHuoLianZhan.lua】,复制到电脑上
         (此文件目录不保证在所有版本都适用,具体位置请自行查找)

      6.打开这个lua,分析代码后获得如下信息:

         ①在函数function x808233_OnImpactFadeOut( sceneId, selfId, impactId )中的bug:
                此处代码砍完15刀后直接给自己下一个加伤害状态,没有区分是否进阶,都能砍到第18刀


                elseif LuaFnHaveImpactOfSpecificDataIndex(sceneId, selfId, 332) == 1 then    --第14刀,这一刀是在hn13状态下砍的
                  LuaFnSendSpecificImpactToUnit( sceneId, selfId, selfId, selfId, 333, 0 )      --给自己的nh14状态
                elseif LuaFnHaveImpactOfSpecificDataIndex(sceneId, selfId, 333) == 1 then    --第15刀,这一刀是在nh14状态下砍的
                  LuaFnSendSpecificImpactToUnit( sceneId, selfId, selfId, selfId, 32693, 0 )    --直接给了自己hn15状态,没有判断是否进阶

                只需要在砍第15刀时检查一下自身是否已经学习了进阶技能就好了,如果没进阶,砍完第15刀就结束了,如果进阶了,那就继续

                -------------------------------------这个函数可以判断你的角色是否学习了【怒火连斩·绝杀】--------------------------------------------------------------------
                HaveSkill( sceneId, selfId, 1697 ) == 1            --注意,1697为【怒火连斩·绝杀】在【SkillTemplate.txt】中的号码,不同版本的游戏可能有区别   

                -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

                以下为部分代码(完整脚本模板在最后):


                elseif LuaFnHaveImpactOfSpecificDataIndex(sceneId, selfId, 332) == 1 then                     --第14刀
                  LuaFnSendSpecificImpactToUnit( sceneId, selfId, selfId, selfId, 333, 0 )                         --给自己nh14状态
                elseif LuaFnHaveImpactOfSpecificDataIndex(sceneId, selfId, 333) == 1 and HaveSkill( sceneId, selfId, 1697 ) == 1 then    --【未进阶】的第15刀
                  LuaFnCancelSpecificImpact(sceneId,selfId,333)                                                         --立即取消自身当前的伤害加成状态
                  LuaFnCancelSpecificImpact(sceneId,selfId,315)                                                         --立即取消怒火状态,防止循环触发伤害加成
                elseif LuaFnHaveImpactOfSpecificDataIndex(sceneId, selfId, 333) == 1 and HaveSkill( sceneId, selfId, 1697 ) == 1 then    --【已进阶】的第15刀
                  LuaFnSendSpecificImpactToUnit( sceneId, selfId, selfId, selfId, 32693, 0 )                     --给自己hn15状态
                elseif LuaFnHaveImpactOfSpecificDataIndex(sceneId, selfId, 32693) == 1 then               --第16刀
                  LuaFnSendSpecificImpactToUnit( sceneId, selfId, selfId, selfId, 32694, 0 )                     --给自己nh16状态
                elseif LuaFnHaveImpactOfSpecificDataIndex(sceneId, selfId, 32694) == 1 then               --第17刀
                  LuaFnSendSpecificImpactToUnit( sceneId, selfId, selfId, selfId, 32695, 0 )                     --给自己nh17状态
                elseif LuaFnHaveImpactOfSpecificDataIndex(sceneId, selfId, 32695) == 1 then               --第18刀
                  LuaFnCancelSpecificImpact(sceneId,selfId,32695)                                                       --18刀砍完收工,取消nh17强化状态
                    LuaFnCancelSpecificImpact(sceneId,selfId,315)                                                         --18刀砍完收工,取消怒火状态,防止循环触发强化状态


         ②在函数function x808233_XinFaAddition( sceneId, selfId )中的bug:
                此代码想要获取心法等级,以此对技能进行进行心法加成,但是他获取的心法是错的,70号心法在此版本中是慕容的的第七本书,明教的第七本书是56

                   local nXinfaLevel = LuaFnGetXinFaLevel(sceneId, selfId, 70)
                此处应当改为(仅针对我的这个版本噢,心法ID在【SkillTemplate.txt】里找,前面提到过的)
                   local nXinfaLevel = LuaFnGetXinFaLevel(sceneId, selfId, 56)
                貌似怒火连斩不受这种函数的心法加成影响,因为我把这个函数删了一点问题都没有,但是这里确实引用错了

在下能力有限,此贴仅供参考,哪位大神有各种更好的代码,请指点我一下:
脚本的模板


本贴到此结束,另外求鬼谷和桃花岛全部技能的明文脚本,仅个人研究学习使用,我玩的这个服务端桃花岛所有技能脚本都是加密的,
我不会破解,想优化一下技能都太难了






405830400 发表于 2023-5-7 17:23:22

感谢分享
我原先玩天龙就是简单的改一下cd没有涉及过这么底层的东西。。
:

duanchuanfa 发表于 2023-5-7 18:32:27

感谢分享

java1994 发表于 2023-5-8 09:28:23

谢谢分享

落花有意我无情 发表于 2023-5-8 09:54:22

『宝湾是我家,维护靠大家』
页: [1]
查看完整版本: 分享自己修改天龙网单技能脚本

本站内容如若侵犯到您的权益,请来电来函告知,我们会尽快处理!
联系QQ:1953150286,2251387361,123784736,免责申明