【脚本】全局变量

范例工程:http://pan.baidu.com/s/1o6F2xse

=begin
================================================================================
  全局变量 By 喵呜喵5
================================================================================

【说明】

  在事件中使用脚本命令 save_var 可以把设置好的变量单独储存到一个新文件中

  在事件中使用脚本命令 load_var 可以在其他地方
  (例如其他存档、或者开始新游戏时……)载入保存了的变量的值

  使用全局变量可以用来制作类似记录通关次数或者进入二周目这样的功能

=end
$m5script ||= {};$m5script[:M5GV20140811] = 20151106
$m5script[:ScriptData] ||= {}
module M5GV20140811
#==============================================================================
#  设定部分
#==============================================================================

  VAR = [1,3]

  # 在这里设置需要储存的全局变量ID

  FILENAME = "System.rvdata2"

  # 在这里设置储存全局变量的文件名

  AUTO = true

  # 设置为 true 的话,变量的值发生改变时自动保存全局变量

  LOAD = false

  # 设置为 true 的话,开始新游戏或者读取存档时,自动读取保存的全局变量

#==============================================================================
#  设定结束
#==============================================================================
class << self
  def load
    $m5script[:ScriptData][:M5GV20140811] =
      (load_data(FILENAME) rescue [nil, {}])
  end
  def save; save_data($m5script[:ScriptData][:M5GV20140811], FILENAME); end
  def load_var
    var = $m5script[:ScriptData][:M5GV20140811][0]
    return unless var
    var.each_with_index{|v,i| $game_variables.m5_20140811_set(VAR[i], v)}
  end
  def current_var
    var = []
    VAR.each {|index| var << $game_variables[index] }
    return var
  end
  def save_var
    $m5script[:ScriptData][:M5GV20140811][0] = current_var
    save
  end
  def get_ext; $m5script[:ScriptData][:M5GV20140811][1]; end
  def save_ext; save; end
  def set_ext(key, value)
    get_ext[key] = value
    save
  end
end # class << self
end

class Game_Variables
  alias m5_20140811_set []=
  def []=(variable_id, value)
    m5_20140811_set(variable_id, value)
    return unless M5GV20140811::AUTO
    M5GV20140811.save_var if M5GV20140811::VAR.include?(variable_id)
  end
end
class << DataManager
  alias m5_20150320_load_game load_game
  def load_game(index)
    result = m5_20150320_load_game(index)
    return result unless result && M5GV20140811::LOAD
    M5GV20140811.load_var
    result
  end
  alias m5_20150320_create_game_objects create_game_objects
  def create_game_objects
    m5_20150320_create_game_objects
    return unless M5GV20140811::LOAD
    M5GV20140811.load_var
  end
end
class Game_Interpreter
  def save_var; M5GV20140811.save_var; end
  def load_var; M5GV20140811.load_var; end
end
M5GV20140811.load

发表评论

电子邮件地址不会被公开。 必填项已用*标注