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

Project1

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

[已经解决] 有没有办法调用菜单中各选项的坐标?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2010-8-17
帖子
1
跳转到指定楼层
1
发表于 2010-8-25 18:45:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
比如在物品菜单里,各个物品的选框都有自己的坐标,如何调用它们?或者调用物品图标的坐标也成。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
30 小时
注册时间
2010-8-24
帖子
54
2
发表于 2010-8-25 19:52:24 | 只看该作者
——各类窗口类的修改
天狼星1110的谨赠于那些依旧迷惘的新手们
http://rpg.blue/viewthread.php?tid=49254
amty的随时调用存盘界面
http://rpg.blue/web/htm/news384.htm
66饭的菜单的循环选项修改
http://rpg.blue/web/htm/news383.htm
柳柳的光标矩形随文字多少变化
http://rpg.blue/web/htm/news425.htm

看置顶呀

评分

参与人数 1星屑 +200 收起 理由
「旅」 + 200 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
79
在线时间
211 小时
注册时间
2010-8-21
帖子
442
3
发表于 2010-8-26 02:50:46 | 只看该作者
Window_Item 这个脚本是修改物品菜单的,如果单纯只是想改位置的话,可以尝试修改下里面某些特殊的数字,就是那些类似于坐标的,先记下原来的数值,然后一下子修改大些,或小些,就可以知道哪些数值是控制什么的,我就是用这个方法来修改脚本,到现在只会纯粹地修改坐标

评分

参与人数 1星屑 +240 收起 理由
「旅」 + 240 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42877
在线时间
7625 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

4
发表于 2010-8-26 06:55:08 | 只看该作者
本帖最后由 fux2 于 2010-8-26 06:56 编辑

scene_item和windowsItem里

我可以给你一个我自己改的九宫格式的物品菜单,这里因为我做侦探游戏把使用物品的效果删去了,只有公共事件,你可以自行添加


建立脚本Window_Selectable2
  1. #==============================================================================
  2. # ■ Window_Selectable
  3. #------------------------------------------------------------------------------
  4. #  拥有光标的移动以及滚动功能的窗口类。
  5. #==============================================================================

  6. class Window_Selectable2 < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 定义实例变量
  9.   #--------------------------------------------------------------------------
  10.   attr_reader   :index                    # 光标位置
  11.   attr_reader   :help_window              # 帮助窗口
  12.   #--------------------------------------------------------------------------
  13.   # ● 初始画对像
  14.   #     x      : 窗口的 X 坐标
  15.   #     y      : 窗口的 Y 坐标
  16.   #     width  : 窗口的宽
  17.   #     height : 窗口的高
  18.   #--------------------------------------------------------------------------
  19.   def initialize(x, y, width, height)
  20.     super(x, y, width, height)
  21.     @item_max = 9
  22.     @column_max = 3
  23.     @index = -1
  24.   end
  25.   #--------------------------------------------------------------------------
  26.   # ● 设置光标的位置
  27.   #     index : 新的光标位置
  28.   #--------------------------------------------------------------------------
  29.   def index=(index)
  30.     @index = index
  31.     # 刷新帮助文本 (update_help 定义了继承目标)
  32.     if self.active and @help_window != nil
  33.       update_help
  34.     end
  35.     # 刷新光标矩形
  36.     update_cursor_rect
  37.   end
  38.   #--------------------------------------------------------------------------
  39.   # ● 获取行数
  40.   #--------------------------------------------------------------------------
  41.   def row_max
  42.     # 由项目数和列数计算出行数
  43.     return 3
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 获取开头行
  47.   #--------------------------------------------------------------------------
  48.   def top_row
  49.     # 将窗口内容的传送源 Y 坐标、1 行的高 32 等分
  50.     return self.oy / 80
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 设置开头行
  54.   #     row : 显示开头的行
  55.   #--------------------------------------------------------------------------
  56.   def top_row=(row)
  57.     # row 未满 0 的场合更正为 0
  58.     if row < 0
  59.       row = 0
  60.     end
  61.     # row 超过 row_max - 1 的情况下更正为 row_max - 1
  62.     if row > row_max - 1
  63.       row = row_max - 1
  64.     end
  65.     # row 1 行高的 32 倍、窗口内容的传送源 Y 坐标
  66.     self.oy = row * 80
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ● 获取 1 页可以显示的行数
  70.   #--------------------------------------------------------------------------
  71.   def page_row_max
  72.     return 3#计算。。
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 获取 1 页可以显示的项目数
  76.   #--------------------------------------------------------------------------
  77.   def page_item_max
  78.     # 将行数 page_row_max 乘上列数 @column_max
  79.     return 9#计算。。
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 帮助窗口的设置
  83.   #     help_window : 新的帮助窗口
  84.   #--------------------------------------------------------------------------
  85.   def help_window=(help_window)
  86.     @help_window = help_window
  87.     # 刷新帮助文本 (update_help 定义了继承目标)
  88.     if self.active and @help_window != nil
  89.       update_help
  90.     end
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # ● 更新光标举行
  94.   #--------------------------------------------------------------------------
  95.   def update_cursor_rect
  96.     # 光标位置不满 0 的情况下
  97.     if @index < 0
  98.       self.cursor_rect.empty
  99.       return
  100.     end
  101.     # 获取当前的行
  102.     row = @index / 3
  103.     # 当前行被显示开头行前面的情况下
  104.     if row < self.top_row
  105.       # 从当前行向开头行滚动
  106.       self.top_row = row
  107.     end
  108.     # 当前行被显示末尾行之后的情况下
  109.     if row > self.top_row + (self.page_row_max - 1)
  110.       # 从当前行向末尾滚动
  111.       self.top_row = row - (self.page_row_max - 1)
  112.     end
  113.     # 计算光标的宽
  114.     cursor_width = 80
  115.     # 计算光标坐标
  116.     x = @index % 3 * 80
  117.     y = @index / 3 * 80 - self.oy
  118.     # 更新国标矩形
  119.     self.cursor_rect.set(x, y, 80, 80)
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● 刷新画面
  123.   #--------------------------------------------------------------------------
  124.   def update
  125.     super
  126.     # 可以移动光标的情况下
  127.     if self.active and @item_max > 0 and @index >= 0
  128.       # 方向键下被按下的情况下
  129.       if Input.repeat?(Input::DOWN)
  130.         # 列数不是 1 并且方向键的下的按下状态不是重复的情况、
  131.         # 或光标位置在(项目数-列数)之前的情况下
  132.         if (@column_max == 1 and Input.trigger?(Input::DOWN)) or
  133.            @index < @item_max - @column_max
  134.           # 光标向下移动
  135.           $game_system.se_play($data_system.cursor_se)
  136.           @index = (@index + 3) % @item_max
  137.         end
  138.       end
  139.       # 方向键上被按下的情况下
  140.       if Input.repeat?(Input::UP)
  141.         # 列数不是 1 并且方向键的下的按下状态不是重复的情况、
  142.         # 或光标位置在列之后的情况下
  143.         if (@column_max == 1 and Input.trigger?(Input::UP)) or
  144.            @index >= @column_max
  145.           # 光标向上移动
  146.           $game_system.se_play($data_system.cursor_se)
  147.           @index = (@index - 3 + @item_max) % @item_max
  148.         end
  149.       end
  150.       # 方向键右被按下的情况下
  151.       if Input.repeat?(Input::RIGHT)
  152.         # 列数为 2 以上并且、光标位置在(项目数 - 1)之前的情况下
  153.         if @column_max >= 0 and @index < @item_max - 1
  154.           # 光标向右移动
  155.           $game_system.se_play($data_system.cursor_se)
  156.           @index = (@index + @column_max) % @item_max
  157.         end
  158.       end
  159.       # 方向键左被按下的情况下
  160.       if Input.repeat?(Input::LEFT)
  161.         # 列数为 2 以上并且、光标位置在 0 之后的情况下
  162.         if @column_max >= 0 and @index > 0
  163.           # 光标向左移动
  164.           $game_system.se_play($data_system.cursor_se)
  165.           @index = (@index - @column_max + @item_max) % @item_max
  166.         end
  167.       end
  168.       # R 键被按下的情况下
  169.       if Input.repeat?(Input::R)
  170.         # 显示的最后行在数据中最后行上方的情况下
  171.         if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)
  172.           # 光标向后移动一页
  173.           $game_system.se_play($data_system.cursor_se)
  174.           @index = [@index + self.page_item_max, @item_max - 1].min
  175.           self.top_row += self.page_row_max
  176.         end
  177.       end
  178.       # L 键被按下的情况下
  179.       if Input.repeat?(Input::L)
  180.         # 显示的开头行在位置 0 之后的情况下
  181.         if self.top_row > 0
  182.           # 光标向前移动一页
  183.           $game_system.se_play($data_system.cursor_se)
  184.           @index = [@index - self.page_item_max, 0].max
  185.           self.top_row -= self.page_row_max
  186.         end
  187.       end
  188.     end
  189.     # 刷新帮助文本 (update_help 定义了继承目标)
  190.     if self.active and @help_window != nil
  191.       update_help
  192.     end
  193.     # 刷新光标矩形
  194.     update_cursor_rect
  195.   end
  196. end
复制代码
覆盖Window_Item
  1. #==============================================================================
  2. # ■ Window_Item
  3. #------------------------------------------------------------------------------
  4. #  物品画面、战斗画面、显示浏览物品的窗口。
  5. #==============================================================================

  6. class Window_Item < Window_Selectable2
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(80, 260, 360, 360)
  12.     @column_max = 1
  13.     refresh
  14.     self.active = false
  15.     self.index = -1
  16.   end
  17.   
  18.   #--------------------------------------------------------------------------
  19.   # ● 刷新
  20.   #--------------------------------------------------------------------------
  21.   def refresh
  22.     if self.contents != nil
  23.       self.contents.dispose
  24.       self.contents = nil
  25.     end
  26.     @data = []
  27.     # 添加报务
  28.     for i in 1...$data_items.size
  29.       if $game_party.item_number(i) > 0
  30.         @data.push($data_items[i])
  31.       end
  32.     end
  33.     # 如果项目数不是 0 就生成位图、重新描绘全部项目
  34.     @item_max = @data.size
  35.     if @item_max > 0
  36.       self.contents = Bitmap.new(width, row_max * 240)
  37.       for i in 0...@item_max
  38.         draw_item(i)
  39.       end
  40.     end
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 获取物品
  44.   #--------------------------------------------------------------------------
  45.   def item
  46.     return @data[self.index]
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● 描绘项目
  50.   #     index : 项目编号
  51.   #--------------------------------------------------------------------------
  52.   def draw_item(index)
  53.     item = @data[index]
  54.     case item
  55.     when RPG::Item
  56.       number = $game_party.item_number(item.id)
  57.     end
  58.     if item.is_a?(RPG::Item) and
  59.        $game_party.item_can_use?(item.id)
  60.       self.contents.font.color = normal_color
  61.     else
  62.       self.contents.font.color = disabled_color
  63.     end
  64.    
  65.     x = (index % 3) * 80
  66.     y = index / 3 * 80
  67.     rect = Rect.new(x, y,100 / @column_max - 32, 32)
  68.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  69.     bitmap = RPG::Cache.icon(item.icon_name)
  70.     opacity = self.contents.font.color == normal_color ? 255 : 128
  71.     self.contents.blt(x + 28, y + 14, bitmap, Rect.new(0, 0, 80, 80), opacity)
  72.     self.contents.draw_text(x, y + 38, 80, 28, item.name, 1)
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 刷新帮助文本
  76.   #--------------------------------------------------------------------------
  77.   def update_help
  78.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  79.   end
  80.   
  81. end
复制代码
覆盖Scene_Menu,这里可以自己修改
  1. module XRXS_MP7_Module
  2. def create_spriteset
  3.    @spriteset = Spriteset_Map.new
  4. end
  5. def dispose_spriteset
  6.    @spriteset.dispose
  7. end
  8. end
  9. class Scene_Menu

  10. #--------------------------------------------------------------------------
  11. # ● 初始化对像
  12. #     menu_index : 命令光标的初期位置
  13. #--------------------------------------------------------------------------
  14. def initialize(menu_index = 0)
  15.    @menu_index = menu_index
  16. end
  17. #--------------------------------------------------------------------------
  18. # ● 主处理
  19. #--------------------------------------------------------------------------
  20. def main
  21.    # 生成命令窗口
  22.    s0 = "物品"
  23.    s1 = "存档"
  24.    s2 = "取档"
  25.    s3 = "返回标题"
  26.    s4 = "结束游戏"
  27.    @command_window = Window_Command.new(160, [s0 ,s1, s2, s3, s4])
  28.    @command_window.index = @menu_index
  29.    @command_window.x = 100
  30.    @command_window.y = 200
  31.    
  32.    @command_window.opacity = 100
  33.    @command_window.update
  34.    @help_window = Window_Help.new
  35.    @help_window.x = 260
  36.    @help_window.y = 333
  37.    @help_window.width = 270
  38.    @help_window.height = 60

  39.    # 禁止存档的情况下
  40.    if $game_system.save_disabled
  41.      # 存档无效
  42.      @command_window.disable_item(1)
  43.    end
  44.    
  45.    @status_window = Window_MenuStatus.new
  46.     @status_window.x = 100
  47.     @status_window.y = 80
  48.     @status_window.opacity = 100
  49.     @status_window.width = 160
  50.     @status_window.height = 120
  51.    # 执行过渡
  52.    @item_window = Window_Item.new
  53.     @item_window.x = 260
  54.     @item_window.y = 80
  55.     @item_window.width = 270
  56.     @item_window.height = 270
  57.     @item_window.opacity = 100
  58.    
  59.    
  60.         # 关联帮助窗口
  61.     @item_window.help_window = @help_window
  62.     # 生成目标窗口 (设置为不可见・不活动)
  63.    
  64.    Graphics.transition
  65.    # 主循环
  66.    loop do
  67.      # 刷新游戏画面
  68.      Graphics.update
  69.      # 刷新输入信息
  70.      Input.update
  71.      # 刷新画面
  72.      update
  73.      # 如果切换画面就中断循环
  74.      if $scene != self
  75.        break
  76.      end
  77.    end
  78.    # 准备过渡
  79.    Graphics.freeze
  80.    # 释放窗口
  81.    @command_window.dispose
  82.    @status_window.dispose
  83.    @item_window.dispose
  84.    @help_window.dispose
  85. end
  86. #--------------------------------------------------------------------------
  87. # ● 刷新画面
  88. #--------------------------------------------------------------------------
  89. def update
  90.    # 刷新窗口
  91.    @command_window.update
  92.    @item_window.update
  93.    @status_window.update
  94.    @help_window.update
  95.     # 物品窗口被激活的情况下: 调用 update_item
  96.     if @item_window.active
  97.       update_item
  98.       return
  99.     end
  100.    
  101.    # 命令窗口被激活的情况下: 调用 update_command
  102.    if @command_window.active
  103.      update_command
  104.      return
  105.    end

  106. end
  107. #--------------------------------------------------------------------------
  108. # ● 刷新画面 (命令窗口被激活的情况下)
  109. #--------------------------------------------------------------------------
  110. def update_command
  111.    # 按下 B 键的情况下
  112.    if Input.trigger?(Input::B)
  113.      # 演奏取消 SE
  114.      $game_system.se_play($data_system.cancel_se)
  115.      # 切换的地图画面
  116.      $scene = Scene_Map.new
  117.      return
  118.    end
  119.    # 按下 C 键的情况下
  120.    if Input.trigger?(Input::C)

  121.      # 命令窗口的光标位置分支
  122.      case @command_window.index
  123.      when 0
  124.                $game_system.se_play($data_system.decision_se)
  125.         # 激活状态窗口
  126.         @command_window.active = false
  127.         @item_window.active = true
  128.         @item_window.index = 0
  129.       
  130.      when 1  # 存档
  131.        if $game_system.save_disabled
  132.          # 演奏冻结 SE
  133.          $game_system.se_play($data_system.buzzer_se)
  134.          return
  135.        end
  136.        # 演奏确定 SE
  137.        $game_system.se_play($data_system.decision_se)
  138.        # 切换到存档画面
  139.        $scene = Scene_Save.new
  140.      when 2  # 取档
  141.       
  142.        # 演奏确定 SE
  143.        $game_system.se_play($data_system.decision_se)
  144.        # 切换到存档画面
  145.        $scene = Scene_Load_Temp.new
  146.      when 3  # 回标题
  147.        # 演奏确定 SE
  148.        $game_system.se_play($data_system.decision_se)
  149.        # 切换到游戏结束画面
  150.        $scene = Scene_Title.new
  151.      
  152.      when 4  # 结束游戏
  153.        # 演奏确定 SE
  154.        $game_system.se_play($data_system.decision_se)
  155.        # 切换到游戏结束画面
  156.        $scene = nil
  157.      end
  158.      return
  159.    end
  160. end
  161.   #--------------------------------------------------------------------------
  162. # ● 刷新画面 (道具)
  163. #--------------------------------------------------------------------------
  164. def update_item
  165.     # 按下 B 键的情况下
  166.     if Input.trigger?(Input::B)
  167.       # 演奏取消 SE
  168.       $game_system.se_play($data_system.cancel_se)
  169.       # 切换到菜单画面
  170.       $scene = Scene_Menu.new(0)
  171.       return
  172.     end
  173.     # 按下 C 键的情况下
  174.     if Input.trigger?(Input::C)
  175.       # 获取物品窗口当前选中的物品数据
  176.       @item = @item_window.item
  177.       # 不使用物品的情况下
  178.       unless @item.is_a?(RPG::Item)
  179.         # 演奏冻结 SE
  180.         $game_system.se_play($data_system.buzzer_se)
  181.         return
  182.       end
  183.       # 不能使用的情况下
  184.       unless $game_party.item_can_use?(@item.id)
  185.         # 演奏冻结 SE
  186.         $game_system.se_play($data_system.buzzer_se)
  187.         return
  188.       end
  189.       # 演奏确定 SE
  190.       $game_system.se_play($data_system.decision_se)
  191.       # 效果范围是我方的情况下
  192.         if @item.common_event_id > 0
  193.           # 预约调用公共事件
  194.           $game_temp.common_event_id = @item.common_event_id
  195.           # 演奏物品使用时的 SE
  196.           $game_system.se_play(@item.menu_se)
  197.           # 消耗品的情况下
  198.           if @item.consumable
  199.             # 使用的物品数减 1
  200.             $game_party.lose_item(@item.id, 1)
  201.             # 再描绘物品窗口的项目
  202.             @item_window.draw_item(@item_window.index)
  203.           end
  204.           # 切换到地图画面
  205.           $scene = Scene_Map.new
  206.           return
  207.       end
  208.       return
  209.     end
  210.   end


  211.   
  212.   
  213. include XRXS_MP7_Module
  214. alias xrxs_mp7_main main
  215. def main
  216.    create_spriteset
  217.    xrxs_mp7_main
  218.    dispose_spriteset
  219. end
  220. end

复制代码
覆盖Scene_Item
  1. #==============================================================================
  2. # ■ Scene_Item
  3. #------------------------------------------------------------------------------
  4. #  处理物品画面的类。
  5. #==============================================================================

  6. class Scene_Item
  7.   #--------------------------------------------------------------------------
  8.   # ● 主处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     # 生成帮助窗口、物品窗口
  12.     @help_window = Window_Help.new
  13.     @item_window = Window_Item.new
  14.     # 关联帮助窗口
  15.     @item_window.help_window = @help_window
  16.     # 生成目标窗口 (设置为不可见・不活动)
  17.     @target_window = Window_Target.new
  18.     @target_window.visible = false
  19.     @target_window.active = false
  20.     # 执行过度
  21.     Graphics.transition
  22.     # 主循环
  23.     loop do
  24.       # 刷新游戏画面
  25.       Graphics.update
  26.       # 刷新输入信息
  27.       Input.update
  28.       # 刷新画面
  29.       update
  30.       # 如果画面切换就中断循环
  31.       if $scene != self
  32.         break
  33.       end
  34.     end
  35.     # 装备过渡
  36.     Graphics.freeze
  37.     # 释放窗口
  38.     @help_window.dispose
  39.     @item_window.dispose
  40.     @target_window.dispose
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 刷新画面
  44.   #--------------------------------------------------------------------------
  45.   def update
  46.     # 刷新窗口
  47.     @help_window.update
  48.     @item_window.update
  49.     @target_window.update
  50.     # 物品窗口被激活的情况下: 调用 update_item
  51.     if @item_window.active
  52.       update_item
  53.       return
  54.     end
  55.     # 目标窗口被激活的情况下: 调用 update_target
  56.     if @target_window.active
  57.       update_target
  58.       return
  59.     end
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # ● 刷新画面 (物品窗口被激活的情况下)
  63.   #--------------------------------------------------------------------------
  64.   def update_item
  65.     # 按下 B 键的情况下
  66.     if Input.trigger?(Input::B)
  67.       # 演奏取消 SE
  68.       $game_system.se_play($data_system.cancel_se)
  69.       # 切换到菜单画面
  70.       $scene = Scene_Menu.new(3)
  71.         
  72.       return
  73.     end
  74.     # 按下 C 键的情况下
  75.     if Input.trigger?(Input::C)
  76.       # 获取物品窗口当前选中的物品数据
  77.       @item = @item_window.item
  78.       # 不使用物品的情况下
  79.       unless @item.is_a?(RPG::Item)
  80.         # 演奏冻结 SE
  81.         $game_system.se_play($data_system.buzzer_se)
  82.         return
  83.       end
  84.       # 不能使用的情况下
  85.       unless $game_party.item_can_use?(@item.id)
  86.         # 演奏冻结 SE
  87.         $game_system.se_play($data_system.buzzer_se)
  88.         return
  89.       end
  90.       # 演奏确定 SE
  91.       $game_system.se_play($data_system.decision_se)
  92.       # 效果范围是我方的情况下
  93.       if @item.scope >= 3
  94.         # 激活目标窗口
  95.         @item_window.active = false
  96.         @target_window.x = (@item_window.index + 1) % 2 * 304
  97.         @target_window.visible = true
  98.         @target_window.active = true
  99.         @target_window.opacity = 160
  100.         # 设置效果范围 (单体/全体) 的对应光标位置
  101.         if @item.scope == 4 || @item.scope == 6
  102.           @target_window.index = -1
  103.         else
  104.           @target_window.index = 0
  105.         end
  106.       # 效果在我方以外的情况下
  107.       else
  108.         # 公共事件 ID 有效的情况下
  109.         if @item.common_event_id > 0
  110.           # 预约调用公共事件
  111.           $game_temp.common_event_id = @item.common_event_id
  112.           # 演奏物品使用时的 SE
  113.           $game_system.se_play(@item.menu_se)
  114.           # 消耗品的情况下
  115.           if @item.consumable
  116.             # 使用的物品数减 1
  117.             $game_party.lose_item(@item.id, 1)
  118.             # 再描绘物品窗口的项目
  119.             @item_window.draw_item(@item_window.index)
  120.           end
  121.           # 切换到地图画面
  122.           $scene = Scene_Map.new
  123.           return
  124.         end
  125.       end
  126.       return
  127.     end
  128.   end
  129.   #--------------------------------------------------------------------------
  130.   # ● 刷新画面 (目标窗口被激活的情况下)
  131.   #--------------------------------------------------------------------------
  132.   def update_target
  133.     # 按下 B 键的情况下
  134.     if Input.trigger?(Input::B)
  135.       # 演奏取消 SE
  136.       $game_system.se_play($data_system.cancel_se)
  137.       # 由于物品用完而不能使用的场合
  138.        @item_window.active = false
  139.       @item_window.index = -1
  140.       $scene = Scene_Menu.new(1)
  141.       @command_window.active = true
  142.       unless $game_party.item_can_use?(@item.id)
  143.         # 再次生成物品窗口的内容
  144.         @item_window.refresh
  145.       end
  146.       # 删除目标窗口
  147.       @item_window.active = true
  148.       @target_window.visible = false
  149.       @target_window.active = false
  150.       return
  151.     end
  152.     # 按下 C 键的情况下
  153.     if Input.trigger?(Input::C)
  154.       # 如果物品用完的情况下
  155.       if $game_party.item_number(@item.id) == 0
  156.         # 演奏冻结 SE
  157.         $game_system.se_play($data_system.buzzer_se)
  158.         return
  159.       end
  160.       # 目标是全体的情况下
  161.       if @target_window.index == -1
  162.         # 对同伴全体应用物品使用效果
  163.         used = false
  164.         for i in $game_party.actors
  165.           used |= i.item_effect(@item)
  166.         end
  167.       end
  168.       # 目标是单体的情况下
  169.       if @target_window.index >= 0
  170.         # 对目标角色应用物品的使用效果
  171.         target = $game_party.actors[@target_window.index]
  172.         used = target.item_effect(@item)
  173.       end
  174.       # 使用物品的情况下
  175.       if used
  176.         # 演奏物品使用时的 SE
  177.         $game_system.se_play(@item.menu_se)
  178.         # 消耗品的情况下
  179.         if @item.consumable
  180.           # 使用的物品数减 1
  181.           $game_party.lose_item(@item.id, 1)
  182.           # 再描绘物品窗口的项目
  183.           @item_window.draw_item(@item_window.index)
  184.         end
  185.         # 再生成目标窗口的内容
  186.         @target_window.refresh
  187.         # 全灭的情况下
  188.         if $game_party.all_dead?
  189.           # 切换到游戏结束画面
  190.           $scene = Scene_Gameover.new
  191.           return
  192.         end
  193.         # 公共事件 ID 有效的情况下
  194.         if @item.common_event_id > 0
  195.           # 预约调用公共事件
  196.           $game_temp.common_event_id = @item.common_event_id
  197.           # 切换到地图画面
  198.           $scene = Scene_Map.new
  199.           return
  200.         end
  201.       end
  202.       # 无法使用物品的情况下
  203.       unless used
  204.         # 演奏冻结 SE
  205.         $game_system.se_play($data_system.buzzer_se)
  206.       end
  207.       return
  208.     end
  209.   end
  210. end
复制代码
这里的取档调用另一个
Scene_Load我就不发了

评分

参与人数 1星屑 +300 收起 理由
「旅」 + 300 认可答案

查看全部评分

RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-10 21:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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