Project1

标题: 请教关于截图存档的脚本修改 [打印本页]

作者: jkang125    时间: 2011-8-31 22:47
标题: 请教关于截图存档的脚本修改
该脚本的效果如下,但我觉得下面的人物战斗图不好看,有办法把它去掉吗?在脚本的哪里修改?

网上找到的原本的脚本:
  1. class Window_File < Window_Base
  2.   attr_accessor :index
  3.   def initialize(index = 0)
  4.     @backsp = Sprite.new
  5.    # @backsp.bitmap = Bitmap.new("Graphics/Pictures/菜单底图.jpg")
  6.     @backsp.z = 100
  7.     super(160,64,480,416)
  8.     #这行可以不用
  9.     self.contents = Bitmap.new(width - 32, height - 32)
  10.     @index = index
  11.     #这里我要说明一句,之所以用sprite是为了放缩图片
  12.     @sprite = Sprite.new
  13.     @sprite.visible = false
  14.     @sprite.z = 100
  15.     @sp_ch = []
  16.     @sp_ch[0] = Sprite.new
  17.     refresh
  18.   end
  19.   def refresh
  20.     self.contents.clear
  21.     for i in @sp_ch
  22.       i.visible = false
  23.     end
  24.     @sprite.visible = false
  25.     if FileTest.exist?(DIR+"Save#{@index}.rxdata")
  26.       @sprite.visible = true
  27.       if FileTest.exist?(DIR+"Save#{@index}.jpg")
  28.         @sprite.bitmap = Bitmap.new(DIR+"Save#{@index}.jpg")
  29.       else
  30.         self.contents.draw_text(32,64,400,32,"截图似乎有点问题……您搞什么了您?

  31. ")
  32.       end
  33.       @sprite.x = 290
  34.       @sprite.y = 96
  35.       @sprite.z = 998
  36.       @sprite.zoom_x = 0.5
  37.       @sprite.zoom_y = 0.5
  38.       file = File.open(DIR+"Save#{@index}.rxdata", "r")
  39.       @time_stamp = file.mtime
  40.       @characters = Marshal.load(file)
  41.       @frame_count = Marshal.load(file)
  42.       @game_system = Marshal.load(file)
  43.       @game_switches = Marshal.load(file)
  44.       @game_variables = Marshal.load(file)
  45.       @total_sec = @frame_count / Graphics.frame_rate
  46.       file.close

  47.       # 描绘游戏时间
  48.       hour = @total_sec / 60 / 60
  49.       min = @total_sec / 60 % 60
  50.       sec = @total_sec % 60
  51.       time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
  52.       self.contents.font.color = normal_color
  53.       self.contents.draw_text(4, 326, 420, 32, time_string, 2)
  54.       # 描绘时间标记
  55.       self.contents.font.color = normal_color
  56.       time_string = @time_stamp.strftime("%Y/%m/%d %H:%M")
  57.       self.contents.draw_text(4, 356, 420, 32, time_string, 2)
  58.     else
  59.       self.contents.draw_text(32,32,420,32,"这个存档是空的")
  60.     end

  61.   end
  62.   def dispose
  63.     super
  64.     @sprite.dispose
  65.     @backsp.dispose
  66.     for i in @sp_ch
  67.       i.dispose
  68.     end
  69.   end
  70. end


  71. class Window_File2 < Window_Base
  72.   attr_accessor :index
  73.   def initialize(index = 0)
  74.     @backsp = Sprite.new
  75.    # @backsp.bitmap = Bitmap.new("Graphics/Pictures/菜单底图.jpg")
  76.     @backsp.z = 100
  77.     super(160,0,480,480)
  78.     #这行可以不用
  79.     self.contents = Bitmap.new(width - 32, height - 32)
  80.     @index = index
  81.     #这里我要说明一句,之所以用sprite是为了放缩图片
  82.     @sprite = Sprite.new
  83.     @sprite.visible = false
  84.     @sprite.z = 100
  85.     @sp_ch = []
  86.     @sp_ch[0] = Sprite.new
  87.     refresh
  88.   end
  89.   def refresh
  90.     self.contents.clear
  91.     for i in @sp_ch
  92.       i.visible = false
  93.     end
  94.     @sprite.visible = false
  95.     if FileTest.exist?(DIR+"Save#{@index}.rxdata")
  96.       @sprite.visible = true
  97.       if FileTest.exist?(DIR+"Save#{@index}.jpg")
  98.         @sprite.bitmap = Bitmap.new(DIR+"Save#{@index}.jpg")
  99.       else
  100.         self.contents.draw_text(32,64,400,32,"截图似乎有点问题……您搞什么了您?

  101. ")
  102.       end
  103.       @sprite.x = 290
  104.       @sprite.y = 32
  105.       @sprite.z = 998
  106.       @sprite.zoom_x = 0.5
  107.       @sprite.zoom_y = 0.5
  108.       file = File.open(DIR+"Save#{@index}.rxdata", "r")
  109.       @time_stamp = file.mtime
  110.       @characters = Marshal.load(file)
  111.       @frame_count = Marshal.load(file)
  112.       @game_system = Marshal.load(file)
  113.       @game_switches = Marshal.load(file)
  114.       @game_variables = Marshal.load(file)
  115.       @total_sec = @frame_count / Graphics.frame_rate
  116.       file.close
  117.       for i in [email protected]
  118.         @sp_ch[i] = Sprite.new
  119.         @sp_ch[i].visible = true
  120.         testname = @characters[i][2].name+"_f"
  121.         @sp_ch[i].bitmap = Bitmap.new("Graphics/battlers/#{testname}")
  122.         @sp_ch[i].x = 180        
  123.         @sp_ch[i].y = 32 + i*110
  124.         @sp_ch[i].z = 101
  125.       end
  126.       # 描绘游戏时间
  127.       hour = @total_sec / 60 / 60
  128.       min = @total_sec / 60 % 60
  129.       sec = @total_sec % 60
  130.       time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
  131.       self.contents.font.color = normal_color
  132.       self.contents.draw_text(4, 390, 420, 32, time_string, 2)
  133.       # 描绘时间标记
  134.       self.contents.font.color = normal_color
  135.       time_string = @time_stamp.strftime("%Y/%m/%d %H:%M")
  136.       self.contents.draw_text(4, 420, 420, 32, time_string, 2)
  137.     else
  138.       self.contents.draw_text(32,32,420,32,"这个存档是空的")
  139.     end

  140.   end
  141.   def dispose
  142.     super
  143.     @sprite.dispose
  144.     @backsp.dispose
  145.     for i in @sp_ch
  146.       i.dispose
  147.     end
  148.   end
  149. end



  150. $打开自动存档用的开关编号 = 1
  151. $自动存档位置 = 0
  152. $按下F5之后的自动存档的音效 = "Audio/SE/007-System07"
  153. $按下F5之后禁止存档时候的音效 = "Audio/Se/003-System03"
  154. DIR = "Save/"
  155. $打开自动存档开关之后调用的公共事件 = 0 #——默认未定义
  156. $按下F5之后可以存档调用的公共事件 = 0 #——默认未定义
  157. $按下F5之后禁止存档调用的公共事件 = 0 #——默认未定义
  158. class Scene_Map
  159. alias auto_update update
  160. def update
  161. auto_update
  162. #——按下F5的时候自动存档,可以修改为F5,F6,F7,F8,也可以修改成默认按键但是不推荐。
  163. #——注意在不可存档的时候是无效的
  164. if Input.trigger?(Input::F5)
  165.    unless $game_system.map_interpreter.running?
  166.    if $game_system.save_disabled
  167.      Audio.se_play($按下F5之后禁止存档时候的音效)
  168.      $game_temp.common_event_id = $按下F5之后禁止存档调用的公共事件
  169.    else
  170.      Audio.se_play($按下F5之后的自动存档的音效)
  171.      $game_temp.common_event_id = $按下F5之后可以存档调用的公共事件
  172.      auto_save
  173.    end
  174.    end
  175. end
  176. #——当BOSS战之前打开一下定义的开关,即可自动存档
  177. if $game_switches[$打开自动存档用的开关编号] == true
  178.    $game_switches[$打开自动存档用的开关编号] = false
  179.    $game_temp.common_event_id = $打开自动存档开关之后调用的公共事件
  180.    auto_save
  181. end
  182. end
  183. def auto_save
  184. #——这里定义了储存的文件,如果不希望用Save4可以自己修改编号
  185. # 写入存档数据
  186. Screen::shot
  187.      file = File.open( DIR+"Save#{$自动存档位置}.rxdata", "wb")
  188.      auto_save_data(file)
  189.      if FileTest.exist?( DIR+"shot.jpg")
  190.        File.rename( DIR+"shot.jpg", DIR+"Save#{$自动存档位置}.jpg")
  191.      end
  192.      file.close
  193. end
  194. def auto_save_data(file)
  195. #——以下定义内容和Scene_Save的write_save_data(file)完全一样
  196. #——如果你修改过该存档方法,不要忘记用你修改的覆盖这部分内容。
  197. # 生成描绘存档文件用的角色图形
  198. characters = []
  199. for i in 0...$game_party.actors.size
  200.    actor = $game_party.actors[i]
  201.    characters.push([actor.character_name, actor.character_hue, actor])
  202. end
  203. # 写入描绘存档文件用的角色数据
  204. Marshal.dump(characters, file)
  205. # 写入测量游戏时间用画面计数
  206. Marshal.dump(Graphics.frame_count, file)
  207. # 增加 1 次存档次数
  208. $game_system.save_count += 1
  209. # 保存魔法编号
  210. # (将编辑器保存的值以随机值替换)
  211. $game_system.magic_number = $data_system.magic_number
  212. # 写入各种游戏对像
  213. Marshal.dump($game_system, file)
  214. Marshal.dump($game_switches, file)
  215. Marshal.dump($game_variables, file)
  216. Marshal.dump($game_self_switches, file)
  217. Marshal.dump($game_screen, file)
  218. Marshal.dump($game_actors, file)
  219. Marshal.dump($game_party, file)
  220. Marshal.dump($game_troop, file)
  221. Marshal.dump($game_map, file)
  222. Marshal.dump($game_player, file)
  223. end
  224. end







  225. DIR = "Save/"  # 储存文件夹名,请制作游戏时自行建立此文件夹


  226. module Screen  
  227.   @screen = Win32API.new 'screenshot', 'Screenshot', %w(l l l l p l l), ''
  228.   @readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l

  229. p), 'l'
  230.   @findwindow = Win32API.new 'user32', 'FindWindowA', %w(p p), 'l'
  231.   module_function
  232.   def shot(file = "shot", typ = 1)
  233.     # to add the right extension...
  234.     if typ == 0
  235.       typname = ".bmp"
  236.     elsif typ == 1
  237.       typname = ".jpg"
  238.     elsif typ == 2
  239.       typname = ".png"
  240.     end   
  241.     file_index = 0   
  242.     dir = "Save/"   
  243.     # make the filename....
  244.     file_name = dir + file.to_s + typname.to_s   
  245.     # make the screenshot.... Attention dont change anything from here on....
  246.     @screen.call(0,0,640,480,file_name,handel,typ)
  247.   end
  248.   # find the game window...
  249.   def handel
  250.     game_name = "\0" * 256
  251.     @readini.call('Game','Title','',game_name,255,".\\Game.ini")
  252.     game_name.delete!("\0")
  253.     return @findwindow.call('RGSS Player',game_name)
  254.   end
  255. end


  256. class Scene_Menu
  257.   alias shotsave_main main
  258.   def main
  259.     if @menu_index == 0
  260.       Screen::shot
  261.     end   
  262.     shotsave_main
  263.   end
  264. end

  265. class Interpreter
  266.   #--------------------------------------------------------------------------
  267.   # ● 调用存档画面
  268.   #--------------------------------------------------------------------------
  269.   def command_352
  270.     # 设置战斗中断标志
  271.     $game_temp.battle_abort = true
  272.     # 设置调用存档标志
  273.     $game_temp.save_calling = true
  274.     # 推进索引
  275.     @index += 1
  276.     # 结束
  277.     Screen::shot
  278.     return false
  279.   end
  280. end

  281. #==============================================================================
  282. # ■ Scene_Load
  283. #------------------------------------------------------------------------------
  284. #  处理读档画面的类。
  285. #==============================================================================

  286. class Scene_Load
  287.   #--------------------------------------------------------------------------
  288.   # ● 初始化对像
  289.   #--------------------------------------------------------------------------
  290.   def initialize
  291.     # 再生成临时对像
  292.     $game_temp = Game_Temp.new
  293.     # 选择存档时间最新的文件
  294.     $game_temp.last_file_index = 0
  295.     latest_time = Time.at(0)
  296.     for i in 0..51
  297.       filename = DIR+"Save#{i}.rxdata"
  298.       if FileTest.exist?(filename)
  299.         file = File.open(filename, "r")
  300.         if file.mtime > latest_time
  301.           latest_time = file.mtime
  302.           $game_temp.last_file_index = i
  303.         end
  304.         file.close
  305.       end
  306.     end
  307.   end  
  308.   def main
  309.     @command_window = Window_Command.new(160,["自动存档","进度一","进度二",
  310.     "进度三","进度四","进度五","进度六","进度七","进度八","进度九","进度十",
  311.     "进度十一","进度十二","进度十三","进度十四","进度十五","进度十六",
  312.     "进度十七","进度十八","进度十九","进度二十","进度二一","进度二二",
  313.     "进度二三","进度二四","进度二五","进度二六","进度二七","进度二八",
  314.     "进度二九","进度三十","进度三一","进度三二","进度三三","进度三四",
  315.     "进度三五","进度三六","进度三七","进度三八","进度三九","进度四十",
  316.     "进度四一","进度四二","进度四三","进度四四","进度四五","进度四六",
  317.     "进度四七","进度四八","进度四九","进度五十"])
  318.     @command_window.y = 0
  319.     @command_window.height = 480
  320.     @command_window.index = $game_temp.last_file_index
  321.     @content_window = Window_File2.new($game_temp.last_file_index)
  322.     # 执行过渡
  323.     Graphics.transition
  324.     # 主循环
  325.     loop do
  326.       # 刷新游戏画面
  327.       Graphics.update
  328.       # 刷新输入信息
  329.       Input.update
  330.       # 刷新画面
  331.       update
  332.       # 如果画面被切换的话就中断循环
  333.       if $scene != self
  334.         break
  335.       end
  336.     end
  337.     # 准备过渡
  338.     Graphics.freeze
  339.     @command_window.dispose
  340.     @content_window.dispose
  341.   end
  342.   def update
  343.     @command_window.update
  344.     if @command_window.index != @content_window.index
  345.       @content_window.index = @command_window.index
  346.       @content_window.refresh
  347.     end   
  348.     #——————下面这一部分是原装脚本——————#
  349.     if Input.trigger?(Input::B)  
  350.     # 演奏取消 SE
  351.     $game_system.se_play($data_system.cancel_se)
  352.     # 切换到标题画面
  353.     $scene = Scene_Title.new
  354.     end   
  355.     #———————————————————————#   
  356.     if Input.trigger?(Input::C)
  357.       # 文件不存在的情况下
  358.       unless FileTest.exist?(DIR+"Save#{@command_window.index}.rxdata")
  359.         # 演奏冻结 SE
  360.         $game_system.se_play($data_system.buzzer_se)
  361.         return
  362.       end
  363.       # 演奏读档 SE
  364.       $game_system.se_play($data_system.load_se)
  365.       # 写入存档数据
  366.       file = File.open(DIR+"Save#{@command_window.index}.rxdata",

  367. "rb")
  368.       read_save_data(file)
  369.       file.close
  370.       # 还原 BGM、BGS
  371.       $game_system.bgm_play($game_system.playing_bgm)
  372.       $game_system.bgs_play($game_system.playing_bgs)
  373.       # 刷新地图 (执行并行事件)
  374.       $game_map.update
  375.       # 切换到地图画面
  376.       $scene = Scene_Map.new
  377.     end
  378.     #———————————————————————#
  379.   end
  380.   #--------------------------------------------------------------------------
  381.   # ● 写入存档数据
  382.   #     file : 写入用文件对像 (已经打开)
  383.   #--------------------------------------------------------------------------
  384.   def read_save_data(file)
  385.     # 读取描绘存档文件用的角色数据
  386.     characters = Marshal.load(file)
  387.     # 读取测量游戏时间用画面计数
  388.     Graphics.frame_count = Marshal.load(file)
  389.     # 读取各种游戏对像
  390.     $game_system        = Marshal.load(file)
  391.     $game_switches      = Marshal.load(file)
  392.     $game_variables     = Marshal.load(file)
  393.     $game_self_switches = Marshal.load(file)
  394.     $game_screen        = Marshal.load(file)
  395.     $game_actors        = Marshal.load(file)
  396.     $game_party         = Marshal.load(file)
  397.     $game_troop         = Marshal.load(file)
  398.     $game_map           = Marshal.load(file)
  399.     $game_player        = Marshal.load(file)
  400.     # 魔法编号与保存时有差异的情况下
  401.     # (加入编辑器的编辑过的数据)
  402.     if $game_system.magic_number != $data_system.magic_number
  403.       # 重新装载地图
  404.       $game_map.setup($game_map.map_id)
  405.       $game_player.center($game_player.x, $game_player.y)
  406.     end
  407.     # 刷新同伴成员
  408.     $game_party.refresh
  409.   end
  410. end

  411. #==============================================================================
  412. #  Window_LoadCommand
  413. #------------------------------------------------------------------------------
  414. #  存取档画面选择按钮窗口
  415. #==============================================================================

  416. class Window_LoadCommand < Window_Selectable
  417. #--------------------------------------------------------------------------
  418. #  初始化对象
  419. #--------------------------------------------------------------------------
  420. def initialize
  421.   super(320, 0, 320, 64)
  422.   self.contents = Bitmap.new(width - 32, height - 32)
  423.   @item_max = 2
  424.   @column_max = 2
  425.   @commands = ["读取", "存储"]
  426.   refresh
  427.   self.index = 0
  428. end
  429. #--------------------------------------------------------------------------
  430. #  刷新
  431. #--------------------------------------------------------------------------
  432. def refresh
  433.   self.contents.clear
  434.   for i in 0...@item_max
  435.     draw_item(i)
  436.   end
  437. end
  438. #--------------------------------------------------------------------------
  439. #  描画按钮文字
  440. #--------------------------------------------------------------------------
  441. def draw_item(index)
  442.   x = 4 + index * 160
  443.   self.contents.draw_text(x, 0, 144, 32, @commands[index])
  444. end
  445. #--------------------------------------------------------------------------
  446. # ● 项目无效化
  447. #     index : 项目编号
  448. #--------------------------------------------------------------------------
  449.   def disable_item(index)
  450.     draw_item(index, disabled_color)
  451.   end

  452. end

  453. #==============================================================================
  454. #  Scene_Loadsave
  455. #------------------------------------------------------------------------------
  456. # 处理存取档画面的类。
  457. #==============================================================================

  458. class Scene_Loadsave
  459. #--------------------------------------------------------------------------
  460. # ● 初始化对像
  461. #     $last_savefile_index : 记录光标位置
  462. #--------------------------------------------------------------------------
  463.   def initialize
  464.     $last_savefile_index = 0 if $last_savefile_index == nil
  465.     # 再生成临时对像
  466.     $game_temp = Game_Temp.new
  467.     # 选择存档时间最新的文件
  468.     $game_temp.last_file_index = 0
  469.     latest_time = Time.at(0)
  470.     for i in 0..51
  471.       filename = DIR+"Save#{i}.rxdata"
  472.       if FileTest.exist?(filename)
  473.         file = File.open(filename, "r")
  474.         if file.mtime > latest_time
  475.           latest_time = file.mtime
  476.           $game_temp.last_file_index = i
  477.         end
  478.         file.close
  479.       end
  480.     end
  481.   end
  482. #--------------------------------------------------------------------------
  483. #  主处理
  484. #--------------------------------------------------------------------------
  485.   def main
  486.     @savestate = 0
  487.     # 生成窗口
  488.     @help_window = Window_LoadHelp.new
  489.     @help_window.set_text("请选择.")
  490.     @option_window = Window_LoadCommand.new
  491.     @option_window.index = $last_savefile_index
  492.    
  493.     ########################################################
  494.     @command_window = Window_Command.new(160,["自动存档","进度一","进度二",
  495.       "进度三","进度四","进度五","进度六","进度七","进度八","进度九","进度十",
  496.       "进度十一","进度十二","进度十三","进度十四","进度十五","进度十六",
  497.       "进度十七","进度十八","进度十九","进度二十","进度二一","进度二二",
  498.       "进度二三","进度二四","进度二五","进度二六","进度二七","进度二八",
  499.       "进度二九","进度三十","进度三一","进度三二","进度三三","进度三四",
  500.       "进度三五","进度三六","进度三七","进度三八","进度三九","进度四十",
  501.       "进度四一","进度四二","进度四三","进度四四","进度四五","进度四六",
  502.       "进度四七","进度四八","进度四九","进度五十"])
  503.       @command_window.y = 64
  504.       @command_window.height = 416
  505.       @command_window.index = $game_temp.last_file_index
  506.       @content_window = Window_File.new($game_temp.last_file_index)
  507.       @command_window.active = false
  508.         ###############覆盖存档
  509.         @confirm_window = Window_Base.new(120, 188, 400, 64)
  510.         @confirm_window.contents = Bitmap.new(368, 32)
  511.         string = "确定要覆盖这个进度吗?"
  512.         @confirm_window.contents.font.name = "黑体"
  513.         @confirm_window.contents.font.size = 24
  514.         @confirm_window.contents.draw_text(4, 0, 368, 32, string)
  515.         @yes_no_window = Window_Command.new(100, ["覆盖", "取消"])
  516.         @confirm_window.z = 1500
  517.         @yes_no_window.index = 1
  518.         @yes_no_window.x = 270
  519.         @yes_no_window.y = 252
  520.         @yes_no_window.z = 1500
  521.         @confirm_window.visible = false
  522.         @yes_no_window.visible = false
  523.         @yes_no_window.active = false

  524.     # 执行过渡
  525.     Graphics.transition
  526.     # 主循环
  527.     loop do
  528.       # 刷新游戏画面
  529.       Graphics.update
  530.       # 刷新输入信息
  531.       Input.update
  532.       # 刷新画面
  533.       update
  534.       # 如果画面被切换的话就中断循环
  535.       if $scene != self
  536.         break
  537.       end
  538.     end
  539.     # 准备过渡
  540.     Graphics.freeze
  541.     # 释放窗口
  542.     @command_window.dispose
  543.     @content_window.dispose
  544.     @confirm_window.dispose
  545.     @yes_no_window.dispose
  546.     @help_window.dispose
  547.     @option_window.dispose

  548.   end

  549. #--------------------------------------------------------------------------
  550. #  ● 刷新画面
  551. #--------------------------------------------------------------------------
  552.   def update
  553.     # 刷新窗口
  554.     @help_window.update
  555.     @option_window.update
  556. #   @content_window.update
  557.     @command_window.update
  558.     if @yes_no_window.active
  559.         confirm_update
  560.         return
  561.     end
  562.     @content_window.index = @command_window.index
  563.     @content_window.refresh
  564.     case @savestate
  565.     when 0
  566.         if Input.trigger?(Input::B)
  567.         $game_system.se_play($data_system.cancel_se)
  568.         # 淡入淡出 BGM
  569.         Audio.bgm_fade(800)
  570.         # 返回地图
  571.         if $menu_call == false
  572.         # 切换到地图画面
  573.         $scene = Scene_Map.new
  574.           return
  575.         end
  576.         # 切换到菜单画面
  577.         $menu_call = false
  578.         $scene = Scene_Menu.new(7)
  579.      end
  580.       if Input.trigger?(Input::C)
  581.         case @option_window.index
  582.         when 0
  583.           @command_window.active = true
  584.           @option_window.active = false
  585.           $game_system.se_play($data_system.decision_se)
  586.           @help_window.set_text("请选择一个文件进行读取.")
  587.           @savestate  = 1
  588.           return
  589.         when 1
  590.           @command_window.active = true
  591.           @option_window.active = false
  592.           $game_system.se_play($data_system.decision_se)
  593.           @help_window.set_text("请选择一个文件进行存储.")
  594.           @savestate = 2
  595.          
  596.           return
  597.         return
  598.         end
  599.       end
  600.     when 1,2
  601.       if Input.trigger?(Input::C)
  602.         if @savestate == 1
  603.           $menu_call = false
  604.           load_file
  605.           return
  606.         else
  607.           # 禁止存档的情况下
  608.           if $game_system.save_disabled
  609.             @help_window.set_text("抱歉,这里禁止存储.")
  610.             # 演奏冻结 SE
  611.             $game_system.se_play($data_system.buzzer_se)
  612.             return
  613.           end
  614.          $game_system.se_play($data_system.decision_se)
  615.          $last_savefile_index = @option_window.index
  616.   
  617.          save_file
  618.           return
  619.         end
  620.       end
  621.       # 取消
  622.       if Input.trigger?(Input::B)
  623.         $game_system.se_play($data_system.cancel_se)
  624.         @command_window.active = false
  625.         @help_window.set_text("请选择.")
  626.         @savestate = 0
  627.         @option_window.active = true
  628.         return
  629.       end
  630.       
  631.       if Input.trigger?(Input::B)
  632.         $game_system.se_play($data_system.cancel_se)
  633.         @savestate = 2
  634.         @command_window.active = true

  635.         return
  636.       end
  637.     end
  638.   end
  639. #--------------------------------------------------------------------------
  640. # 建立记录文件索引
  641. #--------------------------------------------------------------------------

  642. #--------------------------------------------------------------------------
  643. #  读取记录文件
  644. #     filename  : 被读取文件
  645. #--------------------------------------------------------------------------
  646. def load_file
  647.       # 文件不存在的情况下
  648.       unless FileTest.exist?(DIR+"Save#{@command_window.index}.rxdata")
  649.         # 演奏冻结 SE
  650.         $game_system.se_play($data_system.buzzer_se)
  651.         return
  652.       end
  653.       # 演奏读档 SE
  654.       $game_system.se_play($data_system.load_se)
  655.       # 写入存档数据
  656.       file = File.open(DIR+"Save#{@command_window.index}.rxdata", "rb")
  657.       read_save_data(file)
  658.       file.close
  659.       # 还原 BGM、BGS
  660.       $game_system.bgm_play($game_system.playing_bgm)
  661.       $game_system.bgs_play($game_system.playing_bgs)
  662.       # 刷新地图 (执行并行事件)
  663.       $game_map.update
  664.       # 切换到地图画面
  665.       $scene = Scene_Map.new
  666. end
  667. #--------------------------------------------------------------------------
  668. # ● 读取存档数据
  669. #     file : 读取用文件对像 (已经打开)
  670. #--------------------------------------------------------------------------
  671.   def read_save_data(file)
  672.     # 读取描绘存档文件用的角色数据
  673.     characters = Marshal.load(file)
  674.     # 读取测量游戏时间用画面计数
  675.     Graphics.frame_count = Marshal.load(file)
  676.     # 读取各种游戏对像
  677.     $game_system        = Marshal.load(file)
  678.     $game_switches      = Marshal.load(file)
  679.     $game_variables     = Marshal.load(file)
  680.     $game_self_switches = Marshal.load(file)
  681.     $game_screen        = Marshal.load(file)
  682.     $game_actors        = Marshal.load(file)
  683.     $game_party         = Marshal.load(file)
  684.     $game_troop         = Marshal.load(file)
  685.     $game_map           = Marshal.load(file)
  686.     $game_player        = Marshal.load(file)
  687.     # 魔法编号与保存时有差异的情况下
  688.     # (加入编辑器的编辑过的数据)
  689.     if $game_system.magic_number != $data_system.magic_number
  690.       # 重新装载地图
  691.       $game_map.setup($game_map.map_id)
  692.       $game_player.center($game_player.x, $game_player.y)
  693.     end
  694.     # 刷新同伴成员
  695.     $game_party.refresh
  696.   end
  697.   #--------------------------------------------------------------------------
  698.   # ● 写入存档文件
  699.   #--------------------------------------------------------------------------
  700.   def save_file
  701.     if Input.trigger?(Input::C)
  702.       unless FileTest.exist?(DIR+"Save#{@command_window.index}.rxdata")
  703.         # 演奏冻结 SE
  704.         # 演奏存档 SE
  705.           $game_system.se_play($data_system.save_se)
  706.           # 写入存档数据
  707.           file = File.open(DIR+"Save#{@command_window.index}.rxdata", "wb")
  708.           write_save_data(file)
  709.           if FileTest.exist?(DIR+"shot.jpg")
  710.             File.rename(DIR+"shot.jpg", DIR+"Save#{@command_window.index}.jpg")
  711.           end
  712.           file.close
  713.           $game_temp.last_file_index = @command_window.index
  714.           # 如果被事件调用
  715.           if $game_temp.save_calling
  716.             # 清除存档调用标志
  717.             $game_temp.save_calling = false
  718.             @confirm_window.dispose
  719.             # 切换到地图画面
  720.             $scene = Scene_Map.new   
  721.             return
  722.           end
  723.         # 切换到菜单画面
  724.           $scene = Scene_Map.new  
  725.       end
  726.       @yes_no_window.active = true
  727.       @command_window.active = false            
  728.     end
  729.     #———————————————————————#     
  730.   end
  731.   #-------------------------------------------------------------------
  732.   def confirm_update
  733.     @command_index = @command_window.index
  734.     @confirm_window.visible = true
  735.     @confirm_window.z = 1500
  736.     @yes_no_window.visible = true
  737.     @yes_no_window.active = true
  738.     @yes_no_window.z = 1500
  739.     @yes_no_window.update
  740.     if Input.trigger?(Input::C)
  741.       if @yes_no_window.index == 0
  742.           #######################################################
  743.           # 演奏存档 SE
  744.           $game_system.se_play($data_system.save_se)
  745.           # 写入存档数据
  746.           file = File.open(DIR+"Save#{@command_window.index}.rxdata",

  747. "wb")
  748.           write_save_data(file)
  749.           if FileTest.exist?(DIR+"shot.jpg")
  750.             File.rename(DIR+"shot.jpg", DIR+"Save#{@command_window.index}.jpg")
  751.           end
  752.           file.close
  753.           $game_temp.last_file_index = @command_window.index
  754.           # 如果被事件调用
  755.           if $game_temp.save_calling
  756.             # 清除存档调用标志
  757.             $game_temp.save_calling = false
  758.             @confirm_window.dispose
  759.             @content_window.dispose
  760.             # 切换到地图画面
  761.             $scene = Scene_Map.new
  762.    
  763.             return
  764.           end
  765.         # 切换到菜单画面
  766.           $scene = Scene_Map.new        
  767.         else
  768.         $game_system.se_play($data_system.cancel_se)
  769.         @yes_no_window.active = false
  770.         @command_window.active = true
  771.         end
  772.     end
  773.     if Input.trigger?(Input::B)
  774.       $game_system.se_play($data_system.cancel_se)
  775.       @yes_no_window.active = false
  776.       @command_window.active = true
  777.     end
  778.   end
  779.   #--------------------------------------------------------------------------
  780.   # ● 写入存档数据
  781.   #     file : 写入用文件对像 (已经打开)
  782.   #--------------------------------------------------------------------------
  783.   def write_save_data(file)
  784.     # 生成描绘存档文件用的角色图形
  785.     characters = []
  786.     for i in 0...$game_party.actors.size
  787.       actor = $game_party.actors[i]
  788.       characters.push([actor.character_name, actor.character_hue, actor])
  789.     end
  790.     # 写入描绘存档文件用的角色数据
  791.     Marshal.dump(characters, file)
  792.     # 写入测量游戏时间用画面计数
  793.     Marshal.dump(Graphics.frame_count, file)
  794.     # 增加 1 次存档次数
  795.     $game_system.save_count += 1
  796.     # 保存魔法编号
  797.     # (将编辑器保存的值以随机值替换)
  798.     $game_system.magic_number = $data_system.magic_number
  799.     # 写入各种游戏对像
  800.     Marshal.dump($game_system, file)
  801.     Marshal.dump($game_switches, file)
  802.     Marshal.dump($game_variables, file)
  803.     Marshal.dump($game_self_switches, file)
  804.     Marshal.dump($game_screen, file)
  805.     Marshal.dump($game_actors, file)
  806.     Marshal.dump($game_party, file)
  807.     Marshal.dump($game_troop, file)
  808.     Marshal.dump($game_map, file)
  809.     Marshal.dump($game_player, file)
  810.   end
  811. end

  812. #==============================================================================
  813. # ■ Window_LoadHelp
  814. #------------------------------------------------------------------------------
  815. #  存取档画面帮助信息的显示窗口。
  816. #==============================================================================

  817. class Window_LoadHelp < Window_Base
  818. #--------------------------------------------------------------------------
  819. #  初始化对象
  820. #--------------------------------------------------------------------------
  821. def initialize
  822.   super(0, 0, 320, 64)
  823.   self.contents = Bitmap.new(width - 32, height - 32)
  824. end
  825. #--------------------------------------------------------------------------
  826. #  刷新文本
  827. #--------------------------------------------------------------------------
  828. def set_text(text, align = 1)
  829.   if text != @text or align != @align
  830.     self.contents.clear
  831.     self.contents.font.color = normal_color
  832.     self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
  833.     @text = text
  834.     @align = align
  835.     @actor = nil
  836.   end
  837.   self.visible = true
  838. end
  839. end

  840. #==============================================================================
  841. #  Scene_Loadsave
  842. #------------------------------------------------------------------------------
  843. # 处理存取档画面的类。
  844. #==============================================================================

  845. class Scene_Loadsave
  846. #--------------------------------------------------------------------------
  847. # ● 初始化对像
  848. #     $last_savefile_index : 记录光标位置
  849. #--------------------------------------------------------------------------
  850.   def initialize
  851.     $last_savefile_index = 0 if $last_savefile_index == nil
  852.     # 再生成临时对像
  853.     $game_temp = Game_Temp.new
  854.     # 选择存档时间最新的文件
  855.     $game_temp.last_file_index = 0
  856.     latest_time = Time.at(0)
  857.     for i in 0..51
  858.       filename = DIR+"Save#{i}.rxdata"
  859.       if FileTest.exist?(filename)
  860.         file = File.open(filename, "r")
  861.         if file.mtime > latest_time
  862.           latest_time = file.mtime
  863.           $game_temp.last_file_index = i
  864.         end
  865.         file.close
  866.       end
  867.     end
  868.   end
  869. #--------------------------------------------------------------------------
  870. #  主处理
  871. #--------------------------------------------------------------------------
  872.   def main
  873.     @savestate = 0
  874.     # 生成窗口
  875.     @help_window = Window_LoadHelp.new
  876.     @help_window.set_text("请选择.")
  877.     @option_window = Window_LoadCommand.new
  878.     @option_window.index = $last_savefile_index
  879.    
  880.     ########################################################
  881.     @command_window = Window_Command.new(160,["自动存档","进度一","进度二",
  882.       "进度三","进度四","进度五","进度六","进度七","进度八","进度九","进度十",
  883.       "进度十一","进度十二","进度十三","进度十四","进度十五","进度十六",
  884.       "进度十七","进度十八","进度十九","进度二十","进度二一","进度二二",
  885.       "进度二三","进度二四","进度二五","进度二六","进度二七","进度二八",
  886.       "进度二九","进度三十","进度三一","进度三二","进度三三","进度三四",
  887.       "进度三五","进度三六","进度三七","进度三八","进度三九","进度四十",
  888.       "进度四一","进度四二","进度四三","进度四四","进度四五","进度四六",
  889.       "进度四七","进度四八","进度四九","进度五十"])
  890.       @command_window.y = 64
  891.       @command_window.height = 416
  892.       @command_window.index = $game_temp.last_file_index
  893.       @content_window = Window_File.new($game_temp.last_file_index)
  894.       @command_window.active = false
  895.         ###############覆盖存档
  896.         @confirm_window = Window_Base.new(120, 188, 400, 64)
  897.         @confirm_window.contents = Bitmap.new(368, 32)
  898.         string = "确定要覆盖这个进度吗?"
  899.         @confirm_window.contents.font.name = "黑体"
  900.         @confirm_window.contents.font.size = 24
  901.         @confirm_window.contents.draw_text(4, 0, 368, 32, string)
  902.         @yes_no_window = Window_Command.new(100, ["覆盖", "取消"])
  903.         @confirm_window.z = 1500
  904.         @yes_no_window.index = 1
  905.         @yes_no_window.x = 270
  906.         @yes_no_window.y = 252
  907.         @yes_no_window.z = 1500
  908.         @confirm_window.visible = false
  909.         @yes_no_window.visible = false
  910.         @yes_no_window.active = false

  911.     # 执行过渡
  912.     Graphics.transition
  913.     # 主循环
  914.     loop do
  915.       # 刷新游戏画面
  916.       Graphics.update
  917.       # 刷新输入信息
  918.       Input.update
  919.       # 刷新画面
  920.       update
  921.       # 如果画面被切换的话就中断循环
  922.       if $scene != self
  923.         break
  924.       end
  925.     end
  926.     # 准备过渡
  927.     Graphics.freeze
  928.     # 释放窗口
  929.     @command_window.dispose
  930.     @content_window.dispose
  931.     @confirm_window.dispose
  932.     @yes_no_window.dispose
  933.     @help_window.dispose
  934.     @option_window.dispose

  935.   end

  936. #--------------------------------------------------------------------------
  937. #  ● 刷新画面
  938. #--------------------------------------------------------------------------
  939.   def update
  940.     # 刷新窗口
  941.     @help_window.update
  942.     @option_window.update
  943. #   @content_window.update
  944.     @command_window.update
  945.     if @yes_no_window.active
  946.         confirm_update
  947.         return
  948.     end
  949.     @content_window.index = @command_window.index
  950.     @content_window.refresh
  951.     case @savestate
  952.     when 0
  953.         if Input.trigger?(Input::B)
  954.         $game_system.se_play($data_system.cancel_se)
  955.         # 淡入淡出 BGM
  956.         Audio.bgm_fade(800)
  957.         # 返回地图
  958.         if $menu_call == false
  959.         # 切换到地图画面
  960.         $scene = Scene_Map.new
  961.           return
  962.         end
  963.         # 切换到菜单画面
  964.         $menu_call = false
  965.         $scene = Scene_Menu.new(7)
  966.      end
  967.       if Input.trigger?(Input::C)
  968.         case @option_window.index
  969.         when 0
  970.           @command_window.active = true
  971.           @option_window.active = false
  972.           $game_system.se_play($data_system.decision_se)
  973.           @help_window.set_text("请选择一个文件进行读取.")
  974.           @savestate  = 1
  975.           return
  976.         when 1
  977.           @command_window.active = true
  978.           @option_window.active = false
  979.           $game_system.se_play($data_system.decision_se)
  980.           @help_window.set_text("请选择一个文件进行存储.")
  981.           @savestate = 2
  982.          
  983.           return
  984.         return
  985.         end
  986.       end
  987.     when 1,2
  988.       if Input.trigger?(Input::C)
  989.         if @savestate == 1
  990.           $menu_call = false
  991.           load_file
  992.           return
  993.         else
  994.           # 禁止存档的情况下
  995.           if $game_system.save_disabled
  996.             @help_window.set_text("抱歉,这里禁止存储.")
  997.             # 演奏冻结 SE
  998.             $game_system.se_play($data_system.buzzer_se)
  999.             return
  1000.           end
  1001.          $game_system.se_play($data_system.decision_se)
  1002.          $last_savefile_index = @option_window.index
  1003.   
  1004.          save_file
  1005.           return
  1006.         end
  1007.       end
  1008.       # 取消
  1009.       if Input.trigger?(Input::B)
  1010.         $game_system.se_play($data_system.cancel_se)
  1011.         @command_window.active = false
  1012.         @help_window.set_text("请选择.")
  1013.         @savestate = 0
  1014.         @option_window.active = true
  1015.         return
  1016.       end
  1017.       
  1018.       if Input.trigger?(Input::B)
  1019.         $game_system.se_play($data_system.cancel_se)
  1020.         @savestate = 2
  1021.         @command_window.active = true

  1022.         return
  1023.       end
  1024.     end
  1025.   end
  1026. #--------------------------------------------------------------------------
  1027. # 建立记录文件索引
  1028. #--------------------------------------------------------------------------

  1029. #--------------------------------------------------------------------------
  1030. #  读取记录文件
  1031. #     filename  : 被读取文件
  1032. #--------------------------------------------------------------------------
  1033. def load_file
  1034.       # 文件不存在的情况下
  1035.       unless FileTest.exist?(DIR+"Save#{@command_window.index}.rxdata")
  1036.         # 演奏冻结 SE
  1037.         $game_system.se_play($data_system.buzzer_se)
  1038.         return
  1039.       end
  1040.       # 演奏读档 SE
  1041.       $game_system.se_play($data_system.load_se)
  1042.       # 写入存档数据
  1043.       file = File.open(DIR+"Save#{@command_window.index}.rxdata", "rb")
  1044.       read_save_data(file)
  1045.       file.close
  1046.       # 还原 BGM、BGS
  1047.       $game_system.bgm_play($game_system.playing_bgm)
  1048.       $game_system.bgs_play($game_system.playing_bgs)
  1049.       # 刷新地图 (执行并行事件)
  1050.       $game_map.update
  1051.       # 切换到地图画面
  1052.       $scene = Scene_Map.new
  1053. end
  1054. #--------------------------------------------------------------------------
  1055. # ● 读取存档数据
  1056. #     file : 读取用文件对像 (已经打开)
  1057. #--------------------------------------------------------------------------
  1058.   def read_save_data(file)
  1059.     # 读取描绘存档文件用的角色数据
  1060.     characters = Marshal.load(file)
  1061.     # 读取测量游戏时间用画面计数
  1062.     Graphics.frame_count = Marshal.load(file)
  1063.     # 读取各种游戏对像
  1064.     $game_system        = Marshal.load(file)
  1065.     $game_switches      = Marshal.load(file)
  1066.     $game_variables     = Marshal.load(file)
  1067.     $game_self_switches = Marshal.load(file)
  1068.     $game_screen        = Marshal.load(file)
  1069.     $game_actors        = Marshal.load(file)
  1070.     $game_party         = Marshal.load(file)
  1071.     $game_troop         = Marshal.load(file)
  1072.     $game_map           = Marshal.load(file)
  1073.     $game_player        = Marshal.load(file)
  1074.     # 魔法编号与保存时有差异的情况下
  1075.     # (加入编辑器的编辑过的数据)
  1076.     if $game_system.magic_number != $data_system.magic_number
  1077.       # 重新装载地图
  1078.       $game_map.setup($game_map.map_id)
  1079.       $game_player.center($game_player.x, $game_player.y)
  1080.     end
  1081.     # 刷新同伴成员
  1082.     $game_party.refresh
  1083.   end
  1084.   #--------------------------------------------------------------------------
  1085.   # ● 写入存档文件
  1086.   #--------------------------------------------------------------------------
  1087.   def save_file
  1088.     if Input.trigger?(Input::C)
  1089.       unless FileTest.exist?(DIR+"Save#{@command_window.index}.rxdata")
  1090.         # 演奏冻结 SE
  1091.         # 演奏存档 SE
  1092.           $game_system.se_play($data_system.save_se)
  1093.           # 写入存档数据
  1094.           file = File.open(DIR+"Save#{@command_window.index}.rxdata", "wb")
  1095.           write_save_data(file)
  1096.           if FileTest.exist?(DIR+"shot.jpg")
  1097.             File.rename(DIR+"shot.jpg", DIR+"Save#{@command_window.index}.jpg")
  1098.           end
  1099.           file.close
  1100.           $game_temp.last_file_index = @command_window.index
  1101.           # 如果被事件调用
  1102.           if $game_temp.save_calling
  1103.             # 清除存档调用标志
  1104.             $game_temp.save_calling = false
  1105.             @confirm_window.dispose
  1106.             # 切换到地图画面
  1107.             $scene = Scene_Map.new   
  1108.             return
  1109.           end
  1110.         # 切换到菜单画面
  1111.           $scene = Scene_Map.new  
  1112.       end
  1113.       @yes_no_window.active = true
  1114.       @command_window.active = false            
  1115.     end
  1116.     #———————————————————————#     
  1117.   end
  1118.   #-------------------------------------------------------------------
  1119.   def confirm_update
  1120.     @command_index = @command_window.index
  1121.     @confirm_window.visible = true
  1122.     @confirm_window.z = 1500
  1123.     @yes_no_window.visible = true
  1124.     @yes_no_window.active = true
  1125.     @yes_no_window.z = 1500
  1126.     @yes_no_window.update
  1127.     if Input.trigger?(Input::C)
  1128.       if @yes_no_window.index == 0
  1129.           #######################################################
  1130.           # 演奏存档 SE
  1131.           $game_system.se_play($data_system.save_se)
  1132.           # 写入存档数据
  1133.           file = File.open(DIR+"Save#{@command_window.index}.rxdata", "wb")
  1134.           write_save_data(file)
  1135.           if FileTest.exist?(DIR+"shot.jpg")
  1136.             File.rename(DIR+"shot.jpg", DIR+"Save#{@command_window.index}.jpg")
  1137.           end
  1138.           file.close
  1139.           $game_temp.last_file_index = @command_window.index
  1140.           # 如果被事件调用
  1141.           if $game_temp.save_calling
  1142.             # 清除存档调用标志
  1143.             $game_temp.save_calling = false
  1144.             @confirm_window.dispose
  1145.             @content_window.dispose
  1146.             # 切换到地图画面
  1147.             $scene = Scene_Map.new
  1148.    
  1149.             return
  1150.           end
  1151.         # 切换到菜单画面
  1152.           $scene = Scene_Map.new        
  1153.         else
  1154.         $game_system.se_play($data_system.cancel_se)
  1155.         @yes_no_window.active = false
  1156.         @command_window.active = true
  1157.         end
  1158.     end
  1159.     if Input.trigger?(Input::B)
  1160.       $game_system.se_play($data_system.cancel_se)
  1161.       @yes_no_window.active = false
  1162.       @command_window.active = true
  1163.     end
  1164.   end
  1165.   #--------------------------------------------------------------------------
  1166.   # ● 写入存档数据
  1167.   #     file : 写入用文件对像 (已经打开)
  1168.   #--------------------------------------------------------------------------
  1169.   def write_save_data(file)
  1170.     # 生成描绘存档文件用的角色图形
  1171.     characters = []
  1172.     for i in 0...$game_party.actors.size
  1173.       actor = $game_party.actors[i]
  1174.       characters.push([actor.character_name, actor.character_hue, actor])
  1175.     end
  1176.     # 写入描绘存档文件用的角色数据
  1177.     Marshal.dump(characters, file)
  1178.     # 写入测量游戏时间用画面计数
  1179.     Marshal.dump(Graphics.frame_count, file)
  1180.     # 增加 1 次存档次数
  1181.     $game_system.save_count += 1
  1182.     # 保存魔法编号
  1183.     # (将编辑器保存的值以随机值替换)
  1184.     $game_system.magic_number = $data_system.magic_number
  1185.     # 写入各种游戏对像
  1186.     Marshal.dump($game_system, file)
  1187.     Marshal.dump($game_switches, file)
  1188.     Marshal.dump($game_variables, file)
  1189.     Marshal.dump($game_self_switches, file)
  1190.     Marshal.dump($game_screen, file)
  1191.     Marshal.dump($game_actors, file)
  1192.     Marshal.dump($game_party, file)
  1193.     Marshal.dump($game_troop, file)
  1194.     Marshal.dump($game_map, file)
  1195.     Marshal.dump($game_player, file)
  1196.   end
  1197. end
复制代码
dsu_plus_rewardpost_czw


jkang125于2011-8-31 22:52补充以下内容:
糟了,不好意思,因为刚才试脚本试晕了,上面的脚本是另一个脚本,下面的才是对应的脚本,十分抱歉!
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,转载和使用请保留此信息
  3. #===============================================================================

  4. BBS_66RPG_DIR = "Save/"  # 储存文件夹名,请制作游戏时自行建立此文件夹

  5. # 若想使用自定义背景图,脚本62行的井号去掉,并放置一张相应图形。

  6. # 在你的Scene_Title中找到这一段(如果使用其他插件脚本,在插件中找):
  7. #    for i in 0..3
  8. #      if FileTest.exist?("Save#{i+1}.rxdata")
  9. # 请自行把0..3改为0..最大进度号,比如0..9
  10. # "Save#{i+1}.rxdata" 改为"Save/Save#{i}.rxdata"

  11. # 增加进度的方法:138,258行,继续添加。你也可以改“进度X”为“回忆X”或者“红/绿/蓝笔记本”

  12. #===============================================================================
  13. module Screen  
  14.   @screen = Win32API.new 'screenshot', 'Screenshot', %w(l l l l p l l), ''
  15.   @readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
  16.   @findwindow = Win32API.new 'user32', 'FindWindowA', %w(p p), 'l'
  17.   module_function
  18.   #-----------------------------------------------------------------------------
  19.   # here comes the stuff...
  20.   # i add here the stuff for automatic change of the number for the screenshot
  21.   # so it wont overrite the old one...
  22.   # if you want to change so stuff change them in this line below
  23.   # or you can change them in your command line... like
  24.   # Screen::shot("screenshot", 2)
  25.   # this change the name and the type of the screenshot
  26.   # (0 = bmp, 1 = jpg and 2 = png)
  27.   # ----------------------------------------------------------------------------
  28.   def shot(file = "shot", typ = 1)
  29.     # to add the right extension...
  30.     if typ == 0
  31.       typname = ".bmp"
  32.     elsif typ == 1
  33.       typname = ".jpg"
  34.     elsif typ == 2
  35.       typname = ".png"
  36.     end   
  37.     file_index = 0   
  38.     dir = "Save/"   
  39.     # make the filename....
  40.     file_name = dir + file.to_s + typname.to_s   
  41.     # make the screenshot.... Attention dont change anything from here on....
  42.     @screen.call(0,0,640,480,file_name,handel,typ)
  43.   end
  44.   # find the game window...
  45.   def handel
  46.     game_name = "\0" * 256
  47.     @readini.call('Game','Title','',game_name,255,".\\Game.ini")
  48.     game_name.delete!("\0")
  49.     return @findwindow.call('RGSS Player',game_name)
  50.   end
  51. end

  52. class Window_File < Window_Base
  53.   attr_accessor :index
  54.   def initialize(index = 0)
  55.     @backsp = Sprite.new
  56.     #@backsp.bitmap = Bitmap.new("Graphics/Pictures/存盘背景.jpg")
  57.     @backsp.z = 99
  58.     super(160,0,480,480)
  59.     #这行可以不用
  60.     self.contents = Bitmap.new(width - 32, height - 32)
  61.     @index = index
  62.     #这里我要说明一句,之所以用sprite是为了放缩图片
  63.     @sprite = Sprite.new
  64.     @sprite.visible = false
  65.     @sprite.z = 100
  66.     @sp_ch = []
  67.     @sp_ch[0] = Sprite.new
  68.     refresh
  69.   end
  70.   def refresh
  71.     self.contents.clear
  72.     for i in @sp_ch
  73.       i.visible = false
  74.     end
  75.     @sprite.visible = false
  76.     if FileTest.exist?(BBS_66RPG_DIR+"Save#{@index}.rxdata")
  77.       @sprite.visible = true
  78.       if FileTest.exist?(BBS_66RPG_DIR+"Save#{@index}.jpg")
  79.         @sprite.bitmap = Bitmap.new(BBS_66RPG_DIR+"Save#{@index}.jpg")
  80.       else
  81.         self.contents.draw_text(32,64,400,32,"截图似乎有点问题……您搞什么了您?")
  82.       end
  83.       @sprite.x = 176
  84.       @sprite.y = 16
  85.       @sprite.zoom_x = 0.7
  86.       @sprite.zoom_y = 0.7
  87.       file = File.open(BBS_66RPG_DIR+"Save#{@index}.rxdata", "r")
  88.       @time_stamp = file.mtime
  89.       @characters = Marshal.load(file)
  90.       @frame_count = Marshal.load(file)
  91.       @game_system = Marshal.load(file)
  92.       @game_switches = Marshal.load(file)
  93.       @game_variables = Marshal.load(file)
  94.       @total_sec = @frame_count / Graphics.frame_rate
  95.       file.close
  96.       for i in [email protected]
  97.         @sp_ch[i] = Sprite.new
  98.         @sp_ch[i].visible = true
  99.         @sp_ch[i].bitmap = RPG::Cache.battler(@characters[i][3], @characters[i][4])
  100.         @sp_ch[i].x = 180 + i*100      
  101.         @sp_ch[i].y = 460 - @sp_ch[i].bitmap.height
  102.         @sp_ch[i].z = 101
  103.       end
  104.       # 描绘游戏时间
  105.       hour = @total_sec / 60 / 60
  106.       min = @total_sec / 60 % 60
  107.       sec = @total_sec % 60
  108.       time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
  109.       self.contents.font.color = normal_color
  110.       self.contents.draw_text(4, 390, 420, 32, time_string, 2)
  111.       # 描绘时间标记
  112.       self.contents.font.color = normal_color
  113.       time_string = @time_stamp.strftime("%Y/%m/%d %H:%M")
  114.       self.contents.draw_text(4, 420, 420, 32, time_string, 2)
  115.     else
  116.       self.contents.draw_text(32,32,420,32,"这个存档是空的")
  117.     end
  118.   end
  119.   def dispose
  120.     super
  121.     @sprite.dispose
  122.     @backsp.dispose
  123.     for i in @sp_ch
  124.       i.dispose
  125.     end
  126.   end
  127. end


  128. class Scene_Save
  129.   def main
  130.     @command_window = Window_Command.new(160,["进度一","进度二","进度三","进度四","进度五","进度六"])
  131.     @command_window.y = 96
  132.     @command_window.index = $game_temp.last_file_index
  133.     @content_window = Window_File.new($game_temp.last_file_index)
  134.     # 执行过渡
  135.     Graphics.transition
  136.     # 主循环
  137.     loop do
  138.       # 刷新游戏画面
  139.       Graphics.update
  140.       # 刷新输入信息
  141.       Input.update
  142.       # 刷新画面
  143.       update
  144.       # 如果画面被切换的话就中断循环
  145.       if $scene != self
  146.         break
  147.       end
  148.     end
  149.     # 准备过渡
  150.     Graphics.freeze
  151.     @command_window.dispose
  152.     @content_window.dispose
  153.   end
  154.   def update
  155.     @command_window.update   
  156.     if @command_window.index != @content_window.index
  157.       @content_window.index = @command_window.index
  158.       @content_window.refresh
  159.     end   
  160.     #——————下面这一部分是原装脚本——————#
  161.     if Input.trigger?(Input::B)  
  162.       $game_system.se_play($data_system.cancel_se)
  163.       if $game_temp.save_calling
  164.         $game_temp.save_calling = false
  165.         $scene = Scene_Map.new
  166.         return
  167.       end
  168.       $scene = Scene_Menu.new(4)
  169.     end   
  170.     #———————————————————————#   
  171.     if Input.trigger?(Input::C)
  172.       # 演奏存档 SE
  173.       $game_system.se_play($data_system.save_se)
  174.       # 写入存档数据
  175.       file = File.open(BBS_66RPG_DIR+"Save#{@command_window.index}.rxdata", "wb")
  176.       write_save_data(file)
  177.       if FileTest.exist?(BBS_66RPG_DIR+"shot.jpg")
  178.         File.rename(BBS_66RPG_DIR+"shot.jpg", BBS_66RPG_DIR+"Save#{@command_window.index}.jpg")
  179.       end
  180.       file.close
  181.       $game_temp.last_file_index = @command_window.index
  182.       # 如果被事件调用
  183.       if $game_temp.save_calling
  184.         # 清除存档调用标志
  185.         $game_temp.save_calling = false
  186.         # 切换到地图画面
  187.         $scene = Scene_Map.new
  188.         return
  189.       end
  190.       # 切换到菜单画面
  191.       $scene = Scene_Map.new
  192.     end
  193.     #———————————————————————#
  194.   end
  195.   #--------------------------------------------------------------------------
  196.   # ● 写入存档数据
  197.   #     file : 写入用文件对像 (已经打开)
  198.   #--------------------------------------------------------------------------
  199.   def write_save_data(file)
  200.     # 生成描绘存档文件用的角色图形
  201.     characters = []
  202.     for i in 0...$game_party.actors.size
  203.       actor = $game_party.actors[i]
  204.       characters.push([actor.character_name, actor.character_hue, actor.id, actor.battler_name, actor.battler_hue])
  205.     end
  206.     # 写入描绘存档文件用的角色数据
  207.     Marshal.dump(characters, file)
  208.     # 写入测量游戏时间用画面计数
  209.     Marshal.dump(Graphics.frame_count, file)
  210.     # 增加 1 次存档次数
  211.     $game_system.save_count += 1
  212.     # 保存魔法编号
  213.     # (将编辑器保存的值以随机值替换)
  214.     $game_system.magic_number = $data_system.magic_number
  215.     # 写入各种游戏对像
  216.     Marshal.dump($game_system, file)
  217.     Marshal.dump($game_switches, file)
  218.     Marshal.dump($game_variables, file)
  219.     Marshal.dump($game_self_switches, file)
  220.     Marshal.dump($game_screen, file)
  221.     Marshal.dump($game_actors, file)
  222.     Marshal.dump($game_party, file)
  223.     Marshal.dump($game_troop, file)
  224.     Marshal.dump($game_map, file)
  225.     Marshal.dump($game_player, file)
  226.   end
  227. end


  228. class Scene_Load
  229.   def initialize
  230.     # 再生成临时对像
  231.     $game_temp = Game_Temp.new
  232.     # 选择存档时间最新的文件
  233.     $game_temp.last_file_index = 0
  234.     latest_time = Time.at(0)
  235.     for i in 0..6
  236.       filename = BBS_66RPG_DIR+"Save#{i}.rxdata"
  237.       if FileTest.exist?(filename)
  238.         file = File.open(filename, "r")
  239.         if file.mtime > latest_time
  240.           latest_time = file.mtime
  241.           $game_temp.last_file_index = i
  242.         end
  243.         file.close
  244.       end
  245.     end
  246.   end  
  247.   def main
  248.     @command_window = Window_Command.new(160,["进度一","进度二","进度三","进度四","进度五","进度六"])
  249.     @command_window.y = 96
  250.     @command_window.index = $game_temp.last_file_index
  251.     @content_window = Window_File.new($game_temp.last_file_index)
  252.     # 执行过渡
  253.     Graphics.transition
  254.     # 主循环
  255.     loop do
  256.       # 刷新游戏画面
  257.       Graphics.update
  258.       # 刷新输入信息
  259.       Input.update
  260.       # 刷新画面
  261.       update
  262.       # 如果画面被切换的话就中断循环
  263.       if $scene != self
  264.         break
  265.       end
  266.     end
  267.     # 准备过渡
  268.     Graphics.freeze
  269.     @command_window.dispose
  270.     @content_window.dispose
  271.   end
  272.   def update
  273.     @command_window.update   
  274.     if @command_window.index != @content_window.index
  275.       @content_window.index = @command_window.index
  276.       @content_window.refresh
  277.     end   
  278.     #——————下面这一部分是原装脚本——————#
  279.     if Input.trigger?(Input::B)  
  280.     # 演奏取消 SE
  281.     $game_system.se_play($data_system.cancel_se)
  282.     # 切换到标题画面
  283.     $scene = Scene_Title.new
  284.     end   
  285.     #———————————————————————#   
  286.     if Input.trigger?(Input::C)
  287.       # 文件不存在的情况下
  288.       unless FileTest.exist?(BBS_66RPG_DIR+"Save#{@command_window.index}.rxdata")
  289.         # 演奏冻结 SE
  290.         $game_system.se_play($data_system.buzzer_se)
  291.         return
  292.       end
  293.       # 演奏读档 SE
  294.       $game_system.se_play($data_system.load_se)
  295.       # 写入存档数据
  296.       file = File.open(BBS_66RPG_DIR+"Save#{@command_window.index}.rxdata", "rb")
  297.       read_save_data(file)
  298.       file.close
  299.       # 还原 BGM、BGS
  300.       $game_system.bgm_play($game_system.playing_bgm)
  301.       $game_system.bgs_play($game_system.playing_bgs)
  302.       # 刷新地图 (执行并行事件)
  303.       $game_map.update
  304.       # 切换到地图画面
  305.       $scene = Scene_Map.new
  306.     end
  307.     #———————————————————————#
  308.   end
  309.   #--------------------------------------------------------------------------
  310.   # ● 写入存档数据
  311.   #     file : 写入用文件对像 (已经打开)
  312.   #--------------------------------------------------------------------------
  313.   def read_save_data(file)
  314.     # 读取描绘存档文件用的角色数据
  315.     characters = Marshal.load(file)
  316.     # 读取测量游戏时间用画面计数
  317.     Graphics.frame_count = Marshal.load(file)
  318.     # 读取各种游戏对像
  319.     $game_system        = Marshal.load(file)
  320.     $game_switches      = Marshal.load(file)
  321.     $game_variables     = Marshal.load(file)
  322.     $game_self_switches = Marshal.load(file)
  323.     $game_screen        = Marshal.load(file)
  324.     $game_actors        = Marshal.load(file)
  325.     $game_party         = Marshal.load(file)
  326.     $game_troop         = Marshal.load(file)
  327.     $game_map           = Marshal.load(file)
  328.     $game_player        = Marshal.load(file)
  329.     # 魔法编号与保存时有差异的情况下
  330.     # (加入编辑器的编辑过的数据)
  331.     if $game_system.magic_number != $data_system.magic_number
  332.       # 重新装载地图
  333.       $game_map.setup($game_map.map_id)
  334.       $game_player.center($game_player.x, $game_player.y)
  335.     end
  336.     # 刷新同伴成员
  337.     $game_party.refresh
  338.   end
  339. end

  340. class Scene_Menu
  341.   alias bbs_66rpg_shotsave_main main
  342.   def main
  343.     if @menu_index == 0
  344.       Screen::shot
  345.     end   
  346.     bbs_66rpg_shotsave_main
  347.   end
  348. end

  349. class Interpreter
  350.   #--------------------------------------------------------------------------
  351.   # ● 调用存档画面
  352.   #--------------------------------------------------------------------------
  353.   def command_352
  354.     # 设置战斗中断标志
  355.     $game_temp.battle_abort = true
  356.     # 设置调用存档标志
  357.     $game_temp.save_calling = true
  358.     # 推进索引
  359.     @index += 1
  360.     # 结束
  361.     Screen::shot
  362.     return false
  363.   end
  364. end
复制代码

作者: darkscout3000    时间: 2011-8-31 22:56
你试试删掉123-131行(根据你的帖子里的行数为参考)
作者: 钢铁列兵    时间: 2011-9-4 08:57
你至少应该说出修改后要什么效果吧?
作者: jkang125    时间: 2011-9-4 09:25
本帖最后由 亿万星辰 于 2011-9-4 09:27 编辑

我一开始写得很清楚的,但不知道是被删了还是被抽了,没显示,我也很奇怪
我是想让那个“存档截图”的脚本做到“前面的人物消失的效果”

作者: 亿万星辰    时间: 2011-9-4 09:28
jkang125 发表于 2011-9-4 09:25
我一开始写得很清楚的,但不知道是被删了还是被抽了,没显示,我也很奇怪
我是想让那个“存档截图”的脚本 ...

重新发一个帖子吧,这个帖子的显示现在有点混乱~




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