Yoshi Recruta
| Assunto: ziifee's Spin Command for RPG Tankentai Sideview Battle System Ter Jan 26, 2010 7:24 pm | |
| ziifee's Spin Command for RPG Tankentai Sideview Battle SystemFeito por: ziifee Maker Utilizado: RMVX|Versão: Indefinida| Descrição:Um script que muda um pouco o menu padrão de batalha. Funções:.Uma pequena alteração na exibição dos menus de batalha. .Pode-se usar uma imagem para colocar no fundo das opções. .Defina os ícones para cada comando nas linhas 16, 17, 18, 19, 20 e 21 do script, lembrando que esses são icones do iconset do projeto. .Compatível com sistema de batalha lateral. Instruções:Copie e cole o script acima do main. Tenha na pasta Graphics\System do projeto uma imagem com o nome de Spin40. ScreenShotsNessa imagem o overdrive compatível com esse script já está incluso e pode ser baixado nesse tópico. Downloadziifee's Spin Command.rar script ziifee's Spin Command for RPG Tankentai Sideview Battle System:- Spoiler:
- Código:
-
=begin ======================================================================== * ziifee's Spin Command for RPG Tankentai Sideview Battle System By ziifee ( http://neomemo.web.fc2.com/ ) -This script is only for the Tankentai SBS WITHOUT the ATB installed. <img required=""> Spin40 : Spin40.png is required in the Graphics/System folder. =end # ========================================================================
#============================================================================== # ■ Ziifee #==============================================================================
module Zii # ▼ Spin Command/Icon Index Number FIGHT = 132 # Fight ESCAPE = 143 # Escape ATTACK = 1 # Attack (Default) GUARD = 52 # Guard SKILL = 128 # Skill ITEM = 144 # Item
# ▼ Spin Command/Direction of Rotation ( "normal" or "reverse" ) # Determines how Spin Command rotates according to left/right key press. TURN = "normal" # ▼ Face Graphics (true: Use battle face graphic / false: don't use faces) STATUS_FACE = true # ▼ Actor Names (true: Show actor names / false: Don't show ) STATUS_LINE = true # ▼ Actor Name Text Size ( VX default size: 20 ) LINE_SIZE = 14 #-------------------------------------------------------------------------- # ● 通常回転 の判定 #-------------------------------------------------------------------------- def self.turn_normal? return false if TURN == "reverse" return true if TURN == "normal" return true end #-------------------------------------------------------------------------- # ● バトルオプション [顔グラフィック] の判定 #-------------------------------------------------------------------------- def self.battle_face? return true if STATUS_FACE return false end #-------------------------------------------------------------------------- # ● バトルステートオプション [名前] の判定 #-------------------------------------------------------------------------- def self.line_name? return true if STATUS_LINE return false end end
# ▼ ステータス表示 #============================================================================== # ■ Window_BattleStatus #==============================================================================
class Window_BattleStatus #-------------------------------------------------------------------------- # ● オブジェクト初期化 改 #-------------------------------------------------------------------------- def initialize super(0, 0, 416, 128) @column_max = 4 refresh self.active = false self.opacity = 0 end #-------------------------------------------------------------------------- # ● 項目の描画 改 #-------------------------------------------------------------------------- def draw_item(index) x = index * 96 rect = Rect.new(x, 0, 96, 96) self.contents.clear_rect(rect) self.contents.font.color = normal_color actor = $game_party.members[index] draw_actor_face(actor, x 2, 2, 92) if actor.hp > 0 and Zii.battle_face? draw_actor_state(actor, x 72, WLH * 3) if Zii.line_name? self.contents.font.color = hp_color(actor) size = Zii::LINE_SIZE self.contents.font.size = size self.contents.draw_text(x, WLH * 1 20 - size, 80, WLH, actor.name) self.contents.font.size = 20 end draw_actor_hp(actor, x, WLH * 2, 80) draw_actor_mp(actor, x, WLH * 3, 70) end #-------------------------------------------------------------------------- # ● カーソルの更新 #-------------------------------------------------------------------------- def update_cursor if @index < 0 # カーソル位置が 0 未満の場合 self.cursor_rect.empty # カーソルを無効とする else # カーソル位置が 0 以上の場合 rect = Rect.new(index * 96, 0, 96, 96) self.cursor_rect = rect # カーソルの矩形を更新 end end end
# ▼ 回転コマンド #============================================================================== # ■ Window_SpinCommand #------------------------------------------------------------------------------ # 回転用コマンド選択を行うウィンドウです。 #==============================================================================
class Window_SpinCommand < Window_Base #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_reader :index # カーソル位置 attr_reader :help_window # ヘルプウィンドウ #-------------------------------------------------------------------------- # ● オブジェクト初期化 # cx / cy : 中心の X座標 / Y座標 # commands : コマンド配列 (内容 は [name, kind, pull, enabled?]) # setting : 設定ハッシュ ("R"=>半径 "S"=>速さ "G"=>背景 "L"=>文字) #-------------------------------------------------------------------------- def initialize(cx, cy, commands, setting = {}) @radius = setting.has_key?("R") ? setting["R"] : 40 # 描画半径 @speed = setting.has_key?("S") ? setting["S"] : 36 # 回転速さ @spin_back = setting.has_key?("G") ? setting["G"] : "" # 背景画像 @spin_line = setting.has_key?("L") ? setting["L"] : nil # 文字位置 x, y = cx - @radius - 28, cy - @radius - 28 width = height = @radius * 2 56 super(x, y, width, height) self.opacity = 0 @index = 0 @commands = commands # コマンド @spin_right = true @spin_count = 0 update_cursor end #-------------------------------------------------------------------------- # ▽ スピン画像を描画する (描画内容 強化用) # i : インデックス # cx : 表示 中心位置 X座標 # cy : 表示 中心位置 Y座標 #-------------------------------------------------------------------------- def draw_spin_graphic(i, cx, cy) case command_kind(i) when "icon" draw_icon(command_pull(i), cx - 12, cy - 12, command_enabled?(i)) end end #-------------------------------------------------------------------------- # ★ リフレッシュ バグ回避用 #-------------------------------------------------------------------------- def refresh set_spin end #-------------------------------------------------------------------------- # ★ 項目の描画 バグ回避用 #-------------------------------------------------------------------------- def draw_item(index, enabled = true) @commands[index][3] = enabled set_spin end #-------------------------------------------------------------------------- # ● 現在のコマンド名を取得する #-------------------------------------------------------------------------- def command_name(index = @index) return "" if index < 0 name = @commands[index][0] return name != nil ? name : "" end #-------------------------------------------------------------------------- # ● コマンドの種類を取得 #-------------------------------------------------------------------------- def command_kind(index) result = @commands[index][1] return result != nil ? result : "" end #-------------------------------------------------------------------------- # ● コマンドの引数 を取得 #-------------------------------------------------------------------------- def command_pull(index) result = @commands[index][2] return result != nil ? result : "" end #-------------------------------------------------------------------------- # ● コマンドの有効フラグを取得 #-------------------------------------------------------------------------- def command_enabled?(index) result = @commands[index][3] return result != nil ? result : true end #-------------------------------------------------------------------------- # ● 名前の位置に index を設定する #-------------------------------------------------------------------------- def set_index(name) n = -1 for i in 0...@commands.size n = i if @commands[i][0] == name end @index = n if n >= 0 update_cursor call_update_help set_spin end #-------------------------------------------------------------------------- # ● カーソル位置の設定 # index : 新しいカーソル位置 #-------------------------------------------------------------------------- def index=(index) @index = index update_cursor call_update_help set_spin end #-------------------------------------------------------------------------- # ● 中心のX座標を取得 #-------------------------------------------------------------------------- def center_x return contents.width / 2 end #-------------------------------------------------------------------------- # ● 中心のY座標を取得 #-------------------------------------------------------------------------- def center_y return contents.height / 2 end #-------------------------------------------------------------------------- # ● 項目数の取得 #-------------------------------------------------------------------------- def item_max return @commands.size end #-------------------------------------------------------------------------- # ● 背景の設定 (再定義 向き) #-------------------------------------------------------------------------- def set_background return if @spin_back == "" bitmap = Cache.system(@spin_back) rect = Rect.new(0, 0, bitmap.width, bitmap.height) self.contents.blt(12, 12, bitmap, rect) end #-------------------------------------------------------------------------- # ● 文章の設定 (再定義 向き) #-------------------------------------------------------------------------- def set_text return if @spin_line == nil y = center_y - WLH / 2 @spin_line self.contents.draw_text(center_x - 48, y, 96, WLH, command_name, 1) end #-------------------------------------------------------------------------- # ● スピンアイコンの角度の差を取得する #-------------------------------------------------------------------------- def angle_size return (Math::PI * 2 / item_max) end #-------------------------------------------------------------------------- # ● スピンアイコン回転時のカウント を設定する #-------------------------------------------------------------------------- def set_spin_count @spin_count = angle_size * 360 / @speed set_spin(true) end #-------------------------------------------------------------------------- # ● スピン設定 の実行 # spin : 回転フラグ (true の時回転中) #-------------------------------------------------------------------------- def set_spin(spin = false) self.contents.clear set_background angle = spin ? @speed * @spin_count / 360 : 0 angle = @spin_right ? angle : -angle for i in 0...item_max n = (i - @index) * angle_size angle cx = @radius * Math.sin(n) center_x cy = - @radius * Math.cos(n) center_y draw_spin_graphic(i, cx, cy) end set_text end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update super update_cursor if @spin_count > 0 @spin_count -= 1 set_spin(@spin_count >= 1) return end update_command end #-------------------------------------------------------------------------- # ● コマンドの移動可能判定 #-------------------------------------------------------------------------- def command_movable? return false if @spin_count > 0 return false if (not visible or not active) return false if (index < 0 or index > item_max or item_max == 0) return false if (@opening or @closing) return true end #-------------------------------------------------------------------------- # ● コマンドを右に移動 #-------------------------------------------------------------------------- def command_right @index = (@index 1) % item_max @spin_right = true set_spin_count end #-------------------------------------------------------------------------- # ● コマンドを左に移動 #-------------------------------------------------------------------------- def command_left @index = (@index - 1 item_max) % item_max @spin_right = false set_spin_count end #-------------------------------------------------------------------------- # ● コマンド選択の更新 #-------------------------------------------------------------------------- def update_command if command_movable? if Input.press?(Input::RIGHT) Sound.play_cursor Zii.turn_normal? ? command_right : command_left end if Input.press?(Input::LEFT) Sound.play_cursor Zii.turn_normal? ? command_left : command_right end end call_update_help end #-------------------------------------------------------------------------- # ● カーソルの更新 #-------------------------------------------------------------------------- def update_cursor if @index < 0 self.cursor_rect.empty else rect = Rect.new(0, 0, 24, 24) rect.x = center_x - rect.width / 2 rect.y = center_y - rect.height / 2 - @radius self.cursor_rect = rect end end #-------------------------------------------------------------------------- # ● ヘルプウィンドウの設定 # help_window : 新しいヘルプウィンドウ #-------------------------------------------------------------------------- def help_window=(help_window) @help_window = help_window call_update_help end #-------------------------------------------------------------------------- # ● ヘルプウィンドウ更新メソッドの呼び出し #-------------------------------------------------------------------------- def call_update_help if self.active and @help_window != nil update_help end end #-------------------------------------------------------------------------- # ● ヘルプウィンドウの更新 (内容は継承先で定義する) #-------------------------------------------------------------------------- def update_help end end
#============================================================================== # ■ Window_PartyCommand #==============================================================================
class Window_PartyCommand < Window_SpinCommand #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize s1 = [Vocab::fight, "icon", Zii::FIGHT, true] s2 = [Vocab::escape, "icon", Zii::ESCAPE, $game_troop.can_escape] setting = {"R"=>40, "S"=>52, "G"=>"Spin40", "L"=>-12} super(56, 64, [s1, s2], setting) self.active = false set_spin end end
#============================================================================== # ■ Window_ActorCommand #==============================================================================
class Window_ActorCommand < Window_SpinCommand #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize s1 = [Vocab::attack, "icon", Zii::ATTACK, true] s2 = [Vocab::skill, "icon", Zii::SKILL, true] s3 = [Vocab::guard, "icon", Zii::GUARD, true] s4 = [Vocab::item, "icon", Zii::ITEM, true] setting = {"R"=>40, "S"=>52, "G"=>"Spin40", "L"=>-12} super(0, 64, [s1, s2, s3, s4], setting) self.active = false set_spin end #-------------------------------------------------------------------------- # ● セットアップ # actor : アクター #-------------------------------------------------------------------------- def setup(actor) @commands[0][2] = Zii::ATTACK @commands[1][0] = Vocab::skill if actor.weapons[0] != nil n = actor.weapons[0].icon_index @commands[0][2] = n if n > 0 end @commands[1][0] = actor.class.skill_name if actor.class.skill_name_valid self.index = 0 set_spin end end
script KGC_Overdrive Patch for ziifee's Spin Command- Spoiler:
- Código:
-
# KGC_Overdrive Patch for ziifee's Spin Command # Paste below Spin Command and KGC_Overdrive scripts.
class Window_BattleStatus < Window_Selectable OD_GAUGE_X = 0 # Gauge X coordinate OD_GAUGE_Y = 0 # Gauge Y coordinate OD_GAUGE_WIDTH = 80 # Gauge width alias od_for_spin_command_patch_draw_item draw_item def draw_item(index) od_for_spin_command_patch_draw_item(index)
x = index * 96 actor = $game_party.members[index] draw_actor_od_gauge(actor, x OD_GAUGE_X, OD_GAUGE_Y, OD_GAUGE_WIDTH) end end Imagem necessáriaCréditosziifee, por criar o script |
|
Dattz Major
| Assunto: Re: ziifee's Spin Command for RPG Tankentai Sideview Battle System Qua Jan 27, 2010 11:45 pm | |
| Não é um sistema complexo, mas esse script deixa o menu de batalha mais atraente. E como uma modificação aqui e ali são o que deixam o seu jogo mais único, esse script vale a pena.
Bela contribuição, continue assim, 8D. |
|