#------------------------------------------------------------------------------#
# Парковка транспорта от Galv
#------------------------------------------------------------------------------#
# Для: RPGMAKER VX ACE
# Версия 1.5ru
# Перевод - strelokhalfer
# Для http://rpg-maker.info
#------------------------------------------------------------------------------#
# 2013-06-20 - Версия 1.5ru - Перевод скрипта на Русский
# 2013-01-22 - Версия 1.5 - Добавлена поддержка "Тег поверхности"
# (в настройках тайлсета)
# 2013-01-17 - Версия 1.4 - Добалено сообщение при невозможности подняться на
# - борт и оптимизирован код.
# 2012-10-24 - Версия 1.3 - Изменены имена алиасов для совместимости.
# 2012-10-18 - Версия 1.2 - Добавлена возможность установить разные регионы
# - для лодок и несколько регионов для остального.
# 2012-09-26 - Версия 1.1 - Добавлен посадочный регион для Дирижабля
# 2012-09-26 - Версия 1.0 - Релиз
#------------------------------------------------------------------------------#
# Добовляет регионам возможность запретить\разрешить
# посадку на\из транспорт(а).
#
# Инструкции:
# Просто укажите номер нужного региона в настройках скрипта.
# После расположите регион в нужном для вас месте.
# Если по каким-то причинам вам нужны\не нравиться регионы
# можно настроить на номер тега поверхности(В БазеДанных, раздел тайлсеты)
#
#------------------------------------------------------------------------------#
($imported ||= {})["Galv_Vehicle_On_Off"] = true
module Vehicle_On_Off
#------------------------------------------------------------------------------#
# НАСТРОЙКИ СКРИПТА
#------------------------------------------------------------------------------#
BOAT_REGIONS = [0,1] # Регион, с которого можно погрузиться на или с лодку(и)
BOAT_TERRAIN = [0,1] # Тег, с которого можно погрузиться на или с лодку(и)
SHIP_REGIONS = [1] # Регион, с которого можно погрузиться на или с корабль(я)
SHIP_TERRAIN = [1] # Тег, с которого можно погрузиться на или с корабль(я)
AIRSHIP_REGIONS = [2] # Регион, на который возможна посадка дирижабля.
AIRSHIP_TERRAIN = [2] # Тег, на который возможна посадка дирижабля.
# ЗАМЕТКИ:
# Если регион не расположен, то он равен 0.
# Тег поверхности настраиватся в Базе Данных, раздел тайлсеты.
# Можно добавить столько регионов, сколько захотите:
# SHIP_REGIONS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
# SHIP_TERRAIN = [5,6,3]
B_MSG = "Невозможно отчалить отсюда!" # Если не возможно подняться на борт.
# Если не нужно установите B_MSG = ""
#------------------------------------------------------------------------------#
# КОНЕЦ НАСТРОЕЧНОГО МОДУЛЯ
#------------------------------------------------------------------------------#
end
class Game_Vehicle < Game_Character
alias galv_vonoff_land_ok? land_ok?
def land_ok?(x, y, d)
return false unless $game_map.vland?(x,y,d,@type)
galv_vonoff_land_ok?(x, y, d)
end
end # Game_Vehicle < Game_Character
class Game_Player < Game_Character
alias galv_vonoff_get_on_vehicle get_on_vehicle
def get_on_vehicle
front_x = $game_map.round_x_with_direction(@x, @direction)
front_y = $game_map.round_y_with_direction(@y, @direction)
region = $game_map.region_id($game_player.x, $game_player.y)
terrain = $game_map.terrain_tag($game_player.x, $game_player.y)
board = false
if $game_map.boat.pos?(front_x, front_y)
board = true if Vehicle_On_Off::BOAT_REGIONS.include?(region) ||
Vehicle_On_Off::BOAT_TERRAIN.include?(terrain)
elsif $game_map.ship.pos?(front_x, front_y)
board = true if Vehicle_On_Off::SHIP_REGIONS.include?(region) ||
Vehicle_On_Off::SHIP_TERRAIN.include?(terrain)
elsif $game_map.airship.pos?(@x, @y)
board = true
else
board = nil
end
return vehicle_msg if board == false
galv_vonoff_get_on_vehicle
end
def vehicle_msg
$game_message.add(Vehicle_On_Off::B_MSG) if Vehicle_On_Off::B_MSG != ""
end
end # Game_Player < Game_Character
class Game_Map
def vland?(x,y,d,type)
check_dir(x, y, d)
case type
when :boat
regions = Vehicle_On_Off::BOAT_REGIONS
terrain = Vehicle_On_Off::BOAT_TERRAIN
when :ship
regions = Vehicle_On_Off::SHIP_REGIONS
terrain = Vehicle_On_Off::SHIP_TERRAIN
when :airship
regions = Vehicle_On_Off::AIRSHIP_REGIONS
terrain = Vehicle_On_Off::AIRSHIP_TERRAIN
@front_x = $game_player.x; @front_y = $game_player.y
end
regions.include?(region_id(@front_x, @front_y)) ||
terrain.include?(terrain_tag(@front_x, @front_y))
end
def check_dir(x, y, d)
@front_x = round_x_with_direction(x, d)
@front_y = round_y_with_direction(y, d)
end
end # Game_Map