注册会员 登录
Project1 返回首页

喵呜喵5的树洞 https://rpg.blue/?291206 [收藏] [复制] [分享] [RSS]

日志

【脚本】简易式存档界面

热度 16已有 4861 次阅读2013-10-5 19:16 |个人分类:脚本

=begin
===============================================================================
  简易式存档界面 By喵呜喵5
===============================================================================

【说明】
  
  给存档数目只有一个的游戏使用的简易式存档界面
  
  在事件中使用脚本“load”可以快速读档(适用于使用事件作为标题菜单的情况)  
  
=end
module M5SimpleSave
#==============================================================================
#  设定部分
#==============================================================================
  
  SAVE_NAME = "SAVE"
  #存档的文件名
  
  SAVE_OPTION = "保存记录"
  #存档按钮的提示文字
  
  CANCLE_OPTION = "回到游戏"
  #取消按钮的提示文字
  
  SAVING_HINT = "保存中"
  #存档时的提示文字
  
  SAVE_HINT = "记录已保存"
  #存档完成时的提示文字
  
  SAVE_SE = "Save"
  #存档完成时播放的音效
  
  LOAD_SE = "Load"
  #读档完成时播放的音效
  
  LOAD_ERROR = "没有发现可以使用的存档"
  #读档失败时的提示文字
  
  LOAD_ERROR_SE = "Buzzer1"
  #读档失败时播放的音效
  
#==============================================================================
#  设定结束
#==============================================================================
end
class Window_Hint < Window_Base  
  def initialize(x = 0,y = 90,height = 80)
    super(x,y,Graphics.width, height) 
  end  
  def write_text(text) 
    contents.clear
    draw_text(0,0,Graphics.width,fitting_height(1),text,1)
  end  
  def line_height
    Font.default_size
  end
end
class Window_SimpleSave < Window_Command
  def initialize
    super(0, 0)
    update_placement
    self.openness = 0
    open
  end
  def window_width
    160   
  end
  def update_placement
    self.x = (Graphics.width - width) / 2
    self.y = (Graphics.height - height) / 2
  end
  def make_command_list
    add_command(M5SimpleSave::SAVE_OPTION, :save)    
    add_command(M5SimpleSave::CANCLE_OPTION, :cancel)
  end
  def alignment
    return 1
  end
end
class Scene_SimpleSave < Scene_MenuBase
  def start
    super
    create_command_window
  end
  def pre_terminate
    super
    close_command_window
  end
  def create_command_window
    @command_window = Window_SimpleSave.new
    @command_window.set_handler(:save, method(:command_save))    
    @command_window.set_handler(:cancel,   method(:return_scene))
  end
  def close_command_window
    @command_window.close
    update until @command_window.close?
  end  
  def command_save
    DataManager.save_game(1)
    hint = Window_Hint.new
    Graphics.wait(10)
    5.times {|i| hint.write_text(M5SimpleSave::SAVING_HINT+"."*(i+1)); Graphics.wait(20)}
    Graphics.wait(40)
    Audio.se_play("Audio/SE/"+M5SimpleSave::SAVE_SE)
    hint.write_text(M5SimpleSave::SAVE_HINT)
    Graphics.wait(10)
    loop do
      Input.update     
      break if Input.trigger?(:C)      
    end
    hint.dispose    
    return_scene
  end  
end
class << DataManager
  def make_filename(index)
    M5SimpleSave::SAVE_NAME
  end
  def savefile_max
    1
  end
  def save_file_exists?
    !Dir.glob(M5SimpleSave::SAVE_NAME).empty?
  end
end
class Scene_File
  def visible_max
    1
  end
end
class Game_Interpreter
  def load
    if FileTest.exist?(M5SimpleSave::SAVE_NAME)
      load_success
    else
      load_error
    end
  end  
  def save
    SceneManager.call(Scene_SimpleSave)
  end
  def load_success
    Audio.se_play("Audio/SE/"+M5SimpleSave::LOAD_SE)
    DataManager.load_game(1)
    RPG::BGM.fade(1000)
    RPG::BGS.fade(1000)
    RPG::ME.fade(1000)
    Graphics.fadeout(1000 * Graphics.frame_rate / 1000)
    RPG::BGM.stop
    RPG::BGS.stop
    RPG::ME.stop
    $game_system.on_after_load
    SceneManager.goto(Scene_Map)
  end
  def load_error
    Audio.se_play("Audio/SE/"+M5SimpleSave::LOAD_ERROR_SE)
    hint = Window_Hint.new(0,Graphics.height/2 - 40)
    hint.write_text(M5SimpleSave::LOAD_ERROR) 
    Graphics.wait(10)
    loop do
      Input.update
      break if Input.trigger?(:C)
    end
    hint.dispose
  end  
end
Scene_Save = Scene_SimpleSave
7

鸡蛋
1

鲜花

刚表态过的朋友 (8 人)

发表评论 评论 (4 个评论)

回复 alexncf125 2022-11-9 15:35
这个脚本是不是也跟"跳过标题画面"脚本一样, 如果有使用其他的存档界面脚本,需将这个脚本放在他们的下面, 的咧?
回复 喵呜喵5 2022-11-9 17:12
alexncf125: 这个脚本是不是也跟&quot;跳过标题画面&quot;脚本一样, 如果有使用其他的存档界面脚本,需将这个脚本放在他们的下面, 的咧? ...
因为最后一行直接
Scene_Save = Scene_SimpleSave


所以应该是:和其他存档界面脚本完全不兼容
回复 alexncf125 2023-3-30 11:49
一个无关疼痒的寻思...DataManager改了save_file_exists?的定义...那Game_Interpreter的load是不是可以写if DataManager.save_file_exists?而不是写if FileTest.exist?(M5SimpleSave::SAVE_NAME)
回复 喵呜喵5 2023-3-30 20:41
alexncf125: 一个无关疼痒的寻思...DataManager改了save_file_exists?的定义...那Game_Interpreter的load是不是可以写if DataManager.save_file_exists?而不是写if FileTest. ...
是的

facelist doodle 涂鸦笔

您需要登录后才可以评论 登录 | 注册会员

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-6 13:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部