Project1

标题: 关闭游戏后再进入更改永久变量导致数值异常的问题 [打印本页]

作者: 兔毛鹿    时间: 2015-10-10 11:05
标题: 关闭游戏后再进入更改永久变量导致数值异常的问题
这是工程:
Project4.rar (196.66 KB, 下载次数: 70)


先执行左边的事件,给变量699赋值11,给变量700赋值22,关闭游戏重新开始,按F9可以看到变量699=11,变量700=22



再执行右边的事件给变量700赋值444,发现变量699变成nil了,请教如何让变量699还能保持以前的值11



使用的脚本:
  1. $valh = {}
  2. class Game_Variables
  3.   FileVariablesID1 = [699,700]
  4.   #--------------------------------------------------------------------------
  5.   # ● 初始化
  6.   #--------------------------------------------------------------------------
  7.   def initialize
  8.     @data = []
  9.   end
  10.   #--------------------------------------------------------------------------
  11.   # ● 获取变量
  12.   #     variable_id : 变量 ID
  13.   #--------------------------------------------------------------------------
  14.   def [](variable_id)
  15.     FileVariablesID1.each do |i|
  16.       if variable_id == i
  17.         begin
  18.           valh = load_data("TempVariables.rxdata")
  19.           val = valh[i]
  20.         rescue Errno::ENOENT
  21.           valh={}
  22.           for i in FileVariablesID1.each
  23.              valh[i]=0
  24.           end
  25.           save_data(valh, "TempVariables.rxdata")
  26.           retry
  27.         end
  28.         return val
  29.       end
  30.     end
  31.     if variable_id <= 5000 and @data[variable_id] != nil
  32.       return @data[variable_id]
  33.     else
  34.       return 0
  35.     end
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # ● 设置变量
  39.   #     variable_id : 变量 ID
  40.   #     value       : 变量的值
  41.   #--------------------------------------------------------------------------
  42.   def []=(variable_id, value)
  43.     if variable_id <= 5000
  44.       @data[variable_id] = value
  45.     end
  46.     n = 0
  47.     FileVariablesID1.each do |i|
  48.       if variable_id == i
  49.         $valh[i]=@data[variable_id]
  50.         n+=1
  51.       end
  52.     end
  53.     if n > 0
  54.       save_data($valh, "TempVariables.rxdata")
  55.     end
  56.   end
  57. end
复制代码

作者: 汪汪    时间: 2015-10-10 11:39
本帖最后由 汪汪 于 2015-10-10 11:57 编辑

$valh = {}
class Game_Variables
  FileVariablesID1 = [699,700]
  #--------------------------------------------------------------------------
  # ● 初始化
  #--------------------------------------------------------------------------
  def initialize
    @data = []
  end
  #--------------------------------------------------------------------------
  # ● 获取变量
  #     variable_id : 变量 ID
  #--------------------------------------------------------------------------
  def [](variable_id)
    FileVariablesID1.each do |i|
      if variable_id == i
        begin
          valh = load_data("TempVariables.rxdata")
          val = valh
        rescue Errno::ENOENT
          valh={}
          for i in FileVariablesID1.each
             valh=0
          end
          save_data(valh, "TempVariables.rxdata")
          retry
        end
        return val
      end
    end
    if variable_id <= 5000 and @data[variable_id] != nil
      return @data[variable_id]
    else
      return 0
    end
  end
  #--------------------------------------------------------------------------
  # ● 设置变量
  #     variable_id : 变量 ID
  #     value       : 变量的值
  #--------------------------------------------------------------------------
  def []=(variable_id, value)
    if variable_id <= 5000
      @data[variable_id] = value
    end
    $valh = load_data("TempVariables.rxdata")      #加这么一句, 先把原来数据读取再在原来基础上储存新数据
    n = 0
    FileVariablesID1.each do |i|
      if variable_id == i
        $valh=@data[variable_id]
        n+=1
      end
    end
    if n > 0
      save_data($valh, "TempVariables.rxdata")
    end
  end
end

  
话说.........其实可以简单点.....在关闭时储存,打开时读取就可以了,没必要这么麻烦......









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