Project1

标题: 迷宫隐藏物品提示 [打印本页]

作者: 魔法☆梅莉    时间: 2017-11-9 01:28
标题: 迷宫隐藏物品提示
本帖最后由 魔法☆梅莉 于 2017-11-9 19:23 编辑

RUBY 代码复制
  1. #这个脚本的功能是当主角行走到迷宫中的某个隐藏事件(不限于物品、暗道等)一定距离内时,发出语音提示。
  2. #要提示的迷宫隐藏事件,在事件的名称前缀写作<Hid=n>,n不为零即可。
  3. #ME文件夹下需要有一个名为remind的音乐文件,当然也可以自行指定。
  4. #作者:梅林
  5. #可以不标注作者随意拿去使用,需要注意的是可能与功能类似的脚本产生冲突。
  6. #有问题或者意见、以及功能修改需求时,可以找我。
  7.  
  8. class Game_Event < Game_Character
  9. #设定提示距离(x+y),默认为20
  10. REMIND_DISTANCE = 20
  11. #设定调用的公共事件,默认20
  12. REMIND_EVENT = 20
  13.  
  14. attr_accessor :style
  15. attr_accessor :action_reminded
  16.  
  17.     alias merlin20171109_initialize initialize
  18.     def initialize(map_id, event)
  19.      @style = 0
  20.      @action_reminded = 0
  21.      merlin20171109_initialize(map_id, event)
  22.     end
  23.     #取得事件的名字
  24.     def get_name
  25.       return @event.name
  26.     end
  27.    #当需要提示时,播放语音,默认为remind,并执行公共事件
  28.     def hidden_remind
  29.       if @style != 0
  30.         Audio.me_play("Audio/ME/remind", 100, 100)
  31.         $game_temp.reserve_common_event(REMIND_EVENT)
  32.       end
  33.     end
  34.    #判定某物体是否已被提示过,如已被提示过则不继续
  35.     def already_reminded?
  36.       return @action_reminded == 1  
  37.     end
  38.  
  39.    #若玩家距离指定事件距离以内则触发提示
  40.     def within_distance?
  41.      sx = distance_x_from($game_player.x).abs
  42.      sy = distance_y_from($game_player.y).abs
  43.      sx + sy < REMIND_DISTANCE
  44.     end
  45.  
  46.     #事件的更新
  47.     alias merlin20171109_update update
  48.     def update
  49.      if within_distance?
  50.       if already_reminded?
  51.         else
  52.           hidden_remind
  53.           @action_reminded = 1
  54.        end
  55.       else  
  56.       end
  57.       merlin20171109_update
  58.     end
  59.  
  60.   end
  61.  
  62. class Game_Map
  63.   alias merlin20171109_distance_setup_events setup_events
  64.   def setup_events
  65.     merlin20171109_distance_setup_events
  66.     for i in @map.events.keys
  67.       @events[i].style = $1.to_i if @events[i].get_name =~ /<Hid\s*=\s*(\d+)\s*>/
  68.     end
  69.   end
  70. end



作者: 骷髅岛遗老    时间: 2017-11-9 18:22
可不可以……改个一定距离内直接触发事件或者打开开关,不用提示音的?
作者: Lemax    时间: 2017-11-9 18:59
太好了这个,感谢分享。
作者: 君野飞火    时间: 2023-7-17 21:45
显示63报错
作者: 君野飞火    时间: 2023-7-17 21:53
显示63报错




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1