赞 | 189 |
VIP | 627 |
好人卡 | 188 |
积分 | 95 |
经验 | 171230 |
最后登录 | 2024-7-3 |
在线时间 | 5073 小时 |
Lv4.逐梦者 (版主)
- 梦石
- 0
- 星屑
- 9532
- 在线时间
- 5073 小时
- 注册时间
- 2013-6-21
- 帖子
- 3580
|
仿网游系统的基本思路讲解不错。其实如果去掉实现的部分,思路其实还是很清晰的。但是,我能说能真正实现一个这样的系统实际上非常麻烦吗?需要考虑的东西太多了。
附上一个芯大实现的仿网游装备系统,虽然我没打开过工程,但是我能想象里面的代码特别麻烦。
https://rpg.blue/thread-346318-1-1.html
楼主的思路和我想到的有点不太一样。看了两遍文章,楼主的方案是先确定最大的物品种类数,然后使用ID偏移的办法来复制多个物品。这样做有一个问题就是一旦这个最大的物品种类数确定之后,千万不能再变化,否则ID会乱掉。具体说来,如果确定最多有15种物品,然后作者突然想起来应该是20种物品,这样的话$data_item里面所有的ID就要重新调一遍,否则虽然程序不会冲突,但是ID为1,16,31,...表示同一种物品的特性就会消失了。这一过程虽然可以通过代码实现自动更新,但是完全可以换一种思路来实现。
另外,看楼主的实现过程,应该是将每一个$data_items都存在档里面,完全抛弃数据库内容。从这方面上来说,我觉得数据库仍然可以利用起来,不至于到完全抛弃的地步。
下面说说我实现过的思路。原始RMXP不能仿网游的原因在于它的内部数据结构,第一,它的数据库限制了同一种物品只能有一种参数,不会出现同样都是[铜剑],然后一个攻击力15,一个攻击力20的情况(如果要实现这样的效果,唯一的办法就是占用多个数据库的位置);第二,在存储物品持有数量时,它只会记录物品的ID和对应的数量,这个机制在原始的数据库结构中是没有问题的,但是放在网游系统里面就出了问题。在网游系统中,同样都是[铜剑],但是属性值可以不一样。
我的想法就是修改RMXP存储物品的方式,必须把物品/武器/防具的每一个对象区分开来。具体来说,如果主角有两把[铜剑],我们记录的时候不要只是记录数字2,而是要生成两个[铜剑]对象然后存储起来,可以使用数组或者hash,区别不是很大。
那么,数据库是干什么用的呢?我们利用数据库来存储同类物品的共性。例如,假如我只需要武器和防具强化的功能,并且武器防具的基础值都是一样的,我们就可以在数据库里面设置这些基础值,而生成的对象里面只存储它们对应的ID和强化等级,这样修改起来非常方便,而且还比较节省空间。如果我需要武器和防具的基础值是随机的,那么数据库相应的部分也可以保留。例如我希望[铜剑]的攻击力在10~20之间波动,那么数据库我就设置为15,这样随机生成装备的时候正好就以数据库作为参照进行波动。总之,我建议要将数据库利用起来。
无论是哪种办法,需要的工作量都不小,因为你需要考虑到事件的[增减物品][增减武器][条件分歧][变更装备]等等。仿网游系统和RMXP原始系统结构非常不一样,因此无论使用什么思路,大概都会对原始系统进行巨大改动。个人感觉脚本新手很难独立完成。 |
|