=begin
RGSS3
★ フキダシアイコン常時再生 ★
フキダシアイコンを表示し続けるキャラクターを作ります。
寝ているキャラなどにどうぞ。
新たな画像ファイルを作って、お店の看板代わりとかもいいかも。
● 仕様 ●==========================================================
横に8分割されたフキダシアイコン画像の内、
左から 3~7つ目をループ再生します。
====================================================================
● 使い方 ●========================================================
イベント>自律移動>カスタム>移動ルート>スクリプトに
@auto_balloon = n
と記述してください。nはフキダシアイコンのIDです。
====================================================================
ver1.00
Last Update : 2011/12/18
12/18 : 新規
ろかん [url]http://kaisou-ryouiki.sakura.ne.jp/[/url]
=end
#===========================================
# 設定箇所
#===========================================
module Rokan
module Auto_Balloon
# フキダシの半透明化が始まるプレイヤーとの距離
# 不透明化を行わない場合は"0"を設定してください。
DBO = 4
end
end
#===========================================
# ここまで
#===========================================
$rsi ||= {}
$rsi["フキダシアイコン常時再生"] = true
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :auto_balloon
#--------------------------------------------------------------------------
# ● 公開メンバ変数の初期化
#--------------------------------------------------------------------------
alias _auto_balloon_init init_public_members
def init_public_members
_auto_balloon_init
@auto_balloon = 0
end
#--------------------------------------------------------------------------
# ● プレイヤーからの距離を取得
#--------------------------------------------------------------------------
def distance_from_player
distance_x_from($game_player.x).abs + distance_y_from($game_player.y).abs
end
#--------------------------------------------------------------------------
# ● イベントページのセットアップ
#--------------------------------------------------------------------------
alias _auto_balloon_setup_page setup_page
def setup_page(new_page)
@auto_balloon = 0
_auto_balloon_setup_page(new_page)
end
end
class Sprite_Character < Sprite_Base
#--------------------------------------------------------------------------
# ● インクルード Rokan::Auto_Balloon
#--------------------------------------------------------------------------
include Rokan::Auto_Balloon
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
alias _auto_balloon_dispose dispose
def dispose
dispose_auto_balloon
_auto_balloon_dispose
end
#--------------------------------------------------------------------------
# ● 常時再生フキダシアイコンの解放
#--------------------------------------------------------------------------
def dispose_auto_balloon
@bw = 10
@bx = -1
@auto_balloon_id = 0
if @auto_balloon_sprite
@auto_balloon_sprite.dispose
@auto_balloon_sprite = nil
end
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
alias _auto_balloon_update update
def update
update_auto_balloon
_auto_balloon_update
end
#--------------------------------------------------------------------------
# ● プレイヤーからの距離を取得
#--------------------------------------------------------------------------
def distance_from_player
@character.distance_from_player
end
#--------------------------------------------------------------------------
# ● 距離によるフキダシの透明度を取得
#--------------------------------------------------------------------------
def distance_balloon_opacity
DBO.zero? ? 255 : 255 - 50 * (distance_from_player - DBO)
end
#--------------------------------------------------------------------------
# ● 表示するフキダシのX座標を取得
#--------------------------------------------------------------------------
def auto_balloon_x
@bx * 32 + 64
end
#--------------------------------------------------------------------------
# ● 表示するフキダシのY座標を取得
#--------------------------------------------------------------------------
def auto_balloon_y
(@auto_balloon_id - 1) * 32
end
#--------------------------------------------------------------------------
# ● 常時再生フキダシアイコン表示の開始
#--------------------------------------------------------------------------
def start_auto_balloon
dispose_auto_balloon
@auto_balloon_id = @character.auto_balloon
@auto_balloon_sprite = Sprite.new(self.viewport)
@auto_balloon_sprite.bitmap = Cache.system("Balloon")
@auto_balloon_sprite.z = self.z + 200
@auto_balloon_sprite.ox = 16
@auto_balloon_sprite.oy = 32
end
#--------------------------------------------------------------------------
# ● 常時再生フキダシアイコンの更新
#--------------------------------------------------------------------------
def update_auto_balloon
if @character.is_a?(Game_Event)
if @character.auto_balloon.zero? || !@balloon_duration.zero?
dispose_auto_balloon
else
start_auto_balloon if !@auto_balloon_sprite || @auto_balloon_id != @character.auto_balloon
@auto_balloon_sprite.x = self.x
@auto_balloon_sprite.y = self.y - self.height
@auto_balloon_sprite.opacity = distance_balloon_opacity
if @bw == 10
@bw = 0
@bx = @bx == 4 ? 0 : @bx.next
@auto_balloon_sprite.src_rect.set(auto_balloon_x, auto_balloon_y, 32, 32)
else
@bw = @bw.next
end
end
end
end
end