找回密码
 立即注册
查看: 1679|回复: 0

如何制作“经验值药水”和相关超级药水

[复制链接]
发表于 2013-6-7 17:39:08 | 显示全部楼层 |阅读模式
      所需要的文件:Misc.txt和Itemstatcost.txt。
      先来谈谈我对于Itemstatcost.txt的一些初步认识:
      Itemstatcost.txt是游戏用于定义角色状态的文件,它比properties.txt更为基础,正如我们所知道的,properties.txt是用于定义魔法前后缀的,而它定义魔法属性的时候是用Itemstatcost.txt里面定义的参量来定义的!!
      Itemstatcost.txt里面CSvbits一列很好的说明了诸如力量、敏捷、生命值、魔法值、等级、经验值的最大值限制,暗黑用10个位(bits)记录力量、敏捷、体力等状态,用21个bit记录生命值、法力值等,用8位记录技能点数,用7位记录等级数,用32位记录经验值,只要稍懂一点计算机知识,不难解释为什么力量值不能超过1023,2的10次方为1024,从零开始,最大值为1023,最大等级为2的7次方减一等于127,从这里我们也可以知道最大经验值为2的32次方减一为4294967295,99级的角色经验值为35亿多,快接近这个数了。不过应该注意的是这里是暗黑存档时记录的最大值,在游戏里是可以超过这个数的,但是一旦退出游戏重新进游戏,你会发现数值被裁减到上述上限值。我试过更改存储状态的字节数,多数情况会出现进不了游戏问题,就算能进游戏也还会有问题。
      请大家注意一点,修改Itemstatcost.txt不但可以实现直接加经验值,象等级、生命值等等这些参数都可以加,而且加得特别变态!!如果你发现自己喝了一瓶药水后突然变成了4xx级,请不要觉得奇怪(当然退出游戏再进还是127级),不过要实现比较合理,比较稳定,比较全面的属性加成还有很长的路要走,希望大家一起研究,我折腾了这么久也没能实现把经验值加得合理一点,不过现在基本稳定在喝一瓶药水加满一级的经验值,但是当角色等级达到九十多级以后再喝还是会出现错误。
     就说到这吧,希望大家一起探讨。继续研究中…
     来说一下加各种状态的药水的做法。
     以经验值药水为例:
     打开itemstatcost.txt,找到ID为13的一项,也就是experience一行,然后在后面找到对应maxstat一列的那栏,里面应该是空的,现在我们填上nextexp(也是itemstatcost.txt里面的一个参数,就是人物状态的下一级所需经验值),到这里itemstatcost.txt的修改就完成了,(太简单了吧!是不是有种被骗的感觉,哈哈!不过你要是知道我发现需要而且只需要更改这一栏,并且用nextexp这个参数比较好用了n多的时间的话,恐怕你就…)
      接着就是定义一种药水,让它带上experience这个参数就行了,做药水的方法可以参考“教程”中的“如何制作新的药水类物品”。如果想偷懒有个简单的做药水的方法:复制misc.txt里面的第9列(或者其他定义药水的列)增加一列并粘贴修改code一列的名字,我用的是expp,(修改namestr一列配合tbl文件修改可让游戏显示”经验药水“的名字),在stat1(或stat2或stat3)里面填上experience,在对应的calc里面加上数值30(表示角色经验值增加下一等级所需经验值的30%,但最多补满当前经验栏,30这个数值不是随便定的,据我测试,数值不同的时候喝经验药水产生错误的人物最高等级不同,为100的时候人物为65级以后喝药水会先减经验,连续喝几瓶会一下子升到99级,为30的时候可以保证角色在95级以前喝都会正常起作用,95级以后需要改30为250可实现正常升级到99级,所以我们可能需要定义好几种经验值药水以实现他正常起作用)。然后修改misc.txt(将PermStoreItem列改为“1”)使npc出售该药水或用box合出随便你,进游戏喝瓶经验药水看看。
      修改出”经验药水“的名字想必不少人都会,不会的自己再努力努力。
      还有一点,如果只是测试,不想麻烦,可以直接在任意一种药水后面添加参数即可,完了进入游戏该药水就具备了该功能。
其他药水,像加str,dex,statpts(属性剩余点数),newskills(剩余技能点数),hp,mana,gold,resist之类状态的也相似,唯一不同也是最难的在于maxstat这一栏里应该添加什么参数,有些参数添加进去是会出现让你意想不到的结果的。像经验值会变为0拉,生命值变为一拉之类的怪事都会有,慢慢琢磨吧!基本上现在我newskills的maxstat是填level(就是角色当前等级),然后药水里面填stat1:newskills、calc1:10、这样就增加角色当前等级10%的技能点数。例如96级的角色喝了就增加9点的技能点数,增加statpts(剩余属性点数)的药水我也是用的level来控制。还有一点,增加等级药水是没有意义的,因为经验值以及其他人物状态不会跟着变。
      不知道大家注意到没有,这种修改的关键在于maxstat后面的参数,由于目前没法引进常数,所以无法实现加固定的状态点,这一点是非常致命的,也是我改出来的经验药水到一定等级后用会出错(先减经验值,然后一下子加n多,足够你升几十级)的根本原因!!!所以希望大家一起寻找解决的办法。
      另外提醒大家经验药水只能加经验,不能实现升级,也就是说你把当前的经验栏
     补满后需要杀至少一个怪物实现升级。然后再加经验,再杀怪升级…
      修改这种药水,我觉得将它用于在每关的大怪处掉出作为奖励是不错的用途,又或者另外增加超级大怪让它掉出。想想吧!!!可以增加技能点数啊!!!升级也不需要了!!!
llssss4308补充
  结合monstats文件中的TreasureClass字段和TreasureClassEx文件中定义的新掉落属性,增加暗金文件中的物品名称,添加新的药水让药水掉落等级为110lvl,指定怪物掉落就可以了。等我打出来详细的步骤。
  有道理...想起来喝过解冻药水后会有一段时间抗冻是75,应该就是利用类似的方法实现的。
cs5339补充:
  在misc.txt文件中,把spelldescstr和spelldesccalc去掉,那样就不会出现"回复药水"的字样了,最好是在spelldesc.txt文件中自己建立一个定义,然后在tbl文件中建立一个中文名,那样就更好看了.
  我做的时候把flippyfile和invfile全部改成技能书的造型了,把声音和overplay也改了.
罗日明补充:
  把我修改药水的方法跟大家一起分享,大家如果觉得用药水后增加的值不够的话,在misc.txt中直接修改数值就可以了,很简单的,看一下大家就懂了,另外由于我修改了部分存储字节,希望大家用之前先备份自己的角色和你自己的txt文件和tbl文件,切记!
  我个人并不主张把结果交给大家,而是告诉大家方法,这样才能实现自己的创新
   这次是为了帮助大家理解itemstatcost.txt才这样做的希望大家弄懂之后能找到更好的办法!我现在只能整到这份上了!
有兴趣的可以做出加别的属性的药水,方法是一样的,药水太多了也不好,毕竟很多属性可以用装备加的,我做药水是为了给自己设计的游戏情节铺路,所以加一些主要的东西就够了!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|网站地图|联系我们|关于我们|隐私条款|免责声明|小黑屋|D2home暗黑1.09战网 ( 鲁ICP备2020047197号 )

GMT+8, 2024-11-28 14:16 , Processed in 0.228766 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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