| 
 
| 赞 | 2 |  
| VIP | 0 |  
| 好人卡 | 20 |  
| 积分 | 5 |  
| 经验 | 26304 |  
| 最后登录 | 2024-2-11 |  
| 在线时间 | 487 小时 |  
 Lv2.观梦者 
	梦石0 星屑473 在线时间487 小时注册时间2011-10-12帖子407 | 
| 这是一个靠近一定距离触发的脚本,使用方法是在事件的名称中加入  <SensorX>  X值=距离,1就是1格距离。 要注意:1格以1距离来计算,不论拐弯还是斜对角都是,事件本身的那一格不计算在距离内。
 然后第二页事件以D作为独立开关开启条件,用并行处理或者自动执行就OK啦。
 复制代码#==============================================================================
# +++ MOG - Event Sensor Range (v1.0) +++
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com
#==============================================================================
# Permite que o evento tenha dois comportamentos, de curta distância e de 
# longa distância.
#===============================================================================
# - Utilização
# Crie uma página com a condição de ativação Self Switch D, está página será 
# usada quando o player estiver perto do evento.
# Defina a area do sensor do evento colocando este nome no evento.
#
# <SensorX> 
#
# X = Area do Sensor
#
#===============================================================================
module MOG_EVENT_SENSOR
  #Definição da letra da Self Switch que ativará a página de curta distância.
  SENSOR_SELF_SWITCH = "D"
end
#===============================================================================
# ■ GAME EVENT
#===============================================================================
class Game_Event < Game_Character
  
  attr_reader   :sensor_range
  
  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------            
  alias mog_event_sensor_initialize initialize
  def initialize(map_id, event)
      mog_event_sensor_initialize(map_id, event)
      setup_event_sensor
  end
  
  #--------------------------------------------------------------------------
  # ● Setup Event Sensor
  #--------------------------------------------------------------------------          
  def setup_event_sensor
      @sensor_range =  @event.name =~ /<Sensor(\d+)>/ ? $1.to_i : 0
  end  
  
  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------            
  alias mog_event_sensor_update update 
  def update
      mog_event_sensor_update
      update_event_sensor 
  end  
  
  #--------------------------------------------------------------------------
  # ● Update Sensor
  #--------------------------------------------------------------------------        
  def update_event_sensor 
      return if @sensor_range == 0
      distance = ($game_player.x - self.x).abs + ($game_player.y - self.y).abs
      enable   = (distance <= @sensor_range)
      key = [$game_map.map_id, self.id, MOG_EVENT_SENSOR::SENSOR_SELF_SWITCH]
      last_enable = $game_self_switches[key]
      execute_sensor_effect(enable,key) if enable != last_enable
    end
  #--------------------------------------------------------------------------
  # ● Execute_Sensor Effect
  #--------------------------------------------------------------------------            
  def execute_sensor_effect(enable,key)      
      @pattern = 0
      @pattern_count = 0               
      $game_self_switches[key] = enable
      self.refresh
  end
    
end
$mog_rgss3_event_sensor = true
 | 
 评分
查看全部评分
 |