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

Project1

 找回密码
 注册会员
搜索
Project1 查看内容

无害系统改进:横板菜单选项的无限循环

2006-1-28 00:00| 发布者: 柳柳| 查看: 7041| 评论: 0|原作者: 66饭

摘要:    作者 66饭  版本与更新  2006年1月更新  相关网址  点此进入发布贴  范例工程 脚本功能 默认系统中,纵向菜单是可以循环的,而横向选单却没有循环功
 

 作者

66饭

 版本与更新

 2006年1月更新

 相关网址

 点此进入发布贴

 范例工程



脚本功能

默认系统中,纵向菜单是可以循环的,而横向选单却没有循环功能

横向选单举例:商店的“购买,卖出”这栏,亿万的轩式菜单,图标式战斗选单 ……

使用方法

在Window_Selectable找到这段:


   # 方向键右被按下的情况下
     if Input.repeat?(Input::RIGHT)
       # 列数为 2 以上并且、光标位置在(项目数 - 1)之前的情况下
       if @column_max >= 2 and @index < @item_max - 1
         # 光标向右移动
         $game_system.se_play($data_system.cursor_se)
         @index += 1
       end
     end
     # 方向键左被按下的情况下
     if Input.repeat?(Input::LEFT)
       # 列数为 2 以上并且、光标位置在 0 之后的情况下
       if @column_max >= 2 and @index > 0
         # 光标向左移动
         $game_system.se_play($data_system.cursor_se)
         @index -= 1
       end
     end



修改为:


   # 方向键右被按下的情况下
     if Input.repeat?(Input::RIGHT)
       
     if @column_max >= 2 and  @index == @item_max - 1
        $game_system.se_play($data_system.cursor_se)
        @index = -1
        end
       
       # 列数为 2 以上并且、光标位置在(项目数 - 1)之前的情况下
       if @column_max >= 2 and @index < @item_max - 1
         # 光标向右移动
         $game_system.se_play($data_system.cursor_se)
         @index += 1
       end  
     end
     
      # 方向键左被按下的情况下
     if Input.repeat?(Input::LEFT)
       
     if  @column_max >= 2 and @index == 0
         $game_system.se_play($data_system.cursor_se)
         @index = @item_max
         end
       
       # 列数为 2 以上并且、光标位置在 0 之后的情况下
       if @column_max >= 2 and @index > 0
         # 光标向左移动
         $game_system.se_play($data_system.cursor_se)
         @index -= 1
       end
     end



如此一来,横向的菜单也可以循环了。

完整脚本使用方法

复制全部脚本内容,在Main脚本之插入此脚本全部内容。


 

 脚本内容

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================

class Window_Selectable
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    super
    # 可以移动光标的情况下
    if self.active and @item_max > 0 and @index >= 0
      # 方向键下被按下的情况下
      if Input.repeat?(Input::DOWN)
        # 列数不是 1 并且方向键的下的按下状态不是重复的情况、
        # 或光标位置在(项目数-列数)之前的情况下
        if (@column_max == 1 and Input.trigger?(Input::DOWN)) or
           @index < @item_max - @column_max
          # 光标向下移动
          $game_system.se_play($data_system.cursor_se)
          @index = (@index + @column_max) % @item_max
        end
      end
      # 方向键上被按下的情况下
      if Input.repeat?(Input::UP)
        # 列数不是 1 并且方向键的下的按下状态不是重复的情况、
        # 或光标位置在列之后的情况下
        if (@column_max == 1 and Input.trigger?(Input::UP)) or
           @index >= @column_max
          # 光标向上移动
          $game_system.se_play($data_system.cursor_se)
          @index = (@index - @column_max + @item_max) % @item_max
        end
      end
      # 方向键右被按下的情况下
      if Input.repeat?(Input::RIGHT)      
        if @column_max >= 2 and  @index == @item_max - 1
          $game_system.se_play($data_system.cursor_se)
          @index = -1
        end
         # 列数为 2 以上并且、光标位置在(项目数 - 1)之前的情况下
        if @column_max >= 2 and @index < @item_max - 1
           # 光标向右移动
           $game_system.se_play($data_system.cursor_se)
           @index += 1
        end 
      end    
      # 方向键左被按下的情况下
      if Input.repeat?(Input::LEFT)
        if  @column_max >= 2 and @index == 0
          $game_system.se_play($data_system.cursor_se)
          @index = @item_max
        end      
       # 列数为 2 以上并且、光标位置在 0 之后的情况下
        if @column_max >= 2 and @index > 0
         # 光标向左移动
          $game_system.se_play($data_system.cursor_se)
          @index -= 1
        end
      end
      # R 键被按下的情况下
      if Input.repeat?(Input::R)
        # 显示的最后行在数据中最后行上方的情况下
        if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)
          # 光标向后移动一页
          $game_system.se_play($data_system.cursor_se)
          @index = [@index + self.page_item_max, @item_max - 1].min
          self.top_row += self.page_row_max
        end
      end
      # L 键被按下的情况下
      if Input.repeat?(Input::L)
        # 显示的开头行在位置 0 之后的情况下
        if self.top_row > 0
          # 光标向前移动一页
          $game_system.se_play($data_system.cursor_se)
          @index = [@index - self.page_item_max, 0].max
          self.top_row -= self.page_row_max
        end
      end
    end
    # 刷新帮助文本 (update_help 定义了继承目标)
    if self.active and @help_window != nil
      update_help
    end
    # 刷新光标矩形
    update_cursor_rect
  end
end

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================


 

脚本使用的通用说明

约定:本脚本来源于网络,任何人不得随意将本脚本应用于商业用途,如需转载,必须保留所有版权信息,如果是国内作者,最好征求作者同意——否则发生任何后果,66RPG不予负责。使用此脚本表示您默认接受上述约定。

说明:不同脚本之间、尤其是不同作者脚本之间会有冲突,本站会对已知脚本冲突进行简单说明。测试新脚本请下载本站提供的测试文件或者新建工程测试。脚本不要贪多,否则可能会互相冲突对您的游戏造成未知的影响。如果脚本内或者本站内提供了解释,请务必完全看完解释后再使用,如有问题,请到论坛讨论。


鲜花

刚表态过的朋友 (0 人)

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

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

GMT+8, 2024-4-18 09:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部