设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1990|回复: 6
打印 上一主题 下一主题

[已经解决] 游戏中创建的物品,可否保存在数据库中?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
148 小时
注册时间
2012-7-2
帖子
157
跳转到指定楼层
1
发表于 2012-8-10 23:40:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    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")

我用上面代码,随便创建了个武器,想保存在数据库中。
但我这样做之后,退出游戏,发现物品没有,而且我创建的武器好像也不太正常。
是哪里错了吗?

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2012-7-30
帖子
147
2
发表于 2012-8-11 01:56:52 | 只看该作者
本帖最后由 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]的形式。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
148 小时
注册时间
2012-7-2
帖子
157
3
 楼主| 发表于 2012-8-11 11:50:57 | 只看该作者
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]形式可以吗,我没太明白,呵呵。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
148 小时
注册时间
2012-7-2
帖子
157
4
 楼主| 发表于 2012-8-11 22:05:15 | 只看该作者
顶一下
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2012-7-30
帖子
147
5
发表于 2012-8-12 10:12:06 | 只看该作者
limaolinghu 发表于 2012-8-11 11:50
你好,我也看到文件里面是有的。我现在有两个问题哈
1. Weapons.rvdata虽然有我创建的新物品,但是在rm编 ...

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
148 小时
注册时间
2012-7-2
帖子
157
6
 楼主| 发表于 2012-8-12 10:42:00 | 只看该作者
devilg 发表于 2012-8-12 10:12
很奇怪哦,可能是我没在编辑器里测试,直接打开游戏这样就可以出现了,我是可以出现设置的武器,然后中间 ...

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

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

请教一下,这种做法会不会有问题?
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2012-7-30
帖子
147
7
发表于 2012-8-12 11:00:19 | 只看该作者
本帖最后由 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脚本的话,我再贴一个按你的要求修改过来的好了。

评分

参与人数 1梦石 +2 收起 理由
Luciffer + 2 认真回答

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-24 00:20

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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