#这个脚本的功能是当主角行走到迷宫中的某个隐藏事件(不限于物品、暗道等)一定距离内时,发出语音提示。
#要提示的迷宫隐藏事件,在事件的名称前缀写作<Hid=n>,n不为零即可。
#ME文件夹下需要有一个名为remind的音乐文件,当然也可以自行指定。
#作者:梅林
#可以不标注作者随意拿去使用,需要注意的是可能与功能类似的脚本产生冲突。
#有问题或者意见、以及功能修改需求时,可以找我。
class Game_Event < Game_Character
#设定提示距离(x+y),默认为20
REMIND_DISTANCE = 20
#设定调用的公共事件,默认20
REMIND_EVENT = 20
attr_accessor :style
attr_accessor :action_reminded
alias merlin20171109_initialize initialize
def initialize(map_id, event)
@style = 0
@action_reminded = 0
merlin20171109_initialize(map_id, event)
end
#取得事件的名字
def get_name
return @event.name
end
#当需要提示时,播放语音,默认为remind,并执行公共事件
def hidden_remind
if @style != 0
Audio.me_play("Audio/ME/remind", 100, 100)
$game_temp.reserve_common_event(REMIND_EVENT)
end
end
#判定某物体是否已被提示过,如已被提示过则不继续
def already_reminded?
return @action_reminded == 1
end
#若玩家距离指定事件距离以内则触发提示
def within_distance?
sx = distance_x_from($game_player.x).abs
sy = distance_y_from($game_player.y).abs
sx + sy < REMIND_DISTANCE
end
#事件的更新
alias merlin20171109_update update
def update
if within_distance?
if already_reminded?
else
hidden_remind
@action_reminded = 1
end
else
end
merlin20171109_update
end
end
class Game_Map
alias merlin20171109_distance_setup_events setup_events
def setup_events
merlin20171109_distance_setup_events
for i in @map.events.keys
@events[i].style = $1.to_i if @events[i].get_name =~ /<Hid\s*=\s*(\d+)\s*>/
end
end
end