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

Project1

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

[已经解决] 关于透明菜单的间距和位置调整(有插入脚本)

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2017-8-6
帖子
5
跳转到指定楼层
1
发表于 2017-8-6 21:51:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
(美术全包程序完全不懂菜鸡一枚请多包涵……………………)

先上图说明一下问题,之后会附上植入的脚本的。麻烦各位大大百忙之中抽空帮忙看一下QAQ…………非常感谢了!

【BUG位置错位A】先是用了脚本菜单透明化,发现光标的行距不可调整(或者是我没找到……) 现在的光标上下移动只有1个光标的位置不知道怎么改

【BUG位置错位B和C】选择FILE之后弹出左边的菜单部分  其中光标的位置可调整但是行距不知道在哪调(导致过于紧凑),显示物品名称行距也找不到调整的地方……
------------------------------------------
另一个地方是在呼出存档的时候

【BUG位置错位D】这里的光标其实是和上2图一样的打钩……但是我调了半天发现插入的脚本把这块写在一起了……(也就是文字有多长光标有多长)
于是我就完全不会改了QQQAQQQ!还请各位大佬指教一下

放上PS做完的预计效果图


【楼下放相关植入的脚本】

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2017-8-6
帖子
5
2
 楼主| 发表于 2017-8-6 21:54:18 | 只看该作者
--------------------------------------------------------------【关于主菜单的插入脚本】-----------------------------------------------------------------------------------------------------------------------------
RUBY 代码复制
  1. class Window_Selectable < Window_Base
  2.  
  3.   #--------------------------------------------------------------------------
  4.   # ● 更新光标
  5.   #--------------------------------------------------------------------------
  6.   def update_cursor
  7.     if @cursor_all
  8.       cursor_rect.set(0, 0, 24, row_max * item_height)#(0, 0, contents.width, row_max * item_height)
  9.       self.top_row = 0
  10.     elsif @index < 0
  11.       cursor_rect.empty
  12.     else
  13.       ensure_cursor_visible
  14.       cursor_rect.set(0, index / col_max * item_height, 24, item_height)#(item_rect(@index))
  15.     end
  16.   end
  17.  
  18.  
  19.   def item_rect(index)
  20.     rect = Rect.new
  21.     rect.width = item_width
  22.     rect.height = item_height
  23.     rect.x = index % col_max * (item_width + spacing) + 24
  24.     rect.y = index / col_max * item_height
  25.     rect
  26.   end
  27.  
  28. end
  29.  
  30.  
  31. #-----------------------------------------------
  32.  
  33. class Window_MenuCommand < Window_Command
  34.   #--------------------------------------------------------------------------
  35.   # ● 初始化指令选择位置(类方法)
  36.   #--------------------------------------------------------------------------
  37.   def self.init_command_position
  38.     @@last_command_symbol = nil
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 初始化对象(备注初始630 520)
  42.   #--------------------------------------------------------------------------
  43.   def initialize
  44.     super(619, 404)
  45.     select_last
  46.     self.opacity = 0
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● 获取窗口的宽度
  50.   #--------------------------------------------------------------------------
  51.   def window_width
  52.     return 260
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   # ● 获取显示行数
  56.   #--------------------------------------------------------------------------
  57.   def visible_line_number
  58.     item_max
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 生成指令列表
  62.   #--------------------------------------------------------------------------
  63.   def make_command_list
  64.     add_main_commands
  65.     add_game_end_command
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 向指令列表添加主要的指令
  69.   #--------------------------------------------------------------------------
  70.   def add_main_commands
  71.     add_command((""),   :item,   main_commands_enabled)
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● 独自添加指令用
  75.   #--------------------------------------------------------------------------
  76.  
  77.   #--------------------------------------------------------------------------
  78.   # ● 添加存档指令
  79.   #--------------------------------------------------------------------------
  80.   def add_save_command
  81.     add_command(Vocab::save, :save, save_enabled)
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 添加游戏结束指令
  85.   #--------------------------------------------------------------------------
  86.   def add_game_end_command
  87.     add_command((""), :game_end)
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 获取主要指令的有效状态
  91.   #--------------------------------------------------------------------------
  92.   def main_commands_enabled
  93.     $game_party.exists
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # ● 获取存档的有效状态
  97.   #--------------------------------------------------------------------------
  98.   def save_enabled
  99.     !$game_system.save_disabled
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # ● 按下确定键时的处理
  103.   #--------------------------------------------------------------------------
  104.   def process_ok
  105.     Audio.se_play("Audio/SE/进入菜单.OGG")
  106.     @@last_command_symbol = current_symbol
  107.     super
  108.   end
  109.   #--------------------------------------------------------------------------
  110.   # ● 返回最后一个选项的位置
  111.   #--------------------------------------------------------------------------
  112.   def select_last
  113.     select_symbol(@@last_command_symbol)
  114.   end
  115.  
  116. end
  117.  
  118.  
  119.  
  120. #---------------------------------------
  121.  
  122. class Window_GameEnd < Window_Command
  123.   #--------------------------------------------------------------------------
  124.   # ● 初始化对象
  125.   #--------------------------------------------------------------------------
  126.   def initialize
  127.     super(0, 0)
  128.     update_placement
  129.     self.openness = 0
  130.     self.opacity = 0
  131.     open
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● 获取窗口的宽度
  135.   #--------------------------------------------------------------------------
  136.   def window_width
  137.     return 160
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● 更新窗口的位置[225 213]
  141.   #--------------------------------------------------------------------------
  142.   def update_placement
  143.     self.x = 225
  144.     self.y = 213
  145.   end
  146.   #--------------------------------------------------------------------------
  147.   # ● 生成指令列表
  148.   #--------------------------------------------------------------------------
  149.   def make_command_list
  150.     add_command((""), :to_title)
  151.     add_command((""), :shutdown)
  152.     add_command((""),   :cancel)
  153.   end
  154. end
  155.  
  156.  
  157. #encoding:utf-8
  158. #==============================================================================
  159. # ■ Window_ItemList
  160. #------------------------------------------------------------------------------
  161. #  物品画面中,显示持有物品的窗口。
  162. #==============================================================================
  163.  
  164. class Window_ItemList < Window_Selectable
  165.   #--------------------------------------------------------------------------
  166.   # ● 初始化对象
  167.   #--------------------------------------------------------------------------
  168.  
  169.   def initialize(x, y, width, height)
  170.     super
  171.     self.opacity = 0
  172.     @category = :none
  173.     @data = []
  174.   end
  175.   #--------------------------------------------------------------------------
  176.   # ● 设置分类
  177.   #--------------------------------------------------------------------------
  178.   def category=(category)
  179.     return if @category == category
  180.     @category = category
  181.     refresh
  182.     self.oy = 0
  183.   end
  184.   #--------------------------------------------------------------------------
  185.   # ● 获取列数
  186.   #--------------------------------------------------------------------------
  187.   def col_max
  188.     return 1
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   # ● 获取项目数
  192.   #--------------------------------------------------------------------------
  193.   def item_max
  194.     @data ? @data.size : 1
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ● 获取物品
  198.   #--------------------------------------------------------------------------
  199.   def item
  200.     @data && index >= 0 ? @data[index] : nil
  201.   end
  202.   #--------------------------------------------------------------------------
  203.   # ● 获取选择项目的有效状态
  204.   #--------------------------------------------------------------------------
  205.   def current_item_enabled?
  206.     enable?(@data[index])
  207.   end
  208.   #--------------------------------------------------------------------------
  209.   # ● 查询列表中是否含有此物品
  210.   #--------------------------------------------------------------------------
  211.   def include?(item)
  212.     case @category
  213.     when :item
  214.       item.is_a?(RPG::Item) && !item.key_item?
  215.     when :weapon
  216.       item.is_a?(RPG::Weapon)
  217.     when :armor
  218.       item.is_a?(RPG::Armor)
  219.     when :key_item
  220.       item.is_a?(RPG::Item) && item.key_item?
  221.     else
  222.       false
  223.     end
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   # ● 查询此物品是否可用
  227.   #--------------------------------------------------------------------------
  228.   def enable?(item)
  229.     $game_party.usable?(item)
  230.   end
  231.   #--------------------------------------------------------------------------
  232.   # ● 生成物品列表
  233.   #--------------------------------------------------------------------------
  234.   def make_item_list
  235.     @data = $game_party.all_items.select {|item| include?(item) }
  236.     @data.push(nil) if include?(nil)
  237.   end
  238.   #--------------------------------------------------------------------------
  239.   # ● 返回上一个选择的位置
  240.   #--------------------------------------------------------------------------
  241.   def select_last
  242.     select(@data.index($game_party.last_item.object) || 0)
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # ● 绘制项目 4
  246.   #--------------------------------------------------------------------------
  247.   def draw_item(index)
  248.     item = @data[index]
  249.     if item
  250.       rect = item_rect(index)
  251.       rect.width -= 4
  252.       draw_item_name(item, rect.x, rect.y, enable?(item))
  253.     end
  254.   end
  255.  
  256.  
  257.   #--------------------------------------------------------------------------
  258.   # ● 绘制物品个数
  259.   #--------------------------------------------------------------------------
  260.   def draw_item_number(rect, item)
  261.     draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  262.   end
  263.   #--------------------------------------------------------------------------
  264.   # ● 更新帮助内容
  265.   #--------------------------------------------------------------------------
  266.  
  267.   def update_help
  268.     @help_window.set_item(item)
  269.   end
  270.   #--------------------------------------------------------------------------
  271.   # ● 刷新
  272.   #--------------------------------------------------------------------------
  273.   def refresh
  274.     make_item_list
  275.     create_contents
  276.     draw_all_items
  277.   end
  278.  
  279.  
  280. end
  281.  
  282.  
  283.  
  284. #————————————————————————
  285.  
  286. class Window_ItemList < Window_Selectable
  287.  
  288.  
  289.  
  290.   def process_ok
  291.     if current_item_enabled?
  292.     Audio.se_play("Audio/SE/确定.OGG")
  293.     Input.update
  294.     deactivate
  295.     call_ok_handler
  296.   else
  297.     Audio.se_play("Audio/SE/退出.OGG")
  298.   end
  299.   end
  300.  
  301.   def process_cancel
  302.     Audio.se_play("Audio/SE/关ITEM菜单.OGG")
  303.     Input.update
  304.     deactivate
  305.     call_cancel_handler
  306.   end  
  307.   end
  308.  
  309. #----------------物品名称的颜色更改------------------------
  310.  
  311. class Window_Base < Window
  312.  
  313.   def draw_item_name(item, x, y, enabled = true, width = 172)
  314.     return unless item
  315.     self.contents.font.color = Color.new(0, 0, 0, 255)
  316.     self.contents.font.outline = false
  317.     draw_text(x + 2, y, width, line_height, item.name)
  318.   end  
  319.  
  320.  
  321. end
  322.  
  323. #---------------------------
  324.  
  325.  
  326. class Window_ItemPicture < Window_Selectable
  327.  
  328.   def initialize(x, y, width, height)
  329.     super
  330.     self.opacity = 0
  331.     refresh
  332.   end
  333.  
  334.   def set_item(item)
  335.     @item = item
  336.     refresh
  337.   end
  338.  
  339.   def refresh
  340.     return unless @item
  341.     self.contents.clear
  342.     bitmap = Cache.system(@item.name)
  343.     rect = Rect.new(0, 0,bitmap.width, bitmap.height)
  344.     contents.blt(0, 0, bitmap, rect, 255)
  345.     bitmap.dispose
  346.   end
  347.  
  348.   def process_ok
  349.     if current_item_enabled?
  350.     Audio.se_play("Audio/SE/确定.OGG")
  351.     Input.update
  352.     deactivate
  353.     call_ok_handler
  354.   else
  355.     Audio.se_play("Audio/SE/退出.OGG")
  356.   end
  357.  
  358.   def process_cancel
  359.     Audio.se_play("Audio/SE/退出.OGG")
  360.     Input.update
  361.     deactivate
  362.     call_cancel_handler
  363.   end
  364.  
  365.   end
  366.  
  367.  
  368. end
  369.  
  370.  
  371. #encoding:utf-8
  372. #==============================================================================
  373. # ■ Scene_Menu
  374. #------------------------------------------------------------------------------
  375. #  菜单画面
  376. #==============================================================================
  377.  
  378. class Scene_Menu < Scene_MenuBase
  379.   #--------------------------------------------------------------------------
  380.   # ● 开始处理
  381.   #--------------------------------------------------------------------------
  382.   def start
  383.     super
  384.     create_command_window
  385.   end
  386.   #--------------------------------------------------------------------------
  387.   # ● 生成指令窗口
  388.   #--------------------------------------------------------------------------
  389.   def create_command_window
  390.     @command_window = Window_MenuCommand.new
  391.     @command_window.set_handler(:item,      method(:command_item))
  392.     @command_window.set_handler(:game_end,  method(:command_game_end))
  393.     @command_window.set_handler(:cancel,    method(:return_scene))
  394.   end
  395.  
  396.  
  397.     #--------------------------------------------------------------------------
  398.   # ● 指令“存档”
  399.   #--------------------------------------------------------------------------
  400.   def command_save
  401.     SceneManager.call(Scene_Save)
  402.   end
  403.  
  404.  
  405.  
  406.   #--------------------------------------------------------------------------
  407.   # ● 指令“物品”
  408.   #--------------------------------------------------------------------------
  409.    def command_item
  410.      create_status_window
  411.      create_pic_window
  412.      create_itemback
  413.    end
  414.  
  415.    #225,213,210,160 物品名字的坐标  (横、纵、 窗口大小)
  416.    #230,400,338,198
  417.   def create_status_window
  418.     @status_window = Window_ItemList.new(5,155,200,255)
  419.     @status_window.viewport = @viewport
  420.     @status_window.help_window = @help_window
  421.     @status_window.category = :item
  422.     @status_window.activate
  423.     @status_window.index = 0
  424.     @status_window.select_last
  425.     @status_window.set_handler(:cancel, method(:on_personal_cancel))
  426.   end  
  427.  
  428.   def create_pic_window
  429.     @pic_window = Window_ItemPicture.new(167,74,500,500)
  430.     @pic_window.viewport = @viewport
  431.   end  
  432.  
  433.   def create_itemback
  434.     @background_sprite3 = Sprite.new
  435.     @background_sprite3.bitmap = Cache.system("itemback")
  436.   end   
  437.  
  438.   def on_personal_cancel
  439.     @status_window.unselect
  440.     @pic_window.close
  441.     @status_window.close   
  442.     @command_window.activate
  443.     @background_sprite3.dispose
  444.   end
  445.  
  446.  
  447. #------------------------
  448. # 指令“结束”
  449. #------------------------
  450.  
  451.   def command_game_end
  452.     create_end_window
  453.     create_endback
  454.   end
  455.  
  456.   def create_end_window
  457.     @end_window = Window_GameEnd.new
  458.     @end_window.viewport = @viewport
  459.     @end_window.activate
  460.     @end_window.index = 0
  461.     @end_window.set_handler(:to_title, method(:command_to_title))
  462.     @end_window.set_handler(:shutdown, method(:command_shutdown))
  463.     @end_window.set_handler(:cancel,   method(:on_end_cancel))
  464.   end
  465.  
  466.   def create_endback
  467.     @background_sprite4 = Sprite.new
  468.     @background_sprite4.bitmap = Cache.system("endback")
  469.   end
  470.  
  471.   def command_to_title
  472.    @end_window.unselect
  473.    @end_window.close
  474.    @background_sprite4.dispose
  475.     fadeout_all
  476.     SceneManager.goto(Scene_Title)
  477.   end
  478.  
  479.   def command_shutdown
  480.     fadeout_all
  481.     SceneManager.exit
  482.   end
  483.  
  484.   def on_end_cancel
  485.   @end_window.unselect
  486.   @end_window.close
  487.   @background_sprite4.dispose
  488.   @command_window.activate
  489.   end
  490.  
  491.  
  492. #--------------------------------------------------------------------------
  493. # *更新“帮助图片”
  494. #--------------------------------------------------------------------------
  495.   def update
  496.     super
  497.     pic_item if @status_window
  498.   end
  499.   def pic_item
  500.     if @status_window.item != @pic_item
  501.       @pic_item = @status_window.item
  502.       @pic_window.set_item(@pic_item)
  503.     end
  504.     end
  505.  
  506.   def create_background
  507.     @background_sprite = Sprite.new
  508.     @background_sprite.bitmap = SceneManager.background_bitmap
  509.     @background_sprite.color.set(16, 16, 16, 128)
  510.     @background_sprite2 = Sprite.new
  511.     @background_sprite2.bitmap = Cache.system("menuback")
  512.   end
  513.  
  514.   #--------------------------------------------------------------------------
  515.  
  516.   # ● 释放背景
  517.  
  518.   #--------------------------------------------------------------------------
  519.  
  520.   def dispose_background
  521.    @background_sprite.dispose
  522.    @background_sprite2.dispose
  523.   end
  524.  
  525.  
  526. end



---------------------------------------------------------------【关于滚动窗口】-----------------------------------------------------------------------------------------------------------------------------


RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_Selectable
  4. #------------------------------------------------------------------------------
  5. #  拥有光标移动、滚动功能的窗口
  6. #==============================================================================
  7.  
  8. class Window_Selectableforfile < Window_Base
  9.   #--------------------------------------------------------------------------
  10.   # ● 定义实例变量
  11.   #--------------------------------------------------------------------------
  12.   attr_reader   :index                    # 光标位置
  13.   attr_reader   :help_window              # 帮助窗口
  14.   attr_accessor :cursor_fix               # 光标固定的标志
  15.   attr_accessor :cursor_all               # 光标全选择的标志
  16.   #--------------------------------------------------------------------------
  17.   # ● 初始化对象
  18.   #-------------------------------------------------------------------------
  19.   def initialize(x, y, width, height)
  20.     super
  21.     @index = -1
  22.     @handler = {}
  23.     @cursor_fix = false
  24.     @cursor_all = false
  25.     update_padding
  26.     deactivate
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 获取列数
  30.   #--------------------------------------------------------------------------
  31.   def col_max
  32.     return 1
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 获取行间距的宽度32
  36.   #--------------------------------------------------------------------------
  37.   def spacing
  38.     return 32
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● 获取项目数
  42.   #--------------------------------------------------------------------------
  43.   def item_max
  44.     return 0
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ● 获取项目的宽度
  48.   #--------------------------------------------------------------------------
  49.   def item_width
  50.     (width - standard_padding * 2 + spacing) / col_max - spacing
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 获取项目的高度
  54.   #--------------------------------------------------------------------------
  55.   def item_height
  56.     line_height
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 获取行数
  60.   #--------------------------------------------------------------------------
  61.   def row_max
  62.     [(item_max + col_max - 1) / col_max, 1].max
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 计算窗口内容的高度
  66.   #--------------------------------------------------------------------------
  67.   def contents_height
  68.     [super - super % item_height, row_max * item_height].max
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● 更新边距
  72.   #--------------------------------------------------------------------------
  73.   def update_padding
  74.     super
  75.     update_padding_bottom
  76.   end
  77.   #--------------------------------------------------------------------------
  78.   # ● 更新下端边距
  79.   #--------------------------------------------------------------------------
  80.   def update_padding_bottom
  81.     surplus = (height - standard_padding * 2) % item_height
  82.     self.padding_bottom = padding + surplus
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 设置高度
  86.   #--------------------------------------------------------------------------
  87.   def height=(height)
  88.     super
  89.     update_padding
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 更改启用状态
  93.   #--------------------------------------------------------------------------
  94.   def active=(active)
  95.     super
  96.     update_cursor
  97.     call_update_help
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● 设置光标位置
  101.   #--------------------------------------------------------------------------
  102.   def index=(index)
  103.     @index = index
  104.     update_cursor
  105.     call_update_help
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 选择项目
  109.   #--------------------------------------------------------------------------
  110.   def select(index)
  111.     self.index = index if index
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● 解除项目的选择
  115.   #--------------------------------------------------------------------------
  116.   def unselect
  117.     self.index = -1
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # ● 获取当前行
  121.   #--------------------------------------------------------------------------
  122.   def row
  123.     index / col_max
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● 获取顶行位置
  127.   #--------------------------------------------------------------------------
  128.   def top_row
  129.     oy / item_height
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ● 设置顶行位置
  133.   #--------------------------------------------------------------------------
  134.   def top_row=(row)
  135.     row = 0 if row < 0
  136.     row = row_max - 1 if row > row_max - 1
  137.     self.oy = row * item_height
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● 获取一页內显示的行数
  141.   #--------------------------------------------------------------------------
  142.   def page_row_max
  143.     (height - padding - padding_bottom) / item_height
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ● 获取一页內显示的项目数
  147.   #--------------------------------------------------------------------------
  148.   def page_item_max
  149.     page_row_max * col_max
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # ● 判定是否横向选择
  153.   #--------------------------------------------------------------------------
  154.   def horizontal?
  155.     page_row_max == 1
  156.   end
  157.   #--------------------------------------------------------------------------
  158.   # ● 获取末行位置
  159.   #--------------------------------------------------------------------------
  160.   def bottom_row
  161.     top_row + page_row_max - 1
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   # ● 设置末行位置
  165.   #--------------------------------------------------------------------------
  166.   def bottom_row=(row)
  167.     self.top_row = row - (page_row_max - 1)
  168.   end
  169.   #--------------------------------------------------------------------------
  170.   # ● 获取项目的绘制矩形
  171.   #--------------------------------------------------------------------------
  172.   def item_rect(index)
  173.     rect = Rect.new
  174.     rect.width = item_width
  175.     rect.height = item_height
  176.     rect.x = index % col_max * (item_width + spacing)
  177.     rect.y = index / col_max * item_height
  178.     rect
  179.   end
  180.   #--------------------------------------------------------------------------
  181.   # ● 获取项目的绘制矩形(内容用)
  182.   #--------------------------------------------------------------------------
  183.   def item_rect_for_text(index)
  184.     rect = item_rect(index)
  185.     rect.x += 4
  186.     rect.width -= 8
  187.     rect
  188.   end
  189.   #--------------------------------------------------------------------------
  190.   # ● 设置帮助窗口
  191.   #--------------------------------------------------------------------------
  192.   def help_window=(help_window)
  193.     @help_window = help_window
  194.     call_update_help
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ● 设置动作对应的处理方法
  198.   #     method : 设置的处理方法 (Method 实例)
  199.   #--------------------------------------------------------------------------
  200.   def set_handler(symbol, method)
  201.     @handler[symbol] = method
  202.   end
  203.   #--------------------------------------------------------------------------
  204.   # ● 确认处理方法是否存在
  205.   #--------------------------------------------------------------------------
  206.   def handle?(symbol)
  207.     @handler.include?(symbol)
  208.   end
  209.   #--------------------------------------------------------------------------
  210.   # ● 调用处理方法
  211.   #--------------------------------------------------------------------------
  212.   def call_handler(symbol)
  213.     @handler[symbol].call if handle?(symbol)
  214.   end
  215.   #--------------------------------------------------------------------------
  216.   # ● 判定光标是否可以移动
  217.   #--------------------------------------------------------------------------
  218.   def cursor_movable?
  219.     active && open? && !@cursor_fix && !@cursor_all && item_max > 0
  220.   end
  221.   #--------------------------------------------------------------------------
  222.   # ● 光标向下移动1
  223.   #--------------------------------------------------------------------------
  224.   def cursor_down(wrap = false)
  225.     if index < item_max - col_max || (wrap && col_max == 1)
  226.       select((index + col_max) % item_max)
  227.     end
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   # ● 光标向上移动
  231.   #--------------------------------------------------------------------------
  232.   def cursor_up(wrap = false)
  233.     if index >= col_max || (wrap && col_max == 1)
  234.       select((index - col_max + item_max) % item_max)
  235.     end
  236.   end
  237.   #--------------------------------------------------------------------------
  238.   # ● 光标向右移动
  239.   #--------------------------------------------------------------------------
  240.   def cursor_right(wrap = false)
  241.     if col_max >= 2 && (index < item_max - 1 || (wrap && horizontal?))
  242.       select((index + 1) % item_max)
  243.     end
  244.   end
  245.   #--------------------------------------------------------------------------
  246.   # ● 光标向左移动
  247.   #--------------------------------------------------------------------------
  248.   def cursor_left(wrap = false)
  249.     if col_max >= 2 && (index > 0 || (wrap && horizontal?))
  250.       select((index - 1 + item_max) % item_max)
  251.     end
  252.   end
  253.   #--------------------------------------------------------------------------
  254.   # ● 光标移至下一页
  255.   #--------------------------------------------------------------------------
  256.   def cursor_pagedown
  257.     if top_row + page_row_max < row_max
  258.       self.top_row += page_row_max
  259.       select([@index + page_item_max, item_max - 1].min)
  260.     end
  261.   end
  262.   #--------------------------------------------------------------------------
  263.   # ● 光标移至上一页
  264.   #--------------------------------------------------------------------------
  265.   def cursor_pageup
  266.     if top_row > 0
  267.       self.top_row -= page_row_max
  268.       select([@index - page_item_max, 0].max)
  269.     end
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # ● 更新画面
  273.   #--------------------------------------------------------------------------
  274.   def update
  275.     super
  276.     process_cursor_move
  277.     process_handling
  278.   end
  279.   #--------------------------------------------------------------------------
  280.   # ● 处理光标的移动
  281.   #--------------------------------------------------------------------------
  282.   def process_cursor_move
  283.     return unless cursor_movable?
  284.     last_index = @index
  285.     cursor_down (Input.trigger?(:DOWN))  if Input.repeat?(:DOWN)
  286.     cursor_up   (Input.trigger?(:UP))    if Input.repeat?(:UP)
  287.     cursor_right(Input.trigger?(:RIGHT)) if Input.repeat?(:RIGHT)
  288.     cursor_left (Input.trigger?(:LEFT))  if Input.repeat?(:LEFT)
  289.     cursor_pagedown   if !handle?(:pagedown) && Input.trigger?(:R)
  290.     cursor_pageup     if !handle?(:pageup)   && Input.trigger?(:L)
  291.     Sound.play_cursor if @index != last_index
  292.   end
  293.   #--------------------------------------------------------------------------
  294.   # ● “确定”和“取消”的处理
  295.   #--------------------------------------------------------------------------
  296.   def process_handling
  297.     return unless open? && active
  298.     return process_ok       if ok_enabled?        && Input.trigger?(:C)
  299.     return process_cancel   if cancel_enabled?    && Input.trigger?(:B)
  300.     return process_pagedown if handle?(:pagedown) && Input.trigger?(:R)
  301.     return process_pageup   if handle?(:pageup)   && Input.trigger?(:L)
  302.   end
  303.   #--------------------------------------------------------------------------
  304.   # ● 获取确定处理的有效状态
  305.   #--------------------------------------------------------------------------
  306.   def ok_enabled?
  307.     handle?(:ok)
  308.   end
  309.   #--------------------------------------------------------------------------
  310.   # ● 获取取消处理的有效状态
  311.   #--------------------------------------------------------------------------
  312.   def cancel_enabled?
  313.     handle?(:cancel)
  314.   end
  315.   #--------------------------------------------------------------------------
  316.   # ● 按下确定键时的处理
  317.   #--------------------------------------------------------------------------
  318.   def process_ok
  319.     if current_item_enabled?
  320.       Sound.play_ok
  321.       Input.update
  322.       deactivate
  323.       call_ok_handler
  324.     else
  325.       Sound.play_buzzer
  326.     end
  327.   end
  328.   #--------------------------------------------------------------------------
  329.   # ● 调用“确定”的处理方法
  330.   #--------------------------------------------------------------------------
  331.   def call_ok_handler
  332.     call_handler(:ok)
  333.   end
  334.   #--------------------------------------------------------------------------
  335.   # ● 按下取消键时的处理
  336.   #--------------------------------------------------------------------------
  337.   def process_cancel
  338.     Sound.play_cancel
  339.     Input.update
  340.     deactivate
  341.     call_cancel_handler
  342.   end
  343.   #--------------------------------------------------------------------------
  344.   # ● 调用“取消”的处理方法
  345.   #--------------------------------------------------------------------------
  346.   def call_cancel_handler
  347.     call_handler(:cancel)
  348.   end
  349.   #--------------------------------------------------------------------------
  350.   # ● 按下 L 键(PageUp)时的处理
  351.   #--------------------------------------------------------------------------
  352.   def process_pageup
  353.     Sound.play_cursor
  354.     Input.update
  355.     deactivate
  356.     call_handler(:pageup)
  357.   end
  358.   #--------------------------------------------------------------------------
  359.   # ● 按下 R 键(PageDown)时的处理
  360.   #--------------------------------------------------------------------------
  361.   def process_pagedown
  362.     Sound.play_cursor
  363.     Input.update
  364.     deactivate
  365.     call_handler(:pagedown)
  366.   end
  367.   #--------------------------------------------------------------------------
  368.   # ● 更新光标
  369.   #--------------------------------------------------------------------------
  370.   def update_cursor
  371.     if @cursor_all
  372.       cursor_rect.set(0, 0, contents.width, row_max * item_height)
  373.       self.top_row = 0
  374.     elsif @index < 0
  375.       cursor_rect.empty
  376.     else
  377.       ensure_cursor_visible
  378.       cursor_rect.set(item_rect(@index))
  379.     end
  380.   end
  381.   #--------------------------------------------------------------------------
  382.   # ● 确保光标在画面范围内滚动
  383.   #--------------------------------------------------------------------------
  384.   def ensure_cursor_visible
  385.     self.top_row = row if row < top_row
  386.     self.bottom_row = row if row > bottom_row
  387.   end
  388.   #--------------------------------------------------------------------------
  389.   # ● 调用帮助窗口的更新方法
  390.   #--------------------------------------------------------------------------
  391.   def call_update_help
  392.     update_help if active && @help_window
  393.   end
  394.   #--------------------------------------------------------------------------
  395.   # ● 更新帮助窗口
  396.   #--------------------------------------------------------------------------
  397.   def update_help
  398.     @help_window.clear
  399.   end
  400.   #--------------------------------------------------------------------------
  401.   # ● 获取选择项目的有效状态
  402.   #--------------------------------------------------------------------------
  403.   def current_item_enabled?
  404.     return true
  405.   end
  406.   #--------------------------------------------------------------------------
  407.   # ● 绘制所有项目
  408.   #--------------------------------------------------------------------------
  409.   def draw_all_items
  410.     item_max.times {|i| draw_item(i) }
  411.   end
  412.   #--------------------------------------------------------------------------
  413.   # ● 绘制项目
  414.   #--------------------------------------------------------------------------
  415.   def draw_item(index)
  416.   end
  417.   #--------------------------------------------------------------------------
  418.   # ● 消除项目
  419.   #--------------------------------------------------------------------------
  420.   def clear_item(index)
  421.     contents.clear_rect(item_rect(index))
  422.   end
  423.   #--------------------------------------------------------------------------
  424.   # ● 重绘项目
  425.   #--------------------------------------------------------------------------
  426.   def redraw_item(index)
  427.     clear_item(index) if index >= 0
  428.     draw_item(index)  if index >= 0
  429.   end
  430.   #--------------------------------------------------------------------------
  431.   # ● 重绘选择项目
  432.   #--------------------------------------------------------------------------
  433.   def redraw_current_item
  434.     redraw_item(@index)
  435.   end
  436.   #--------------------------------------------------------------------------
  437.   # ● 刷新
  438.   #--------------------------------------------------------------------------
  439.   def refresh
  440.     contents.clear
  441.     draw_all_items
  442.   end
  443. end



---------------------------------------------------------------【存读档界面脚本】-----------------------------------------------------------------------------------------------------------------------------
RUBY 代码复制
  1. class Window_Base < Window
  2.  
  3. def draw_savebust(savebust_name, x, y)
  4. bitmap = Cache.savebust(savebust_name)
  5. rect = Rect.new(0,0,0,0)
  6. contents.blt(x,y,bitmap,rect)
  7. end
  8.  
  9. end
  10.  
  11.  
  12. module Cache
  13.  
  14. def self.savebust(filename)
  15.     load_bitmap("Graphics/savebust/", filename)
  16.   end
  17.  
  18. end
  19.  
  20. #==============================================================================
  21. # ■ セーブ&ロード画面をカスタマイズするスクリプト
  22. #    Ver 0.02 2012/01/21 Sceneクラス関連を修正、イベントコマンド「セーブ画面を
  23. #                          開く」に未対応だった不具合を修正
  24. #    Ver 0.01 2011/12/25
  25. #------------------------------------------------------------------------------
  26.  
  27. #==============================================================================
  28.  
  29. module DataManager
  30.   #--------------------------------------------------------------------------
  31.   # ◎ セーブファイルの最大数(上書き定義)
  32.   #--------------------------------------------------------------------------
  33.   def self.savefile_max
  34.     return 6 # 大きすぎないこと!
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● セーブフォルダ名の取得
  38.   #--------------------------------------------------------------------------
  39.   def self.save_folder_name
  40.     return "Save"
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ◎ セーブファイルの存在判定(上書き定義)
  44.   #--------------------------------------------------------------------------
  45.   def self.save_file_exists?
  46.     if save_folder_name == ""
  47.       path = 'Save*.rvdata2'
  48.     else
  49.       path = save_folder_name + '/Save*.rvdata2'
  50.     end
  51.     !Dir.glob(path).empty?
  52.   end
  53.   #--------------------------------------------------------------------------
  54.   # ◎ ファイル名の作成(上書き定義)
  55.   #     index : ファイルインデックス
  56.   #--------------------------------------------------------------------------
  57.   def self.make_filename(index)
  58.     file_name = sprintf("Save%03d.rvdata2", index + 1)
  59.     if save_folder_name == ""
  60.       return file_name
  61.     else
  62.       return save_folder_name + '/' + file_name
  63.     end
  64.   end
  65.   #--------------------------------------------------------------------------
  66.   # ● セーブの実行・プレビューあり
  67.   #--------------------------------------------------------------------------
  68.   def self.save_game_with_preview(index)
  69.     begin
  70.       save_game_without_rescue2(index)
  71.     rescue
  72.       delete_save_file(index)
  73.       false
  74.     end
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● ロードの実行・プレビューあり
  78.   #--------------------------------------------------------------------------
  79.   def self.load_game2(index)
  80.     load_game_without_rescue2(index) rescue false
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # ● プレビューのロード
  84.   #--------------------------------------------------------------------------
  85.   def self.load_preview(index)
  86.     load_preview_without_rescue(index) rescue nil
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● セーブの実行・プレビューあり(例外処理なし)
  90.   #--------------------------------------------------------------------------
  91.   def self.save_game_without_rescue2(index)
  92.     unless FileTest.directory?(save_folder_name)
  93.       if FileTest.exist?(save_folder_name)
  94.         msgbox "セーブ処理で異常が発生しました。ゲームを再インストールして下さい。"
  95.         return false
  96.       end
  97.       Dir::mkdir(save_folder_name)
  98.       unless FileTest.directory?(save_folder_name)
  99.         msgbox "セーブに失敗しました。HDDの空き容量等を確認して下さい。"
  100.         return false
  101.       end
  102.     end
  103.     File.open(make_filename(index), "wb") do |file|
  104.       $game_system.on_before_save
  105.       Marshal.dump(make_save_header2, file)
  106.       Marshal.dump(make_save_preview, file)
  107.       Marshal.dump(make_save_contents, file)
  108.       @last_savefile_index = index
  109.     end
  110.     return true
  111.   end
  112.   #--------------------------------------------------------------------------
  113.   # ● ロードの実行・プレビューあり(例外処理なし)
  114.   #--------------------------------------------------------------------------
  115.   def self.load_game_without_rescue2(index)
  116.     File.open(make_filename(index), "rb") do |file|
  117.       Marshal.load(file)
  118.       Marshal.load(file)
  119.       extract_save_contents(Marshal.load(file))
  120.       reload_map_if_updated
  121.       @last_savefile_index = index
  122.     end
  123.     return true
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● セーブヘッダの作成・拡張
  127.   #--------------------------------------------------------------------------
  128.   def self.make_save_header2
  129.     header = {}
  130.     header[:characters] = $game_party.characters_for_savefile
  131.     header[:playtime_s] = $game_system.playtime_s
  132.     header[:savetitle]  = $game_map.display_name
  133.     header
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ● プレビューのロード(例外処理なし)
  137.   #--------------------------------------------------------------------------
  138.   def self.load_preview_without_rescue(index)
  139.     File.open(make_filename(index), "rb") do |file|
  140.       Marshal.load(file)
  141.       return array_to_bitmap(Marshal.load(file))
  142.     end
  143.     return nil
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ● プレビューの作成
  147.   #--------------------------------------------------------------------------
  148.   def self.make_save_preview
  149.     preview = bitmap_to_array($game_temp.save_preview_bmp)
  150.     preview
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # ● プレビュー用ビットマップをセーブ可能な配列形式に変換する
  154.   #     bitmap : ビットマップ
  155.   #--------------------------------------------------------------------------
  156.   def self.bitmap_to_array(bitmap)
  157.     return unless bitmap
  158.     data = []
  159.     for i in 0...bitmap.width
  160.       data[i] = []
  161.       for j in 0...bitmap.height
  162.         color = bitmap.get_pixel(i, j)
  163.         value = (color.red.floor << 16) + (color.green.floor << 8) + color.blue.floor
  164.         data[i][j] = value
  165.       end
  166.     end
  167.     return data
  168.   end
  169.   #--------------------------------------------------------------------------
  170.   # ● プレビュー用ビットマップを配列形式からビットマップに復元する
  171.   #--------------------------------------------------------------------------
  172.   def self.array_to_bitmap(data)
  173.     return unless data
  174.     bitmap = Bitmap.new(data.size, data[0].size)
  175.     for i in 0...data.size
  176.       for j in 0...data[0].size
  177.         red   = (data[i][j] >> 16) & 0xff
  178.         green = (data[i][j] >> 8) & 0xff
  179.         blue  = data[i][j] & 0xff
  180.         color = Color.new(red, green, blue)
  181.         bitmap.set_pixel(i, j, color)
  182.       end
  183.     end
  184.     return bitmap
  185.   end
  186. end
  187.  
  188. class Game_Temp
  189.   #--------------------------------------------------------------------------
  190.   # ● 公開インスタンス変数
  191.   #--------------------------------------------------------------------------
  192.   attr_accessor :save_preview_bmp               # セーブプレビュー用BMP
  193.   #--------------------------------------------------------------------------
  194.   # ● オブジェクト初期化
  195.   #--------------------------------------------------------------------------
  196.   alias _old001_initialize initialize
  197.   def initialize
  198.     _old001_initialize
  199.     @save_preview_bmp = Bitmap.new(1, 1)
  200.   end
  201.   #--------------------------------------------------------------------------
  202.   # ● セーブプレビュー用
  203.   #--------------------------------------------------------------------------
  204.   def create_save_preview
  205.     @save_preview_bmp.dispose if @save_preview_bmp
  206.     @save_preview_bmp = Bitmap.new(224, 160)
  207.     rect = Rect.new(0, 0, 224, 160)
  208.     rect.x = $game_player.screen_x - 0
  209.     rect.y = $game_player.screen_y - 0 - 0
  210.     bitmap = Graphics.snap_to_bitmap
  211.     @save_preview_bmp.blt(0, 0, bitmap, rect)
  212.     bitmap.dispose
  213.   end
  214. end
  215.  
  216. class Game_Party < Game_Unit
  217.   #--------------------------------------------------------------------------
  218.   # ◎ セーブファイル表示用のキャラクター画像情報(上書き定義)
  219.   #--------------------------------------------------------------------------
  220.   def characters_for_savefile
  221.     battle_members.collect do |actor|
  222.       [actor.character_name, actor.character_index, actor.level, actor.name]
  223.     end
  224.   end
  225. end
  226.  
  227. #==============================================================================
  228. # ■ Window_SaveFileList
  229. #------------------------------------------------------------------------------
  230. #  セーブ&ロード画面で表示する、セーブファイル一覧のウィンドウです。
  231. #==============================================================================
  232. class Window_SaveFileList < Window_Selectableforfile
  233.   #--------------------------------------------------------------------------
  234.   # ● オブジェクト初期化 【Q】
  235.   #--------------------------------------------------------------------------
  236.   def initialize(x, y)
  237.     super(33, 140, 200, 400)#(x, y,(Graphics.width - x) / 2, Graphics.height)
  238.     load_savefileheader
  239.     self.opacity = 0
  240.     self.windowskin = Cache.system("Window2")
  241.     self.contents.font.outline = false
  242.     refresh
  243.     activate
  244.   end
  245.   #--------------------------------------------------------------------------
  246.   # ● 項目数の取得
  247.   #--------------------------------------------------------------------------
  248.   def item_max
  249.     DataManager.savefile_max
  250.   end
  251.   #--------------------------------------------------------------------------
  252.   # ● 項目の高さを取得
  253.   #--------------------------------------------------------------------------
  254.   def item_height
  255.     (height - standard_padding * 2 - 20)/ 6
  256.   end
  257.   #--------------------------------------------------------------------------
  258.   # ● 項目の描画(normal_color)self.contents.font.color = Color.new(0, 0, 0, 255)
  259.   #--------------------------------------------------------------------------
  260.   def draw_item(index)
  261.     rect = item_rect_for_text(index)
  262.     text_h = rect.y + (rect.height - line_height * 2) / 2 + 10
  263.     name = "DATA" + " #{index + 1}"
  264.     contents.font.name = "思源黑体 CN Heavy"
  265.     contents.font.size = 22
  266.     self.contents.font.color = Color.new(255, 255, 255, 255)
  267.     draw_text(rect.x, text_h, rect.width, line_height, name)
  268.     return unless @data[index]
  269.     contents.font.name = "思源黑体 CN Heavy"
  270.     contents.font.size = 18
  271.     self.contents.font.color = Color.new(0, 0, 0, 255)
  272.     draw_playtime(rect.x, text_h+24, rect.width, line_height, index)
  273.     contents.font.name = "思源黑体 CN Heavy"
  274.     contents.font.size = 18
  275.     draw_savetitle(rect.x+10, text_h+24, rect.width-20, line_height, index)
  276.   end
  277.   #--------------------------------------------------------------------------
  278.   # ● 決定ボタンが押されたときの処理
  279.   #--------------------------------------------------------------------------
  280.   def process_ok
  281.     call_ok_handler # シーンクラスで処理する
  282.   end
  283.   #--------------------------------------------------------------------------
  284.   # ● 全セーブファイルのヘッダーを読み込み
  285.   #--------------------------------------------------------------------------
  286.   def load_savefileheader
  287.     @data = []
  288.     for i in 0...item_max do @data[i] = DataManager.load_header(i) end
  289.   end
  290.  
  291.   #--------------------------------------------------------------------------
  292.   # ● プレイ時間の描画
  293.   #--------------------------------------------------------------------------
  294.   def draw_playtime(x, y, width, height, i)
  295.     draw_text(x, y, width, height, @data[i][:playtime_s], 2)
  296.   end
  297.   #--------------------------------------------------------------------------
  298.   # ● セーブのタイトルの描画
  299.   #--------------------------------------------------------------------------
  300.   def draw_savetitle(x, y, width, height, i)
  301.     title = @data[i][:savetitle]
  302.     title = "noname" if title == ""
  303.     draw_text(x, y, width, height, title)
  304.   end
  305. end
  306.  
  307. #==============================================================================
  308. # ■ Window_SaveFilePreview
  309. #------------------------------------------------------------------------------
  310. #  セーブ&ロード画面で表示する、セーブファイルの詳細ウィンドウです。
  311. #==============================================================================
  312. class Window_SaveFilePreview < Window_Base
  313.   #--------------------------------------------------------------------------
  314.   # ● オブジェクト初期化 修改主角+主角名坐标
  315.   #--------------------------------------------------------------------------
  316.   def initialize(x, y)
  317.     super(999, y, Graphics.width - x, Graphics.height - y)
  318.     @file_no = -1
  319.     @bmps = []
  320.     @data = []
  321.     self.opacity = 0
  322.  
  323.   end
  324.   #--------------------------------------------------------------------------
  325.   # ● 解放
  326.   #--------------------------------------------------------------------------
  327.   def dispose
  328.     for bmp in @bmps
  329.       next if bmp == nil or bmp.disposed?
  330.       bmp.dispose
  331.     end
  332.     super
  333.   end
  334.   #--------------------------------------------------------------------------
  335.   # ● セーブファイルをロードしてプレビューを表示
  336.   #     file_no : セーブファイル番号
  337.   #--------------------------------------------------------------------------
  338.   def set_preview(file_no)
  339.     return if @file_no == file_no
  340.     @file_no = file_no
  341.     refresh
  342.   end
  343.   #--------------------------------------------------------------------------
  344.   # ● リフレッシュ玩家坐标位置
  345.   #--------------------------------------------------------------------------
  346.   def refresh
  347.     self.contents.clear
  348.     load_preview(@file_no)
  349.     return unless @data[@file_no]
  350.     bitmap = @bmps[@file_no]
  351.     start_x =  0
  352.     header = @data[@file_no]
  353.     header[:characters].each_with_index do |data, i|
  354.       break if i >= 4
  355.       character_y = bitmap.height + 22 + i * 40
  356.       draw_savebust(data[3],start_x+16,character_y + 28)
  357.       draw_name_for_preview(data[3], start_x + 100, character_y, bitmap.width - start_x - 100)
  358.       draw_logo(0,0)
  359.     end
  360.   end
  361.   #--------------------------------------------------------------------------
  362.   # ● プレビュー用のデータを読み込む
  363.   #--------------------------------------------------------------------------
  364.   def load_preview(file_no)
  365.     return if @data[file_no]
  366.     @bmps[file_no] = DataManager.load_preview(file_no)
  367.     return unless @bmps[file_no]
  368.     @data[file_no] = DataManager.load_header(file_no)
  369.   end
  370.   #--------------------------------------------------------------------------
  371.   # ● レベルの描画
  372.   #--------------------------------------------------------------------------
  373.   def draw_level_for_preview(level, x, y)
  374.     change_color(system_color)
  375.     draw_text(x, y, 24, line_height, Vocab::level_a)
  376.     change_color(normal_color)
  377.     draw_text(x + 24, y, 24, line_height, level, 2)
  378.   end
  379.   #--------------------------------------------------------------------------
  380.   # ● アクター名の描画
  381.   #--------------------------------------------------------------------------
  382.   def draw_name_for_preview(name, x, y, width)
  383.     change_color(normal_color)
  384.     draw_text(x, y, width, line_height, name)
  385.   end
  386.  
  387.   def draw_logo(x,y)
  388.     if $game_variables[50] == 0
  389.       bitmap = Cache.system("logo1")
  390.       rect = Rect.new(0,0,224,160)
  391.       contents.blt(x,y,bitmap,rect)
  392.     end
  393.     if $game_variables[50] == 1
  394.       bitmap = Cache.system("logo1")
  395.       rect = Rect.new(0,0,224,160)
  396.       contents.blt(x,y,bitmap,rect)
  397.     end
  398.     if $game_variables[50] >= 2
  399.       bitmap = Cache.system("logo1")
  400.       rect = Rect.new(0,0,224,160)
  401.       contents.blt(x,y,bitmap,rect)
  402.     end
  403.   end
  404.  
  405.  
  406.  
  407.  
  408. end
  409.  
  410. class Scene_File < Scene_MenuBase
  411.   #--------------------------------------------------------------------------
  412.   # ◎ 開始処理(上書き定義)
  413.   #--------------------------------------------------------------------------
  414.   def start
  415.     super
  416.     create_help_window
  417.     @filelist_window = Window_SaveFileList.new(100, 50)
  418.     @filelist_window.set_handler(:ok,     method(:on_savefile_ok))
  419.     @filelist_window.set_handler(:cancel, method(:on_savefile_cancel))
  420.     @preview_window = Window_SaveFilePreview.new(@filelist_window.width, @help_window.height)
  421.     init_selection
  422.     create_fileback
  423.   end
  424.  
  425.   def create_help_window
  426.     @help_window = Window_Help.new
  427.     @help_window.viewport = @viewport
  428.   end
  429.  
  430.  
  431.   def create_fileback
  432.     @filebackground_sprite1 = Sprite.new
  433.     @filebackground_sprite1.bitmap = Cache.system("fileback")
  434.   end
  435.  
  436.   #--------------------------------------------------------------------------
  437.   # ◎ 終了処理(上書き定義)
  438.   #--------------------------------------------------------------------------
  439.   def terminate
  440.     super
  441.   end
  442.   #--------------------------------------------------------------------------
  443.   # ◎ 選択状態の初期化(上書き定義)
  444.   #--------------------------------------------------------------------------
  445.   def init_selection
  446.     index = first_savefile_index
  447.     @filelist_window.select(index)
  448.     @preview_window.set_preview(index)
  449.   end
  450.   #--------------------------------------------------------------------------
  451.   # ◎ フレーム更新(上書き定義)
  452.   #--------------------------------------------------------------------------
  453.   def update
  454.     super
  455.     @preview_window.set_preview(@filelist_window.index)
  456.   end
  457. end
  458.  
  459. class Scene_Save < Scene_File
  460.   #--------------------------------------------------------------------------
  461.   # ◎ セーブファイルの決定(上書き定義)
  462.   #--------------------------------------------------------------------------
  463.   def on_savefile_ok
  464.     super
  465.     if DataManager.save_game_with_preview(@filelist_window.index)
  466.       on_save_success
  467.     else
  468.       Sound.play_buzzer
  469.     end
  470.   end
  471. end
  472.  
  473. class Scene_Load < Scene_File
  474.   #--------------------------------------------------------------------------
  475.   # ◎ セーブファイルの決定(上書き定義)
  476.   #--------------------------------------------------------------------------
  477.   def on_savefile_ok
  478.     super
  479.     if DataManager.load_game2(@filelist_window.index)
  480.       on_load_success
  481.     else
  482.       Sound.play_buzzer
  483.     end
  484.   end
  485. end
  486.  
  487. class Scene_Map < Scene_Base
  488.   #--------------------------------------------------------------------------
  489.   # ◎ 終了処理
  490.   #--------------------------------------------------------------------------
  491.   alias _old001_terminate terminate
  492.   def terminate
  493.     $game_temp.create_save_preview
  494.     _old001_terminate
  495.   end
  496. end





因为这是个隔了2年的企划……有些脚本的调用和调整已经忘的差不多了QQAQQ,如有冒犯深表歉意……
(PS 如果有遗漏的植入脚本请告诉我QAQ 我看着他们真的不知道怎么搞了……)
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

3
发表于 2017-8-6 22:18:39 | 只看该作者
本帖最后由 喵呜喵5 于 2017-8-6 22:20 编辑

行距的调整在这个方法里面,在对应的窗口类内重新定义一下即可
  1.   def item_rect(index)
  2.     rect = Rect.new
  3.     rect.width = item_width
  4.     rect.height = item_height
  5.     rect.x = index % col_max * (item_width + spacing)
  6.     rect.y = index / col_max * item_height
  7.     rect
  8.   end
复制代码


另:美术效果很漂亮~

点评

打扰了!我插入了这段脚本,道具名称那里的行距是修改成功了 但是光标的移动还是原来的距离,是哪里插的不对吗QAQ  发表于 2017-8-8 21:24
回复 支持 1 反对 0

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2017-8-6
帖子
5
4
 楼主| 发表于 2017-8-7 10:05:58 | 只看该作者
喵呜喵5 发表于 2017-8-6 22:18
行距的调整在这个方法里面,在对应的窗口类内重新定义一下即可

谢谢喵呜大大!!问一下这段是插在每个插入脚本最前面的位置吗?
以及存档那一块的光标要怎么改哦QAQ

点评

啊我自己迷之解决了……再改update_cursor后面的部分就好了!!打扰大大了!非常感谢!  发表于 2017-8-8 21:51
这个是回答你行间距调整那个问题的,放到要控制行间距的那个窗口的类里面,然后调整具体的数值即可  发表于 2017-8-7 10:21
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 14:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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