|
首先下载一个Lazarus 1.4 Test的软件,安装很简单,点击安装等完成就好
再去要份源码
打开软件,先要关闭软件默认的工程,
从project中找到close project
俺一开始选了文件中的关闭所有文件结果不行
在open project,会提示打开lpi类型的文件
应该源代码中就一个这种文件
然后到kys_BATTLE文档中找伤害公式
文档中都有注释,有玩过这游戏的,像俺这样没有编程基础的
能猜出一些简单的意思
为了能稳妥的修改个伤害代码
还是先把简单的代码先看懂
现在发现代码没那么容易搞明白呀
本想看懂个五六行,反正网络时代,看不懂的关键字网络上找呗
结果发现2个多小时研究,还是有大大JEAN VALJEAN好心解答的情况下
研究两行代码都没完满完成任务,:'(:'(:'(
两句代码如下
//防具增加攻击
if Rrole[rnum1].Equip[1] >= 0 then
att := att + Ritem[Rrole[rnum1].Equip[1]].AddAttack;
有中文注释猜意思不难,
如果防具大于等于0,就是防具不是-1吧,以前修改人物防具的时候,没有防具就是-1表示嘛,>=0就说明你有防具
攻击att赋值为,攻击+防具的攻击数值
想像原版一样刺猬甲加的攻击爆表,就把Ritem[Rrole[rnum1].Equip[1]].AddAttack加个乘以3吧
这是俺自己的想法
想试试行不行,要么就直接改了调试,
稳妥的话还是先看懂这段代码
想看懂这段话,就发现是坑呀
首先找Rrole[rnum1].Equip[1]
把鼠标移到rrole中间停住,会显示var rrole:array,还会提示这个量在kys_type的284行
在文档kys_type284行, Rrole: array[0..2031] of TRole;
点击trole会提示在52行有定义
TRole = record
说明trole是一个结构体,
rrole是从这个结构体中的一个数列0到2031中取值
Rrole: array[0..2031] of TRole;
rnum1在kys_battle文档的2170行有定义
rnum1 := Brole[bnum1].rnum;
//给rnum1一个赋值
Brole: array[0..99] of TBattleRole;
//战场人物属性
//0-人物序号, 1-敌我, 2, 3-坐标, 4-面对方向, 5-是否仍在战场, 6-可移动步数, 7-是否行动完毕,
//8-贴图(未使用), 9-头上显示数字, 10, 11, 12-未使用, 13-已获得经验, 14-是否自动战斗
Equip: array[0..1] of smallint;
说明equip这是值是从数列0到1之间选一个数据类型
快折腾疯了呀,
折腾的结果是
如果 战场人物属性的防具那个数值>=0,
那么 把攻击力赋值为 攻击+战场人物装备的防具的攻击力数值
好像没啥收获,不过我想下次想看懂具体的公式有今天走过的经验会快的多了
目标把水浒的伤害公式讲清楚,不过觉得好难呀,比原版的伤害代码长了那么多,今天这么简单的一个都研究了这么久
不过很多地方可以考猜测,又不是要都看懂代码,应该还是可以搞定的
花些撸管的时间,研究研究代码,调剂一下自己的生活也是一种乐趣呀
|
|