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

Project1

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

[RMVA发布] 将数据库转化为可读文本

[复制链接]

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

跳转到指定楼层
1
发表于 2015-9-24 22:22:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 taroxd 于 2015-9-25 14:01 编辑

脚本的用途以及灵感来源:https://rpg.blue/thread-383681-1-1.html

脚本效果:

  RPGObject.load_rvdata2 方法可读取 rvdata2,并返回一个对象(在 RGSS 中,效果与 load_data 相同。)
  RPGObject.unpack_rpg_object(obj):
     将上述的对象转换成 Array、Hash、数字、字符串 组成的基本对象。可以用 prettyprint、json、YAML 等库来输出为可读的文本。
  RPGObject.pack_rpg_object(obj)
     unpack_rpg_object 的逆运算。可以在 RGSS 环境中,将基本的对象转化成 RPG:Xxx 的实例。
  纯 Ruby 环境与 RGSS 环境皆可使用。

可能会有 bug,还未仔细测试


脚本本体:https://github.com/taroxd/RGSS/blob/master/misc/rpgobject.rb

测试代码:
RUBY 代码复制
  1. #!/usr/bin/env ruby -wKU
  2.  
  3. require 'psych'
  4.  
  5. system = RPGObject.load_rvdata2 'Data/System.rvdata2'
  6.  
  7. puts Psych.dump RPGObject.unpack_rpg_object system


输出:

点评

https://github.com/Artoria/uneval  发表于 2015-9-25 12:43

Lv1.梦旅人

梦石
0
星屑
165
在线时间
39 小时
注册时间
2014-10-8
帖子
3
2
发表于 2015-9-25 11:50:14 | 只看该作者
谢taroxd的脚本,说实话我对Ruby了解不多,有些地方一下子还看不太懂,特别是递归的include和extend都看晕了
昨天回来的也比较晚了还没来得仔细研究,只简单试了一下基本的功能
Ruby环境执行 RPGObject::load_rvdata2 => 成功,再执行 collect {|obj| obj.to_h } => 对所有非nil对象成功,nil对象出错
再执行collect {|obj| RPGObject::load_hash(obj.to_h) } => 成功,但是好像不能再Marshal.dump成原来的rvdata2?因为丢失了类型信息?(不确定)
RGSS环境未测试

点评

类型信息没有丢失(因为实际上 Marshal 里面只保存了类的名字),可以转换回去呀  发表于 2015-9-25 13:26
nil.to_h 也不会出错,会返回 {}(空哈希表) 呀  发表于 2015-9-25 13:23
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止访问)

梦石
0
星屑
88
在线时间
631 小时
注册时间
2014-8-4
帖子
3600
3
发表于 2015-9-25 12:26:56 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2015-8-28
帖子
11
4
发表于 2015-9-25 13:40:45 | 只看该作者
github = =
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

5
 楼主| 发表于 2015-9-25 13:42:53 | 只看该作者
Flame_ustc 发表于 2015-9-25 11:50
谢taroxd的脚本,说实话我对Ruby了解不多,有些地方一下子还看不太懂,特别是递归的include和extend都看晕 ...

其实本来我都写好了把 RPGObject 转成比较原始的对象的代码了,不过没有定义成方法。

现在定义好了,试试 RPGObject.unpack_rpg_object(an_array) 吧。an_array 可以是 Actors.rvdata2 里面读取出来的。

@晴兰
这个脚本的主要目的是让 uneval 出来的东西可读性好一点,改起来舒心一点(所以在 Table、Font、Color 上花了点工夫。不然保留 Marshal.dump 的东西不变就可以了)
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-15 09:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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