铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 3009|回复: 6

[pascal复刻] 求助:要把武功里加的品德变成加资质要怎么改源码

[复制链接]
发表于 2012-5-15 18:35 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
比如有没啥可以用Ollydbg直接利用源码里的空余地址改的办法呀
求高手指导一下吧,
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-5-15 20:17 | 显示全部楼层
等一下

武功没有加品德的,是不是武功秘籍啊?

武功是武功,而秘籍属于物品类

请说清楚你的要求,谢谢
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-5-16 11:22 | 显示全部楼层
回复 winson7891 的帖子

就是您说的那个意思呀,就是物品修炼可以增加资质的意思
其实读书加资质是合理的呀
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-5-16 11:45 | 显示全部楼层
物品里。。。是没有加资质的

之前被坑过一次了 - -

不过把加品德改成加资质,这个倒是可以。

pascal 版本。。不熟悉
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2012-5-16 12:22 | 显示全部楼层
如果是要做成通用效果的话,就改源码吧~

在 kys_main.pas 中找到 procedure EatOneItem

在没有修改过源码的程序(就是weyl发布那个版本),是在第3596行。

在第3624找到:
  1.   word[20] := ' 增加品德指數'
复制代码

改成:
  1.   word[20] := ' 增加資質指數'
复制代码
以上是改变看到的。

然后是改变实际的效果:
往下面几行看,
第3648行找到:
  1. rolelist[20] := 56;
复制代码
这玩意啥意思呢?
注意那个20,就是指增加道德效果这块,其实是跟某个编号为56的东西挂钩的。
那这个56是啥玩意呢?
56是指人物属性的内存里面,相等于一个Smallint的数组里面,索引为56的那个位置的数值
在人物属性里面,56这个位置代表道德

那思路就很简单了,把代表道德的改成代表资质的,那就行了?

确实如此,那资质是几号呢?
可以看回第56行,有人物属性的数据结构:
  1.   TRole = record
  2.     case TCallType of
  3.       Element:
  4.       (ListNum, HeadNum, IncLife, UnUse: Smallint;
  5.         Name, Nick: array[0..9] of char;
  6.         Sexual, Level: Smallint;
  7.         Exp: Uint16;
  8.         CurrentHP, MaxHP, Hurt, Poision, PhyPower: Smallint;
  9.         ExpForItem: Uint16;
  10.         Equip: array[0..1] of Smallint;
  11.         AmiFrameNum, AmiDelay, SoundDealy: array[0..4] of smallint;
  12.         MPType, CurrentMP, MaxMP: Smallint;
  13.         Attack, Speed, Defence, Medcine, UsePoi, MedPoi, DefPoi, Fist, Sword, Knife, Unusual, HidWeapon: Smallint;
  14.         Knowledge, Ethics, AttPoi, AttTwice, Repute, Aptitude, PracticeBook: Smallint;
  15.         ExpForBook: Uint16;
  16.         Magic, MagLevel: array[0..9] of smallint;
  17.         TakingItem, TakingItemAmount: array[0..3] of smallint);
  18.       Address:
  19.       (Data: array[0..90] of Smallint);
  20.   end;
复制代码
这里的Ethics就是道德了
我们可以看出,资质是60,所以回到第3648行,把56改成60,然后编译就行了。
其他的,武常是55,声望是59等到,自己看吧~你要改的话,改法是大同小异的。

说到编译,快捷键是F9。记得任何改动,都需要编译后才会生效,跟Lua不一样

改完了这里,还有其他地方需要修改吗?

如果仅仅是达到这个效果,那已经改好了。

但在默认情况下,资质什么的,希望最大值是100吧,多于100则不会增加了。或者是200?由你自己决定。

那最大值怎么扩充呢?

请看第226行,这里有一个数组:
  1.   MaxProList: array[43..58] of integer = (100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 1);
  2.   //最大攻击值~最大左右互博值
复制代码
记得刚才我们说的,资质是第60号对吧?但这里的最大值设置只到58,也就是说,如果加资质,那是无上限的。
或者你希望无上限就不需要改了吧?错!
因为后面在增加资质的时候,会从这个数组判断最大值,所以如果没有60这个索引,那就会内存溢出,造成死机。

所以无论你是否希望增加资质有上限,这个数组必须修改,起码加到60:
  1.   MaxProList: array[43..60] of integer = (100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 1, 100, 100);
  2.   
复制代码
这里加了2项,把声望和资质的上限改成100了,声望可能很高?那可以把倒数第二个表示声望的改成你想要的数值

事实上你自己对照人物属性结构,改这个数组,可以改变很对对应数值的最大值

最后,这个改法仅仅是把加道德变成了加资质,所以道德就没得加了,请注意。

希望帮得到你,谢谢~








【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2012-5-16 23:41 | 显示全部楼层
回复 winson7891 的帖子

谢谢大大的解答,
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2023-8-3 10:55 | 显示全部楼层
讲解很详细了,学习一下
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-5-4 00:04

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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