Project1

标题: 菜单脚本 [打印本页]

作者: 布罗利    时间: 2014-6-2 20:06
标题: 菜单脚本
本帖最后由 布罗利 于 2014-6-2 20:07 编辑

谁帮我改个菜单的脚本,试了好几遍都是错的,脚本如下:
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Scene_菜单系统
  3. #------------------------------------------------------------------------------
  4. #  处理菜单画面的类。
  5. #==============================================================================
  6.  
  7. class Scene_menu
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对像
  10.   #     menu_index : 命令光标的初期位置
  11.   #--------------------------------------------------------------------------
  12.   def initialize(menu_index = 0)
  13.     @menu_index = menu_index
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # ● 主处理
  17.   #--------------------------------------------------------------------------
  18.   def main
  19.     # 生成活动块
  20.     @spriteset = Spriteset_Map.new
  21.     # 生成命令窗口
  22.     s1 = "对话"
  23.     @command_window = Window_窗口命令.new(200, [s1],2)
  24.     @command_window.index = 0
  25.     # 执行过渡
  26.     Graphics.transition
  27.     # 主循环
  28.     loop do
  29.       # 刷新游戏画面
  30.       Graphics.update
  31.       # 刷新输入信息
  32.       Input.update
  33.       # 刷新画面
  34.       update
  35.       # 如果切换画面就中断循环
  36.       if $scene != self
  37.         if map_load_move_can? == false
  38.           $game_switches[19] = true
  39.         else
  40.           $game_switches[19] = false
  41.         end
  42.         break
  43.       end
  44.     end
  45.     # 准备过渡
  46.     Graphics.freeze
  47.     # 释放窗口
  48.     @command_window.dispose
  49.   #--------------------------------------------------------------------------
  50.   # ● 刷新画面
  51.   #--------------------------------------------------------------------------
  52.   def update
  53.     # 刷新窗口
  54.     @command_window.update   
  55.     # 命令窗口被激活的情况下: 调用 update_command
  56.     if @command_window.active
  57.       update_command
  58.       return
  59.     end
  60.   #--------------------------------------------------------------------------
  61.   # ● 刷新画面 (命令窗口被激活的情况下)
  62.   #--------------------------------------------------------------------------
  63.   def update_command
  64.     # 按下 B 键的情况下
  65.     if Input.trigger?(Input::B)
  66.       # 演奏取消 SE
  67.       $game_system.se_play($data_system.cancel_se)
  68.       # 切换的地图画面
  69.       $scene = Scene_Map.new
  70.       return
  71.     end
  72.     # 按下 C 键的情况下
  73.     if Input.trigger?(Input::C)
  74.       when 0  # 对话
  75.         $game_system.se_play($data_system.decision_se)
  76.         check_event_trigger_here([0])
  77.         check_event_trigger_there([0,1,2])
  78.         $scene = Scene_Map.new
  79.       end
  80.       return
  81.     end
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 同位置的事件启动判定
  85.   #--------------------------------------------------------------------------
  86.   def check_event_trigger_here(triggers)
  87.     result = false
  88.     # 事件执行中的情况下
  89.     if $game_system.map_interpreter.running?
  90.       return result
  91.     end
  92.     # 全部事件的循环
  93.     for event in $game_map.events.values
  94.       # 事件坐标与目标一致的情况下
  95.       if event.x == @x and event.y == @y and triggers.include?(event.trigger)
  96.         # 跳跃中以外的情况下、启动判定是同位置的事件
  97.         if not event.jumping? and event.over_trigger?
  98.           event.start
  99.           result = true
  100.         end
  101.       end
  102.     end
  103.     return result
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 正面事件的启动判定
  107.   #--------------------------------------------------------------------------
  108.   def check_event_trigger_there(triggers)
  109.     result = false
  110.     # 事件执行中的情况下
  111.     if $game_system.map_interpreter.running?
  112.       return result
  113.     end
  114.     # 计算正面坐标
  115.     new_x = @x + (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
  116.     new_y = @y + (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
  117.     # 全部事件的循环
  118.     for event in $game_map.events.values
  119.       # 事件坐标与目标一致的情况下
  120.       if event.x == new_x and event.y == new_y and
  121.          triggers.include?(event.trigger)
  122.         # 跳跃中以外的情况下、启动判定是正面的事件
  123.         if not event.jumping? and not event.over_trigger?
  124.           event.start
  125.           result = true
  126.         end
  127.       end
  128.     end
  129.     # 找不到符合条件的事件的情况下
  130.     if result == false
  131.       # 正面的元件是计数器的情况下
  132.       if $game_map.counter?(new_x, new_y)
  133.         # 计算 1 元件里侧的坐标
  134.         new_x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
  135.         new_y += (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
  136.         # 全事件的循环
  137.         for event in $game_map.events.values
  138.           # 事件坐标与目标一致的情况下
  139.           if event.x == new_x and event.y == new_y and
  140.              triggers.include?(event.trigger)
  141.             # 跳跃中以外的情况下、启动判定是正面的事件
  142.             if not event.jumping? and not event.over_trigger?
  143.               event.start
  144.               result = true
  145.             end
  146.           end
  147.         end
  148.       end
  149.     end
  150.     return result
  151.   end


作者: 天地有正气    时间: 2014-6-2 20:38
有了when怎么没有case!
还有,我认出你了!
作者: moy    时间: 2014-6-2 20:38
  1. # 命令窗口的光标位置分支
  2.       case @command_window.index
复制代码
你多删了一句话,插在74行when 0上面就好了吧
作者: myownroc    时间: 2014-6-3 14:26
在74行之前加上楼上的那句话之后再到最后一行加一个end试试看




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