爱老牛社区

 找回密码
 马上注册

QQ登录

只需一步,快速开始

《DNF 架设实战入门》书籍已发表DNF开服架设教程,登录器,GM工具,开源共享站外链接为商业广告,论坛不作任何担保,请谨慎操作点击查看广告投放说明
查看: 4983|回复: 8

[教程] 关于如何修改等级上限、镇魂下线卡角色、开启极限的祭坛

[复制链接]
  • TA的每日心情
    调皮
    2023-9-29 17:04
  • 签到天数: 1273 天

    [LV.10]以坛为家III

    发表于 2015-12-7 10:32:47 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

    您需要 登录 才可以下载或查看,没有帐号?马上注册

    x
    感谢 @两包咖啡 的分享。

    需要至少准备两个软件:
    IDA pro,用来打开和反汇编df_game_r,可以清晰地了解df_game_r的程序结构和各个子程序,按F5可以得到类c语言。这个软件只是用来看,基本不用来改。
    ultraedit,用来修改df_game_r,根据地址来修改对应的十六进制值,然后保存,相当简单。
    如果熟悉linux的话,也可以用hexedit来修改df_game_r。


    我觉得还是有必要对df_game_r多作一些说明:
    df_game_r这文件,我所会的,只能改,不能删,不能增加。
    换句话说,想添加全新的功能,比如新的武器特效,那是完全不可能的事。
    再来就是,我这边只提供修改df_game_r的思路。
    而上文也说了,事实上客户端也是需要一定的修改的,具体参见:
    客户端DNFHelper.dll85级的易源码
    我相信有兴趣的朋友一旦掌握了df_game_r的修改,对于如何修改客户端也就不是难题了。

    先说说如何修复镇魂下线卡角色吧。
    这修复方法实际上是那位大神的,我直接公布出来,希望他不要介意。
    当初我发布地图修改方法的时候,已经说明,如果镇魂卡角色了,可以在数据库把village的值从13改成11。
    那么原理是什么呢?

    很简单,pvf对各个城镇都给了一个编号,比如:
    修南,编号11。
    时间门,编号12。
    镇魂区,编号13。
    发电站,编号14。

    而在这些城镇中,只有部分城镇才有赛利亚房间,比如修南,比如发电站。
    在df_game_r里面,有个子程序,会对角色下线位置进行判断,
    其中有一条是,当下线位置的城镇编号等于12时,把编号变成11。
    因此,在不同城镇下线,就有不同结果。

    在修南下线,编号11,有赛利亚房间。
    在时间门下线,编号12,变成11,有赛利亚房间。
    在镇魂下线,编号13,没有赛利亚房间(卡角色)。
    在发电站下线,编号14,有赛利亚房间。

    正常的修改思路是,让子程序判断,当下线位置的编号等于12或者13时,把编号变成11。
    但是,我们没办法增加语句,我们只能修改。

    因此,那位大神提供的思路是,当下线位置的编号大于等于12时,把编号变成11。
    也就是说
    在修南下线,编号11,有赛利亚房间。
    在时间门下线,编号12,变成11,有赛利亚房间。
    在镇魂下线,编号13,变成11,有赛利亚房间。
    在发电站下线,编号14,变成11,有赛利亚房间。

    缺陷就是,在发电站下线,再上线时,变成在修南的赛利亚房间了。
    地址是602DAF,子程序是setCharacInfoDetail,意思就是设置角色的详细信息
    修改思路就是:把逻辑判断的等于,改成大于等于。

    再来说说如何防止升到71的时候服务端崩溃吧,也是那位大神的贡献。
    在原始df_game_r中,子程序isThereDailyTrainingQuestList的功能是给角色提供日常训练任务。
    当中有个逻辑判断,大概意思是:
    当等级 >0 或者 等级<=70时, 给角色提供对应等级的日常任务。
    服务端崩溃的原因就在于,没有70以上的日常任务,导致segment fault,后来PVF已经加了每日了。
    这边我就不卖关子了,直接上修改方法:
    地址31C128, 7F改成7E。
    地址31C129, 10改成06。


    第三个,就是如何修复极限祭坛。
    修改起来很简单,但说实话,具体原理我还没弄透彻。
    直接上修改地址吧:
    22069B,把00改成01
    220894,把00改成01


    下面是修改等级和修复sp的方法。

    预告下,以下子程序:
    _check_level_up
    _onLevelUp
    increase_status
    gain_exp_sp
    CalLevelUpItemCheck
    SetUserMaxLevel
    set_reward_sp
    GetSpAtLevelUp
    set_level_exp
    get_level_section_exp

    有兴趣的朋友可以详细看看。

    修改等级上限:
    61AF55
    61B0F3
    61B8F6
    61DD28
    61EE9C
    6224A8
    622659
    622929
    622941
    641D4B
    647ECE
    647EDA


    修复sp:
    00318c38
    00318c76
    00318cc1

    还有就是,
    00318C28、00318C6A、00318CD6,把值改成(10912+等级)的十六进制
    这边,值的修改跟sp的数值毫无关系。


    回复

    使用道具 举报

  • TA的每日心情
    得意
    2023-7-22 17:40
  • 签到天数: 274 天

    [LV.8]以坛为家I

    发表于 2015-12-7 10:50:12 | 显示全部楼层
    太详细了,这样直接改数值就可以了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    调皮
    2023-9-29 17:04
  • 签到天数: 1273 天

    [LV.10]以坛为家III

     楼主| 发表于 2015-12-7 10:52:37 | 显示全部楼层
    如初 发表于 2015-12-7 10:50
    太详细了,这样直接改数值就可以了

    也没那么简单的哦,实际操作一把会有很多问题的。客户端和服务端程序都要改。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-5-6 16:08
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2015-12-9 10:10:29 | 显示全部楼层
    这贴好,虽然我搞不懂反汇编,但照着修改还是可以
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    调皮
    2015-12-30 17:00
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2015-12-30 17:15:57 | 显示全部楼层
    必须的顶起,大神级别呀
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-10-19 11:18
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2016-1-2 12:22:32 | 显示全部楼层
    必须的顶起,大神级别呀
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    得意
    2017-3-6 05:34
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2016-4-26 03:59:36 | 显示全部楼层
    看不懂……求图解
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-9-14 16:56
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2016-5-23 21:35:41 | 显示全部楼层
    感谢分享~
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2018-5-27 00:00
  • 签到天数: 648 天

    [LV.9]以坛为家II

    发表于 2016-10-27 00:33:12 | 显示全部楼层
    感谢LZ分享啊3Q
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 马上注册

    本版积分规则

    QQ|广告投放|小黑屋|爱老牛社区 ( 鄂ICP备19018266号-1|鄂公网安备42058302000122号)

    GMT+8, 2024-11-24 19:33

    违法和不良信息举报邮箱:1829964321@qq.com

    Powered by Discuz! X3.4

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表