Project1

标题: 请问,如何让只有4个的档位变多? [打印本页]

作者: 双翼使者    时间: 2011-8-4 19:10
提示: 作者被禁止或删除 内容自动屏蔽
作者: 嚴子    时间: 2011-8-4 19:19
本帖最后由 嚴子 于 2011-8-4 19:21 编辑

档位无限,求认可
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================
  4. class Scene_File
  5.   #——最大存档数量,一般我认为最多50足够了,20比较合适
  6.   SAVEFILE_MAX = 99
  7.   # -------------------
  8.   def initialize(help_text)
  9.     @help_text = help_text
  10.   end
  11.   # -------------------
  12.   def main
  13.     @help_window = Window_Help.new
  14.     @help_window.set_text(@help_text)
  15.     @savefile_windows = []
  16.     @cursor_displace = 0
  17.     for i in 0..3
  18.       @savefile_windows.push(Window_SaveFile.new(i, make_filename(i), i))
  19.     end
  20.     @file_index = 0
  21.     @savefile_windows[@file_index].selected = true
  22.     Graphics.transition
  23.     loop do
  24.       Graphics.update
  25.       Input.update
  26.       update
  27.       if $scene != self
  28.         break
  29.       end
  30.     end
  31.     Graphics.freeze
  32.     @help_window.dispose
  33.     for i in @savefile_windows
  34.       i.dispose
  35.     end
  36.   end
  37.   # -------------------
  38.   def update
  39.     @help_window.update
  40.     for i in @savefile_windows
  41.       i.update
  42.     end
  43.     if Input.trigger?(Input::C)
  44.       on_decision(make_filename(@file_index))
  45.       $game_temp.last_file_index = @file_index
  46.       return
  47.     end
  48.     if Input.trigger?(Input::B)
  49.       on_cancel
  50.       return
  51.     end
  52.     if Input.repeat?(Input::DOWN)
  53.       if Input.trigger?(Input::DOWN) or @file_index < SAVEFILE_MAX - 1
  54.         if @file_index == SAVEFILE_MAX - 1
  55.           $game_system.se_play($data_system.buzzer_se)
  56.           return
  57.         end
  58.         @cursor_displace += 1
  59.         if @cursor_displace == 4
  60.           @cursor_displace = 3
  61.           for i in @savefile_windows
  62.             i.dispose
  63.           end
  64.           @savefile_windows = []
  65.           for i in 0..3
  66.             f = i - 2 + @file_index
  67.             name = make_filename(f)
  68.             @savefile_windows.push(Window_SaveFile.new(f, name, i))
  69.             @savefile_windows[i].selected = false
  70.           end
  71.         end
  72.         $game_system.se_play($data_system.cursor_se)
  73.         @file_index = (@file_index + 1)
  74.         if @file_index == SAVEFILE_MAX
  75.           @file_index = SAVEFILE_MAX - 1
  76.         end
  77.         for i in 0..3
  78.           @savefile_windows[i].selected = false
  79.         end
  80.         @savefile_windows[@cursor_displace].selected = true
  81.         return
  82.       end
  83.     end
  84.     if Input.repeat?(Input::UP)
  85.       if Input.trigger?(Input::UP) or @file_index > 0
  86.         if @file_index == 0
  87.           $game_system.se_play($data_system.buzzer_se)
  88.           return
  89.         end
  90.         @cursor_displace -= 1
  91.         if @cursor_displace == -1
  92.           @cursor_displace = 0
  93.           for i in @savefile_windows
  94.             i.dispose
  95.           end
  96.           @savefile_windows = []
  97.           for i in 0..3
  98.             f = i - 1 + @file_index
  99.             name = make_filename(f)
  100.             @savefile_windows.push(Window_SaveFile.new(f, name, i))
  101.             @savefile_windows[i].selected = false
  102.           end
  103.         end
  104.         $game_system.se_play($data_system.cursor_se)
  105.         @file_index = (@file_index - 1)
  106.         if @file_index == -1
  107.           @file_index = 0
  108.         end
  109.         for i in 0..3
  110.           @savefile_windows[i].selected = false
  111.         end
  112.         @savefile_windows[@cursor_displace].selected = true
  113.         return
  114.       end
  115.     end
  116.   end
  117.   # -------------------
  118.   def make_filename(file_index)
  119.     return "Save#{file_index + 1}.rxdata"
  120.   end
  121.   # -------------------
  122. end




  123. class Window_SaveFile < Window_Base
  124.   # -------------------
  125.   def initialize(file_index, filename, position)
  126.     y = 64 + position * 104
  127.     super(0, y, 640, 104)
  128.     self.contents = Bitmap.new(width - 32, height - 32)
  129.     @file_index = file_index
  130.     @filename = "Save#{@file_index + 1}.rxdata"
  131.     @time_stamp = Time.at(0)
  132.     @file_exist = FileTest.exist?(@filename)
  133.     if @file_exist
  134.       file = File.open(@filename, "r")
  135.       @time_stamp = file.mtime
  136.       @characters = Marshal.load(file)
  137.       @frame_count = Marshal.load(file)
  138.       @game_system = Marshal.load(file)
  139.       @game_switches = Marshal.load(file)
  140.       @game_variables = Marshal.load(file)
  141.       @total_sec = @frame_count / Graphics.frame_rate
  142.       file.close
  143.     end
  144.     refresh
  145.     @selected = false
  146.   end
  147. end


  148. #==============================================================================
  149. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  150. #==============================================================================
  151. #在覆盖存档的时候弹出对话框提示
  152. class Scene_Save < Scene_File
  153. # -----------------------------
  154.   def initialize
  155.     super("储存到哪一个进度?")
  156.     @confirm_window = Window_Base.new(120, 188, 400, 64)
  157.     @confirm_window.contents = Bitmap.new(368, 32)
  158.     string = "确定覆盖?"
  159.     @confirm_window.contents.font.name = "黑体"
  160.     @confirm_window.contents.font.size = 24
  161.     @confirm_window.contents.draw_text(4, 0, 368, 32, string)
  162.     @yes_no_window = Window_Command.new(100, ["是", "否"])
  163.     @confirm_window.visible = false
  164.     @confirm_window.z = 1500
  165.     @yes_no_window.visible = false
  166.     @yes_no_window.active = false
  167.     @yes_no_window.index = 1
  168.     @yes_no_window.x = 270
  169.     @yes_no_window.y = 252
  170.     @yes_no_window.z = 1500
  171.     @mode = 0
  172.   end
  173. # -----------------------------
  174.   def on_decision(filename)
  175.     if FileTest.exist?(filename)
  176.       @confirm_window.visible = true
  177.       @yes_no_window.visible = true
  178.       @yes_no_window.active = true
  179.       @mode = 1
  180.     else
  181.       $game_system.se_play($data_system.save_se)
  182.       file = File.open(filename, "wb")
  183.       write_save_data(file)
  184.       file.close
  185.       if $game_temp.save_calling
  186.         $game_temp.save_calling = false
  187.         $scene = Scene_Map.new
  188.       return
  189.     end
  190.     $scene = Scene_Menu.new(4)
  191.     end
  192.   end
  193. # -----------------------------
  194.   def update
  195.     if @mode == 0
  196.       super
  197.     else
  198.       @help_window.update
  199.       @yes_no_window.update
  200.       if Input.trigger?(Input::C)
  201.         $game_system.se_play($data_system.decision_se)
  202.         if @yes_no_window.index == 0
  203.           @yes_no_window.visible = false
  204.           @yes_no_window.active = false
  205.           @confirm_window.visible = false
  206.           filename = make_filename(@file_index)
  207.           $game_system.se_play($data_system.save_se)
  208.           file = File.open(filename, "wb")
  209.           write_save_data(file)
  210.           file.close
  211.           if $game_temp.save_calling
  212.             $game_temp.save_calling = false
  213.             $scene = Scene_Map.new
  214.           else
  215.             $scene = Scene_Menu.new(4)
  216.           end
  217.         else
  218.           @confirm_window.visible = false
  219.           @yes_no_window.visible = false
  220.           @yes_no_window.active = false
  221.           @yes_no_window.index = 1
  222.           @mode = 0
  223.         end
  224.       end
  225.       if Input.trigger?(Input::B)
  226.         @confirm_window.visible = false
  227.         @yes_no_window.visible = false
  228.         @yes_no_window.active = false
  229.         @yes_no_window.index = 1
  230.         @mode = 0
  231.       return
  232.     end
  233.   end
  234. end
  235. # -----------------------------
  236.   def on_cancel
  237.     $game_system.se_play($data_system.cancel_se)
  238.     if $game_temp.save_calling
  239.       $game_temp.save_calling = false
  240.       $scene = Scene_Map.new
  241.       return
  242.     end
  243.     $scene = Scene_Menu.new(4)
  244.   end
  245. # -----------------------------
  246.   def write_save_data(file)
  247.     characters = []
  248.     for i in 0...$game_party.actors.size
  249.       actor = $game_party.actors[i]
  250.       characters.push([actor.character_name, actor.character_hue])
  251.     end
  252.     Marshal.dump(characters, file)
  253.     Marshal.dump(Graphics.frame_count, file)
  254.     $game_system.save_count += 1
  255.     $game_system.magic_number = $data_system.magic_number
  256.     Marshal.dump($game_system, file)
  257.     Marshal.dump($game_switches, file)
  258.     Marshal.dump($game_variables, file)
  259.     Marshal.dump($game_self_switches, file)
  260.     Marshal.dump($game_screen, file)
  261.     Marshal.dump($game_actors, file)
  262.     Marshal.dump($game_party, file)
  263.     Marshal.dump($game_troop, file)
  264.     Marshal.dump($game_map, file)
  265.     Marshal.dump($game_player, file)
  266.   end
  267. end

  268. class Scene_File
  269.   alias carol3_main main
  270.   def main
  271.     carol3_main
  272.     if self.is_a?(Scene_Save)
  273.       @confirm_window.dispose
  274.       @yes_no_window.dispose
  275.     end
  276.   end
  277. end


  278. #==============================================================================
  279. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  280. #==============================================================================
复制代码





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