查看: 3126|回复: 2

[原创发布] 【VA】全局开关和变量

[复制链接]
梦石
0
星屑
34459
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2021-7-29 08:28:45 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 芯☆淡茹水 于 2021-7-29 15:57 编辑

[pre lang="ruby"]#==============================================================================
# 〓 全局开关和变量 〓      By: 芯☆淡茹水
#==============================================================================
# 全局开关或变量,在取名时在名字前面加上 $ 符号
#==============================================================================
module XR_GlobalData
  #--------------------------------------------------------------------------
  File_name = "GlobalData"
  #--------------------------------------------------------------------------
  def self.filename
    return File_name + ".rxdata2"
  end
  #--------------------------------------------------------------------------
  def self.make_empty_data
    return {:switches=>{}, :variables=>{}}
  end
  #--------------------------------------------------------------------------
  def self.on_change(type, id, value)
    @data = @data || self.make_empty_data
    if @data[type]
      @data[type][id] = value
      file = File.open(self.filename, "wb")
      Marshal.dump(@data, file)
      file.close
    end
  end
  #--------------------------------------------------------------------------
  def self.load
    @data = self.make_empty_data
    if FileTest.exist?(self.filename)
      file = File.open(self.filename, "rb")
      @data = Marshal.load(file)
      file.close
    end
    $game_switches.synchro(@data[:switches])
    $game_variables.synchro(@data[:variables])
  end
end
#==============================================================================
class Game_Switches
  #--------------------------------------------------------------------------
  def is_global_switch?(switch_id)
    return false if !switch_id
    name = $data_system.switches[switch_id]
    return !!name && !!name.match(/^\$/)
  end
  #--------------------------------------------------------------------------
  def synchro(hash)
    hash.keys.each do |id|
      @data[id] = hash[id]
      on_change
    end
  end
  #--------------------------------------------------------------------------
  alias :xr_gd_change_switch :[]=
  def []=(switch_id, value)
    tmp = self[switch_id]
    xr_gd_change_switch(switch_id, value)
    if is_global_switch?(switch_id) && tmp != self[switch_id]
      XR_GlobalData.on_change(:switches, switch_id, self[switch_id])
    end
  end
end
#==============================================================================
class Game_Variables
  #--------------------------------------------------------------------------
  def is_global_variable?(variable_id)
    return false if !variable_id
    name = $data_system.variables[variable_id]
    return !!name && !!name.match(/^\$/)
  end
  #--------------------------------------------------------------------------
  def synchro(hash)
    hash.keys.each do |id|
      @data[id] = hash[id]
      on_change
    end
  end
  #--------------------------------------------------------------------------
  alias :xr_gd_change_variable :[]=
  def []=(variable_id, value)
    tmp = self[variable_id]
    xr_gd_change_variable(variable_id, value)
    if is_global_variable?(variable_id) && tmp != self[variable_id]
      XR_GlobalData.on_change(:variables, variable_id, self[variable_id])
    end
  end
end
#==============================================================================
class << DataManager
  #--------------------------------------------------------------------------
  alias xr_gd_create_game_objects create_game_objects
  def create_game_objects
    xr_gd_create_game_objects
    XR_GlobalData.load
  end
  #--------------------------------------------------------------------------
  alias xr_gd_load_game_without_rescue load_game_without_rescue
  def load_game_without_rescue(index)
    result = xr_gd_load_game_without_rescue(index)
    XR_GlobalData.load
    return result
  end
end
#==============================================================================
# end
#==============================================================================[/pre]

评分

参与人数 1星屑 +250 赞 +1 收起 理由
alexncf125 + 250 + 1 精品文章

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
头像被屏蔽
梦石
0
星屑
-990
在线时间
11 小时
注册时间
2022-3-14
回帖
6
发表于 2022-4-16 14:11:29 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
回复

使用道具 举报

梦石
0
星屑
2085
在线时间
185 小时
注册时间
2022-6-24
回帖
148
发表于 2022-7-6 00:28:19 | 显示全部楼层
我是白痴,请问这个的的用处是不是可以做到跨存档变量,类似于如果死了读档后角色会说你死了一次这种效果
在尝试做游戏了,但还是个菜狗(结果现在编程,音乐和剧情设计没开始学,画画也暂时没时间学了(;д;))

(个人精神状况不是很好,有时会说出一些奇怪且根本没法理解意思的话,直接无视就好,如果说出的话不小心冒犯到你,我会在精神状况良好时和你道歉的(`・ω・´)(不过一般在感觉到不适时会直接下线,请勿过于担心))
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部