Project1

标题: [PS0]截图存档 v20120216【VX新截图存档移植增强版】 [打印本页]

作者: 各种压力的猫君    时间: 2011-12-26 19:04
标题: [PS0]截图存档 v20120216【VX新截图存档移植增强版】
本帖最后由 各种压力的猫君 于 2012-2-18 23:02 编辑

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

↑ 覆盖提示

↑ 存档管理(不用担心菜单会跑出屏幕范围,会自动进行坐标修正)

↑ 复制/移动 存档也是有覆盖提示的(如果源文件和目标文件相同则会发出错误提示音

↑ 自适应分辨率,就算改了DLL突破分辨率上限也一样兼容(*需要自行更改截图尺寸)

与 VX新截图存档 By 沉影不器 的异同
①自适应分辨率
②自定义选项更丰富
③拥有多种截图算法(推荐使用“不缩放”算法)
④拥有覆盖存档提示、保存中提示
⑤拥有存档管理(复制、移动、删除)功能,删除最后一个存档会自动退会前一场景(Scene)
⑥当然,拥有 VX新截图存档 By 沉影不器 的全部机能

详细使用方法请参看脚本头部注释。
作者: 光的圆周率    时间: 2011-12-26 19:05
哗~很厉害的脚本,收下了 -w-
作者: 皮卡星    时间: 2011-12-26 19:14
本帖最后由 皮卡星 于 2011-12-26 19:14 编辑

还是WORA大神的好-w=(众:那是VX的吧,pia
作者: 拉羅卡特    时间: 2011-12-26 19:18
这个我应该很需要 目前还搞不太董VA阿.....
作者: lyttmonkey    时间: 2011-12-26 19:38
好,支持!!@各种压力的猫君推荐几个比较火的跟ace有关的站点吧中外文皆可
作者: 各种压力的猫君    时间: 2011-12-26 19:46
lyttmonkey 发表于 2011-12-26 19:38
好,支持!!@各种压力的猫君推荐几个比较火的跟ace有关的站点吧中外文皆可 ...
推荐几个比较火的跟ace有关的站点吧中外文皆可

 我真不知道 = = b 呼叫帮手:@月夜神音


阴影搞定……三天后统一更新
作者: 退屈£无聊    时间: 2011-12-26 20:02
本帖最后由 退屈£无聊 于 2011-12-26 20:04 编辑

刚才没看懂,现在才明白是移植……
方正喵呜体太萌了>.<
双线性插值这截图方式让我OTL了……
作者: gyzjj71    时间: 2012-1-25 02:25
猫尊载图上字体是什么啊?
作者: 很苦恼的诺诺    时间: 2012-1-26 18:43
诶?怎么删除呢?……
作者: 各种压力的猫君    时间: 2012-1-28 05:03
更新20120128版,一次较大的更新,完善了存档管理功能,稍微顶一下。

@serena718 可以参考下存档管理(这脚本结构写的有点烂 = = b 凑合看吧)
作者: 傲视天涯    时间: 2012-2-3 12:36
这是怎么会事呢??


‘‘

我就是用VA啊?我晕了...


──傲视天涯于2012-2-3 18:02补充以上内容’’


‘‘

好了谢谢


──傲视天涯于2012-2-3 18:20补充以上内容’’


‘‘

好了谢谢,原来是脚本存放位置问题


──傲视天涯于2012-2-3 18:21补充以上内容’’
作者: kswy    时间: 2012-2-14 11:02
没有复制代码的选项啊,用不了啊
作者: 迷糊的安安    时间: 2012-2-16 01:55
报告一个小BUG:在地图边缘存档时,截图内会显示无存档字样……很容易吓到玩家啊……

作者: felixlvx    时间: 2012-2-16 08:53
本帖最后由 felixlvx 于 2012-2-16 08:58 编辑

LZ复制代码选项确实用不了啊,别人的脚本上都是这样的,

脚本都是黑色字体,点一下复制代码就能自动复制,但是LZ的脚本是这样的

字体颜色和脚本编辑器里一样而且复制代码四个字不能点击,难道有第二种复制代码的方法吗?求指点
作者: 冰舞蝶恋    时间: 2012-2-16 12:13
va的截图存档也出来了呢...
作者: 黑化の鼠标    时间: 2012-2-16 12:31
额.....不是ACE的啊....看着压力好大....好想不顾一切的扔进ACE去让脚本崩溃!!!!!!
(↑以上只是个人胡言乱语,请勿当真)
作者: kswy    时间: 2012-2-16 18:59
本帖最后由 kswy 于 2012-2-16 19:00 编辑

换什么浏览器可以复制代码啊,我换了360浏览器,qq浏览器,ie浏览器都无法复制
作者: 彩虹色的猪    时间: 2012-2-18 22:19
貌似那两个脚本不能删,一删就报错了,不删貌似也能成功运行截图存档
作者: 李铨玮    时间: 2012-2-24 19:08
好东西,收下了

作者: herrygzl    时间: 2012-2-26 15:17
很强大!!收下喽!!
作者: alann    时间: 2012-3-10 20:40
本帖最后由 alann 于 2012-3-11 00:43 编辑

编辑:
原来是脚本位置跟原来的顺序不一样,要调成本来的位置……
作者: [email protected]    时间: 2012-3-10 22:00
代码可以改下不    复制不了
作者: 负零    时间: 2012-3-13 02:52
请问,能不能提供一个修改存档SKIN的方法,因为不想让他和游戏中的窗口一致。望赐教
作者: tang19990919    时间: 2012-3-27 19:40
我点复制代码按钮根本复制不了,一气之下手动复制,但结果是全部在一行,全变成注释了
作者: poiuy12348609    时间: 2012-3-28 17:57
kswy 发表于 2012-2-16 18:59
换什么浏览器可以复制代码啊,我换了360浏览器,qq浏览器,ie浏览器都无法复制 ...

用谷歌大概可以
作者: gagbgc    时间: 2012-4-3 17:02
226行 class Scene_File < Scene_Base 出问题
作者: tang19990919    时间: 2012-4-19 00:23
既然大家都反映代码无法复制,我就把代码粘贴出来就是了……
  1. #==============================================================================
  2. # [PS0]截图存档
  3. #      Window_SaveFile_Plus
  4. #------------------------------------------------------------------------------
  5. #     一种带有截图的存档,同时可以自定义存档数量。
  6. #==============================================================================
  7. # [核心脚本]
  8. #    - 快速储存Bitmap的Marshal         By 柳之一
  9. #------------------------------------------------------------------------------
  10. # [更新记录]
  11. #    - 2012.02.16 By 各种压力的猫君
  12. #      * 修正地图边缘时截图不完整的错误
  13. #    - 2012.01.28 By 各种压力的猫君
  14. #      * 去掉效率较差的双线性缩放算法;
  15. #      * 新增存档管理功能(F5键,复制/移动/删除存档)
  16. #    - 2011.12.27 By 各种压力的猫君
  17. #      * 补上截图阴影;
  18. #      * 新增“不缩放”截图(推荐使用,尤其是大分辨率);
  19. #      * 修正选择不存在的存档时存档列表窗口卡死以及奇怪的SE;
  20. #      * 新增“存档中”提示窗口、覆盖存档提示、删除存档功能(Z键,对应键盘D)
  21. #    - 2011.12.26 By 各种压力的猫君
  22. #      * 功能齐全的测试版
  23. #    - 2011.12.16 By 各种压力的猫君
  24. #      * 移植至RGSS3,遵循PS0协议;
  25. #      * 丰富自定义选项,整合双线性插值算法精简版
  26. #    - 2008.05.26 By 沉影不器
  27. #      * 蓝本(VX新截图存档)
  28. #------------------------------------------------------------------------------
  29. # [使用方法]
  30. #    - 删除原Scene_File、Window_SaveFile 并将本脚本插入到原Scene_File位置。
  31. #    - 或者直接将本脚本插入到MAIN以上,并确保本脚本位于上述两个脚本以下。
  32. #==============================================================================
  33. $_PS0 = {} if $_PS0 == nil  
  34. $_PS0["Window_SaveFile_Plus"] = 20120216
  35. #==============================================================================
  36. # [PS0] 通用配置模块  
  37. #==============================================================================
  38. module PS0
  39.   module Window_SaveFile_Plus

  40.     # 最大存档数(范围正整数)
  41.     MAX_SAVE = 18

  42.     # 存档目录(默认值 "Saves/";根目录 "")
  43.     SAVE_DIR = "Saves/"   

  44.     # 无存档时显示的文字
  45.     NO_DATA  = "无存档"

  46.     # 保存时显示的信息
  47.     SAVE_NOW = "存档中..."

  48.     # 复制存档时的帮助文字
  49.     HELP_COPY = "要复制到哪个位置?"

  50.     # 移动存档时的帮助文字
  51.     HELP_MOVE = "要移动到哪个位置?"

  52.     # 是否显示存档中窗口(true:显示;false:不显示)
  53.     # - 分辨率较大时建议显示
  54.     SHOW_SAVE_NOW = false

  55.     # 截图缩放使用的插值算法
  56.     # - "NN" 最邻近(速度最快,质量最差,RM默认算法)
  57.     # - "NZ" 不缩放(速度快,质量好,以主角为中心切边,非全屏)
  58.     Zoom_Type = "NZ"

  59.     # 双线性插值能获得更好的截图缩放质量,但所需时间较最邻近插值更长。
  60.     # 缩略图尺寸(范围整数,单位像素)
  61.     # - VA默认分辨率(544×416)推荐使用340×260
  62.     # - VA最大分辨率(640×480)推荐使用425×325
  63.     # - 本脚本兼容分辨率解放,窗口大小将自动计算。
  64.     #   请自行计算截图分辨率,注意要确保宽高比一致,
  65.     #   若使用“不缩放”模式则可以不保持一致。
  66.     Thumbnail_Width  = 340  # 宽度
  67.     Thumbnail_Height = 260  # 高度

  68.     # 缩略图位置微调(范围整数,单位像素)
  69.     Thumbnail_ox = -2    # 横向
  70.     Thumbnail_oy = -2-32 # 纵向

  71.     # 各窗口切换时的渐变帧数
  72.     TRANS_DURATION = 5

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

作者: ohyee    时间: 2012-5-4 19:19
这个脚本很实用啊!!
崇拜………………
作者: LoHill    时间: 2012-5-12 16:32
报错了……
444行: NoMethodError ?
作者: 白豆腐    时间: 2012-6-22 17:55
好东西,不过“拿”不下来呢??
作者: a2219119    时间: 2012-7-6 14:09
LZ能搞个工程吗?或(图)

360截图20120706140831140.jpg (3.44 KB, 下载次数: 24)

复制代码

复制代码

作者: fish1989612    时间: 2012-7-16 22:07
感谢楼主分享
作者: fanzhoo1    时间: 2012-8-26 17:41
牛逼的脚本 收藏
作者: ′芙兰朵露    时间: 2012-9-17 08:10
最喜欢这个版本的存档了...
话说,字体下载后,怎么在游戏中显示?...

作者: 無名小子    时间: 2012-11-27 13:00
換角色臉圖和行走圖好像會衝突到耶
作者: 遗忘    时间: 2013-1-24 20:43
这个脚本太棒了!感谢!{:2_267:}
作者: cinderelmini    时间: 2013-2-19 15:43
@各种压力的猫君
报虫…………
在复制或者移动存档的时候~
若是覆盖在已有存档位置的话~
出现的“替换”/“取消”窗口在按下“替换”按钮后这个窗口不会消失~~
会与档案列表窗口平行活动~~

目测是不是在返回文件列表(复制、移动 用)  (do_return_savelist)
里面没有将这个窗口的活性灭了?
作者: j433463    时间: 2013-3-10 00:31
本帖最后由 j433463 于 2013-3-10 00:36 编辑

我也报一个虫(貌似不能算是虫)

我用过的几种鼠标脚本,鼠标位置都会比实际截图存档左边的档案选项高一个选项的高度,不会刚好指在目标上,

只有截图存档是这样,其它菜单的选项都与鼠标位置一致,能不能调整一下?

喔,是两个选项高度,如果要存在档案10,鼠标是指在档案08。
作者: 为RPG生    时间: 2013-3-15 12:37
如果队伍人数太多了会显示不出来,还会挡住时间
有屏蔽的方法吗
作者: whitewield    时间: 2013-8-16 17:35
很好用啊,谢谢了,顺便问个问题……
我使用选项开启存档的= =结果截图的时候选项和对话框都出来啦,怎么办呢?如图

无标题.png (168.26 KB, 下载次数: 16)

无标题.png

作者: aa5580263    时间: 2013-8-19 12:05

怎么办
作者: 抖S的二二    时间: 2013-8-31 04:33
可以调用脚本自动存档么,
  比如游戏里某道具使用后自动存档制定存档号。
作者: 我在孤岛等你    时间: 2013-9-2 23:18
可惜与我的鼠标控制脚本发生冲突,用不了。
作者: xx2005531    时间: 2013-9-16 13:05
鼠标控制脚本发生冲突,用不了。 +1

作者: 66rpgmake    时间: 2013-10-20 06:35
太好了,就喜欢这种脚本!
作者: 蓝天下的女孩    时间: 2013-10-28 09:21
本帖最后由 蓝天下的女孩 于 2013-10-28 10:15 编辑

好漂亮好想用啊……

不过一加上这个脚本,角色不能装备任何武器与护甲,连初始装备都脱掉了
武器护甲只在物品里显示,装备里不显示

去掉代码就正常了。。。不过好不想去掉啊啊好漂亮的界面

求解……

==========================

已经自行解决、打扰了

好漂亮的脚本 感谢
作者: 1768788004    时间: 2014-2-23 10:10
正好要用呢。。。。。。
作者: swbsl    时间: 2014-10-17 10:34
感谢分享,做个标记备用。
作者: puresunrpg    时间: 2014-10-18 10:56
看上去挺不赖的呀~
作者: 你栾婶    时间: 2015-6-20 22:06
大触QAQ 求问这种情况下怎么办,我是1024*640分辨率的界面,但是截图存档只能截地图的一角,没有适应分辨率QAQ 有什么解决办法吗TAT

搜狗截图20150620220412.png (285.36 KB, 下载次数: 24)

搜狗截图20150620220412.png

搜狗截图20150620220435.png (120.07 KB, 下载次数: 28)

搜狗截图20150620220435.png

作者: 冷峻逸    时间: 2015-6-20 23:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: 潇潇潇潇潇酱    时间: 2015-8-27 11:11
为什么我显示出来的是日文,QWQ
作者: 1745236314    时间: 2015-9-14 18:56
本帖最后由 1745236314 于 2015-9-14 19:04 编辑


怎么回事!!!!!
发生SystemStackError。 stack level too deep
//---------------------------------
最新消息:
能用了,谢谢楼主分享
作者: 20110228    时间: 2017-6-11 14:26
棒棒哒..........................
作者: 时空v之门    时间: 2018-4-12 13:52
怎么移动存档啊,我就看到有替换和取消
作者: lpqlpqlpq123    时间: 2018-5-6 23:07
十分好用,謝謝大大了
作者: Nil2018    时间: 2019-7-9 11:39
请问脚本可以商用吗?
作者: 糖饯    时间: 2020-3-4 18:23
复制存档真的很适用了!感觉可以来几个脚本组合hh
作者: 子叶子叶    时间: 2020-3-7 17:32
辛苦啦!感谢!
作者: 子叶子叶    时间: 2020-3-7 17:33
辛苦啦!感谢!非常实用呢




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