pros-plan-for-elves/Scripts/_.20.rb

166 lines
No EOL
6.4 KiB
Ruby
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

=begin
RGSS3
★ フキダシアイコン常時再生 ★
フキダシアイコンを表示し続けるキャラクターを作ります。
寝ているキャラなどにどうぞ。
新たな画像ファイルを作って、お店の看板代わりとかもいいかも。
● 仕様 ●==========================================================
横に8分割されたフキダシアイコン画像の内、
左から 37つ目をループ再生します。
====================================================================
● 使い方 ●========================================================
イベント>自律移動>カスタム>移動ルート>スクリプトに
@auto_balloon = n
と記述してください。nはフキダシアイコンのIDです。
====================================================================
ver1.00
Last Update : 2011/12/18
12/18 : 新規
ろかん   http://kaisou-ryouiki.sakura.ne.jp/
=end
#===========================================
# 設定箇所
#===========================================
module Rokan
module Auto_Balloon
# フキダシの半透明化が始まるプレイヤーとの距離
# 不透明化を行わない場合は"0"を設定してください。
DBO = 8
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