Project1

标题: 游戏中创建的物品,可否保存在数据库中? [打印本页]

作者: limaolinghu    时间: 2012-8-10 23:40
标题: 游戏中创建的物品,可否保存在数据库中?
    random_weapon = RPG::Weapon.new
    random_weapon.price = 1000
    random_weapon.id = 100
    random_weapon.icon_index = 40
    random_weapon.name = "random"
    random_weapon.note = "1"
    $data_weapons[99] = random_weapon.clone
    save_data($data_weapons, "Data/Weapons.rvdata")

我用上面代码,随便创建了个武器,想保存在数据库中。
但我这样做之后,退出游戏,发现物品没有,而且我创建的武器好像也不太正常。
是哪里错了吗?dsu_plus_rewardpost_czw
作者: devilg    时间: 2012-8-11 01:56
本帖最后由 devilg 于 2012-8-11 01:58 编辑

我这里是测试通过啦。。。这是weapons.rvdata的最后一段,你可以看到random在里面。
湁鐪熸鐨勫媷鑰呮墠鑳芥嬁鍒扮殑浼犺涔嬪墤銆?        F;
"鍦e笣鍓? i ; i;
F;i椠;i ;i ;id;F;" ;i};i#;[i;[ 0000o; ;F;i ;" ;        F;
" random; i ; i-;
F;i?;i ;id;i ;F;i ;"1;[ ;[ ;

可能是因为物品id设置问题吧, $data_weapons[99]的物品id要设99,不是想象中的+1=100,以为内$data_weapons[0]是nil。因为这个id导致添加物品时返回id实际为100而物品nil了吧。


顺便说一下随机物品这样会导致物品库越来越大的,最好把@item的物品key做成[id,bonus]的形式。
作者: limaolinghu    时间: 2012-8-11 11:50
devilg 发表于 2012-8-11 01:56
我这里是测试通过啦。。。这是weapons.rvdata的最后一段,你可以看到random在里面。
湁鐪熸鐨勫媷鑰呮墠 ...

你好,我也看到文件里面是有的。我现在有两个问题哈
1. Weapons.rvdata虽然有我创建的新物品,但是在rm编辑器的数据里面却看不到,我试过重启,也没用
2. 我用这种写法:
    random_weapon = $data_weapons[1]
    random_weapon.price = 1000
    random_weapon.id = 1
    random_weapon.atk = 30
    random_weapon.icon_index = 40
    random_weapon.name = "random"
    random_weapon.note = "4"
    save_data($data_weapons, "Data/Weapons.rvdata")
这样之后,重启rm,就能看到改变。
请问下,难道是random_weapon = RPG::Weapon.new, $data_weapons[1] = random_weapon
这里的问题?

另外,能简单介绍下你说的那个key做成[id, bonus]形式可以吗,我没太明白,呵呵。
作者: limaolinghu    时间: 2012-8-11 22:05
顶一下
作者: devilg    时间: 2012-8-12 10:12
limaolinghu 发表于 2012-8-11 11:50
你好,我也看到文件里面是有的。我现在有两个问题哈
1. Weapons.rvdata虽然有我创建的新物品,但是在rm编 ...

很奇怪哦,可能是我没在编辑器里测试,直接打开游戏这样就可以出现了,我是可以出现设置的武器,然后中间的全是空白,毕竟直接在编辑器里会出现一些自动纠错的东西。
我给某人在这个区里写过一个抚摸和物品等级提升的脚本,bug可能都清理光了,用的就是改hash表key的方法。
作者: limaolinghu    时间: 2012-8-12 10:42
devilg 发表于 2012-8-12 10:12
很奇怪哦,可能是我没在编辑器里测试,直接打开游戏这样就可以出现了,我是可以出现设置的武器,然后中间 ...

恩,是很奇怪,new新的就存不住,难道是因为我weapon[100]本身有个武器的缘故?不能覆盖?

另外,我想实现随机物品,我的想法可能比较笨。
假设有100个武器,游戏初始时,全部设置为空
然后用hash表保存一个数组,记录某一个武器是否正在被队伍使用
每当队伍获得一个随机物品或者鉴定了一个武器,就查找hash表,返回一个可用的武器位置
每当队伍失去或者卖掉一个武器就在hash表中把对应的武器位置标记为可用
当然这么做需要对队伍的最大武器数做限制,不能超过100个。

请教一下,这种做法会不会有问题?
作者: devilg    时间: 2012-8-12 11:00
本帖最后由 devilg 于 2012-8-12 11:22 编辑
limaolinghu 发表于 2012-8-12 10:42
恩,是很奇怪,new新的就存不住,难道是因为我weapon[100]本身有个武器的缘故?不能覆盖?

另外,我想实 ...


好吧我也不知道我是怎么成功的。
对于随机物品,完全可以不用创建100个物品,而是1个就可以:
在那个enchant脚本我更新了key的形式到[id,[enchant,forge]]的形式,其实也可以变成[id,[list of attributes]]的样子。
在@items的返回时的$gata_items,我换成了$data_items[i[0]].fix(i[1])这样更新返回的物品。然后在fix里重新定义更新语句就行了。
如果你还是找不到我的那个enchant脚本的话,我再贴一个按你的要求修改过来的好了。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1