• RSS订阅 保存到桌面加入收藏设为首页
单机精品资源

添加自定义技能

时间:2020-02-25 19:55:42   作者:疯神   来源:bbs.fengshenmxd.com   阅读:184   评论:0
内容摘要:到目前为止,大多数人知道添加(而不是替换皮肤)自定义技能的唯一方法是很久以前通过添加像Mercedes技能那样的技能复合属性发布的。但是,此方法仅适用于GMS117之后的版本,并且激活自定义技能并不那么顺畅,因为您需要首先启动触发技能。如果您尝试添加新技能,它们将显示在技能UI中...
到目前为止,大多数人知道添加(而不是替换皮肤)自定义技能的唯一方法是很久以前通过添加像Mercedes技能那样的技能复合属性发布的。

但是,此方法仅适用于GMS 117之后的版本,并且激活自定义技能并不那么顺畅,因为您需要首先启动触发技能。

如果您尝试添加新技能,它们将显示在技能UI中,但是当您单击或按下它们时没有任何响应,因为NEXON在UserLocal :: DoActiveSkill中指定了每个技能的功能。没有放在代码中的技能将没有任何作用。例如,来自TWMS 147的UserLocal :: DoActiveSkill的代码段如下:

码:
  如果(v10 <= 2111004) { 如果(v10 == 2111004) 转到LABEL_807; 如果(v10 <= 2101002) { 如果(v10!= 2101002) { 如果(v10 == 1321012) 转到LABEL_658; .... }
汇编代码:
码:
地址1:cmp edi,142834h // 1321012 地址2:jz ActiveAttackSkillAddr 地址3:cmp edi,1E8869h 地址4:jle ....
上面的代码将技能1321012指定为攻击技能,并将其重定向到相应的DoActiveSkill函数,该函数使用操作码CLOSE_RANGE_ATTACK(OdinMS)发送数据包。

现在,如果我们想在游戏中加入新的攻击技能1321013,我们需要将代码修改为(指导性)如下:
码:
 如果(v10 <= 2111004) { 如果(v10 == 2111004) 转到LABEL_807; 如果(v10 <= 2101002) { 如果(v10!= 2101002) { if(v10 == 1321012 || v10 == 1321013)// <<我们需要在此处修改代码 转到LABEL_658; .... }
我将通过注入dll来修补客户端来显示一个简单的指导性代码,您当然可以在client和jmp的可用部分中修补以下代码以更正地址。但是我实际上不建议您直接在客户端中修补代码。

码:
 int activeAttackSkillAddr = ActiveAttackSkillAddr; int jumpBack1 =地址3; 无效__declspec(裸)DispatchActiveSkill() { __asm { cmp edi,0x142834 // 1321012  jz JumpToAttackSkillAddr cmp edi,0x142835 // 1321013 jz JumpToAttackSkillAddr jmp [jumpBack1] //如果技能ID与上述技能ID不匹配,请跳回到下一个检查。  JumpToAttackSkillAddr:  jmp [activeAttackSkillAddr] } }  //需要在客户端修改指令  地址1:jmp DispatchActiveSkill //您可以在此处进行修补以跳转到我们自己的调度功能。 地址2: ???? //由于jmp指令将用cmp填充,但NVM将在此处破坏代码。 地址3:cmp edi,1E8869h //继续检查其他技能 地址4:jle ....
结果是:


问题在于引入零作业之前的版本(我想尚未测试)具有混乱的技能指定路径。修补每项工作可能会有些痛苦。但是,较新的版本使用switch-case(跳转表),打补丁每个作业会更容易。

标签:添加  技能  定义  自定  自定义  
相关评论

欢迎加入全国最大的冒险岛单机交流社区,在这里你可以找到丰富的冒险单机资源,同时更有众多群友和你一起交流分享心得

《冒险岛Online》是一款超人气家庭休闲网游。整个游戏画面以2D平面展开,采用了与其他Q版2D游戏不同的横向卷轴的移动方式。
游戏场景高低落差的设计,整个画面分前景、静止背景、活动景物3个层次的设计,既别出心裁又给人一种很真实的感受。

声明:本站文章均来此网络,如有侵权请来信告知!我们将在24小时内删除!本站为冒险岛交流区,请支持冒险岛官方,官方网站:mxd.sdo.com

Copyright © 2008 - 2020 ZeroMS. All Rights Reserved

  黔ICP备20002503号-1