Event Sensor Range
By Moghunter
Описание:
Данный скрипт позволяет запускать ивенты без контакта с ними, например стоит бочка вы стоите в пяти клетках от нее, но как только вы встанете в трех клетках из бочки вылезет кот. Многие могут воскликнуть что это можно сделать и на ивентах, да можно, но вы потратите ни один ивент как здесь, а два-три.
Использование:
<sensorX> X - кол-во клеток вокруг ивента до персонажа.
Создаем новую страницу с определенным содержимым и делаем как показано ниже:
Демка:
Event Sensor Range 1.0
Скрипт:
Для RPG Maker XP:
Код:
#==============================================================================
# MOG XP - Event Sensor Range
#==============================================================================
# Автор: Moghunter
# http://www.atelier-rgss.com/
#
# ■ Переключение на определённую (Локальный свитч D) страницу ивента, в
# зависимости от расстояния до игрока. Этот скрипт нужен для создания
# ивентов с двумя разными стилями поведения. Один - когда игрок далеко,
# другой - когда он близко. Полезен при создании головоломок или ивентов
# врагов.
# ---------------------------------------------------------------------------
# Чтобы определить расстояние срабатывания сенсора, допишите к имени ивента:
#
# <sensorX>
#
# X - Расстояние, на котором сработает сенсор.
#
# Например - <sensor5>
# ---------------------------------------------------------------------------
# ПРИМЕЧАНИЕ - Не забудьте создать новую страницу и указать на ней условие
# с локальным свитчем, чтобы сенсор сработал как надо.
#==============================================================================
module MOG
# Укажите свитч, который будет использоваться для сенсора. ( A, B, C, D )
SENSOR_KEY = "D"
end
#==============================================================================
# Game_Event
#==============================================================================
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# ● initialize
#--------------------------------------------------------------------------
alias mog_sensor_range initialize
def initialize(map_id, event)
if event.name =~ /<sensor(\d+)>/i
@sensor_range = $1.to_i
else
@sensor_range = 0
end
@key_act = false
@key_act_old = @key_act
mog_sensor_range(map_id, event)
end
#--------------------------------------------------------------------------
# ● update
#--------------------------------------------------------------------------
alias mog_sensor_update update
def update
mog_sensor_update
if @sensor_range > 0
sx = $game_player.x - self.x
sy = $game_player.y - self.y
range = (sx.abs + sy.abs)
sensor = (range >= @sensor_range)
if sensor
@key_act = false
else
@key_act = true
end
end
page_check if @key_act_old != @key_act
end
#--------------------------------------------------------------------------
# ● page_check
#--------------------------------------------------------------------------
def page_check
@key_act_old = @key_act
key = [@map_id, @event.id, MOG::SENSOR_KEY]
$game_self_switches[key] = @key_act
refresh
end
end
$mog_rgssvx_event_sensor_range = true
Для RPG Maker VX:
Код:
#==============================================================================
# MOG VX - Event Sensor Range
#==============================================================================
# Автор: Moghunter
# http://www.atelier-rgss.com/
#
# ■ Переключение на определённую (Локальный свитч D) страницу ивента, в
# зависимости от расстояния до игрока. Этот скрипт нужен для создания
# ивентов с двумя разными стилями поведения. Один - когда игрок далеко,
# другой - когда он близко. Полезен при создании головоломок или ивентов
# врагов.
# ---------------------------------------------------------------------------
# Чтобы определить расстояние срабатывания сенсора, допишите к имени ивента:
#
# <sensorX>
#
# X - Расстояние, на котором сработает сенсор.
#
# Например - <sensor5>
# ---------------------------------------------------------------------------
# ПРИМЕЧАНИЕ - Не забудьте создать новую страницу и указать на ней условие
# с локальным свитчем, чтобы сенсор сработал как надо.
#==============================================================================
module MOG
# Укажите свитч, который будет использоваться для сенсора. ( A, B, C, D )
SENSOR_KEY = "D"
end
#==============================================================================
# Game_Event
#==============================================================================
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# ● initialize
#--------------------------------------------------------------------------
alias mog_sensor_range initialize
def initialize(map_id, event)
if event.name =~ /<sensor(\d+)>/i
@sensor_range = $1.to_i
else
@sensor_range = 0
end
@key_act = false
@key_act_old = @key_act
mog_sensor_range(map_id, event)
end
#--------------------------------------------------------------------------
# ● update
#--------------------------------------------------------------------------
alias mog_sensor_update update
def update
mog_sensor_update
if @sensor_range > 0
sx = distance_x_from_player
sy = distance_y_from_player
range = (sx.abs + sy.abs)
sensor = (range >= @sensor_range)
if sensor
@key_act = false
else
@key_act = true
end
end
page_check if @key_act_old != @key_act
end
#--------------------------------------------------------------------------
# ● page_check
#--------------------------------------------------------------------------
def page_check
@key_act_old = @key_act
key = [@map_id, @event.id, MOG::SENSOR_KEY]
$game_self_switches[key] = @key_act
refresh
end
end
$mog_rgssvx_event_sensor_range = true
Социальные закладки