Project1

标题: 如何把记录公用变量的文件保存在外部? [打印本页]

作者: 兔毛鹿    时间: 2015-10-13 21:31
标题: 如何把记录公用变量的文件保存在外部?
依然是下面这个脚本,如何把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


作者: taroxd    时间: 2015-10-13 21:45
把脚本中所有 "TempVariables.rxdata" 都改成 "D:/tempsave/TempVariables.rxdata" 谁写的脚本 这都不用常量

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


作者: 兔毛鹿    时间: 2015-10-13 22:08
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
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1