Project1

标题: 指定存档文件存放文件夹V1.0 [打印本页]

作者: 失落的乐章    时间: 2012-8-22 22:13
标题: 指定存档文件存放文件夹V1.0
本帖最后由 失落的乐章 于 2019-5-5 12:27 编辑

这个脚本的主要作用是:指定一个存档文件夹,当玩家进行存读档操作时,从该文件夹中读取。脚本的原理非常简单,我看到过一个类似的教程贴,只不过当文件夹不存在时,会出错,而且需要使用者修改多处脚本,比较麻烦,所以我将它整合,并增加了当文件夹不存在时自动创建的功能。



代码:
【原代码有些问题,现暂时删除。以后可能会重写。】


作者: chd114    时间: 2012-8-29 21:50
LZ你就不能用代码形式发出来吗···CODE形式发出来,复制的人要重新安排位置
作者: chd114    时间: 2012-8-29 21:55
  1. =begin ——指定存档文件夹V1.0  
  2. 作者:失落的乐章
  3. 用途:指定一个存档文件夹,当玩家进行存读档操作时,从该文件夹中读取。
  4. 脚本的原理非常简单,我看到过一个类似的教程贴,只不过当文件夹不存在时,会出错,
  5. 而且需要使用者修改多处脚本,比较麻烦,所以我将它整合,
  6. 并增加了当文件夹不存在时自动创建的功能。
  7. 冲突可能:与各种存档增强脚本冲突。重定义
  8. Window_SaveFile,Scene_Title,Scene_File.
  9. 首发地址: [url]http://www.sgsflz.tk/thread-258-1-1.html[/url]  =end
  10. module SGS_FileDir  
  11.   DIR_NAME = "Save"  #指定存档文件夹名,建议不要使用中文。   
  12.   NEW_DIR = true      #找不到存档文件夹时是否新建?
  13. end
  14. #==============================================================================
  15. # ■ Window_SaveFile
  16. #------------------------------------------------------------------------------
  17. #  显示存档以及读档画面、保存文件的窗口。
  18. #==============================================================================
  19. class Window_SaveFile < Window_Base   
  20.   def initialize(file_index, filename)   
  21.     super(0, 64 + file_index % 4 * 104, 640, 104)   
  22.     self.contents = Bitmap.new(width - 32, height - 32)   
  23.     @file_index = file_index   
  24.     @filename = SGS_FileDir::DIR_NAME + "/" + "Save#{@file_index + 1}.rxdata"   
  25.     @time_stamp = Time.at(0)   
  26.     if SGS_FileDir::NEW_DIR     
  27.       unless File.directory? ("./" + SGS_FileDir::DIR_NAME)     
  28.         Dir.mkdir(SGS_FileDir::DIR_NAME)     
  29.       end   
  30.     end   
  31.     @file_exist = FileTest.exist?(@filename)  
  32.     if @file_exist   
  33.       file = File.open(@filename, "r")     
  34.       @time_stamp = file.mtime   
  35.       @characters = Marshal.load(file)     
  36.       @frame_count = Marshal.load(file)   
  37.       @game_system = Marshal.load(file)  
  38.       @game_switches = Marshal.load(file)   
  39.       @game_variables = Marshal.load(file)  
  40.       @total_sec = @frame_count / Graphics.frame_rate   
  41.       file.close
  42.     end  
  43.     refresh  
  44.     @selected = false
  45.   end
  46. end
  47. #==============================================================================
  48. # ■ Scene_Title
  49. #------------------------------------------------------------------------------
  50. #  处理标题画面的类。
  51. #==============================================================================
  52. class Scene_Title  
  53.   def main    # 战斗测试的情况下   
  54.     if $BTEST      
  55.       battle_test     
  56.       return   
  57.     end   
  58.     # 载入数据库  
  59.     $data_actors        = load_data("Data/Actors.rxdata")   
  60.     $data_classes       = load_data("Data/Classes.rxdata")  
  61.     $data_skills        = load_data("Data/Skills.rxdata")   
  62.     $data_items         = load_data("Data/Items.rxdata")  
  63.     $data_weapons       = load_data("Data/Weapons.rxdata")  
  64.     $data_armors        = load_data("Data/Armors.rxdata")   
  65.     $data_enemies       = load_data("Data/Enemies.rxdata")   
  66.     $data_troops        = load_data("Data/Troops.rxdata")   
  67.     $data_states        = load_data("Data/States.rxdata")   
  68.     $data_animations    = load_data("Data/Animations.rxdata")   
  69.     $data_tilesets      = load_data("Data/Tilesets.rxdata")   
  70.     $data_common_events = load_data("Data/CommonEvents.rxdata")  
  71.     $data_system        = load_data("Data/System.rxdata")   
  72.     # 生成系统对像   
  73.     $game_system = Game_System.new   
  74.     # 生成标题图形   
  75.     @sprite = Sprite.new   
  76.     @sprite.bitmap = RPG::Cache.title($data_system.title_name)
  77.     # 生成命令窗口   
  78.     s1 = "新游戏"  
  79.     s2 = "继续"  
  80.     s3 = "退出"   
  81.     @command_window = Window_Command.new(192, [s1, s2, s3])  
  82.     @command_window.back_opacity = 160   
  83.     @command_window.x = 320 - @command_window.width / 2  
  84.     @command_window.y = 288   
  85.     # 判定继续的有效性  
  86.     # 存档文件一个也不存在的时候也调查  
  87.     # 有効为 @continue_enabled 为 true、无效为 false  
  88.     @continue_enabled = false   
  89.     for i in 0..3     
  90.       if FileTest.exist?(SGS_FileDir::DIR_NAME + "/" + "Save#{i+1}.rxdata")      
  91.         @continue_enabled = true   
  92.       end   
  93.     end   
  94.     # 继续为有效的情况下、光标停止在继续上  
  95.     # 无效的情况下、继续的文字显示为灰色   
  96.     if @continue_enabled   
  97.       @command_window.index = 1  
  98.     else   
  99.       @command_window.disable_item(1)
  100.     end  
  101.     # 演奏标题 BGM   
  102.     $game_system.bgm_play($data_system.title_bgm)  
  103.     # 停止演奏 ME、BGS  
  104.     Audio.me_stop   
  105.     Audio.bgs_stop   
  106.     # 执行过渡  
  107.     Graphics.transition  
  108.     # 主循环   
  109.     loop do   
  110.       # 刷新游戏画面   
  111.       Graphics.update   
  112.       # 刷新输入信息   
  113.       Input.update   
  114.       # 刷新画面   
  115.       update   
  116.       # 如果画面被切换就中断循环   
  117.       if $scene != self   
  118.         break     
  119.       end  
  120.     end   
  121.     # 装备过渡   
  122.     Graphics.freeze   
  123.     # 释放命令窗口  
  124.     @command_window.dispose  
  125.     # 释放标题图形
  126.     @sprite.bitmap.dispose   
  127.     @sprite.dispose  
  128.   end
  129. end
  130.     #==============================================================================
  131.     # ■ Scene_File
  132.     #------------------------------------------------------------------------------
  133.     #  存档画面及读档画面的超级类。
  134.     #==============================================================================
  135.     class Scene_File  
  136.       def make_filename(file_index)   
  137.         return SGS_FileDir::DIR_NAME + "/" + "Save#{file_index + 1}.rxdata"  
  138.       end
  139.     end
复制代码
LZ脚本明显有问题




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