首先打开IDA,打开诛仙libskill.so,等待完全打开,视电脑配置时间长短不同。
等下方状态栏的地址不再滚动时即是打开完毕。(详见下方软件截图)
然后在客户端configs.pck下的skillstr.txt里找到想修改的技能ID,比如灭魂狂飙1131。
在IDA中搜索skill1131,点击函数窗口中的“函数名称”,使其按名称排列,把相同技能函数排到一起。
其中几个函数名称显而易见:
Cooldowntime:技能冷却(单位:毫秒)
Coverage:目标限制
Dpcost:元神消耗
Mpcost:真气消耗
Executetime:释放时间(单位:毫秒)Praydistance:自身攻击范围(浮点值)
Radius:攻击范围??(浮点值)
其他包括技能等级、伤害计算等等都在这一堆函数里,可以自行理解查找。
双击上述函数名称,再按F5查看伪代码。
以真气消耗Mpcost为例,按公式计算:
技能一级消耗为:(5*1*1+80*1+800)=885
技能二级消耗为:(5*2*2+80*2+800)=980
与游戏中数值相符。
再以攻击范围Radius为例(此为浮点值修改,偏难),
return 120.0 即是修改后的攻击距离120米
(详见该帖:http://www.mcncc.com/forum.php?mod=viewthread&tid=469705)。
找到该函数的地址,在十六进制编辑器中修改即可,简易修改教程见下方。
再以重击为例:
①释放时间1秒
②消耗8真气
一、我们先做个简单的修改,尝试把重击218的技能冷却去掉:
①在左侧函数窗口双击“GNET::Skill218Stub::GetCooldowntime(GNET::Skill *)”,
再按F5查看其伪代码如上,在2000上右击查看其16进制为7D0,07 D0 3E8 E8 03
②在右侧窗口切换到“十六进制视图”,再在左侧函数窗口双击“GetCooldowntime”,
发现附近有D007,即为需要改的地址,记下其左侧的0108B890(应该是偏移吧?没学过程序)
③在Winhex里“导航”处搜索此偏移量,把07D0改为0000。
④保存libskill.so文件后替换回服务端,启动服务器,发现重击已经是无冷却释放。
二、我们再做个比较复杂的修改,尝试把绝圣弃智600的气血和真气伤害加成翻倍:
先来看一下原版,定义了数个变量,最后的附加攻击力值为(真气+气血)*15%*技能等级,
比如一级为15%,三级为45%,和游戏内描述相符。
①在右侧窗口切换到“IDA View”,再在左侧函数窗口双击“GNET::Skill600Stub::State2::Calculate(GNET::Skill *)”,
发现21463A0的注释(?)中是0.15,双击21463A0,
发现“.rodata:021463A0 dbl_21463A0 dq 0.15”,
其中021463A0即是偏移量,同上在Winhex里查找。
②在网上找个浮点十六进制转换工具,发现0.15的对应十六进制为3FC3333333333333,与winhex中的相符,进行修改,比如改为0.3,十六进制对应为3FD3333333333333。
- 最新
- 最热
只看作者