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

Project1

 找回密码
 注册会员
搜索

GAL用存读档界面[更新2.1版]

查看数: 3806 | 评论数: 6 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2011-8-16 04:23

正文摘要:

本帖最后由 各种压力的猫君 于 2011-8-17 02:34 编辑 根据脚本 R剧用的存读档界面 By.冰舞蝶恋 修改而来 原脚本帖 ->猛击我<- 先上截图: 注:左侧的“存档1、存档2……”中的“存档”文字是通过修改Vocab ...

回复

www66ds 发表于 2012-7-9 20:55:32
不会吧!
orzfly 发表于 2011-8-17 02:28:07
囧。我又有2.1了。
  1. #==============================================================================
  2. # 〇 GAL用存读档界面 2.1
  3. #
  4. #  2.1 by orzFly.com
  5. #      回滚为老版本 YesNoBox~好看!
  6. #      标题调用时有单独背景图
  7. #      可以隐藏掉那个坑爹的“旧的回忆”标题
  8. #      可以透明化窗口用自己的背景
  9. #      修正 bug:删不掉存档……
  10. #
  11. #  2.0 by orzFly.com
  12. #      整理脚本结构
  13. #      扩展为无限,增加详细信息、小列表
  14. #
  15. #  1.1 by 各种压力的猫君
  16. #      集成了一箭烂的删除存档1.1
  17. #  
  18. #  1.0 by 各种压力的猫君
  19. #      初版
  20. #
  21. # 参考脚本 R剧用的存读档界面   by 冰舞蝶恋
  22. #          删除存档v1.1.0      by 一箭烂(YiJL)
  23. #          Neo Save System III by Woratana [[email protected]]
  24. #------------------------------------------------------------------------------
  25. # 脚本说明:
  26. #
  27. #  本人脚本盲,只会改不会写,所以需要改进的话
  28. #  请联系各位脚本大神而不是我[各种压力的猫君] =-= |||
  29. #------------------------------------------------------------------------------
  30. module GALSave
  31. #==============================================================================
  32. # ▼ 脚本修改 *建议* 从此开始。
  33. #==============================================================================
  34.   # 存档个数   : 请按情况填写。填写过多也不会导致加载过慢。
  35.   MaxSaveSlot  = 100
  36.   
  37.   # 存档位置   : 请填写储存存档文件的位置。
  38.   #              RMVX 的默认位置为 "",
  39.   #                由于存档个数的提升,默认位置已不再优雅。
  40.   #              附注:您无需预先建立与分发此文件夹,脚本会自动建立。
  41.   SavePath     = "Saves/"
  42.   
  43.   # 存档文件名 : 请填写存档文件的文件名模板。
  44.   #              存档号请用 {id} 代替。
  45.   #              衬 0 的存档号请用 {ID} 代替。
  46.   SaveName     = "Save{ID}.rvdata"
  47.   
  48.   # 场景名队伍 ID
  49.   SceneNameID  = 2
  50.   # 章节名队伍 ID
  51.   ChapterNameID= 3
  52.   
  53.   # 界面标题   :留空就可以让他坑爹掉~
  54.   #              但是请注意要留住引号,否则脚本会报错。
  55.   ScreenTitle  = "§ 旧的回忆"
  56.   
  57.   # 窗口透明度 : 设置成 0 就让窗口背景消失了
  58.   Opacity      = 255
  59.   
  60.   # 视图       : 请填写使用的视图 ID。
  61.   #
  62.   #              可用的视图 ID:
  63.   #              0 - 小列表
  64.   #              1 - 大列表
  65.   View         = 1
  66.   
  67.   # 边距大小(左右上下)
  68.   MarginLeft   = 32
  69.   MarginRight  = 32
  70.   MarginTop    = 20
  71.   MarginBottom = 20
  72.   
  73.   # 存档名称   : 模板规则同 SaveName 存档文件名
  74.   SlotName     = '存档 {id}'

  75.   # 存档图标
  76.   SavedSlotIcon= 133 # 满
  77.   EmptySlotIcon= 141 # 空
  78.   
  79.   # 空存档文字
  80.   EmptySlotText= '- 无数据 -'
  81.   
  82.   # 大图标字段名
  83.   PlayTimeText = '时长: '
  84.   SaveTimeText = '时间: '
  85.   SceneText    = '场景: '
  86.   ChapterText  = '章节: '
  87.   
  88.   # 允许删除
  89.   AllowDelete  = true
  90.   
  91.   # 删除提示   : 模板规则同 SaveName 存档文件名
  92.   DeletePrompt = "确认删除存档 {id}?"
  93.   DeleteButton = ["删除", "取消"]
  94.   
  95.   # 覆盖提示
  96.   Overwrite    = true
  97.   
  98.   # 覆盖提示   : 模板规则同 SaveName 存档文件名
  99.   OverwritePrompt = "确认覆盖存档 {id}?"
  100.   OverwriteButton = ["覆盖", "取消"]
  101.   
  102.   # 读档背景   : 从标题读档时可以有背景图。
  103.   #              写 Cache.picture('文件名') 就为 Pictures 目录下的图片
  104.   #              也可以写 nil 用默认的透明化标题菜单~
  105.   LoadBackground = nil
  106.   
  107.   # 菜单背景   : 用一张透明的全屏 PNG 来实现深度自定义档位外观吧!
  108.   #              请配合 Opacity 使用!
  109.   #              写 Cache.picture('文件名') 就为 Pictures 目录下的图片
  110.   #              也可以写 nil 不使用。
  111.   MenuBackground = nil
  112. #==============================================================================
  113. # ▲ 脚本修改 *建议* 到此为 *止*。
  114. #==============================================================================
  115.   #--------------------------------------------------------------------------
  116.   # ● 字符串模板
  117.   #--------------------------------------------------------------------------
  118.   def self.string_template(str, id)
  119.     name = str.clone
  120.     name.gsub!(/\{id\}/) { id.to_s }
  121.     name.gsub!(/\{ID\}/) { id.is_a?(String) ? id : sprintf("%0#{GALSave::MaxSaveSlot.to_s.size}d", id) }
  122.     return name
  123.   end
  124.   #--------------------------------------------------------------------------
  125.   # ● 创建存档文件名
  126.   #--------------------------------------------------------------------------
  127.   def self.make_filename(id)
  128.     return string_template(GALSave::SavePath + GALSave::SaveName, id)
  129.     return name
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● 创建存档名
  133.   #--------------------------------------------------------------------------
  134.   def self.make_slotname(id)
  135.     return string_template(GALSave::SlotName, id)
  136.   end
  137. end

  138. #==============================================================================
  139. # ■ Game_GALSave
  140. #------------------------------------------------------------------------------
  141. #  为加快存档界面反应速度特加入此类。
  142. #  应用在 Scene_File 内部
  143. #==============================================================================

  144. class Game_GALSave
  145.   #--------------------------------------------------------------------------
  146.   # ● 初始化
  147.   #--------------------------------------------------------------------------
  148.   def initialize()
  149.     # 为存档创建文件夹
  150.     Dir.mkdir(GALSave::SavePath) if GALSave::SavePath != '' and !FileTest.directory?(GALSave::SavePath)
  151.     # 初始化存档缓存
  152.     @saves = []
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ● 检查存档是否存在
  156.   #--------------------------------------------------------------------------
  157.   def exist?(id)
  158.     return Dir.glob(GALSave.make_filename(id)).size > 0 if id.is_a?(String)
  159.     return FileTest.exist?(GALSave.make_filename(id))
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ● 加载存档信息
  163.   #--------------------------------------------------------------------------
  164.   def load_info(id)
  165.     return if id.is_a?(String)
  166.     return unless exist?(id)
  167.     file = File.open(GALSave.make_filename(id), "r")
  168.     begin
  169.       info = []
  170.       info[0] = file.mtime
  171.       info[1] = Marshal.load(file)
  172.       info[2] = Marshal.load(file) / Graphics.frame_rate
  173.     ensure
  174.       file.close
  175.     end
  176.     @saves[id] = info
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ● 获取存档信息
  180.   #--------------------------------------------------------------------------
  181.   def [](id)
  182.     return nil if id.is_a?(String)
  183.     if exist?(id)
  184.       load_info(id) if @saves[id].nil? or (File.mtime(GALSave.make_filename(id)) > @saves[id][0])
  185.     else
  186.       @saves[id] = nil
  187.     end
  188.     return @saves[id]
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   # ● 获取最新存档
  192.   #--------------------------------------------------------------------------
  193.   def latest_file
  194.     id = 1
  195.     time = nil
  196.     GALSave::MaxSaveSlot.times {|i|
  197.       if exist?(i + 1)
  198.         t = File.mtime(GALSave.make_filename(i + 1))
  199.         time = t if time.nil?
  200.         if t > time
  201.           id = i + 1
  202.           time = t
  203.         end
  204.       end
  205.     }
  206.     return id
  207.   end
  208. end

  209. #==============================================================================
  210. # ■ Window_GALSave
  211. #------------------------------------------------------------------------------
  212. #  显示神奇的 GAL 特有的存档窗口~
  213. #==============================================================================

  214. class Window_GALSave < Window_Selectable
  215.   #--------------------------------------------------------------------------
  216.   # ● 初始化目标
  217.   #     x : 窗口的X坐标
  218.   #     y : 窗口的Y坐标
  219.   #--------------------------------------------------------------------------
  220.   def initialize
  221.     @item_height = GALSave::View == 0 ? WLH : WLH * 3
  222.     super(
  223.       GALSave::MarginLeft,
  224.       GALSave::MarginTop + (GALSave::ScreenTitle != "" ? WLH + 32 : 0),
  225.       Graphics.width - GALSave::MarginLeft - GALSave::MarginRight,
  226.       Graphics.height - GALSave::MarginTop - GALSave::MarginBottom - (GALSave::ScreenTitle != "" ? WLH + 32 : 0)
  227.     )
  228.     self.opacity = GALSave::Opacity
  229.     @loaded = []
  230.     refresh
  231.   end
  232.   #--------------------------------------------------------------------------
  233.   # ● 刷新
  234.   #--------------------------------------------------------------------------
  235.   def refresh
  236.     self.contents.clear
  237.     @item_max = GALSave::MaxSaveSlot
  238.     create_contents
  239.     self.top_row = 0
  240.   end
  241.   #--------------------------------------------------------------------------
  242.   # ● 刷新画面
  243.   #--------------------------------------------------------------------------
  244.   def update
  245.     if cursor_movable?
  246.       last_index = @index
  247.       if Input.repeat?(Input::RIGHT)
  248.         cursor_pagedown
  249.       end
  250.       if Input.repeat?(Input::LEFT)
  251.         cursor_pageup
  252.       end
  253.       if @index != last_index
  254.         Sound.play_cursor
  255.       end
  256.     end
  257.     super
  258.   end
  259.   #--------------------------------------------------------------------------
  260.   # ● 绘制行
  261.   #--------------------------------------------------------------------------
  262.   def draw_item(i)
  263.     rect = item_rect(i)
  264.     self.contents.clear_rect(rect)
  265.     rect.x += 4
  266.     exist = $game_galsave.exist?(i + 1)   
  267.     icon = exist ? GALSave::SavedSlotIcon : GALSave::EmptySlotIcon
  268.     unless icon.nil?; rect.x -= 4; draw_icon(icon, rect.x, rect.y); rect.x += 26; rect.width -= 20; end
  269.     width = contents.text_size(GALSave.make_slotname(GALSave::MaxSaveSlot)).width
  270.     self.contents.draw_text(rect.x, rect.y, width, WLH, GALSave.make_slotname(i + 1)); rect.x += width + 4; rect.width -= width + 4
  271.     if exist
  272.       time = $game_galsave[i + 1][0].strftime("%m.%d(%H:%M)")
  273.       scene = $game_galsave[i + 1][1][GALSave::SceneNameID - 1][2]
  274.       chapter = $game_galsave[i + 1][1][GALSave::ChapterNameID - 1][2]
  275.       hour = $game_galsave[i + 1][2] / 60 / 60
  276.       min = $game_galsave[i + 1][2] / 60 % 60
  277.       sec = $game_galsave[i + 1][2] % 60
  278.       long = sprintf("%04d:%02d:%02d", hour, min, sec)
  279.     end
  280.     if GALSave::View == 0
  281.       if !exist
  282.         self.contents.draw_text(rect, GALSave::EmptySlotText, 1)
  283.       else
  284.         self.contents.font.size /= 2
  285.         width = [contents.text_size(long).width, contents.text_size(time).width].max
  286.         self.contents.draw_text(rect.x, rect.y, width, WLH / 2, time, 1)
  287.         self.contents.draw_text(rect.x, rect.y + WLH / 2, width, WLH / 2, long, 1)
  288.         rect.x += width + 4; rect.width -= width + 4
  289.         self.contents.font.size = Font.default_size
  290.         self.contents.draw_text(rect.x, rect.y, rect.width / 2, rect.height, chapter, 1)
  291.         self.contents.draw_text(rect.x + rect.width / 2, rect.y, rect.width / 2, rect.height, scene, 1)
  292.       end
  293.     else GALSave::View == 1
  294.       if !exist
  295.         self.contents.draw_text(rect, GALSave::EmptySlotText, 1)
  296.       else
  297.         width = rect.width / 2
  298.         w = contents.text_size(GALSave::PlayTimeText).width
  299.         self.contents.font.color = system_color
  300.         self.contents.draw_text(rect.x, rect.y, w, WLH, GALSave::PlayTimeText)
  301.         self.contents.font.color = normal_color
  302.         self.contents.draw_text(rect.x + w, rect.y, width - w, WLH, long)
  303.         w = contents.text_size(GALSave::SaveTimeText).width
  304.         self.contents.font.color = system_color
  305.         self.contents.draw_text(rect.x + width, rect.y, w, WLH, GALSave::SaveTimeText)
  306.         self.contents.font.color = normal_color
  307.         self.contents.draw_text(rect.x + width + w, rect.y, width - w, WLH, time)
  308.         
  309.         width = rect.width
  310.         rect.y += WLH
  311.         w = contents.text_size(GALSave::ChapterText).width
  312.         self.contents.font.color = system_color
  313.         self.contents.draw_text(rect.x, rect.y, w, WLH, GALSave::ChapterText)
  314.         self.contents.font.color = normal_color
  315.         self.contents.draw_text(rect.x+ w, rect.y, width - w, WLH, chapter)
  316.         
  317.         rect.y += WLH
  318.         w = contents.text_size(GALSave::SceneText).width
  319.         self.contents.font.color = system_color
  320.         self.contents.draw_text(rect.x, rect.y, w, WLH, GALSave::SceneText)
  321.         self.contents.font.color = normal_color
  322.         self.contents.draw_text(rect.x+w, rect.y, width - w, WLH, scene)
  323.       end
  324.     end
  325.   end
  326.   #--------------------------------------------------------------------------
  327.   # ● 窗口内容生成
  328.   #--------------------------------------------------------------------------
  329.   def create_contents
  330.     self.contents.dispose
  331.     self.contents = Bitmap.new(width - 32, [height - 32, row_max * @item_height].max)
  332.   end
  333.   #--------------------------------------------------------------------------
  334.   # ● 获取开头行
  335.   #--------------------------------------------------------------------------
  336.   def top_row(oy = nil)
  337.     return (oy.nil? ? self.oy : oy) / @item_height
  338.   end
  339.   #--------------------------------------------------------------------------
  340.   # ● 设置开头行
  341.   #     row : 显示开头的行
  342.   #--------------------------------------------------------------------------
  343.   # 为保证高速,只在显示到某行的时候才加载、绘制行。
  344.   #--------------------------------------------------------------------------
  345.   def top_row=(row)
  346.     row = 0 if row < 0
  347.     row = row_max - 1 if row > row_max - 1
  348.    
  349.     min = self.top_row(row * @item_height)
  350.     max = [min + self.page_item_max + 1, @item_max].min
  351.     for i in min...max
  352.       if @loaded[i].nil?
  353.         @loaded[i] = true
  354.         draw_item(i)
  355.       end
  356.     end
  357.    
  358.     self.oy = row * @item_height
  359.   end
  360.   #--------------------------------------------------------------------------
  361.   # ● 获取 1 页可以显示的行数
  362.   #--------------------------------------------------------------------------
  363.   def page_row_max
  364.     return (self.height - 32) / @item_height
  365.   end
  366.   #--------------------------------------------------------------------------
  367.   # ● 获取项目描画矩形
  368.   #     index : 项目编号
  369.   #--------------------------------------------------------------------------
  370.   def item_rect(index)
  371.     rect = Rect.new(0, 0, 0, 0)
  372.     rect.width = (contents.width + @spacing) / @column_max - @spacing
  373.     rect.height = @item_height
  374.     rect.x = index % @column_max * (rect.width + @spacing)
  375.     rect.y = index / @column_max * @item_height
  376.     return rect
  377.   end
  378. end

  379. #==============================================================================
  380. # ■ Window_GALSave_Title
  381. #------------------------------------------------------------------------------
  382. #  显示读档或是存档的标题。
  383. #==============================================================================
  384. class Window_GALSave_Title < Window_Base
  385.   #--------------------------------------------------------------------------
  386.   # ● 初始化对像
  387.   #--------------------------------------------------------------------------
  388.   def initialize
  389.     super(
  390.       GALSave::MarginLeft,
  391.       GALSave::MarginTop,
  392.       (Graphics.width - GALSave::MarginLeft - GALSave::MarginRight) / 2,
  393.       WLH + 32
  394.     )
  395.     self.opacity = GALSave::Opacity
  396.     refresh
  397.   end
  398.   #--------------------------------------------------------------------------
  399.   # ● 刷新
  400.   #--------------------------------------------------------------------------
  401.   def refresh
  402.     self.contents.clear
  403.     self.contents.font.color = normal_color
  404.     self.contents.font.bold = true
  405.     self.contents.draw_text(0, 0, 220, WLH, GALSave::ScreenTitle)
  406.   end
  407. end

  408. #==============================================================================
  409. # ■ Scene_File
  410. #------------------------------------------------------------------------------
  411. #  存档画面及读档画面的类。
  412. #==============================================================================
  413. class Scene_File
  414.   #--------------------------------------------------------------------------
  415.   # ● 开始处理
  416.   #--------------------------------------------------------------------------
  417.   def start
  418.     super
  419.     create_menu_background
  420.     unless GALSave::MenuBackground.nil?
  421.       @background = Sprite.new
  422.       @background.x, @background.y = 0, 0
  423.       @background.bitmap = GALSave::MenuBackground
  424.     end
  425.     $game_galsave = Game_GALSave.new if $game_galsave.nil?
  426.     @save_window = Window_GALSave.new
  427.     @title_window = Window_GALSave_Title.new unless GALSave::ScreenTitle == ""
  428.     if @saving
  429.       @save_window.index = $game_temp.last_file_index
  430.     else
  431.       @save_window.index = $game_galsave.latest_file - 1
  432.     end
  433.   end
  434.   #--------------------------------------------------------------------------
  435.   # ● 刷新菜单画面背景
  436.   #--------------------------------------------------------------------------
  437.   def update_menu_background
  438.     super
  439.     return unless @from_title
  440.     @menuback_sprite.bitmap = GALSave::LoadBackground unless GALSave::LoadBackground.nil?
  441.   end
  442.   #--------------------------------------------------------------------------
  443.   # ● 结束处理
  444.   #--------------------------------------------------------------------------
  445.   def terminate
  446.     super
  447.     dispose_menu_background
  448.     @save_window.dispose
  449.     @title_window.dispose unless GALSave::ScreenTitle == ""
  450.     @background.dispose unless GALSave::MenuBackground.nil?
  451.   end
  452.   #--------------------------------------------------------------------------
  453.   # ● 更新画面
  454.   #--------------------------------------------------------------------------
  455.   def update
  456.     super
  457.     update_menu_background
  458.     update_savefile_selection
  459.     @title_window.update unless GALSave::ScreenTitle == ""
  460.     @save_window.update
  461.     @background.update unless GALSave::MenuBackground.nil?
  462.   end
  463.   #--------------------------------------------------------------------------
  464.   # ● 刷新存档文件选项
  465.   #--------------------------------------------------------------------------
  466.   def update_savefile_selection
  467.     if Input.trigger?(Input::C)
  468.       determine_savefile
  469.     elsif Input.trigger?(Input::X) and GALSave::AllowDelete
  470.       determine_deletefile
  471.     elsif Input.trigger?(Input::B)
  472.       Sound.play_cancel
  473.       return_scene
  474.     end
  475.   end
  476.   #--------------------------------------------------------------------------
  477.   # ● 决定存档文件
  478.   #--------------------------------------------------------------------------
  479.   def determine_savefile
  480.     if @saving
  481.       if $game_galsave.exist?(@save_window.index + 1) and GALSave::Overwrite
  482.         Sound.play_decision
  483.         return if !yesnobox(GALSave.string_template(GALSave::OverwritePrompt, @save_window.index + 1), *GALSave::OverwriteButton)
  484.       end
  485.       Sound.play_save
  486.       do_save
  487.     else
  488.       if $game_galsave.exist?(@save_window.index + 1)
  489.         Sound.play_load
  490.         do_load
  491.       else
  492.         Sound.play_buzzer
  493.         return
  494.       end
  495.     end
  496.     $game_temp.last_file_index = @save_window.index
  497.   end
  498.   #--------------------------------------------------------------------------
  499.   # ● 决定删除文件
  500.   #--------------------------------------------------------------------------
  501.   def determine_deletefile
  502.     if $game_galsave.exist?(@save_window.index + 1)
  503.       Sound.play_decision
  504.       do_delete if yesnobox(GALSave.string_template(GALSave::DeletePrompt, @save_window.index + 1), *GALSave::DeleteButton)
  505.       return
  506.     else
  507.       Sound.play_buzzer
  508.       return
  509.     end
  510.   end
  511.   #--------------------------------------------------------------------------
  512.   # ● 执行删除
  513.   #--------------------------------------------------------------------------
  514.   def do_delete
  515.     File.delete(GALSave.make_filename(@save_window.index + 1))
  516.     @save_window.draw_item(@save_window.index)
  517.   end
  518.   #--------------------------------------------------------------------------
  519.   # ● 执行保存
  520.   #--------------------------------------------------------------------------
  521.   def do_save
  522.     file = File.open(GALSave.make_filename(@save_window.index + 1), "wb")
  523.     write_save_data(file)
  524.     file.close
  525.     return_scene
  526.   end
  527.   #--------------------------------------------------------------------------
  528.   # ● 执行读取
  529.   #--------------------------------------------------------------------------
  530.   def do_load
  531.     file = File.open(GALSave.make_filename(@save_window.index + 1), "rb")
  532.     read_save_data(file)
  533.     file.close
  534.     $scene = Scene_Map.new
  535.     RPG::BGM.fade(1500)
  536.     Graphics.fadeout(60)
  537.     Graphics.wait(40)
  538.     @last_bgm.play
  539.     @last_bgs.play
  540.   end
  541.   #--------------------------------------------------------------------------
  542.   # ● 存档数据的写入
  543.   #     file : 写入用文件对象 (已打开)
  544.   #--------------------------------------------------------------------------
  545.   def write_save_data(file)
  546.     characters = []
  547.     for actor in $game_party.members
  548.       characters.push([actor.character_name, actor.character_index, actor.name])
  549.     end
  550.     $game_system.save_count += 1
  551.     $game_system.version_id = $data_system.version_id
  552.     @last_bgm = RPG::BGM::last
  553.     @last_bgs = RPG::BGS::last
  554.     Marshal.dump(characters,           file)
  555.     Marshal.dump(Graphics.frame_count, file)
  556.     Marshal.dump(@last_bgm,            file)
  557.     Marshal.dump(@last_bgs,            file)
  558.     Marshal.dump($game_system,         file)
  559.     Marshal.dump($game_message,        file)
  560.     Marshal.dump($game_switches,       file)
  561.     Marshal.dump($game_variables,      file)
  562.     Marshal.dump($game_self_switches,  file)
  563.     Marshal.dump($game_actors,         file)
  564.     Marshal.dump($game_party,          file)
  565.     Marshal.dump($game_troop,          file)
  566.     Marshal.dump($game_map,            file)
  567.     Marshal.dump($game_player,         file)
  568.   end
  569.   #--------------------------------------------------------------------------
  570.   # ● 确认对话框
  571.   #--------------------------------------------------------------------------
  572.   def yesnobox(text,yes,no)
  573.     returnval = false
  574.     command_window = Window_YesNoBox.new(text, yes, no)
  575.     command_window.z = 9999
  576.     command_window.openness = 0
  577.     command_window.open
  578.     for i in 0...9
  579.       command_window.update
  580.       Graphics.update
  581.     end
  582.     loop do
  583.       command_window.update
  584.       Graphics.update
  585.       Input.update
  586.       if Input.trigger?(Input::C)
  587.         Sound.play_decision
  588.         returnval = command_window.index == 0 ? true : false
  589.         break
  590.       end
  591.       if Input.trigger?(Input::B)
  592.         Sound.play_cancel
  593.         returnval = false
  594.         break
  595.       end
  596.     end
  597.     command_window.close
  598.     for i in 0...9
  599.       command_window.update
  600.       Graphics.update
  601.     end
  602.     command_window.dispose
  603.     Graphics.update
  604.     Input.update
  605.     return returnval
  606.   end
  607. end
  608. #==============================================================================
  609. # ■ Window_YesNoBox
  610. #==============================================================================
  611. class Window_YesNoBox < Window_Selectable
  612.   #--------------------------------------------------------------------------
  613.   # ● 对象初始化
  614.   #--------------------------------------------------------------------------
  615.   def initialize(words, yes, no)
  616.     super((Graphics.width - 230)/2, (Graphics.height - 80)/2, 230, 80)
  617.     self.contents.font.size = 20
  618.     self.contents.font.color = system_color
  619.     self.contents.draw_text(0, 0, 200, 24, words, 1)
  620.     self.contents.font.size = 18
  621.     self.contents.font.color = normal_color
  622.     self.contents.draw_text(14, 24, 70, 24, yes, 1)
  623.     self.contents.draw_text(114, 24, 70, 24, no, 1)
  624.     @item_max = 2
  625.     @column_max = 2
  626.     @index = 0
  627.   end
  628.   #--------------------------------------------------------------------------
  629.   # ● 帧更新
  630.   #--------------------------------------------------------------------------
  631.   def update
  632.     super
  633.     if self.visible
  634.       if cursor_movable?
  635.         last_index = @index
  636.         if Input.repeat?(Input::DOWN)
  637.           cursor_down(Input.trigger?(Input::DOWN))
  638.         end
  639.         if Input.repeat?(Input::UP)
  640.           cursor_up(Input.trigger?(Input::UP))
  641.         end
  642.         if @index != last_index
  643.           Sound.play_cursor
  644.         end
  645.       end
  646.       update_cursor
  647.       call_update_help
  648.     end
  649.   end
  650.   #--------------------------------------------------------------------------
  651.   # ● 选择矩形
  652.   #--------------------------------------------------------------------------
  653.   def item_rect(index)
  654.     rect = Rect.new(0, 0, 0, 0)
  655.     rect.width = (contents.width + 5) / @column_max - 5
  656.     rect.height = WLH
  657.     rect.x = index % @column_max * (rect.width + 5)
  658.     rect.y = index / @column_max * WLH + 24
  659.     return rect
  660.   end
  661. end
  662. #==============================================================================
  663. # ■ 标题画面检查存档
  664. #==============================================================================
  665. class Scene_Title < Scene_Base
  666.   def check_continue
  667.     $game_galsave = Game_GALSave.new if $game_galsave.nil?
  668.     @continue_enabled = $game_galsave.exist?("*")
  669.   end
  670. end
复制代码

点评

汗……这是什么情况……  发表于 2011-8-26 19:29
古河渚 发表于 2011-8-17 00:20:05
提示: 作者被禁止或删除 内容自动屏蔽
各种压力的猫君 发表于 2011-8-16 17:53:08
忧雪の伤 发表于 2011-8-16 12:21
翻页请参考 Window_Selectable 。

脚本盲……窗口大小、字体这类的小东西我改倒是没问题……

求大神帮忙改个简单的范例行么……

点评

写了好多东西呢。  发表于 2011-8-17 00:17
0.0 好~~厉害! 坐等成果了 →v→  发表于 2011-8-16 23:47
嘿嘿,已经差不多了的说~我整合下删除提示再做一个覆盖提示~  发表于 2011-8-16 23:24
泪奔…… 终于碰到好人了……  发表于 2011-8-16 20:31
我帮你改改看。出去寄张明信片回来就开始弄~  发表于 2011-8-16 19:02
忧雪の伤 发表于 2011-8-16 12:21:51
翻页请参考 Window_Selectable 。

点评

所以我说Selectable啊……  发表于 2011-8-16 14:16
这是多窗口的……其实我觉得如果要打开很多窗口很不好。 或许用一个类似Window_MenuStatus的不错。  发表于 2011-8-16 14:13
RPGmaster 发表于 2011-8-16 08:09:22
本帖最后由 RPGmaster 于 2011-8-16 01:09 编辑

那个啥……制作AVG,用“旧的回忆”合适么=A=

点评

表示想要高清大图……  发表于 2011-8-17 01:42
大丈夫 - - 咱这个是N周目的  发表于 2011-8-16 20:31
Sei
这是Len...  发表于 2011-8-16 13:48
这rin抱着皮卡丘的头像哪来的= =||  发表于 2011-8-16 12:21
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-15 20:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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