Skip to content

Instantly share code, notes, and snippets.

@rutan
Created March 31, 2013 12:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rutan/5280507 to your computer and use it in GitHub Desktop.
Save rutan/5280507 to your computer and use it in GitHub Desktop.
【RGSS3】[hzm]敵バトラーに影を表示 for RGSS3
# coding: utf-8
#===============================================================================
# ■ [hzm]敵バトラーに影を表示 for RGSS3
# ※ このスクリプトには「[hzm]メモ欄拡張共通部分 for RGSS3」が必要です
#-------------------------------------------------------------------------------
# 2012/01/07 Ru/むっくRu
#-------------------------------------------------------------------------------
# 敵バトラーの下に影を表示します.
#
# 【設定方法】
# データベースの「敵キャラ」の「メモ」欄に以下のいずれかを記述してください
#
# [hzm]影
# [hzm]影:xx,yy
# [hzm]影:xx,yy,zz
#
# xxの部分には影のX軸のズレ,yyの部分には影のY軸のズレ
# zzの部分には影の拡大率を設定してください
#
# 例:影をY軸に-10ドットずらして表示)[hzm]影:0,-10
#
#-------------------------------------------------------------------------------
# 【更新履歴】
# 2012/01/07 ぶっぱ
#-------------------------------------------------------------------------------
#==============================================================================
# ● 設定項目
#==============================================================================
module HZM_VXA
module EnemyShadow
# 影の画像ファイル(拡張子は不要)
# ここで設定したファイル名の画像を,
# Graphics/Battlersの中に入れてください
BITMAP_FILENAME = '[system]shadow'
# 影の拡大率(初期値)
BASE_ZOOM = 1.25
# アクターと影のZ座標の差
DIFF_Z = -100
end
end
#==============================================================================
# ↑   ここまで設定   ↑
# ↓ 以下、スクリプト部 ↓
#==============================================================================
raise "[hzm] メモ欄取得スクリプトが必要です" unless defined?(HZM_VXA::Note)
raise "[hzm] メモ欄取得スクリプトのバージョンが異なります" unless HZM_VXA::Note::VERSION.to_f >= 2.00 and HZM_VXA::Note::VERSION.to_f < 3.0
module HZM_VXA
module EnemyShadow
BITMAP_FILENAME = '[system]shadow'
# メモ欄から読み込む要素名の候補を設定
KEYS = ['影', 'Shadow']
end
end
class Sprite_Battler < Sprite_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化(エイリアス)
#--------------------------------------------------------------------------
alias hzm_vxa_enemyShadow_initialize initialize
def initialize(viewport, battler = nil)
hzm_vxa_enemyShadow_initialize(viewport, battler)
if battler and !battler.actor? and battler.use_sprite?
data = $data_enemies[battler.enemy_id].hzm_vxa_note_match(HZM_VXA::EnemyShadow::KEYS)
return unless data
@hzm_vxa_enemyShadow_sprite = Sprite_Base.new(viewport)
@hzm_vxa_enemyShadow_sprite.bitmap = Cache.battler(HZM_VXA::EnemyShadow::BITMAP_FILENAME, 0)
@hzm_vxa_enemyShadow_sprite.ox = @hzm_vxa_enemyShadow_sprite.bitmap.width / 2
@hzm_vxa_enemyShadow_sprite.oy = @hzm_vxa_enemyShadow_sprite.bitmap.height / 2
if data.size >= 2
@hzm_vxa_enemyShadow_dx = data[0].to_i
@hzm_vxa_enemyShadow_dy = data[1].to_i
else
@hzm_vxa_enemyShadow_dx = 0
@hzm_vxa_enemyShadow_dy = 0
end
@hzm_vxa_enemyShadow_zoom = (data.size >= 3 ? data[2] : HZM_VXA::EnemyShadow::BASE_ZOOM)
end
end
#--------------------------------------------------------------------------
# ● 解放(エイリアス)
#--------------------------------------------------------------------------
alias hzm_vxa_enemyShadow_dispose dispose
def dispose
if @hzm_vxa_enemyShadow_sprite
@hzm_vxa_enemyShadow_sprite.bitmap.dispose if @hzm_vxa_enemyShadow_sprite.bitmap
@hzm_vxa_enemyShadow_sprite.dispose
end
hzm_vxa_enemyShadow_dispose
end
#--------------------------------------------------------------------------
# ● 位置の更新
#--------------------------------------------------------------------------
alias hzm_vxa_enemyShadow_update_position update_position
def update_position
hzm_vxa_enemyShadow_update_position
return unless @hzm_vxa_enemyShadow_sprite
@hzm_vxa_enemyShadow_sprite.x = self.x + @hzm_vxa_enemyShadow_dx
@hzm_vxa_enemyShadow_sprite.y = self.y + @hzm_vxa_enemyShadow_dy
@hzm_vxa_enemyShadow_sprite.z = self.z + HZM_VXA::EnemyShadow::DIFF_Z
@hzm_vxa_enemyShadow_sprite.opacity = self.opacity
end
#--------------------------------------------------------------------------
# ● 可視状態の初期化
#--------------------------------------------------------------------------
alias hzm_vxa_enemyShadow_init_visibility init_visibility
def init_visibility
hzm_vxa_enemyShadow_init_visibility
if bitmap and @hzm_vxa_enemyShadow_sprite
@hzm_vxa_enemyShadow_sprite.zoom_x = (@hzm_vxa_enemyShadow_zoom * bitmap.width / @hzm_vxa_enemyShadow_sprite.bitmap.width.to_f)
@hzm_vxa_enemyShadow_sprite.zoom_y = @hzm_vxa_enemyShadow_sprite.zoom_x
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment