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

Project1

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

[已经解决] 如何把记录公用变量的文件保存在外部?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
57
在线时间
131 小时
注册时间
2008-8-12
帖子
184
跳转到指定楼层
1
发表于 2015-10-13 21:31:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
依然是下面这个脚本,如何把TempVariables.rxdata这个文件保存在外部并且可以读取?比如保存在D:\tempsave  目录下


RUBY 代码复制
  1. class Game_Variables
  2.   FileVariablesID1 = 63
  3.   #--------------------------------------------------------------------------
  4.   # ● 初始化
  5.   #--------------------------------------------------------------------------
  6.   def initialize
  7.     @data = []
  8.   end
  9.   #--------------------------------------------------------------------------
  10.   # ● 获取变量
  11.   #     variable_id : 变量 ID
  12.   #--------------------------------------------------------------------------
  13.   def [](variable_id)
  14.     if variable_id == FileVariablesID1
  15.       begin
  16.         val = load_data("TempVariables.rxdata")
  17.       rescue Errno::ENOENT
  18.         save_data(0, "TempVariables.rxdata")
  19.         retry
  20.       end
  21.       return val
  22.     end
  23.     if variable_id <= 5000 and @data[variable_id] != nil
  24.       return @data[variable_id]
  25.     else
  26.       return 0
  27.     end
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 设置变量
  31.   #     variable_id : 变量 ID
  32.   #     value       : 变量的值
  33.   #--------------------------------------------------------------------------
  34.   def []=(variable_id, value)
  35.     if variable_id <= 5000
  36.       @data[variable_id] = value
  37.     end
  38.     if variable_id == FileVariablesID1
  39.       save_data(@data[variable_id], "TempVariables.rxdata")
  40.     end
  41.   end
  42. end

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

Tomorrow

Lv3.寻梦者 (版主)

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

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

开拓者贵宾

2
发表于 2015-10-13 21:45:18 | 只看该作者
把脚本中所有 "TempVariables.rxdata" 都改成 "D:/tempsave/TempVariables.rxdata" 谁写的脚本 这都不用常量

但你需要保证 D盘存在,以及 tempsave 文件夹存在(可用 Dir.mkdir 方法)。因此,强烈不建议你保存在外部。
实在要保存到外部的话,可以考虑使用 %APPDATA% 或者 %USERPROFILE% 之类的系统变量来保证文件夹存在。但我听说XP里中文目录会出问题。

评分

参与人数 1星屑 +200 收起 理由
RyanBern + 200 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
57
在线时间
131 小时
注册时间
2008-8-12
帖子
184
3
 楼主| 发表于 2015-10-13 22:08:58 | 只看该作者
taroxd 发表于 2015-10-13 21:45
把脚本中所有 "TempVariables.rxdata" 都改成 "D:/tempsave/TempVariables.rxdata" 谁写的脚本 这都不用 ...

我对脚本改了下,在给变量赋值的时候提示找不到文件 D:/TempVariables.rxdata
  1. $valh = {}
  2. class Game_Variables
  3.   FileVariablesID = [7,8]
  4.   def initialize
  5.     @data = []
  6.   end
  7.   def [](variable_id)
  8.     FileVariablesID.each do |i|
  9.       if variable_id == i
  10.         begin
  11.           valh = load_data("D:/TempVariables.rxdata")
  12.           val = valh[i]
  13.         rescue Errno::ENOENT
  14.           valh={}
  15.           for i in FileVariablesID.each
  16.              valh[i]=0
  17.           end
  18.           save_data(valh, "D:/TempVariables.rxdata")
  19.           retry
  20.         end
  21.         return val
  22.       end
  23.     end
  24.     if variable_id <= 5000 and @data[variable_id] != nil
  25.       return @data[variable_id]
  26.     else
  27.       return 0
  28.     end
  29.   end
  30.   def []=(variable_id, value)
  31.     if variable_id <= 5000
  32.       @data[variable_id] = value
  33.     end
  34.     $valh = load_data("D:/TempVariables.rxdata")
  35.     n = 0
  36.     FileVariablesID.each do |i|
  37.       if variable_id == i
  38.         $valh[i]=@data[variable_id]
  39.         n+=1
  40.       end
  41.     end
  42.     if n > 0
  43.       save_data($valh, "D:/TempVariables.rxdata")
  44.     end
  45.   end
  46. end
复制代码
Tomorrow
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 11:18

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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