=begin ★ks_四方位式コマンド 最終更新日 2011/04/07 □===制作・著作===□ MaidensnowOnline 暴兎 使用プロジェクトを公開する場合、readme等に当HP名とそのアドレスを記述してください。 使用報告はしてくれると喜びます。 □===配置場所===□ 基本スクリプトおよび基本エリアスは必要ありません。 基本的に再定義モノなので、可能な限り"▼ 素材"の下、近くに配置してください。 □===説明・使用方法===□ 戦闘時のアクターコマンドを、方向キーに対応した四方向5コマンドにします。 コマンド入力の煩雑さを減らして、プレイを快適にするよ! 離すと真ん中。 コマンドの並び順を変える機能は無いので、個別戦闘コマンド - KGC を使ってね! □===対応状況===□ 個別戦闘コマンド - KGC_SeparationCommand の個別戦闘コマンド並び順に対応しています。 っていうか、今のところ入ってないとコマンドが一個余ります。 Game_Battle_Zen_Tyu_Ko Ver. 1.00 (未完のダンボール箱) で攻撃が届かない位置にいるキャラクターの場合、攻撃コマンドを選択できなくなる 機能も一回実装しましたが、判定用の必須メソッドの動作の好みが分かれるので保留。 □===新規・再定義している主なメソッド===□ Window_ActorCommand def initialize# Window_ActorCommand 再定義 def viewport=(v)# Window_ActorCommand 新規super def z=(v)# Window_ActorCommand 新規super def dispose# Window_ActorCommand 新規super def cursor_right(a = false)# Window_ActorCommand 新規 def cursor_up(a = false)# Window_ActorCommand 新規 def cursor_left(a = false)# Window_ActorCommand 新規 def cursor_down(a = false)# Window_ActorCommand 新規 def item_rect(index)# Window_ActorCommand 新規 def active=(v)# Window_ActorCommand 新規super def index=(v)# Window_ActorCommand 新規super def update# Window_ActorCommand 新規super def draw_item(index, enabled = true)# Window_ActorCommand 新規 =end $imported = {} unless $imported.is_a?(Hash) class Window_ActorCommand < Window_Command #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize# Window_ActorCommand 再定義 @focus_window = Window_Base.new(0, 0, F_WIDTH + 32, WLH + 32) @focus_window.openness = 0 super(C_WIDTH * 3 + 32, [], 3, 3, SPACING) #super(C_WIDTH * 3 + 32, [], 1, 4) self.height = WLH * 3 + 32 + SPACING * 2 create_contents @column_max = 3 self.active = false self.opacity = 0 @default_index = 0 end def viewport=(v) ; super ; @focus_window.viewport = v ; end# Window_ActorCommand 新規super def visible=(v) ; super ; @focus_window.visible = v ; end# Window_ActorCommand 新規super def z=(v) ; super ; @focus_window.z = v + 1 ; end# Window_ActorCommand 新規super def dispose ; super ; @focus_window.dispose ; end# Window_ActorCommand 新規super def active=(v)# Window_ActorCommand 新規super super @focus_window.close unless v end WLH = 26 C_WIDTH = 32#50 F_WIDTH = 90#50 SPACING = 2#8 ICONS = [ 131, # 攻撃のアイコン 133, # スキルのアイコン 52, # 防御のアイコン 151, # アイテムのアイコン 137, # 空の個別戦闘コマンド(多分表示はされない) ] SEP_COMMANDS = [:attack, :skill, :guard, :item, :own_start] def cursor_right(a = false)# Window_ActorCommand 新規 self.index = 1 end def cursor_up(a = false)# Window_ActorCommand 新規 self.index = 3 end def cursor_left(a = false)# Window_ActorCommand 新規 self.index = 4 end def cursor_down(a = false)# Window_ActorCommand 新規 self.index = 2 end def cursor_pagedown# Window_ActorCommand 新規 end def cursor_pageup# Window_ActorCommand 新規 end RECTS = [ [C_WIDTH + SPACING , WLH * 1 + SPACING / 2, C_WIDTH - SPACING, 24], # 0 [C_WIDTH * 2 + SPACING * 2, WLH * 1 + SPACING / 2, C_WIDTH - SPACING, 24], # 1 → [C_WIDTH + SPACING , WLH * 2 + SPACING / 2, C_WIDTH - SPACING, 24], # 2 ↓ [C_WIDTH + SPACING , WLH * 0 + SPACING / 2, C_WIDTH - SPACING, 24], # 3 ↑ [ SPACING , WLH * 1 + SPACING / 2, C_WIDTH - SPACING, 24], # 4 ← ] def item_rect(index)# Window_ActorCommand 新規 return Rect.new(*RECTS[index]) end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update# Window_ActorCommand 新規super self.index = @default_index if Input.dir4 == 0 && cursor_movable? super @focus_window.update end #-------------------------------------------------------------------------- # ● インデックスに連動して、フォーカスを開く #-------------------------------------------------------------------------- def index=(v)# Window_ActorCommand 新規super return if self.index == v super if v == @default_index @focus_window.contents.clear @focus_window.close else @focus_window.openness = 0 return if @commands[index].nil? rect = item_rect(v) @focus_window.x = self.x + rect.x - (@focus_window.width) / 2 @focus_window.y = self.y + rect.y# - 16 #p x, y, @focus_window.x, @focus_window.y @focus_window.open @focus_window.contents.clear @focus_window.contents.draw_text(0, 0, F_WIDTH, WLH, @commands[index], 1) end end #-------------------------------------------------------------------------- # ● 項目の描画 # index : 項目番号 # enabled : 有効フラグ。false のとき半透明で描画 #-------------------------------------------------------------------------- def draw_item(index, enabled = true)# Window_ActorCommand 新規 rect = item_rect(index) rect.x += 4 rect.width -= 8 self.contents.clear_rect(rect) self.contents.font.color = normal_color #self.contents.font.color.alpha = enabled ? 255 : 128 #self.contents.draw_text(rect, @commands[index], 1) if $imported["SeparationCommand"] ind = @command_index.index(index) #p @command_index, index, ind if !ind.is_a?(Symbol) || ind == :own_start || ind == :own_end c = @actor.own_commands[index - @command_index[:own_start]] unless c.nil? case c.kind when Game_OwnCommand::KIND_SKILL # スキル skill = c.skill icon = skill.icon_index else ind = 4 icon = ICONS[ind] end else ind = 4 icon = ICONS[ind] end elsif ind.nil? return else #p ind, SEP_COMMANDS, SEP_COMMANDS.index(ind), @actor.actor_commands[SEP_COMMANDS.index(ind)] ind = SEP_COMMANDS.index(ind) #ind = @actor.actor_commands[ind] icon = ICONS[ind] end else icon = ICONS[index] end SEP_COMMANDS self.draw_icon(icon, rect.x, rect.y, enabled) end end