#encoding:utf-8
#==============================================================================
# ■ 人物动态待机
# (仅支持png中只包含一个角色的图)
#
# 这是一个《多帧4_8方图,4_8向行走》插件的配套插件
# 会自动寻找待机图片(依据行走图文件)
# 当有待机图片时,在角色等待时会播放待机图片动画
# 当没有待机图片时,在角色等待时不会播放任何动画,也不会提示。
#
#------------------------------------------------------------------------------
#使用说明:
# 必须与行走图文件配套,注意校准
# 行走图文件名:name@D#DD%DD.png 其中%DD可选
# 待机图文件名:name_w@D#DD%DD.png 其中%DD可选
#
# 以上name必须相同,D或DD的值可以不同。
#
# 待机图文件放在characters文件夹下。
#
# ★停下多久播放待机动画,在代码开头设置
#
# 配套插件须放在主插件《多帧4_8方图,4_8向行走》之下
#------------------------------------------------------------------------------
# by rmav (有任何问题请毫无顾忌滴提出)
#
# v1.0
#==============================================================================
$imported ||= {}
$imported[:rmav_walk_wait] = true
module Rmav
#--------待机选项---------#
Opt_wait={
#停下多久播放待机动画,默认为90约1.5秒左右
stop_count: 90, #推荐取值范围12至120
play_speed: 0.5 #播放速度,越大越快
}
end
class Game_CharacterBase
alias_method :characterBase_init_org_rmav_2, :initialize
def initialize
characterBase_init_org_rmav_2
init_waiting
end
def init_waiting(wait_enable=false)
@wait_enable=wait_enable
@waiting_name=nil
@character_name_org=nil
@got_waiting_name=nil
@wait_anime=false
end
def waiting?
@wait_enable&&stopping? &&!@character_name.empty? \
&& @stop_count>Rmav::Opt_wait[:stop_count]
end
def waiting_play?
waiting? && @got_waiting_name
end
#--------------------------------------------------------------------------
# ● 更新等待、行走
#--------------------------------------------------------------------------
def update_waiting_walking
if waiting?
if @got_waiting_name
@character_name=@waiting_name
elsif @got_waiting_name==nil
@got_waiting_name=false
@character_name=~%r{(.+)\@\d{1,2}\#\d{1,2}(\%\d{1,2})?}
if $1
@waiting_name=$1+"_w"
waiting_name_esc = Regexp.escape @waiting_name.downcase
files=Rmav.loadFolder("Graphics/Characters/")
files.each{|f|
found = f[/\A#{waiting_name_esc}@\d{1,2}#\d{1,2}.*/]
if found
@waiting_name.replace f
@got_waiting_name=true
break
end
}
@character_name_org=@character_name
@character_name=@waiting_name if @got_waiting_name
end
end
else
@character_name=@character_name_org if @character_name_org
end
end
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
alias_method :update_org_rmav_2,:update
def update
update_waiting_walking
update_org_rmav_2
end
#--------------------------------------------------------------------------
# ● 更新步行/踏步动画
#--------------------------------------------------------------------------
alias_method :update_animation_org_rmav_2,:update_animation
def update_animation
if waiting_play?
@wait_anime=true
else
@wait_anime=false
end
update_animation_org_rmav_2
end
#--------------------------------------------------------------------------
# ● 更新动画计数
#--------------------------------------------------------------------------
alias_method :update_anime_count_org_rmav_2,:update_anime_count
def update_anime_count
if @wait_anime
@anime_count += Rmav::Opt_wait[:play_speed]
return
end
update_anime_count_org_rmav_2
end
#--------------------------------------------------------------------------
# ● 更新动画图案
#--------------------------------------------------------------------------
alias_method :update_anime_pattern_org_rmav_2,:update_anime_pattern
def update_anime_pattern
if @wait_anime
@pattern = (@pattern + 1) % (@fmt_sign?@fmt_sign[1]:4)
return
end
update_anime_pattern_org_rmav_2
end
end
class Game_Player
alias_method :initialize_org_rmav_2,:initialize
def initialize
initialize_org_rmav_2
@wait_enable=true
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
alias_method :refresh_org_rmav_2,:refresh
def refresh
init_waiting(true)
refresh_org_rmav_2
end
end
class Game_Follower
alias_method :follower_initialize_org_rmav_2, :initialize
def initialize(member_index, preceding_character)
follower_initialize_org_rmav_2(member_index, preceding_character)
@wait_enable=true
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
alias_method :refresh_org_rmav_2,:refresh
def refresh
init_waiting(true)
refresh_org_rmav_2
end
end