【概要】
RPGツクールXP用のデフォルト戦闘をサイドビューにするスクリプトです。
味方のバトラーの位置を変更しているだけですので、ほぼデフォルト戦闘と
同じ感覚で簡単にサイドビュー戦闘にする事が可能です。
【使い方】
・まず、サイドビュー戦闘用のバトラーグラフィックを自前で用意する必要があります。
・バトラーグラフィックの基本画像サイズは48x48Pixelになります。
・データベース内、アクターのバトラーグラフィックを用意した物に変更します。
・データベース内のトループを新規作成し、エネミーをサイド用にあわせて配置します。
・スクリプトエディタを開き、Mainより上の位置にスクリプトをコピペするなどして挿入します。
・導入後は基本的にデフォルト戦闘と同じようにサイドビュー戦闘が実行されます。
・他の方が公開されているスクリプトとは共存できない場合があります。
【利用規約】
・本スクリプトは有償、無償に関わらず、自由にご利用いただけます。
・年齢制限のある作品でも利用が可能です。
・スクリプトの制作者(naya)への利用報告は必要ありません。
・READMEテキスト等へのクレジットの表記も不要です。
・本スクリプトを自作した物として単独で公開、販売をすることはできません。
・本スクリプトを改造した物を公開する場合は引用元を明記した上で公開してください。
・本スクリプトを利用した事により発生するいかなる問題にも制作者(naya)は一切の責任を負いません。
・以上の規約に同意していただける方のみ当スクリプトを利用する事ができます。
# 以下がスクリプトのテキストです。
#==============================================================================
# ★SimpleSideBattle(簡易サイドビュー戦闘)Ver1.0★
# 制作者:naya
# 作成日:2024/2/15
#------------------------------------------------------------------------------
# シンプルなサイドビュー戦闘スクリプトです。
# 処理的には味方のバトラー画像の表示位置を変えているだけです。
# 戦闘自体はデフォルトどおりに動作します。
#==============================================================================
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
class Sprite_Battler < RPG::Sprite
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
super
# バトラーが nil の場合
if @battler == nil
self.bitmap = nil
loop_animation(nil)
return
end
# ファイル名か色相が現在のものと異なる場合
if @battler.battler_name != @battler_name or
@battler.battler_hue != @battler_hue
# ビットマップを取得、設定
@battler_name = @battler.battler_name
@battler_hue = @battler.battler_hue
self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
@width = bitmap.width
@height = bitmap.height
self.ox = @width / 2
self.oy = @height
# 戦闘不能または隠れ状態なら不透明度を 0 にする
if @battler.dead? or @battler.hidden
self.opacity = 0
end
end
# アニメーション ID が現在のものと異なる場合
if @battler.damage == nil and
@battler.state_animation_id != @state_animation_id
@state_animation_id = @battler.state_animation_id
loop_animation($data_animations[@state_animation_id])
end
# 表示されるべきアクターの場合
if @battler.is_a?(Game_Actor) and @battler_visible
self.opacity = 255
end
# 明滅
if @battler.blink
blink_on
else
blink_off
end
# 不可視の場合
unless @battler_visible
# 出現
if not @battler.hidden and not @battler.dead? and
(@battler.damage == nil or @battler.damage_pop)
appear
@battler_visible = true
end
end
# 可視の場合
if @battler_visible
# 逃走
if @battler.hidden
$game_system.se_play($data_system.escape_se)
escape
@battler_visible = false
end
# 白フラッシュ
if @battler.white_flash
whiten
@battler.white_flash = false
end
# アニメーション
if @battler.animation_id != 0
animation = $data_animations[@battler.animation_id]
animation(animation, @battler.animation_hit)
@battler.animation_id = 0
end
# ダメージ
if @battler.damage_pop
damage(@battler.damage, @battler.critical)
@battler.damage = nil
@battler.critical = false
@battler.damage_pop = false
end
# コラプス
if @battler.damage == nil and @battler.dead?
if @battler.is_a?(Game_Enemy)
$game_system.se_play($data_system.enemy_collapse_se)
else
$game_system.se_play($data_system.actor_collapse_se)
end
collapse
@battler_visible = false
end
end
# スプライトの座標を設定
self.x = @battler.screen_x
self.y = @battler.screen_y
self.z = @battler.screen_z
end
end
#==============================================================================
# ■ Spriteset_Battle
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
# ビューポートを作成
@viewport1 = Viewport.new(0, 0, 640, 320)
@viewport2 = Viewport.new(0, 0, 640, 480)
@viewport3 = Viewport.new(0, 0, 640, 480)
@viewport4 = Viewport.new(0, 0, 640, 480)
@viewport2.z = 21
@viewport3.z = 200
@viewport4.z = 5000
# バトルバックスプライトを作成
@battleback_sprite = Sprite.new(@viewport1)
# エネミースプライトを作成
@enemy_sprites = []
for enemy in $game_troop.enemies.reverse
@enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
end
# アクタースプライトを作成
@actor_sprites = []
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
# 天候を作成
@weather = RPG::Weather.new(@viewport1)
# ピクチャスプライトを作成
@picture_sprites = []
for i in 51..100
@picture_sprites.push(Sprite_Picture.new(@viewport3,
$game_screen.pictures[i]))
end
# タイマースプライトを作成
@timer_sprite = Sprite_Timer.new
# フレーム更新
update
end
end
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● バトル画面 X 座標の取得
#--------------------------------------------------------------------------
def screen_x
# パーティ内の並び順から X 座標を計算して返す
if self.index != nil
return self.index * 16 + 512
else
return 0
end
end
#--------------------------------------------------------------------------
# ● バトル画面 Y 座標の取得
#--------------------------------------------------------------------------
def screen_y
# パーティ内の並び順から Y 座標を計算して返す
if self.index != nil
return self.index * 48 + 172
else
return 0
end
end
#--------------------------------------------------------------------------
# ● バトル画面 Z 座標の取得
#--------------------------------------------------------------------------
def screen_z
# パーティ内の並び順から Z 座標を計算して返す
if self.index != nil
return self.index
else
return 0
end
end
end