ГлавнаяФорумRPG MakerСкрипты/ПлагиныRPG Maker VX ACEВопросы по скриптам ACE[ACE] Проблема со скриптом SheolShade Minimap
Войти на сайт
×
ТЕМА: [ACE] Проблема со скриптом SheolShade Minimap
[ACE] Проблема со скриптом SheolShade Minimap 9 года 8 мес. назад #80106
|
Здравствуйте! Нужна помощь, возникла проблема с этим скриптом. После активирования миникарты через переключатель, привязанный к ключевому предмету в инвентаре, миникарта работает нормально, но не показывает непроходимые тайлы типа стен и деревьев. Может кто-нибудь объяснить, в чём косяк?
Запуск скрипта через переключатель, активирующийся параллельно, не решил проблему. Скрипт: #==============================================================================#
# **SheolShade Minimap** #
#------------------------------------------------------------------------------#
# ** Автор: SheolShade (Перевёл MrWindson) #
# ** Версия: 1.5b #
# ** Дата: 24/12/2012 #
#------------------------------------------------------------------------------#
# - Описание: #
# Этот скрипт добавляет в игру круглую миникарту. #
# - Использование: #
# Вставьте этот скрипт в секцию "Пользовательские". #
#==============================================================================#
# - История #
# 24/12/2012 - Начало и завершение версии 1.0b #
# 04/03/2013 - Версия 1.5b Исправление багов, добавление новых функций. #
# * Исправлена ошибка, по которой неправильно отображались #
# некоторые тайлы. #
# * Исправлена ошибка, по которой некоторые типы травы #
# отображались как блок. #
# * Исправлена ошибка, по которой непроходимые блоки, #
# помещёные на траву, отображались как проходимые. #
# * Улучшен код. #
# + Добавлена функция отображения транспорта. #
# + Добавлена функция отображения товарищей по отряду. #
# + Добавлена функция использования ID регионов для скрытия #
# проходимых областей. #
#------------------------------------------------------------------------------#
module SheolShade
module MiniMap
#--------------------------------------------------------------------------#
# НАСТРОЙКИ #
#--------------------------------------------------------------------------#
#Размер тайлов на миникарте; рекомендовано не использовать меньше 3.
TileSize = 8
#--------------------------------------------------------------------------#
#Настройка централизации миникарты, зависит от размера тайла.
MapOffset = -4
#--------------------------------------------------------------------------#
#Цвет игрока на миникарте.
PlayerColor = Color.new(255,0,0)
#--------------------------------------------------------------------------#
#Отображение напарников.
ShowFollowers = true
#--------------------------------------------------------------------------#
#Цвет напарников на миникарте.
FollowerColor = Color.new(0,128,255)
#--------------------------------------------------------------------------#
#Отображение средств передвижения.
ShowVehicles = true
#--------------------------------------------------------------------------#
#Цвет лодки.
BoatColor = Color.new(255,0,255)
#--------------------------------------------------------------------------#
#Цвет корабля.
ShipColor = Color.new(255,0,255)
#--------------------------------------------------------------------------#
#Цвет воздушного шара.
AirshipColor = Color.new(255,0,255)
#--------------------------------------------------------------------------#
#Настройка цвета объектов на миникарте.
#Объекты - это NPC, двери, телепорты, сундуки или что угодно, что придёт
#Вам на ум.
#Чтобы добавить объект, используйте следующий текст, заключённый в {}:
# "tag" => Color.new(R,G,B,A)
#где "tag" - это комментарий, который будет добавлен к событию,
#отображаемому на карте. Разделяйте объекты запятыми.
ObjectColor = {"npc" => Color.new(0,255,0), # NPC
"teleport" => Color.new(150,50,50), # телепорт
"chest" => Color.new(100,100,100), # сундук
"switch" => Color.new(100,149,237)} # переключатель
#--------------------------------------------------------------------------#
#Цвет границы значков объектов и игрока на миникарте.
BorderColor = Color.new(0,0,0)
#--------------------------------------------------------------------------#
#Прозрачность отображаемых на карте объектов.
ObjectLayerOpacity = 200 #стандартное значение = 255
#--------------------------------------------------------------------------#
#Расположение карты на экране.
#1 = левый верхний угол
#2 = правый верхний угол
#3 = левый нижний угол
#4 = правый нижний угол
MiniMapCorner = 2
#--------------------------------------------------------------------------#
#Параметр определяет, будет ли указанный регион "заблокированным" на карте.
#Полезно для скрытия "секретных комнат".
UseHideRegion = true
#--------------------------------------------------------------------------#
#ID скрываемого региона (если выше указано true).
HideRegionId = 1
#--------------------------------------------------------------------------#
#Цвет непроходимых областей на миникарте.
MapColor = Color.new(200,150,150)
#--------------------------------------------------------------------------#
#Цвет границы непроходимой области на карте.
MapBorderColor = Color.new(50,50,50)
#--------------------------------------------------------------------------#
#Имя файла с изобр. границы миникарты, лежащего в папке Graphics/System.
BorderName = "Border"
#--------------------------------------------------------------------------#
#Использование фоновой тектуры миникарты.
UseBGTexture = true
#--------------------------------------------------------------------------#
#Имя файла с изображением фоновой текстуры миникарты, также лежащего
#в папке Graphics/System.
#Внимание: цвета изображения должны быть инвертированы.
BackTextureName = "OldPaper"
#--------------------------------------------------------------------------#
#Фоновый цвет, если текстура не используется.
BGColor = Color.new( 100, 100, 100)
#--------------------------------------------------------------------------#
#Заливка цветом наружной части карты.
ClearOutsideArea = false
#--------------------------------------------------------------------------#
#Цвет, используемый для заливки внешней части карты.
ClearOutsideColor = Color.new(0,0,0)
#--------------------------------------------------------------------------#
#Функция отрисовки границы миникарты.
OutlineMapArea = true
#--------------------------------------------------------------------------#
#Цвет отрисованной границы карты.
OutlineMapColor = Color.new(0,0,0)
#--------------------------------------------------------------------------#
#ID переключателя, используемого для включения/отключения карты.
EnableSwitchId = 7
#--------------------------------------------------------------------------#
# КОНЕЦ НАСТРОЕК. #
#--------------------------------------------------------------------------#
MiniMapCoords = {1 => [0,0,112,112],
2 => [Graphics.width - 112,0,112,112],
3 => [0,Graphics.height - 112,112,112],
4 => [Graphics.width - 112,Graphics.height - 112,112,112]}
Switch = 2
Show_Key = :Z
end
end
#==============================================================================#
# ** Класс цвета
#==============================================================================#
class Color
#-----------------------------------------------------------------------------
# * Инвертирует значения цветов
#-----------------------------------------------------------------------------
def invert
r = 255 - self.red
g = 255 - self.green
b = 255 - self.blue
a = self.alpha
self.set(r, g, b, a)
end
end
#==============================================================================#
# ** Класс миникарты
#==============================================================================#
class MiniMap
include SheolShade::MiniMap
def initialize(viewport)
@viewport = viewport
@playercolor = PlayerColor.dup.invert
@followercolor = FollowerColor.dup.invert
@boatcolor = BoatColor.dup.invert
@shipcolor = ShipColor.dup.invert
@airshipcolor = AirshipColor.dup.invert
@objectcolor = ObjectColor.dup
@objectcolor.each_pair do |key, value|
@objectcolor[key] = value.dup.invert
end
@bordercolor = BorderColor.dup.invert
@mapcolor = MapColor.dup.invert
@mapbordercolor = MapBorderColor.dup.invert
@clearoutsidecolor = ClearOutsideColor.dup.invert
@outlinemapcolor = OutlineMapColor.dup.invert
refresh
end
def refresh
@map_id = $game_map.map_id
@backmask = Sprite.new(@viewport)
@backmask.bitmap = Cache::system("Back_96")
@backmask.x = @backmask.y = 8
@backtile = Sprite.new(@viewport)
@backtile.blend_type = 2
@backtile.z = 1
@backtile.x = @backtile.y = -100
@map = Sprite.new(@viewport)
@map.z = 2
@map.blend_type = 2
@object_layer = Sprite.new(@viewport)
@object_layer.z = 3
@object_layer.blend_type = 2
@object_layer.bitmap = Bitmap.new($game_map.width*TileSize + 112,
$game_map.height*TileSize + 112)
@object_layer.opacity = ObjectLayerOpacity
@border = Sprite.new(@viewport)
@border.bitmap = Cache::system(BorderName)
@border.z = 4
@border.opacity = 255
@mask = Cache::system("Mask")
draw_back
draw_map
end
def visible?
$game_switches[EnableSwitchId]
end
def draw_map
front = make_map_bitmap(@mapcolor)
border = make_map_bitmap(@mapbordercolor)
result = Bitmap.new($game_map.width*TileSize + 112,
$game_map.height*TileSize+ 112)
result.blt(-1, 0, border, border.rect)
result.blt(1, 0, border, border.rect)
result.blt(0, -1, border, border.rect)
result.blt(0, 1, border, border.rect)
result.blt(0, 0, front, front.rect)
@mapbitmap = result
end
def draw_back
bitmap = Bitmap.new($game_map.width*TileSize+112,
$game_map.height*TileSize+112)
if UseBGTexture
bit = Cache::system(BackTextureName)
bitmap.stretch_blt(bitmap.rect, bit, bit.rect)
else
bitmap.fill_rect(bitmap.rect, BGColor)
end
if ClearOutsideArea
bitmap.fill_rect(0,0,bitmap.width, 56, @clearoutsidecolor)
bitmap.fill_rect(0,0,56, bitmap.height, @clearoutsidecolor)
bitmap.fill_rect(0,bitmap.height-56,bitmap.width, 56, @clearoutsidecolor)
bitmap.fill_rect(bitmap.width-56,0,56, bitmap.height, @clearoutsidecolor)
elsif OutlineMapArea
bitmap.fill_rect(56,55,bitmap.width-112,1,@outlinemapcolor)
bitmap.fill_rect(55,56,1,bitmap.height-112,@outlinemapcolor)
bitmap.fill_rect(bitmap.width-56,55,1,bitmap.height-112,@outlinemapcolor)
bitmap.fill_rect(56,bitmap.height-56,bitmap.width-112,1,@outlinemapcolor)
end
@backtilebitmap = bitmap
end
def draw_object_layer
for event in $game_map.events.keys
if $game_map.events[event].list.size >= 0
for item in $game_map.events[event].list
if item.code == 108 or item.code == 408
if @objectcolor.has_key?(item.parameters[0])
draw_object($game_map.events[event].real_x*TileSize+56,
$game_map.events[event].real_y*TileSize+56,
@objectcolor[item.parameters[0]])
end
end
end
end
end
if ShowFollowers
unless $game_player.vehicle
$game_player.followers.each do |follower|
draw_object(follower.real_x*TileSize+56,
follower.real_y*TileSize+56,
@followercolor) if follower.visible?
end
end
end
if ShowVehicles
unless $game_map.airship.transparent
draw_object($game_map.airship.real_x*TileSize+56,
$game_map.airship.real_y*TileSize+56,
@airshipcolor)
end
unless $game_map.ship.transparent
draw_object($game_map.ship.real_x*TileSize+56,
$game_map.ship.real_y*TileSize+56,
@shipcolor)
end
unless $game_map.boat.transparent
draw_object($game_map.boat.real_x*TileSize+56,
$game_map.boat.real_y*TileSize+56,
@boatcolor)
end
end
draw_object($game_player.real_x*TileSize+56,
$game_player.real_y*TileSize+56,
@playercolor)
end
def draw_object(x, y, color)
@object_layer.bitmap.fill_rect(x, y, TileSize, TileSize, @bordercolor)
@object_layer.bitmap.fill_rect(x+1, y+1, TileSize-2, TileSize-2, color)
@object_layer.bitmap.clear_rect(x,y,1,1)
@object_layer.bitmap.clear_rect(x,y+TileSize-1,1,1)
@object_layer.bitmap.clear_rect(x+TileSize-1,y,1,1)
@object_layer.bitmap.clear_rect(x+TileSize-1,y+TileSize-1,1,1)
end
def make_map_bitmap(color)
bitmap = Bitmap.new($game_map.width*TileSize + 112,
$game_map.height*TileSize + 112)
for x in 0..$game_map.width - 1
for y in 0..$game_map.height - 1
if $game_map.airship_land_ok?(x, y) || $game_map.bush?(x, y)
if UseHideRegion
bitmap.fill_rect(x*TileSize+56,
y*TileSize+56,
TileSize, TileSize,
color) if $game_map.region_id(x, y) == HideRegionId
else
next
end
if $game_map.bush?(x, y)
unless $game_map.passable?(x, y, 4)
bitmap.fill_rect(x*TileSize+56, y*TileSize+56, TileSize, TileSize, color)
end
end
next
end
bitmap.fill_rect(x*TileSize+56, y*TileSize+56, TileSize, TileSize, color)
end
end
bitmap
end
def update_object_layer
@object_layer.bitmap.clear
draw_object_layer
end
def dispose
@backmask.dispose
@backtile.dispose
@map.dispose
@object_layer.dispose
@border.dispose
end
def update
if @map_id != $game_map.map_id
dispose
@map_id = $game_map.map_id
refresh
end
@backmask.visible = visible?
@backtile.visible = visible?
@map.visible = visible?
@object_layer.visible = visible?
@border.visible = visible?
if visible?
@map.bitmap = @mapbitmap.dup
@backtile.bitmap = @backtilebitmap.dup
sx = $game_player.real_x * (TileSize * -1) + MapOffset
sy = $game_player.real_y * (TileSize * -1) + MapOffset
update_object_layer
@map.x = @backtile.x = @object_layer.x = sx
@map.y = @backtile.y = @object_layer.y = sy
@backtile.bitmap.blt(sx*-1, sy*-1,@mask,@mask.rect)
@map.bitmap.blt(sx*-1, sy*-1,@mask,@mask.rect)
@object_layer.bitmap.blt(sx*-1, sy*-1,@mask,@mask.rect)
end
end
end
#==============================================================================#
# ** Класс спрайтов карты
#==============================================================================#
class Spriteset_Map
alias sheol_mini_map_init initialize
alias sheol_mini_map_updt update
alias sheol_mini_map_disp dispose
include SheolShade::MiniMap
def initialize
create_minimap
sheol_mini_map_init
end
def create_minimap
viewport = Viewport.new(Graphics.width - 112,0,112,112)
viewport.rect.set(MiniMapCoords[MiniMapCorner][0],
MiniMapCoords[MiniMapCorner][1],
MiniMapCoords[MiniMapCorner][2],
MiniMapCoords[MiniMapCorner][3])
viewport.z = 500
@minimapa = MiniMap.new(viewport)
end
def dispose
sheol_mini_map_disp
@minimapa.dispose
end
def update
sheol_mini_map_updt
@minimapa.update
end
end
#==============================================================================#
# ** Конец скрипта
#==============================================================================# |
Последнее редактирование: 9 года 8 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.
|
[ACE] Проблема со скриптом SheolShade Minimap 9 года 8 мес. назад #80110
|
|
Последнее редактирование: 9 года 8 мес. назад от DeadElf79.
Администратор запретил публиковать записи гостям.
|
Модераторы: NeKotZima
Время создания страницы: 0.205 секунд