查看: 83|回复: 0

[转载发布] 【XP】全局开关和变量

[复制链接]
  • TA的每日心情
    开心
    昨天 09:55
  • 签到天数: 37 天

    连续签到: 3 天

    [LV.5]常住居民I

    2028

    主题

    32

    回帖

    7260

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    0
    卡币
    5184
    OK点
    16
    积分
    7260
    发表于 同元一千年八月八日(秋) | 显示全部楼层 |阅读模式
    RUBY 代码
    1. #==============================================================================
    2. # 〓 全局开关和变量 〓      By: 芯☆淡茹水
    3. #==============================================================================
    4. # 全局开关或变量,在取名时在名字前面加上 $ 符号
    5. #==============================================================================
    6. module XR_GlobalData
    7.   #--------------------------------------------------------------------------
    8.   File_name = "GlobalData"
    9.   #--------------------------------------------------------------------------
    10.   defself.filename
    11.     return File_name + ".rxdata"
    12.   end
    13.   #--------------------------------------------------------------------------
    14.   defself.make_empty_data
    15.     return{:switches=>{}, :variables=>{}}
    16.   end
    17.   #--------------------------------------------------------------------------
    18.   defself.on_change(type, id, value)
    19.     @data = @data || self.make_empty_data
    20.     if@data[type]
    21.       @data[type][id] = value
    22.       file = File.open(self.filename, "wb")
    23.       Marshal.dump(@data, file)
    24.       file.close
    25.     end
    26.   end
    27.   #--------------------------------------------------------------------------
    28.   defself.load
    29.     @data = self.make_empty_data
    30.     ifFileTest.exist?(self.filename)
    31.       file = File.open(self.filename, "rb")
    32.       @data = Marshal.load(file)
    33.       file.close
    34.     end
    35.     $game_switches.synchro(@data[:switches])
    36.     $game_variables.synchro(@data[:variables])
    37.   end
    38. end
    39. #==============================================================================
    40. class Game_Switches
    41.   #--------------------------------------------------------------------------
    42.   def is_global_switch?(switch_id)
    43.     returnfalseif !switch_id
    44.     name = $data_system.switches[switch_id]
    45.     return !!name && !!name.match(/^\$/)
    46.   end
    47.   #--------------------------------------------------------------------------
    48.   def synchro(hash)
    49.     hash.keys.eachdo |id|
    50.       @data[id] = hash[id]
    51.       $game_map.need_refresh = true
    52.     end
    53.   end
    54.   #--------------------------------------------------------------------------
    55.   alias:xr_gd_change_switch :[]=
    56.   def[]=(switch_id, value)
    57.     tmp = self[switch_id]
    58.     xr_gd_change_switch(switch_id, value)
    59.     if is_global_switch?(switch_id) && tmp != self[switch_id]
    60.       XR_GlobalData.on_change(:switches, switch_id, self[switch_id])
    61.     end
    62.   end
    63. end
    64. #==============================================================================
    65. class Game_Variables
    66.   #--------------------------------------------------------------------------
    67.   def is_global_variable?(variable_id)
    68.     returnfalseif !variable_id
    69.     name = $data_system.variables[variable_id]
    70.     return !!name && !!name.match(/^\$/)
    71.   end
    72.   #--------------------------------------------------------------------------
    73.   def synchro(hash)
    74.     hash.keys.eachdo |id|
    75.       @data[id] = hash[id]
    76.       $game_map.need_refresh = true
    77.     end
    78.   end
    79.   #--------------------------------------------------------------------------
    80.   alias:xr_gd_change_variable :[]=
    81.   def[]=(variable_id, value)
    82.     tmp = self[variable_id]
    83.     xr_gd_change_variable(variable_id, value)
    84.     if is_global_variable?(variable_id) && tmp != self[variable_id]
    85.       XR_GlobalData.on_change(:variables, variable_id, self[variable_id])
    86.     end
    87.   end
    88. end
    89. #==============================================================================
    90. class Scene_Title
    91.   #--------------------------------------------------------------------------
    92.   alias xr_gd_command_new_game command_new_game
    93.   def command_new_game
    94.     xr_gd_command_new_game
    95.     XR_GlobalData.load
    96.   end
    97. end
    98. #==============================================================================
    99. class Scene_Load
    100.   #--------------------------------------------------------------------------
    101.   alias xr_gd_read_save_data read_save_data
    102.   def read_save_data(file)
    103.     xr_gd_read_save_data
    104.     XR_GlobalData.load
    105.   end
    106. end
    107. #==============================================================================
    108. # end
    109. #==============================================================================
    复制代码

                 本帖来自P1论坛作者芯☆淡茹水,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=486533  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
    天天去同能,天天有童年!
    回复 论坛版权

    使用道具 举报

    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2024-5-11 18:33 , Processed in 0.046761 second(s), 43 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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