设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3056|回复: 3
打印 上一主题 下一主题

[已经解决] 如何让事件在一定范围内接近玩家。

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
135 小时
注册时间
2011-8-1
帖子
188
跳转到指定楼层
1
发表于 2013-7-16 12:18:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
{:2_270:} 我是想做一个门卫一样的人物,然后在玩家靠近门的时候跑过去和他说话,可是一设定就疯狂地跑向玩家了。
然后我在门口设了个事件,不可穿透玩家接触可穿透的,但是玩家可穿透事件也可穿透了。。。
然后门卫就像疯子一样一直跟着我,没办法了,求各位大大解决办法
就是在一定范围内接近玩家的。事件怎么设定

세상은 너무 미쳐있다

Lv1.梦旅人

梦石
0
星屑
143
在线时间
347 小时
注册时间
2010-7-7
帖子
128
2
发表于 2013-7-16 12:36:58 | 只看该作者
RUBY 代码复制
  1. #==============================================================================
  2. # +++ MOG - Event Sensor Range (v1.0) +++
  3. #==============================================================================
  4. # By Moghunter
  5. # [url]http://www.atelier-rgss.com[/url]
  6. #==============================================================================
  7. # Permite que o evento tenha dois comportamentos, de curta distância e de
  8. # longa distância.
  9. #===============================================================================
  10. # - Utilização
  11. # Crie uma página com a condição de ativação Self Switch D, está página será
  12. # usada quando o player estiver perto do evento.
  13. # Defina a area do sensor do evento colocando este nome no evento.
  14. #
  15. # <SensorX>
  16. #
  17. # X = Area do Sensor
  18. #
  19. #===============================================================================
  20. module MOG_EVENT_SENSOR
  21.   #Definição da letra da Self Switch que ativará a página de curta distância.
  22.   SENSOR_SELF_SWITCH = "D"
  23. end
  24.  
  25. #===============================================================================
  26. # ■ GAME EVENT
  27. #===============================================================================
  28. class Game_Event < Game_Character
  29.  
  30.   attr_reader   :sensor_range
  31.  
  32.   #--------------------------------------------------------------------------
  33.   # ● Initialize
  34.   #--------------------------------------------------------------------------            
  35.   alias mog_event_sensor_initialize initialize
  36.   def initialize(map_id, event)
  37.       mog_event_sensor_initialize(map_id, event)
  38.       setup_event_sensor
  39.   end
  40.  
  41.   #--------------------------------------------------------------------------
  42.   # ● Setup Event Sensor
  43.   #--------------------------------------------------------------------------         
  44.   def setup_event_sensor
  45.       @sensor_range =  @event.name =~ /<Sensor(\d+)>/ ? $1.to_i : 0
  46.   end  
  47.  
  48.   #--------------------------------------------------------------------------
  49.   # ● Update
  50.   #--------------------------------------------------------------------------            
  51.   alias mog_event_sensor_update update
  52.   def update
  53.       mog_event_sensor_update
  54.       update_event_sensor
  55.   end  
  56.  
  57.   #--------------------------------------------------------------------------
  58.   # ● Update Sensor
  59.   #--------------------------------------------------------------------------        
  60.   def update_event_sensor
  61.       return if @sensor_range == 0
  62.       distance = ($game_player.x - self.x).abs + ($game_player.y - self.y).abs
  63.       enable   = (distance <= @sensor_range)
  64.       key = [$game_map.map_id, self.id, MOG_EVENT_SENSOR::SENSOR_SELF_SWITCH]
  65.       last_enable = $game_self_switches[key]
  66.       execute_sensor_effect(enable,key) if enable != last_enable
  67.     end
  68.  
  69.   #--------------------------------------------------------------------------
  70.   # ● Execute_Sensor Effect
  71.   #--------------------------------------------------------------------------            
  72.   def execute_sensor_effect(enable,key)      
  73.       @pattern = 0
  74.       @pattern_count = 0               
  75.       $game_self_switches[key] = enable
  76.       self.refresh
  77.   end
  78.  
  79. end
  80.  
  81. $mog_rgss3_event_sensor = true

事件范围的脚本,使用方法:
首先,更改事件名称为XXX<Sensor3>,也就是事件的名称加上<Sensor3>,其中3可以替换成其他数字,也就是事件触发的范围;
第一页可以设定为事件固定或随机移动。

然后是第二页,点选独立开关D开启时,也就是在玩家的3格范围内,事件的动作,这时可以设定为接近玩家移动。

这样的效果就是,该事件在玩家3格范围内时,会接近玩家,并触发战斗。

点评

多谢了 好脚本  发表于 2013-7-19 17:57

评分

参与人数 1星屑 +100 梦石 +1 收起 理由
Mic_洛洛 + 100 + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
46 小时
注册时间
2013-7-13
帖子
62
3
发表于 2013-7-16 13:11:20 | 只看该作者
学到了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
170
在线时间
227 小时
注册时间
2011-5-19
帖子
736
4
发表于 2013-7-18 10:43:02 | 只看该作者
多谢1楼的脚本,收下了。
休息中……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-5 18:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表