#==============================================================================
# +++ 足音 v1.1 +++
# -- 本脚本来自 [url]https://rpg.blue/[/url] 使用或转载请保留以上信息。
#==============================================================================
# v1.1 删掉一些不必要的语句
# v1.0 完成基础脚本
#==============================================================================
#
# 设定玩家在不同地形标志移动时不同的脚步声
#
# 如果不想用地形标志来判断,想用区域ID的话就把脚本倒数第9行?
# $game_player.terrain_tag 改成 $game_player.region_id
#
# 脚步声的素材名称命名是有一定规则的。例如Step0_0
# "Step"+地形标志ID+"_"+随机编号(0-3)
# 脚步声素材每组4枚。例如地形标志为2的脚步声
# 就命名为[Step2_0.ogg;Step2_1.ogg;Step2_2.ogg;Step2_3.ogg]
# 也可以设置一些区域是没有脚步声的。
# 效果的开关可以通过控制设置的开关进行控制
#
#==============================================================================
$VIPArcherScript ||= {};$VIPArcherScript[:footsound] = 20140909
#-------------------------------------------------------------------------------
module VIPArcher end
#==============================================================================
# ★ 设定部分 ★
#==============================================================================
module VIPArcher::FOOTSOUND
SW = 1 #关闭脚步声开关编号 打开此开关不播放脚步声
NOSOUND = [0,1] #没有脚步声的地形标志 / 区域ID
SOUNDURL = "Audio/SE/Footsound/" #脚本声素材路径
EVENT_NOTE = "<play_footsound>" #事件页中备注该字符串的事件移动时播放脚步声
DISTANCE = 15 #距离玩家多远不播放脚步声
VOL = 50 #音量
PITCH = 100 #音调
end
#==============================================================================
# ☆ 设定结束 ☆
#==============================================================================
class Game_CharacterBase
include VIPArcher::FOOTSOUND
#--------------------------------------------------------------------------
# ● 角色移动一步时的处理
#--------------------------------------------------------------------------
alias vip_20140909_increase_steps increase_steps
def increase_steps
vip_20140909_increase_steps
foot_sound_play
end
#--------------------------------------------------------------------------
# ● 播放脚步声 #要用区域ID就改成 tag = region_id
#--------------------------------------------------------------------------
def foot_sound_play
@foot_sound_val ||= VOL
tag = terrain_tag
return if NOSOUND.include?(tag)
return unless play_footsound?
Audio.se_play("#{SOUNDURL}Step#{tag}_#{rand(4)}",
@foot_sound_val, PITCH) if @step_off
@step_off ^= true #这里只是为了每2步才播放一次脚本声
end
#--------------------------------------------------------------------------
# ● 是否播放脚步声
#--------------------------------------------------------------------------
def play_footsound?
return false if $game_switches[SW]
@list.each do |command|
if command.code == 108 || command.code == 408
@foot_sound_val = VOL - VOL * foot_sound_distance
return true if command.parameters.include?(EVENT_NOTE)
end
end if is_a?(Game_Event)
return true
end
#--------------------------------------------------------------------------
# ● 与玩家的距离控制脚步音量
#--------------------------------------------------------------------------
def foot_sound_distance
distance = ($game_player.x - @x).abs + ($game_player.y - @y).abs
[[(distance - 1) / DISTANCE.to_f, 0].max, 1.0].min
end
end