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

Project1

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

[原创发布] 运行时设定数据库(永久保存)(10-31)

 关闭 [复制链接]

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
22457
在线时间
2335 小时
注册时间
2005-10-15
帖子
1160

开拓者

跳转到指定楼层
1
发表于 2005-10-31 08:58:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
考虑到66的建议,我就把压轴的部分发这了。毕竟,如果运行时的设定不能保存的话,作用是比较有限的……

数据库的读取是用load_data从系统文件夹中读取,可能一般会想到用其反方法save_data写回去,但是如果你的修改突破了数据库999上限,或者一些值突破了系统界限,这些写回来的数据,RMXP是不认的,换句话说,这个数据库就不能再RMXP里进行编辑了。。。会提示加载不成功之类的话,严重的话导致整个工程打不开。
而且,这样的保存是釜底抽薪式的保存,如果你的修改是在剧情中进行的那种修改,下次用new game进入游戏,原来的数据也被改了。

一般来说,数据库的运行时修改随存档文件保存比较好,这样剧情中的更改不会影响新建游戏。
以下是相关的保存用代码:
class Scene_Save
  alias sailcat_write_save_data write_save_data
  def write_save_data(file)
    sailcat_write_save_data(file)
    # 写入数据库
    Marshal.dump($data_actors, file)
    Marshal.dump($data_classes, file)
    Marshal.dump($data_skills, file)
    Marshal.dump($data_items, file)
    Marshal.dump($data_weapons, file)
    Marshal.dump($data_armors, file)
    Marshal.dump($data_enemies, file)
    Marshal.dump($data_troops, file)
    Marshal.dump($data_states, file)
    Marshal.dump($data_animations, file)
    Marshal.dump($data_tilesets, file)
    Marshal.dump($data_common_events, file)
    Marshal.dump($data_system, file)
  end
end
class Scene_Load
  alias sailcat_read_save_data read_save_data
  def read_save_data(file)
    sailcat_read_save_data(file)
    $data_actors = Marshal.load(file)
    $data_classes = Marshal.load(file)
    $data_skills = Marshal.load(file)
    $data_items = Marshal.load(file)
    $data_weapons = Marshal.load(file)
    $data_armors = Marshal.load(file)
    $data_enemies = Marshal.load(file)
    $data_troops = Marshal.load(file)
    $data_states = Marshal.load(file)
    $data_animations = Marshal.load(file)
    $data_tilesets = Marshal.load(file)
    $data_common_events = Marshal.load(file)
    $data_system = Marshal.load(file)
  end
end

这个脚本使用时可以灵活处理,你改了哪些对象,就保存哪些,没改的,就不存,删掉其中的对应行,但是一定要注意,save和load里面的存取对象列表,必须完全相同,不但完全相同,连顺序也要一一对应才可以。


              [本贴由 柳柳 于 2005-10-31 7:25:27 最后编辑]
SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
22457
在线时间
2335 小时
注册时间
2005-10-15
帖子
1160

开拓者

2
 楼主| 发表于 2005-10-31 08:58:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
考虑到66的建议,我就把压轴的部分发这了。毕竟,如果运行时的设定不能保存的话,作用是比较有限的……

数据库的读取是用load_data从系统文件夹中读取,可能一般会想到用其反方法save_data写回去,但是如果你的修改突破了数据库999上限,或者一些值突破了系统界限,这些写回来的数据,RMXP是不认的,换句话说,这个数据库就不能再RMXP里进行编辑了。。。会提示加载不成功之类的话,严重的话导致整个工程打不开。
而且,这样的保存是釜底抽薪式的保存,如果你的修改是在剧情中进行的那种修改,下次用new game进入游戏,原来的数据也被改了。

一般来说,数据库的运行时修改随存档文件保存比较好,这样剧情中的更改不会影响新建游戏。
以下是相关的保存用代码:
class Scene_Save
  alias sailcat_write_save_data write_save_data
  def write_save_data(file)
    sailcat_write_save_data(file)
    # 写入数据库
    Marshal.dump($data_actors, file)
    Marshal.dump($data_classes, file)
    Marshal.dump($data_skills, file)
    Marshal.dump($data_items, file)
    Marshal.dump($data_weapons, file)
    Marshal.dump($data_armors, file)
    Marshal.dump($data_enemies, file)
    Marshal.dump($data_troops, file)
    Marshal.dump($data_states, file)
    Marshal.dump($data_animations, file)
    Marshal.dump($data_tilesets, file)
    Marshal.dump($data_common_events, file)
    Marshal.dump($data_system, file)
  end
end
class Scene_Load
  alias sailcat_read_save_data read_save_data
  def read_save_data(file)
    sailcat_read_save_data(file)
    $data_actors = Marshal.load(file)
    $data_classes = Marshal.load(file)
    $data_skills = Marshal.load(file)
    $data_items = Marshal.load(file)
    $data_weapons = Marshal.load(file)
    $data_armors = Marshal.load(file)
    $data_enemies = Marshal.load(file)
    $data_troops = Marshal.load(file)
    $data_states = Marshal.load(file)
    $data_animations = Marshal.load(file)
    $data_tilesets = Marshal.load(file)
    $data_common_events = Marshal.load(file)
    $data_system = Marshal.load(file)
  end
end

这个脚本使用时可以灵活处理,你改了哪些对象,就保存哪些,没改的,就不存,删掉其中的对应行,但是一定要注意,save和load里面的存取对象列表,必须完全相同,不但完全相同,连顺序也要一一对应才可以。


              [本贴由 柳柳 于 2005-10-31 7:25:27 最后编辑]
SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2005-10-22
帖子
81
3
发表于 2005-10-31 23:49:11 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
2 小时
注册时间
2005-10-21
帖子
96
4
发表于 2005-11-1 00:30:34 | 只看该作者
以下引用FantasyDR于2005-10-31 15:49:11的发言:

...............这样保存~~~啊~~~
游戏中修改游戏数据,其实是比较忌讳的事情啊,如果有改动,着实还是存在存档里面比较好.

个人觉得,可以说说Marshal的用法:),Ruby的这个读取保存模块包装的很好~用起来十分方便.
如果单独发这样的东西,恐怕不了解的人也没办法使用~~


这个是和技术区里运行时设定数据库的教学配合使用的{/wx}
[FLY][B]Think Globally - Act locally[/B][/FLY]
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
1
星屑
8959
在线时间
4372 小时
注册时间
2005-10-22
帖子
6755

开拓者贵宾

5
发表于 2005-11-1 02:22:26 | 只看该作者
花费了1天的使用电脑时间...终于防止了"潘朵拉的魔盒"可能带来的危险....:)
对脚本的认识也增加了不少....好久没那么认真地看脚本了...也许...有的时候危机也能激发起一些潜能吧....

--------------------------------------------------------------------------
不要在意这段东东哦.....-_-0
也不用猜这段东东是指的相关内容....
只不过对今天的事情感慨一番....
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
22457
在线时间
2335 小时
注册时间
2005-10-15
帖子
1160

开拓者

6
 楼主| 发表于 2005-11-1 05:13:50 | 只看该作者
是我不好,打开了潘朵拉的魔盒......5555........
好像神话中也素一个mm(Medusa?)打开这个盒子的
SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
2 小时
注册时间
2005-10-21
帖子
96
7
发表于 2005-11-1 06:47:21 | 只看该作者
以下引用SailCat于2005-10-31 21:13:50的发言:

是我不好,打开了潘朵拉的魔盒......5555........
好像神话中也素一个mm(Medusa?)打开这个盒子的

潘朵拉的魔盒,顾名思义,就是潘多拉打开的.美杜莎是希腊神话里一个少女,被激怒的雅典娜变成了妖怪,8过她可有石化技能,最后被希腊英雄珀耳修斯杀死.
好象她在别的说法中还是厄运(复仇?)三女神之一{/wx}

盒子已被关闭.....
[FLY][B]Think Globally - Act locally[/B][/FLY]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

堕落天使

梦石
0
星屑
55
在线时间
73 小时
注册时间
2005-10-22
帖子
337
8
发表于 2005-11-2 03:07:01 | 只看该作者
看乱了.....
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2005-10-22
帖子
81
9
发表于 2005-11-2 20:06:21 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

憤怒的冥王星人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2005-10-15
帖子
776
10
发表于 2005-12-11 22:36:44 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-29 23:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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