class Window_Selectable < Window_Base SWAY_LOOP = false# 設定項目外 LWAY_LOOP = false# 設定項目外 SIDE_PAGEMOVE = false# 設定項目外 NO_LR_PAGEMOVE = false# 設定項目外 # 以下、設定項目_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ # 書式は、ウィンドウのクラス名=>true(on) または false(off) # 左右のループを同じ行内で行うようにするウィンドウクラスの設定。 # 設定はクラスを継承するウィンドウ全てに適用される。 SWAY_LOOPS = { Window_Selectable=>true, #例・すべてのウィンドウで左右ループを同じ行内にする。 #Window_Skill=>false, #例・スキルウィンドウでは左右ループを同じ行内にしない。 } # 上下のループを同じ列内で行うようにするウィンドウクラスの設定。 LWAY_LOOPS = { Window_Selectable=>true, #例・すべてのウィンドウで上下ループを同じ列内にする。 #Window_Item=>true, #例・アイテムウィンドウでは上下ループを同じ列内にしない。 } # 左右キーをページ上下に使うウィンドウクラスの設定。 SIDE_PAGEMOVES = { Window_Selectable=>true, #例・すべての列数が1のウィンドウで、左右をページアップダウンに使う。 } # LRキーでページアップダウンしないウィンドウクラスの設定。 NO_LR_PAGEMOVES = { #Window_Selectable=>true, #例・すべてのウィンドウで、LRをページアップダウンに使わない。 } # 設定項目終了_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ end =begin ★ks_カーソル移動設定 最終更新日 2011/04/18 □===制作・著作===□ MaidensnowOnline 暴兎 使用プロジェクトを公開する場合、readme等に当HP名とそのアドレスを記述してください。 使用報告はしてくれると喜びます。 □===配置場所===□ 基本スクリプトおよび基本エリアスは必要ありません。 カーソル移動に関する格メソッドを再定義しているので、 可能な限り"▼ 素材"の下、近くに配置してください。 □===説明・使用方法===□ ウィンドウ内でのカーソルの左右や上下のループを、 同じ段や同じ列内でのループになる設定をすることができます。 また、LRボタンでのページアップダウンを無効化したり、 一列しかないウィンドウで、左右キーを押した場合にページアップダウンをする 設定をすることもできます。 これらの設定は、ウィンドウのクラスごとにオンオフすることが可能ですが、 カーソルの動き方を独自に定義しているクラスのウィンドウには基本的に反映されません。 □===再定義しているメソッド===□ def cursor_down(wrap = false)# Window_Selectable 再定義 def cursor_up(wrap = false)# Window_Selectable 再定義 def cursor_right(wrap = false)# Window_Selectable 再定義 def cursor_left(wrap = false)# Window_Selectable 再定義 □===エリアスしているメソッド===□ def cursor_pagedown# Window_Selectable alias def cursor_pageup# Window_Selectable alias =end #============================================================================== # ■ Window_Selectable #============================================================================== class Window_Selectable < Window_Base for klass in SWAY_LOOPS.keys klass.const_set(:SWAY_LOOP, SWAY_LOOPS[klass]) end for klass in LWAY_LOOPS.keys klass.const_set(:LWAY_LOOP, LWAY_LOOPS[klass]) end for klass in SIDE_PAGEMOVES.keys klass.const_set(:SIDE_PAGEMOVE, SIDE_PAGEMOVES[klass]) end for klass in NO_LR_PAGEMOVES.keys klass.const_set(:NO_LR_PAGEMOVE, NO_LR_PAGEMOVES[klass]) end remove_const(:SWAY_LOOPS) remove_const(:LWAY_LOOPS) remove_const(:SIDE_PAGEMOVES) remove_const(:NO_LR_PAGEMOVES) def lsw?# Window_Selectable 新規 return self.class::SWAY_LOOP end def llw?# Window_Selectable 新規 return self.class::LWAY_LOOP end def spm?# Window_Selectable 新規 return self.class::SIDE_PAGEMOVE end def npm?# Window_Selectable 新規 return self.class::NO_LR_PAGEMOVE end #-------------------------------------------------------------------------- # ● カーソルを下に移動 # wrap : ラップアラウンド許可 #-------------------------------------------------------------------------- def cursor_down(wrap = false)# Window_Selectable 再定義 if (@index < @item_max - @column_max) or (wrap and @column_max == 1 || llw?) @index = (@index + @column_max) if llw? iim = @item_max + (@column_max - @item_max % @column_max) % @column_max else iim = @item_max end @index %= iim#@item_max unless @index < @item_max @index += @index % @column_max @index %= @item_max end end end #-------------------------------------------------------------------------- # ● カーソルを上に移動 # wrap : ラップアラウンド許可 #-------------------------------------------------------------------------- def cursor_up(wrap = false)# Window_Selectable 再定義 if (@index >= @column_max) or (wrap and @column_max == 1 || llw?) @index = @index - @column_max if llw? iim = @item_max + (@column_max - @item_max % @column_max) % @column_max else iim = @item_max end @index += iim#@item_max @index %= iim#@item_max unless @index < @item_max @index -= @column_max#@index % @column_max @index %= @item_max end end end #-------------------------------------------------------------------------- # ● カーソルを右に移動 # wrap : ラップアラウンド許可 #-------------------------------------------------------------------------- def cursor_right(wrap = false)# Window_Selectable 再定義 return cursor_pagedown if spm? && @column_max == 1 if (@column_max >= 2) and (@index < @item_max - 1 or (wrap and page_row_max == 1 || lsw?)) @index = @index + 1 @index -= @column_max if lsw? && @index % @column_max == 0 @index %= @item_max end end #-------------------------------------------------------------------------- # ● カーソルを左に移動 # wrap : ラップアラウンド許可 #-------------------------------------------------------------------------- def cursor_left(wrap = false)# Window_Selectable 再定義 return cursor_pageup if spm? && @column_max == 1 if (@column_max >= 2) and (@index > 0 or (wrap and page_row_max == 1 || lsw?)) @index += @column_max if lsw? && @index % @column_max == 0 @index = @index - 1 + @item_max @index %= @item_max end end #-------------------------------------------------------------------------- # ● カーソルを 1 ページ後ろに移動 #-------------------------------------------------------------------------- alias cursor_pagedown_for_cursor_custmize cursor_pagedown def cursor_pagedown# Window_Selectable alias return false if npm? && Input.trigger?(Input::R) cursor_pagedown_for_cursor_custmize end #-------------------------------------------------------------------------- # ● カーソルを 1 ページ前に移動 #-------------------------------------------------------------------------- alias cursor_pageup_for_cursor_custmize cursor_pageup def cursor_pageup# Window_Selectable alias return false if npm? && Input.trigger?(Input::L) cursor_pageup_for_cursor_custmize end end