赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 0 |
经验 | 0 |
最后登录 | 2011-2-16 |
在线时间 | 6 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 210
- 在线时间
- 6 小时
- 注册时间
- 2010-10-17
- 帖子
- 2
|
回复 冰舞蝶恋 的帖子
#==============================================================================
#RTAB观光游第六站,连击效果+连击计数显示 (显示部分)
#==============================================================================
# ▼▲▼ XRXS_BP19. コンボ表示+ヒットボーナス ver.3β ▼▲▼ built 201409
# by 桜雅 在土
#==============================================================================
# □ カスタマイズポイント
#==============================================================================
class XRXS_BP19
#
# コンボ持続時間[単位:F](40F が 一秒)
#
COMBOHIT_DURATION = 100
#
# スキン ファイル名
#
SKIN_NUMBER = "SixRice_Number.png"
SKIN_HIT = "SixRice_HITS.png"
end
class Game_Battler
#
# コンボヒットによるダメージ補正力/ヒット数[単位:%]
#
DAMAGE_INCREASE_PER_HIT = 1
end
#==============================================================================
# --- XRXS.ナンバースプライト スキン対応! ---
#==============================================================================
class NumberSprite
#--------------------------------------------------------------------------
# ○ オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(skin)
@skin = skin
@sprites = []
@width = skin.width/10
@height = skin.height
set_digit(4) # 基本設定値
set(0)
end
#--------------------------------------------------------------------------
# ○ 桁の設定
#--------------------------------------------------------------------------
def set_digit(digit)
@sprites.each{|sprite| sprite.dispose}
@sprites.clear
digit.times do
sprite = Sprite.new
sprite.bitmap = @skin
sprite.z = 999
sprite.src_rect.set(0, 0, @width, @height)
@sprites.push(sprite)
end
end
#--------------------------------------------------------------------------
# ○ 値の設定
#--------------------------------------------------------------------------
def set(number)
# 例外補正
digit = Math.log10(number)
if digit > @sprites.size
set_digit(digit)
end
# 各桁の適用
for sprite in @sprites
sprite.src_rect.x = number%10 * @width
number /= 10
end
# ゼロ表示 上から判定し、一度でも 0 でなければそこから表示
zero_display = false
for sprite in @sprites.reverse
zero_display |= (sprite.src_rect.x != 0)
sprite.visible = zero_display
end
end
#--------------------------------------------------------------------------
# ○ 座標などの設定の経由
#--------------------------------------------------------------------------
def x=(n)
@sprites.each{|sprite|
sprite.x = n
n -= @width
}
end
def y=(n)
@sprites.each{|sprite| sprite.y = n }
end
def opacity=(n)
@sprites.each{|sprite| sprite.opacity = n }
end
def dispose
@sprites.each{|sprite| sprite.dispose }
end
end
#==============================================================================
# □ Window_ComboHit
#------------------------------------------------------------------------------
# 戦闘中にコンボ数を表示する透明なウィンドウです。
#==============================================================================
class Window_ComboHit < Window_Base
#--------------------------------------------------------------------------
# ○ オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
@number = NumberSprite.new(RPG::Cache.windowskin(XRXS_BP19::SKIN_NUMBER))
super(200, 80, 200, 80)
self.opacity = 0
self.z = 999
self.visible = false
self.contents = RPG::Cache.windowskin(XRXS_BP19::SKIN_HIT).dup
@active = false
@show_duration = 0
@sliding_duration = 0
end
#--------------------------------------------------------------------------
# ○ クリア ほか
#--------------------------------------------------------------------------
def clear
self.visible = false
end
def x=(n)
super
@number.x = n if @number != nil
end
def y=(n)
super
@number.y = n if @number != nil
end
def contents_opacity=(n)
super
@number.opacity = n if @number != nil
end
def dispose
@number.dispose
super
end
#--------------------------------------------------------------------------
# ○ リフレッシュ
#--------------------------------------------------------------------------
def refresh(hit_combo, duration)
# 可視化
self.contents_opacity = 255
self.visible = true
# 設定
@show_duration = duration
@sliding_duration = 0
# 描写
@number.set(hit_combo)
end
#--------------------------------------------------------------------------
# ○ フレーム更新
#--------------------------------------------------------------------------
def update
if @sliding_duration > 0
@sliding_duration -= 1
self.contents_opacity -= 32
self.x += 1
if @sliding_duration == 0
self.visible = false
end
elsif @show_duration > 0
@show_duration -= 1
if @show_duration == 0
@sliding_duration = 8
end
end
end
end
|
|