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

Project1

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

[已经解决] 怎样只读取存档的特定部分内容

[复制链接]

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

跳转到指定楼层
1
发表于 2012-9-22 20:03:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RT,
如何使用事件脚本来读取某个存档中的部分内容
比如我希望判断存档1中的主角是否拥有某个道具……
或者存档2中的开关1是否是打开的……
或者存档3中的变量1等于几……

Lv2.观梦者

梦石
0
星屑
758
在线时间
2064 小时
注册时间
2011-10-3
帖子
1686
2
发表于 2012-9-22 22:04:07 | 只看该作者
类似一个存档就是一个平行世界那样?想法蛮不错的
回复

使用道具 举报

Lv3.寻梦者

Assassin-K

梦石
0
星屑
3593
在线时间
2281 小时
注册时间
2012-5-23
帖子
4065

贵宾

3
发表于 2012-9-22 23:30:43 | 只看该作者
我只能说,这只能用脚本了。
事件无能为力了~
到贵宾区找大大写脚本去~

◆ROZONE◆
>洛子又要去流浪地球了……
>如果你看到我在线,又没动静,那只能说明我在挂机……
回复

使用道具 举报

Lv3.寻梦者

可以吃的头衔

梦石
0
星屑
1000
在线时间
423 小时
注册时间
2010-10-17
帖子
602
4
发表于 2012-9-23 02:02:21 | 只看该作者
把读档操作改改可行,默认读档是把数据装入全局变量,你可以从这个过程中过滤。
……
回复

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

5
 楼主| 发表于 2012-9-23 12:05:59 | 只看该作者
fux4 发表于 2012-9-23 02:02
把读档操作改改可行,默认读档是把数据装入全局变量,你可以从这个过程中过滤。 ...

但是我看不懂读档操作的脚本啊……作为脚本盲压力很大…………
回复

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

6
 楼主| 发表于 2015-12-29 09:33:24 | 只看该作者
本帖最后由 喵呜喵5 于 2016-2-21 23:13 编辑

三年后回来扫自己的旧问题




参考 DataManager 中对应读档部分的代码,可以写一个这样的方法
  1. module DataManager  
  2.   def self.m5_load_save_data(index)   
  3.     begin
  4.       File.open(make_filename(index), "rb") do |file|
  5.         # 头数据
  6.         Marshal.load(file)
  7.         # 完整存档内容
  8.         save_file = Marshal.load(file)        
  9.       end
  10.     rescue
  11.       return nil      
  12.     end
  13.   end
  14. end
复制代码
此时,例如,执行 DataManager.m5_load_save_data(1) 后,若读档成功,相应的存档数据(一个哈希表)就在第代码8行被赋值给了 save_file 这个变量了

之后,回到主楼的问题,在上面的代码之后再稍加修改,将代码变成这样:

RUBY 代码复制
  1. module DataManager  
  2.   def self.m5_load_save_data(index)
  3.     begin
  4.       File.open(make_filename(index), "rb") do |file|        
  5.         Marshal.load(file)         
  6.         return Marshal.load(file)        
  7.       end
  8.     rescue
  9.       return nil
  10.     end
  11.   end
  12. end
  13. class << (M5DataManager = Module.new)  
  14.   def judge_item(save_index, item_id)
  15.     save_file = DataManager.m5_load_save_data(save_index - 1)
  16.     save_file || (msgbox '存档读取失败'; return)
  17.     save_file[:party].has_item?(item_id)
  18.   end
  19.   def judge_switch(save_index, switch_id)
  20.     save_file = DataManager.m5_load_save_data(save_index - 1)
  21.     save_file || (msgbox '存档读取失败'; return)
  22.     save_file[:switches][switch_id]
  23.   end
  24.   def judge_variable(save_index, variable_id)
  25.     save_file = DataManager.m5_load_save_data(save_index - 1)
  26.     save_file || (msgbox '存档读取失败'; return)
  27.     save_file[:variables][variable_id]
  28.   end  
  29. end


存档1中的主角是否拥有某个道具:
  1. M5DataManager.judge_item(1, 道具编号)
复制代码
存档2中的开关1是否打开:
  1. M5DataManager.judge_switch(2, 1)
复制代码
存档3中的变量1等于几:
  1. M5DataManager.judge_variable(3, 1)
复制代码
当然,条件允许的话,并不建议将这些数据保存到存档中之后读取存档时再一个一个检查

如果真的要保存其他存档需要读取的数据的话,可以考虑使用全局变量(https://rpg.blue/home.php?mod=sp ... o=blog&id=11794),将这些数据单独保存进一个新文件中

评分

参与人数 4星屑 +101 梦石 +1 收起 理由
chd114 + 1 洛阳铲
落雪鸦杀 + 15 励志故事已收藏
未命名 + 85 三年前居然是脚本盲……
VIPArcher + 1

查看全部评分

回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3467
在线时间
2598 小时
注册时间
2012-3-1
帖子
767
7
发表于 2016-2-4 02:53:31 | 只看该作者
雖然沒學過腳本,但也懶得了……
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 07:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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