Batalha Por Trás
Publicado em 6 de novembro de 2011.Script para o RPG Maker XP, feito por パラ戟 que, ao ser adicionado a um projeto, mostra o characters dos heróis de costas, como se estivessemos vendo a batalha por trás do nosso grupo. Para ficar bacana, acho que as posições dos monstros nos grupos de monstros, tem que ser redefinidas para um ponto mais alto na tela.
#==============================================================================
# @ { { @サイドビュ [バトル i歩sグラフィック箔タj @ver. 1.14 @ { {
# @ @Script by パラ戟
# @ @http://para.j-mx.com/
#------------------------------------------------------------------------------
# バトルフィ [ルドu5・sグラフィックり貼ヲk"梳限B
#==============================================================================
module SDVA
X_LINE = 140 # 堰(武uv{トラ [表ヲ 嵩W
Y_LINE = 290 # c・訊v{トラ [表ヲ 嵩W
X_SPACE = 120 # 堰(武uv{トラ [嶋.mv・・
Y_SPACE = 0 # c・訊v{トラ [嶋.mv・・
X_POSITION = 0 # 隊暮タm前衛 E中衛 E娯)q nv〟*嚠u
Y_POSITION = 10 # 隊暮タm前衛 E中衛 E娯)q nvc噛・
PARTY_POS = 3 # キャラクタ [v基・i 0:燕/ 1: ・/ 2:右 / 3: 簑 j
ATTACK_MOVE = true # U撃桙・O・巣"淆ol"・i true / false j
SKILL_MOVE = true # スキルg用桙・O・巣"淆ol"・i true / false j
ITEM_MOVE = false # アイテムg用桙・O・巣"淆ol"・i true / false j
MOVE_STEP = 1 # ・燥内・
MOVE_PIXEL = 10 # 亥内 o"艢磨sクセル ・
PARTY_POS = 3 # キャラクタ [v基・i 0:燕/ 1: ・/ 2:右 / 3: 簑 j
WINDOWPOS_CHANGE = true # コマンドウインドウり{トラ [v〟"・\ヲl"・・i true / false j
end
#==============================================================================
# ・Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ・バトル峨舶X 嵩Wv後聡
#--------------------------------------------------------------------------
def screen_x
if self.index != nil
# 隊暮"闌繿・
pos = $data_classes[self.class_id].position
x_pos = pos * SDVA::X_POSITION
scr_x = self.index * SDVA::X_SPACE + SDVA::X_LINE + x_pos
# ・燥、クションv凍・
if self.current_action.move_action == true
# 堰"・搗・
scr_x += @shift_x
end
return scr_x
else
return 0
end
end
#--------------------------------------------------------------------------
# ・バトル峨舶Y 嵩Wv後聡
#--------------------------------------------------------------------------
def screen_y
if self.index != nil
# 隊暮"闌繿・
pos = $data_classes[self.class_id].position
y_pos = pos * SDVA::Y_POSITION
scr_y = self.index * SDVA::Y_SPACE + SDVA::Y_LINE + y_pos
# ・燥、クションv凍・
if self.current_action.move_action == true
# cu(搗・
scr_y += @shift_y
end
return scr_y
else
return 0
end
end
#--------------------------------------------------------------------------
# ・バトル峨舶Z 嵩Wv後聡
#--------------------------------------------------------------------------
def screen_z
if self.index != nil
return self.index
else
return 0
end
end
end
#==============================================================================
# ・Game_Battler (腐・剃荏 1)
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ・誤・インスタンス葺タ・
#--------------------------------------------------------------------------
attr_reader :pattern # 歩sパタ [ン
attr_reader :trans_x # X俸,蕫昧搗㊨覧く
attr_reader :moving # ・燥炊フラグ
#--------------------------------------------------------------------------
# ・オブジェクト 炎奣鹿
#--------------------------------------------------------------------------
alias initialize_sdva initialize
def initialize
initialize_sdva
move_reset
end
#--------------------------------------------------------------------------
# ・・燥゛ウント
#--------------------------------------------------------------------------
def move
@moving = 1
if @step < SDVA::MOVE_STEP
# 歩狽阡桙・・梳・搗・
@pattern = (@pattern + 1) % 4
@step += 1
move_step
else
# ・燥I絡ュ
@pattern = 1
@moving = 2
end
end
#--------------------------------------------------------------------------
# ・・燥・
#--------------------------------------------------------------------------
def move_step
# パ [ティv基・・縲・中搗・嵩Wり祷"ム蟄
case SDVA::PARTY_POS
when 0
@shift_y = @step * SDVA::MOVE_PIXEL
when 1
@shift_x = -(@step * SDVA::MOVE_PIXEL)
when 2
@shift_x = @step * SDVA::MOVE_PIXEL
when 3
@shift_y = -(@step * SDVA::MOVE_PIXEL)
end
end
#--------------------------------------------------------------------------
# ・・燥磨潟Zット
#--------------------------------------------------------------------------
def move_reset
@moving = 0
@pattern = 0
@step = 0
@shift_x = 0
@shift_y = 0
end
end
#==============================================================================
# ・Game_BattleAction
#==============================================================================
class Game_BattleAction
#--------------------------------------------------------------------------
# ・誤・インスタンス葺タ・
#--------------------------------------------------------------------------
attr_accessor :move_action # ・燥・・Aクションeュ
#--------------------------------------------------------------------------
# ・クリア
#--------------------------------------------------------------------------
alias clear_sdva clear
def clear
clear_sdva
@move_action = false
end
end
#==============================================================================
# ・Sprite_Battler
#==============================================================================
class Sprite_Battler < RPG::Sprite
#--------------------------------------------------------------------------
# ・フレ [ム X V
#--------------------------------------------------------------------------
alias update_sdva update
def update
# バトラ [e、クタ [u*梳梳蛟・凍・
if @battler.is_a?(Game_Actor)
# ファイル鮪・F相e且タ・摩烙摩宕・楳蠡・・
# s島炊v・・
if @battler.battler_name != @battler_name or
@battler.battler_hue != @battler_hue or
@battler.current_action.basic == 0 or
@battler.current_action.kind != 3
# ビットマップり後聡A ・・
@character_name = @battler.character_name
@character_hue = @battler.character_hue
# 歩sグラフィックり伝峨
self.bitmap = RPG::Cache.character(@character_name, @character_hue)
cw = self.bitmap.width / 4
ch = self.bitmap.height / 4
@width = cw
@height = ch
if @battler.current_action.move_action == true
# 歩・・蟄
@battler.move
else
@battler.move_reset
end
# 転送穴"哩・`り・・
sx = @battler.pattern * cw
sy = SDVA::PARTY_POS * ch
self.src_rect.set(sx, sy, cw, ch)
self.ox = @width / 2
self.oy = @height
# 隠ょ・噫楳・s塘6書xり0 u"・蟄
if @battler.hidden
self.opacity = 0
end
end
end
update_sdva
end
end
#==============================================================================
# ・Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ・アクタ [コマンドウィンドウv〇ットアップ
#--------------------------------------------------------------------------
alias phase3_setup_command_window_sdva phase3_setup_command_window
def phase3_setup_command_window
phase3_setup_command_window_sdva
if SDVA::WINDOWPOS_CHANGE
# アクタ [コマンドウィンドウv・訊り・・
case SDVA::PARTY_POS
when 0
x_pos = @active_battler.screen_x - (@actor_command_window.width/2)
y_pos = @active_battler.screen_y
when 1
x_pos = @active_battler.screen_x - @actor_command_window.width - 16
y_pos = @active_battler.screen_y - @actor_command_window.height
when 2
x_pos = @active_battler.screen_x + 16
y_pos = @active_battler.screen_y - @actor_command_window.height
when 3
x_pos = @active_battler.screen_x - (@actor_command_window.width/2)
y_pos = @active_battler.screen_y - @actor_command_window.height - 48
end
@actor_command_window.x = x_pos >= 0 ? x_pos : 0
@actor_command_window.x = x_pos+@actor_command_window.width <= 640 ? x_pos : 640-@actor_command_window.width
@actor_command_window.y = y_pos >= 0 ? y_pos : 0
@actor_command_window.y = y_pos+@actor_command_window.height <= 480 ? y_pos : 480-@actor_command_window.height
# ステ [タスウインドウu)Bょ楳÷縲・墳
@actor_command_window.z = 9999
end
end
#--------------------------------------------------------------------------
# ・フレ [ム X V (・インフェ [ズ ステップ 3 : s島盾、ニ・ [ション)
#--------------------------------------------------------------------------
alias update_phase4_step3_sdva update_phase4_step3
def update_phase4_step3
if SDVA::ATTACK_MOVE
if @active_battler.current_action.basic == 0
@active_battler.current_action.move_action = true
end
end
if SDVA::SKILL_MOVE
if @active_battler.current_action.kind == 1
@active_battler.current_action.move_action = true
end
end
if SDVA::ITEM_MOVE
if @active_battler.current_action.kind == 2
@active_battler.current_action.move_action = true
end
end
# バトラ [e、クタ [u*梳梳・A・燥、クション中
if @active_battler.is_a?(Game_Actor) and
@active_battler.current_action.move_action
# ・燥I絡.・
if @active_battler.moving == 2
update_phase4_step3_sdva
end
elsif @active_battler.moving == 0
update_phase4_step3_sdva
end
end
#--------------------------------------------------------------------------
# ・フレ [ム X V (・インフェ [ズ ステップ 6 : リフレッシュ)
#--------------------------------------------------------------------------
alias update_phase4_step6_sdva update_phase4_step6
def update_phase4_step6
@active_battler.current_action.move_action = false
@active_battler.move_reset
update_phase4_step6_sdva
end
end
#==============================================================================
# ・Spriteset_Battle
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# ・オブジェクト 炎奣鹿
#--------------------------------------------------------------------------
alias initialize_sdva initialize
def initialize
initialize_sdva
@viewport2.z = 1
end
end
#==============================================================================
# ・Arrow_Actor
#==============================================================================
class Arrow_Actor < Arrow_Base
#--------------------------------------------------------------------------
# ・フレ [ム X V
#--------------------------------------------------------------------------
alias update_sdva update
def update
update_sdva
# カ [ソル燕
if Input.repeat?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
@index += 1
@index %= $game_party.actors.size
end
# カ [ソル 箝
if Input.repeat?(Input::UP)
$game_system.se_play($data_system.cursor_se)
@index += $game_party.actors.size - 1
@index %= $game_party.actors.size
end
end
end
#==============================================================================
# ・Arrow_Enemy
#==============================================================================
class Arrow_Enemy < Arrow_Base
#--------------------------------------------------------------------------
# ・フレ [ム X V
#--------------------------------------------------------------------------
alias update_sdva update
def update
update_sdva
# カ [ソル燕
if Input.repeat?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += 1
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
end
# カ [ソル 箝
if Input.repeat?(Input::UP)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += $game_troop.enemies.size - 1
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
end
end
endInformações adicionais
- Categoria: Programação XP
- Adicionado por: LichKing
- Acessos: 38
Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Acesse aqui e saiba como. Obrigado!
