设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1644|回复: 3
打印 上一主题 下一主题

[已经过期] 菜单界面的读档不生效

[复制链接]

Lv1.梦旅人

梦石
0
星屑
110
在线时间
49 小时
注册时间
2013-8-9
帖子
75
跳转到指定楼层
1
发表于 2015-8-23 10:33:32 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
RT,借助脚本达成了截图存档,然后在标题画面读档是可以的,菜单的读档却怎么点都没反应······

顺便贴上我修改的脚本部分······求各位指点迷津······
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_MenuCommand
  4. #------------------------------------------------------------------------------
  5. #  菜单画面中显示指令的窗口
  6. #==============================================================================
  7.   #--------------------------------------------------------------------------
  8.   # ● 生成指令列表
  9.   #--------------------------------------------------------------------------
  10.   def make_command_list
  11.     add_load_command
  12.   end
  13.   #--------------------------------------------------------------------------
  14.   # ● 添加读档指令
  15.   #--------------------------------------------------------------------------
  16.   def add_load_command
  17.     add_command(Vocab::continue, :continue, continue_enabled)
  18.   end
  19.   #--------------------------------------------------------------------------
  20.   # ● 获取读档的有效状态
  21.   #--------------------------------------------------------------------------
  22.   def continue_enabled
  23.     DataManager.save_file_exists?
  24.   end
复制代码
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Scene_Menu
  4. #------------------------------------------------------------------------------
  5. #  菜单画面
  6. #==============================================================================
  7.   #--------------------------------------------------------------------------
  8.   # ● 生成指令窗口
  9.   #--------------------------------------------------------------------------
  10.   def create_command_window
  11.     @command_window = Window_MenuCommand.new
  12.     @command_window.set_handler(:load,method(:command_load))
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 指令“读档”
  16.   #--------------------------------------------------------------------------
  17.   def command_load
  18.     SceneManager.call(Scene_Load)
  19.   end
复制代码
  1. #==============================================================================
  2. # [PS0]截图存档
  3. #      Window_SaveFile_Plus
  4. #------------------------------------------------------------------------------
  5. #     一种带有截图的存档,同时可以自定义存档数量。
  6. #==============================================================================
  7. # [核心脚本]
  8. #    - 快速储存Bitmap的Marshal         By 柳之一
  9. #------------------------------------------------------------------------------
  10. # [更新记录]
  11. #    - 2012.01.28 By 各种压力的猫君
  12. #      * 去掉效率较差的双线性缩放算法;
  13. #      * 新增存档管理功能(F5键,复制/移动/删除存档)
  14. #    - 2011.12.27 By 各种压力的猫君
  15. #      * 补上截图阴影;
  16. #      * 新增“不缩放”截图(推荐使用,尤其是大分辨率);
  17. #      * 修正选择不存在的存档时存档列表窗口卡死以及奇怪的SE;
  18. #      * 新增“存档中”提示窗口、覆盖存档提示、删除存档功能(Z键,对应键盘D)
  19. #    - 2011.12.26 By 各种压力的猫君
  20. #      * 功能齐全的测试版
  21. #    - 2011.12.16 By 各种压力的猫君
  22. #      * 移植至RGSS3,遵循PS0协议;
  23. #      * 丰富自定义选项,整合双线性插值算法精简版
  24. #    - 2008.05.26 By 沉影不器
  25. #      * 蓝本(VX新截图存档)
  26. #------------------------------------------------------------------------------
  27. # [使用方法]
  28. #    - 将本脚本插入到MAIN以上
  29. #    - 删除原Scene_File、Window_SaveFile(或确保本脚本位于上述两个脚本以下)
  30. #==============================================================================
  31. $_PS0 = {} if $_PS0 == nil  
  32. $_PS0["Window_SaveFile_Plus"] = 20120128
  33. #==============================================================================
  34. # [PS0] 通用配置模块  
  35. #==============================================================================
  36. module PS0
  37.   module Window_SaveFile_Plus
  38.    
  39.     # 最大存档数(范围正整数)
  40.     MAX_SAVE = 18
  41.    
  42.     # 存档目录(默认值 "Saves/";根目录 "")
  43.     SAVE_DIR = "Saves/"   
  44.    
  45.     # 无存档时显示的文字
  46.     NO_DATA  = "无存档"
  47.    
  48.     # 保存时显示的信息
  49.     SAVE_NOW = "存档中..."
  50.    
  51.     # 复制存档时的帮助文字
  52.     HELP_COPY = "要复制到哪个位置?"
  53.    
  54.     # 移动存档时的帮助文字
  55.     HELP_MOVE = "要移动到哪个位置?"
  56.    
  57.     # 是否显示存档中窗口(true:显示;false:不显示)
  58.     # - 分辨率较大时建议显示
  59.     SHOW_SAVE_NOW = false
  60.    
  61.     # 截图缩放使用的插值算法
  62.     # - "NN" 最邻近(速度最快,质量最差,RM默认算法)
  63.     # - "NZ" 不缩放(速度快,质量好,以主角为中心切边,非全屏)
  64.     Zoom_Type = "NZ"
  65.    
  66.     # 双线性插值能获得更好的截图缩放质量,但所需时间较最邻近插值更长。
  67.     # 缩略图尺寸(范围整数,单位像素)
  68.     # - VA默认分辨率(544×416)推荐使用340×260
  69.     # - VA最大分辨率(640×480)推荐使用425×325
  70.     # - 本脚本兼容分辨率解放,窗口大小将自动计算。
  71.     #   请自行计算截图分辨率,注意要确保宽高比一致,
  72.     #   若使用“不缩放”模式则可以不保持一致。
  73.     Thumbnail_Width  = 340  # 宽度
  74.     Thumbnail_Height = 260  # 高度
  75.    
  76.     # 缩略图位置微调(范围整数,单位像素)
  77.     Thumbnail_ox = -2    # 横向
  78.     Thumbnail_oy = -2-32 # 纵向
  79.    
  80.     # 各窗口切换时的渐变帧数
  81.     TRANS_DURATION = 5
  82.    
  83.   end
  84. end
  85. #==============================================================================
  86. # [核心脚本] 快速储存Bitmap的Marshal By 柳之一
  87. #==============================================================================
  88. class Font
  89.   def marshal_dump
  90.   end
  91.   def marshal_load(obj)
  92.   end
  93. end
  94. class Bitmap
  95.   RtlMoveMemory_pi = Win32API.new('kernel32', 'RtlMoveMemory', 'pii', 'i')
  96.   RtlMoveMemory_ip = Win32API.new('kernel32', 'RtlMoveMemory', 'ipi', 'i')
  97.   def _dump(limit)
  98.     data = "rgba" * width * height
  99.     RtlMoveMemory_pi.call(data, address, data.length)
  100.     [width, height, Zlib::Deflate.deflate(data)].pack("LLa*")
  101.   end
  102.   def self._load(str)
  103.     w, h, zdata = str.unpack("LLa*")
  104.     b = self.new(w, h)
  105.     RtlMoveMemory_ip.call(b.address, Zlib::Inflate.inflate(zdata), w * h * 4)
  106.     return b
  107.   end
  108.   def address
  109.     buffer, ad = "rgba", object_id * 2 + 16
  110.     RtlMoveMemory_pi.call(buffer, ad, 4)
  111.     ad = buffer.unpack("L")[0] + 8
  112.     RtlMoveMemory_pi.call(buffer, ad, 4)
  113.     ad = buffer.unpack("L")[0] + 16
  114.     RtlMoveMemory_pi.call(buffer, ad, 4)
  115.     return buffer.unpack("L")[0]
  116.   end
  117. end
  118. #==============================================================================
  119. # ■ Game_Temp
  120. #==============================================================================
  121. class Game_Temp
  122.   attr_accessor :save_bitmap
  123.   attr_accessor :save_snapshoot
  124.   alias new_initialize initialize
  125.   def initialize
  126.     new_initialize
  127.     @save_bitmap = Bitmap.new(1, 1)
  128.     @save_snapshoot = Bitmap.new(1, 1)
  129.   end
  130. end
  131. #==============================================================================
  132. # ■ SceneManager
  133. #==============================================================================
  134. module SceneManager
  135.   def self.snapshot_for_save
  136.     $game_temp.save_bitmap = Graphics.snap_to_bitmap
  137.     unless FileTest.exist?(PS0::Window_SaveFile_Plus::SAVE_DIR)
  138.       Dir.mkdir(PS0::Window_SaveFile_Plus::SAVE_DIR)
  139.     end
  140.   end
  141. end
  142. #==============================================================================
  143. # ■ Scene_Map
  144. #==============================================================================
  145. class Scene_Map < Scene_Base
  146.   alias save_terminate terminate
  147.   def terminate
  148.     SceneManager.snapshot_for_save
  149.     save_terminate
  150.   end
  151. end
  152. #==============================================================================
  153. # ■ DataManager
  154. #==============================================================================
  155. module DataManager
  156.   def self.save_file_exists?
  157.     !Dir.glob(PS0::Window_SaveFile_Plus::SAVE_DIR + 'Save*.rvdata2').empty?
  158.   end
  159.   def self.make_filename(index)
  160.     sprintf(PS0::Window_SaveFile_Plus::SAVE_DIR + "Save%02d.rvdata2", index + 1)
  161.   end
  162.   #--------------------------------------------------------------------------
  163.   # ● セーブヘッダの作成
  164.   #--------------------------------------------------------------------------
  165.   def self.make_save_header
  166.     d_rect = Rect.new(0, 0, PS0::Window_SaveFile_Plus::Thumbnail_Width,
  167.                             PS0::Window_SaveFile_Plus::Thumbnail_Height)
  168.     case PS0::Window_SaveFile_Plus::Zoom_Type
  169.     when "NN"
  170.       s_rect = $game_temp.save_bitmap.rect
  171.       $game_temp.save_snapshoot = Bitmap.new(d_rect.width, d_rect.height)
  172.       $game_temp.save_snapshoot.stretch_blt(d_rect, $game_temp.save_bitmap, s_rect)
  173.     when "NZ"
  174.       x = [[$game_player.screen_x - d_rect.width/2, 0].max, Graphics.width].min
  175.       y = [[$game_player.screen_y - d_rect.height/2, 0].max, Graphics.height].min
  176.       s_rect = Rect.new(x, y, d_rect.width, d_rect.height)
  177.       $game_temp.save_snapshoot = Bitmap.new(d_rect.width, d_rect.height)
  178.       $game_temp.save_snapshoot.blt(0, 0, $game_temp.save_bitmap, s_rect)
  179.     end
  180.     header = {}
  181.     header[:characters] = $game_party.characters_for_savefile
  182.     header[:playtime_s] = $game_system.playtime_s
  183.     header[:snapshoot]  = $game_temp.save_snapshoot
  184.     header
  185.   end
  186.   #--------------------------------------------------------------------------
  187.   # ● セーブの実行
  188.   #--------------------------------------------------------------------------
  189.   def self.save_game(index)
  190.     saving_window = Window_Saving.new
  191.     Graphics.update
  192.     begin
  193.       save_game_without_rescue(index)
  194.     rescue
  195.        delete_save_file(index)
  196.        false
  197.     end
  198.     saving_window.dispose
  199.     return true
  200.   end
  201. end
  202. #==============================================================================
  203. # ■ Window_Yes_Or_No
  204. #------------------------------------------------------------------------------
  205. #  提供“是”、“否”两个选项的窗口(替换、删除存档用)
  206. #==============================================================================
  207. class Window_Yes_Or_No < Window_HorzCommand
  208.   #--------------------------------------------------------------------------
  209.   # ● オブジェクト初期化
  210.   #--------------------------------------------------------------------------
  211.   def initialize(yes, no)
  212.     @yes = yes
  213.     @no = no
  214.     super(130, 0)
  215.     self.visible = false
  216.     self.active = false
  217.     @index = 0
  218.   end
  219.   #--------------------------------------------------------------------------
  220.   # ● 桁数の取得
  221.   #--------------------------------------------------------------------------
  222.   def col_max
  223.     return 2
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   # ● コマンドリストの作成
  227.   #--------------------------------------------------------------------------
  228.   def make_command_list
  229.     add_command(@yes,   :yes)
  230.     add_command(@no,    :cancel)
  231.   end
  232.   #--------------------------------------------------------------------------
  233.   # ● 決定ボタンが押されたときの処理
  234.   #--------------------------------------------------------------------------
  235.   def process_ok
  236.     Input.update
  237.     call_ok_handler
  238.   end
  239.   #--------------------------------------------------------------------------
  240.   # ● 按下取消键时的处理
  241.   #--------------------------------------------------------------------------
  242.   def process_cancel
  243.     Input.update
  244.     call_cancel_handler
  245.   end
  246.   #--------------------------------------------------------------------------
  247.   # ● 启用窗口
  248.   #--------------------------------------------------------------------------
  249.   def activate
  250.     temp = self.y + self.height - Graphics.height
  251.     if temp > 0
  252.       self.y -= (temp + 12)
  253.     end
  254.     self.active = true
  255.     self
  256.   end
  257. end
  258. #==============================================================================
  259. # ■ Window_Saving
  260. #------------------------------------------------------------------------------
  261. #  显示保存信息的窗口
  262. #==============================================================================
  263. class Window_Saving < Window_Base
  264.   #--------------------------------------------------------------------------
  265.   # ● オブジェクト初期化
  266.   #--------------------------------------------------------------------------
  267.   def initialize
  268.     w = PS0::Window_SaveFile_Plus::SAVE_NOW.length * 16 + 32
  269.     x = (Graphics.width - w)/2
  270.     y = (Graphics.height - fitting_height(1))/2
  271.     super(x, y, w, fitting_height(1))
  272.     self.visible = PS0::Window_SaveFile_Plus::SHOW_SAVE_NOW
  273.     draw_text_ex(4, 0, PS0::Window_SaveFile_Plus::SAVE_NOW)
  274.   end
  275. end
  276. #==============================================================================
  277. # ■ Window_SaveManagerCommand
  278. #------------------------------------------------------------------------------
  279. #  存档管理窗口
  280. #==============================================================================
  281. class Window_SaveManagerCommand < Window_Command
  282.   #--------------------------------------------------------------------------
  283.   # ● 初始化对象
  284.   #--------------------------------------------------------------------------
  285.   def initialize(*args)
  286.     @copy, @move, @delete, @cancel = args[0..3]
  287.     super(130, 0)
  288.     self.visible = false
  289.     self.active = false
  290.     @index = 0
  291.   end
  292.   #--------------------------------------------------------------------------
  293.   # ● 获取窗口的宽度
  294.   #--------------------------------------------------------------------------
  295.   def window_width
  296.     return 100
  297.   end
  298.   #--------------------------------------------------------------------------
  299.   # ● 获取项目数
  300.   #--------------------------------------------------------------------------
  301.   def item_max
  302.     return 4
  303.   end
  304.   #--------------------------------------------------------------------------
  305.   # ● 生成指令列表
  306.   #--------------------------------------------------------------------------
  307.   def make_command_list
  308.     add_command(@copy,   :copy  )
  309.     add_command(@move,   :move  )
  310.     add_command(@delete, :delete)
  311.     add_command(@cancel, :cancel)
  312.   end
  313.   #--------------------------------------------------------------------------
  314.   # ● 按下确定键时的处理
  315.   #--------------------------------------------------------------------------
  316.   def process_ok
  317.     Input.update
  318.     call_ok_handler
  319.   end
  320.   #--------------------------------------------------------------------------
  321.   # ● 启用窗口
  322.   #--------------------------------------------------------------------------
  323.   def activate
  324.     temp = self.y + self.height - Graphics.height
  325.     if temp > 0
  326.       self.y -= (temp + 12)
  327.     end
  328.     self.active = true
  329.     self
  330.   end
  331. end
  332. #==============================================================================
  333. # ■ Window_FileCommand
  334. #------------------------------------------------------------------------------
  335. #  截图存档左侧的选择窗口。
  336. #==============================================================================
  337. class Window_FileCommand < Window_Command
  338.   #--------------------------------------------------------------------------
  339.   # ● オブジェクト初期化
  340.   #--------------------------------------------------------------------------
  341.   def initialize
  342.     super(0, 0)
  343.   end
  344.   #--------------------------------------------------------------------------
  345.   # ● ウィンドウ幅の取得
  346.   #--------------------------------------------------------------------------
  347.   def window_height
  348.     return Graphics.height-fitting_height(1)
  349.   end
  350.   #--------------------------------------------------------------------------
  351.   # ● 表示行数の取得
  352.   #--------------------------------------------------------------------------
  353.   def visible_line_number
  354.     item_max
  355.   end
  356.   #--------------------------------------------------------------------------
  357.   # ● コマンドリストの作成
  358.   #--------------------------------------------------------------------------
  359.   def make_command_list
  360.     add_main_commands
  361.   end
  362.   #--------------------------------------------------------------------------
  363.   # ● 主要コマンドをリストに追加
  364.   #--------------------------------------------------------------------------
  365.   def add_main_commands
  366.     for i in 1..PS0::Window_SaveFile_Plus::MAX_SAVE
  367.       if i < 10
  368.         text = Vocab::File + " 0" + i.to_s
  369.       else
  370.         text = Vocab::File + " " + i.to_s
  371.       end
  372.       add_command(text, :file)
  373.     end
  374.   end
  375.   #--------------------------------------------------------------------------
  376.   # ● 決定ボタンが押されたときの処理
  377.   #--------------------------------------------------------------------------
  378.   def process_ok
  379.   end
  380. end
  381. #==============================================================================
  382. # ■ Window_SaveFile
  383. #------------------------------------------------------------------------------
  384. #  セーブ画面およびロード画面で表示する、セーブファイルのウィンドウです。
  385. #==============================================================================
  386. class Window_SaveFile < Window_Base
  387.   #--------------------------------------------------------------------------
  388.   # ● オブジェクト初期化
  389.   #     index : セーブファイルのインデックス
  390.   #--------------------------------------------------------------------------
  391.   def initialize(index)
  392.     super(160, 0, Graphics.width-160, Graphics.height-fitting_height(1))
  393.     @file_index = index
  394.     @selected = true
  395.     refresh
  396.   end
  397.   #--------------------------------------------------------------------------
  398.   # ● リフレッシュ
  399.   #--------------------------------------------------------------------------
  400.   def refresh
  401.     contents.clear
  402.     change_color(normal_color)
  403.     w = (self.width-PS0::Window_SaveFile_Plus::Thumbnail_Width-16)/2
  404.     h = (self.height-PS0::Window_SaveFile_Plus::Thumbnail_Height-16)/2
  405.     width  = w + PS0::Window_SaveFile_Plus::Thumbnail_ox
  406.     height = h + PS0::Window_SaveFile_Plus::Thumbnail_oy
  407.     draw_shadow(width+5, height+5)
  408.     draw_text((self.width-32-PS0::Window_SaveFile_Plus::NO_DATA.length*16)/2,
  409.               self.height/2-32, PS0::Window_SaveFile_Plus::NO_DATA.length*32,
  410.               line_height, PS0::Window_SaveFile_Plus::NO_DATA)
  411.     draw_party_characters(32, Graphics.height-fitting_height(1)-32)
  412.     draw_playtime(-10, contents.height - line_height-10, contents.width - 4, 2)
  413.     draw_snapshoot(width, height)
  414.   end
  415.   #--------------------------------------------------------------------------
  416.   # ● パーティキャラの描画
  417.   #--------------------------------------------------------------------------
  418.   def draw_party_characters(x, y)
  419.     header = DataManager.load_header(@file_index)
  420.     return unless header
  421.     header[:characters].each_with_index do |data, i|
  422.       draw_character(data[0], data[1], x + i * 48, y)
  423.     end
  424.   end
  425.   #--------------------------------------------------------------------------
  426.   # ● プレイ時間の描画
  427.   #--------------------------------------------------------------------------
  428.   def draw_playtime(x, y, width, align)
  429.     header = DataManager.load_header(@file_index)
  430.     return unless header
  431.     draw_text(x, y, width, line_height, header[:playtime_s], 2)
  432.   end
  433.   #--------------------------------------------------------------------------
  434.   # ● 绘制截图
  435.   #--------------------------------------------------------------------------
  436.   def draw_snapshoot(x, y)
  437.     header = DataManager.load_header(@file_index)
  438.     return unless header
  439.     bitmap = header[:snapshoot]
  440.     contents.blt(x, y, bitmap, bitmap.rect)
  441.     bitmap.dispose
  442.   end
  443.   #--------------------------------------------------------------------------
  444.   # ● 绘制阴影
  445.   #--------------------------------------------------------------------------
  446.   def draw_shadow(x, y)
  447.     header = DataManager.load_header(@file_index)
  448.     return unless header
  449.     contents.fill_rect(x, y, PS0::Window_SaveFile_Plus::Thumbnail_Width,
  450.                              PS0::Window_SaveFile_Plus::Thumbnail_Height, Color.new(0, 0, 0))
  451.     contents.blur
  452.   end
  453. end
  454. #==============================================================================
  455. # ■ Scene_File
  456. #------------------------------------------------------------------------------
  457. #  セーブ画面とロード画面の共通処理を行うクラスです。
  458. #==============================================================================
  459. class Scene_File < Scene_MenuBase
  460.   #--------------------------------------------------------------------------
  461.   # ● 開始処理
  462.   #--------------------------------------------------------------------------
  463.   def start
  464.     super
  465.     create_help_window
  466.     create_savefile_viewport
  467.     create_command_window
  468.     create_savefile_window
  469.     create_manager_window
  470.     create_replace_window
  471.     create_delete_window
  472.   end
  473.   #--------------------------------------------------------------------------
  474.   # ● 終了処理
  475.   #--------------------------------------------------------------------------
  476.   def terminate
  477.     super
  478.     @savefile_viewport.dispose
  479.     @savefile_window.dispose
  480.     @command_window.dispose
  481.     @window_manager.dispose
  482.     @window_replace.dispose
  483.     @window_delete.dispose
  484.   end
  485.   #--------------------------------------------------------------------------
  486.   # ● フレーム更新
  487.   #--------------------------------------------------------------------------
  488.   def update
  489.     super
  490.     update_savefile_selection
  491.   end
  492.   #--------------------------------------------------------------------------
  493.   # ● 创建替换窗口
  494.   #--------------------------------------------------------------------------
  495.   def create_replace_window
  496.     @window_replace = Window_Yes_Or_No.new("替换", "取消")
  497.     @window_replace.set_handler(:yes,    method(:do_replace))
  498.     @window_replace.set_handler(:cancel, method(:do_cancel))
  499.   end
  500.   #--------------------------------------------------------------------------
  501.   # ● 创建删除窗口
  502.   #--------------------------------------------------------------------------
  503.   def create_delete_window
  504.     @window_delete  = Window_Yes_Or_No.new("删除", "取消")
  505.     @window_delete.set_handler(:yes,    method(:do_delete))
  506.     @window_delete.set_handler(:cancel, method(:do_return_manager))
  507.     @window_delete.x += 40
  508.   end
  509.   #--------------------------------------------------------------------------
  510.   # ● 创建管理窗口
  511.   #--------------------------------------------------------------------------
  512.   def create_manager_window
  513.     @window_manager = Window_SaveManagerCommand.new("复制", "移动", "删除", "取消")
  514.     @window_manager.set_handler(:copy  , method(:on_copy?))
  515.     @window_manager.set_handler(:move  , method(:on_move?))
  516.     @window_manager.set_handler(:delete, method(:on_delete?))
  517.     @window_manager.set_handler(:cancel, method(:do_cancel))
  518.   end
  519.   #--------------------------------------------------------------------------
  520.   # ● ヘルプウィンドウの作成
  521.   #--------------------------------------------------------------------------
  522.   def create_help_window
  523.     @help_window = Window_Help.new(1)
  524.     @help_window.set_text(help_window_text)
  525.   end
  526.   #--------------------------------------------------------------------------
  527.   # ● ヘルプウィンドウのテキストを取得
  528.   #--------------------------------------------------------------------------
  529.   def help_window_text
  530.     return ""
  531.   end
  532.   #--------------------------------------------------------------------------
  533.   # ● セーブファイルビューポートの作成
  534.   #--------------------------------------------------------------------------
  535.   def create_savefile_viewport
  536.     @savefile_viewport = Viewport.new
  537.     @savefile_viewport.rect.y = @help_window.height
  538.     @savefile_viewport.rect.height -= @help_window.height
  539.   end
  540.   #--------------------------------------------------------------------------
  541.   # ● セーブファイルウィンドウの作成
  542.   #--------------------------------------------------------------------------
  543.   def create_savefile_window
  544.     @savefile_window = Window_SaveFile.new(@index)
  545.     @savefile_window.viewport = @savefile_viewport
  546.   end
  547.   #--------------------------------------------------------------------------
  548.   # ● 生成存档列表窗口
  549.   #--------------------------------------------------------------------------
  550.   def create_command_window
  551.     @command_window = Window_FileCommand.new
  552.     @command_window.index = first_savefile_index
  553.     @index = @command_window.index
  554.     @command_window.viewport = @savefile_viewport
  555.     @command_window.set_handler(:file,      method(:on_savefile_ok))
  556.   end
  557.   #--------------------------------------------------------------------------
  558.   # ● セーブファイル選択の更新
  559.   #--------------------------------------------------------------------------
  560.   def update_savefile_selection
  561.     if @source_index != nil
  562.       if Input.trigger?(:C)
  563.         if @index == @source_index
  564.           Sound.play_buzzer
  565.         elsif FileTest.exist?(DataManager.make_filename(@index))
  566.           Graphics.freeze
  567.           @command_window.deactivate
  568.           @window_replace.y = 72 + @index * 24
  569.           @window_replace.activate
  570.           @window_replace.visible = true
  571.           @window_replace.refresh
  572.           Sound.play_ok
  573.           Graphics.transition(PS0::Window_SaveFile_Plus::TRANS_DURATION)
  574.         else
  575.           return on_copy_ok
  576.         end
  577.       elsif Input.trigger?(:B)
  578.         return do_return_manager
  579.       end
  580.     else
  581.       if Input.trigger?(:C)
  582.         if self.is_a?(Scene_Save) and FileTest.exist?(DataManager.make_filename(@index))
  583.           Graphics.freeze
  584.           @command_window.deactivate
  585.           @window_replace.y = 72 + @index * 24
  586.           @window_replace.activate
  587.           @window_replace.visible = true
  588.           @window_replace.refresh
  589.           Sound.play_ok
  590.           Graphics.transition(PS0::Window_SaveFile_Plus::TRANS_DURATION)
  591.         else
  592.           return on_savefile_ok
  593.         end
  594.       elsif Input.trigger?(:B)
  595.         return on_savefile_cancel
  596.       elsif Input.trigger?(:F5)
  597.         unless @window_manager.active == true or
  598.                @window_delete.active == true or
  599.                @window_replace.active == true
  600.           return on_manager?
  601.         end
  602.       end
  603.     end
  604.     @need_refresh = true if @index != @command_window.index
  605.     if @need_refresh
  606.       Graphics.freeze
  607.       @index = @command_window.index
  608.       @savefile_window.dispose
  609.       create_savefile_window
  610.       @need_refresh = false
  611.       Graphics.transition(PS0::Window_SaveFile_Plus::TRANS_DURATION)
  612.     end
  613.   end
  614.   #--------------------------------------------------------------------------
  615.   # ● セーブファイル[決定]
  616.   #--------------------------------------------------------------------------
  617.   def on_savefile_ok
  618.   end
  619.   #--------------------------------------------------------------------------
  620.   # ● セーブファイル[キャンセル]
  621.   #--------------------------------------------------------------------------
  622.   def on_savefile_cancel
  623.     Sound.play_cancel
  624.     return_scene
  625.   end
  626.   #--------------------------------------------------------------------------
  627.   # ● セーブファイル[決定]
  628.   #--------------------------------------------------------------------------
  629.   def on_copy_ok
  630.     Graphics.freeze
  631.     source_name = DataManager.make_filename(@source_index)
  632.     new_name    = DataManager.make_filename(@index)
  633.     case @source_type
  634.     when "copy"
  635.       # 复制存档文件(API)
  636.       Win32API.new('kernel32',"CopyFileA",'ppl','').call(source_name,new_name,0)
  637.     when "move"
  638.       # 重命名存档
  639.       File.rename(source_name, new_name)
  640.     end
  641.     # 返回
  642.     @help_window.set_text(help_window_text)
  643.     @source_index = nil
  644.     do_return_savelist
  645.   end
  646.   #--------------------------------------------------------------------------
  647.   # ● セーブファイル[复制]
  648.   #--------------------------------------------------------------------------
  649.   def on_copy?
  650.     Graphics.freeze
  651.     @help_window.set_text(PS0::Window_SaveFile_Plus::HELP_COPY)
  652.     @source_index = @index
  653.     @source_type = "copy"
  654.     do_return_savelist
  655.   end
  656.   #--------------------------------------------------------------------------
  657.   # ● セーブファイル[移动]
  658.   #--------------------------------------------------------------------------
  659.   def on_move?
  660.     Graphics.freeze
  661.     @help_window.set_text(PS0::Window_SaveFile_Plus::HELP_MOVE)
  662.     @source_index = @index
  663.     @source_type = "move"
  664.     do_return_savelist
  665.   end
  666.   #--------------------------------------------------------------------------
  667.   # ● セーブファイル[管理]
  668.   #--------------------------------------------------------------------------
  669.   def on_manager?
  670.     if FileTest.exist?(DataManager.make_filename(@index))
  671.       Graphics.freeze
  672.       @command_window.deactivate
  673.       @window_manager.y = 72 + @index * 24
  674.       @window_manager.activate
  675.       @window_manager.visible = true
  676.       @window_manager.refresh
  677.       Sound.play_ok
  678.       Graphics.transition(PS0::Window_SaveFile_Plus::TRANS_DURATION)
  679.     else
  680.       Sound.play_buzzer
  681.     end
  682.   end
  683.   #--------------------------------------------------------------------------
  684.   # ● セーブファイル[删除]
  685.   #--------------------------------------------------------------------------
  686.   def on_delete?
  687.     Graphics.freeze
  688.     @window_manager.deactivate
  689.     @command_window.deactivate
  690.     @window_delete.y = 72 + 72 + @index * 24
  691.     @window_delete.activate
  692.     @window_delete.visible = true
  693.     @window_delete.refresh
  694.     Sound.play_ok
  695.     Graphics.transition(PS0::Window_SaveFile_Plus::TRANS_DURATION)
  696.   end
  697.   #--------------------------------------------------------------------------
  698.   # ● 删除
  699.   #--------------------------------------------------------------------------
  700.   def do_delete
  701.     Graphics.freeze
  702.     File.delete(DataManager.make_filename(@index))
  703.     @window_delete.index  = 0
  704.     @window_manager.index = 0
  705.     @window_delete.visible  = false
  706.     @window_manager.visible = false
  707.     @window_delete.deactivate
  708.     @window_manager.deactivate
  709.     @command_window.activate
  710.     @need_refresh = true
  711.     Sound.play_save
  712.     if DataManager.save_file_exists?
  713.       Graphics.transition(PS0::Window_SaveFile_Plus::TRANS_DURATION)
  714.     else
  715.       return_scene
  716.     end
  717.   end
  718.   #--------------------------------------------------------------------------
  719.   # ● 替换
  720.   #--------------------------------------------------------------------------
  721.   def do_replace
  722.     Graphics.freeze
  723.     if @source_index != nil
  724.       return on_copy_ok
  725.     else
  726.       return on_savefile_ok
  727.     end
  728.     @window_replace.visible = false
  729.     @window_replace.deactivate
  730.     @need_refresh = true
  731.   end
  732.   #--------------------------------------------------------------------------
  733.   # ● 取消
  734.   #--------------------------------------------------------------------------
  735.   def do_cancel
  736.     Graphics.freeze
  737.     Sound.play_cancel
  738.     @window_delete.index  = 0
  739.     @window_replace.index = 0
  740.     @window_manager.index = 0
  741.     @window_delete.visible  = false
  742.     @window_replace.visible = false
  743.     @window_manager.visible = false
  744.     @window_delete.deactivate
  745.     @window_replace.deactivate
  746.     @window_manager.deactivate
  747.     @command_window.activate
  748.     Graphics.transition(PS0::Window_SaveFile_Plus::TRANS_DURATION)
  749.   end
  750.   #--------------------------------------------------------------------------
  751.   # ● 返回管理菜单
  752.   #--------------------------------------------------------------------------
  753.   def do_return_manager
  754.     Graphics.freeze
  755.     @help_window.set_text(help_window_text)
  756.     @command_window.index = @source_index unless @source_index == nil
  757.     @source_index = nil
  758.     @source_type = nil
  759.     @command_window.deactivate
  760.     @window_delete.index  = 0
  761.     @window_replace.index = 0
  762.     @window_delete.visible  = false
  763.     @window_replace.visible = false
  764.     @window_delete.deactivate
  765.     @window_replace.deactivate
  766.     @window_manager.y = 72 + @index * 24
  767.     @window_manager.activate
  768.     @window_manager.visible = true
  769.     @window_manager.refresh
  770.     Sound.play_cancel
  771.     Graphics.transition(PS0::Window_SaveFile_Plus::TRANS_DURATION)
  772.   end
  773.   #--------------------------------------------------------------------------
  774.   # ● 返回文件列表(复制、移动 用)
  775.   #--------------------------------------------------------------------------
  776.   def do_return_savelist
  777.     @window_manager.visible = false
  778.     @window_manager.deactivate
  779.     @command_window.activate
  780.     @need_refresh = true
  781.     Sound.play_ok
  782.   end
  783. end
  784. #==============================================================================
  785. # [PS0] End of Script
  786. #==============================================================================
复制代码

Lv1.梦旅人

梦石
0
星屑
110
在线时间
49 小时
注册时间
2013-8-9
帖子
75
4
 楼主| 发表于 2015-8-23 13:38:52 | 只看该作者
喵呜喵5 发表于 2015-8-23 12:57
Window_MenuCommand
17行改成
add_command(Vocab::continue, :load, continue_enabled)

试过了······还是怎么按都没反应( TдT)

点评

新人都这么会卖萌。。。  发表于 2015-8-23 15:25
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
49 小时
注册时间
2013-8-9
帖子
75
3
 楼主| 发表于 2015-8-23 13:31:10 | 只看该作者
喵呜喵5 发表于 2015-8-23 12:57
Window_MenuCommand
17行改成
add_command(Vocab::continue, :load, continue_enabled)

谢谢指点~我马上去试试~
开头结尾都在 我只不过是把我改的部分摘出来了······(ΦωΦ)
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21584
在线时间
9407 小时
注册时间
2012-6-19
帖子
7117

开拓者短篇九导演组冠军

2
发表于 2015-8-23 12:57:51 | 只看该作者
Window_MenuCommand
17行改成
add_command(Vocab::continue, :load, continue_enabled)

另外实际的脚本中应该开头的 class Window_MenuCommand 和 结尾的 end 都在吧?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-1 10:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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