Cria um mini-mapa simples. Incapaz de identificar eventos mas muito simples e que não exige imagens extras.

Desenvolvimento: Woratana

Tradutor: RFTD


#===============================================================
# ? [VX] ? MiniMap ? ?
# * Plug N Play Minimap (Não precisa de imagem) *
#--------------------------------------------------------------
# ? Por Woratana [woratana@hotmail.com]
# ? Thaiware RPG Maker Community
# ? Lançado em: 09/06/2008
# ? Versão: 1.0
#--------------------------------------------------------------
# ? Creditos: KGC pelo XP MiniMap Script,
# Este Script não poderia ser feito sem ele.
#--------------------------------------------------------------
#--------------------------------------------------------------
# Tradução: RFTD
#--------------------------------------------------------------

module MiniMap
#===========================================================================
# [Inicio] OPÇÔES DO MINIMAP SCRIPT
#---------------------------------------------------------------------------
SWITCH_NO_MINIMAP = 10 # Switch para desligar/ligar o MiniMap (O Minimap vem ligado por padrão)

MAP_RECT = [410, 20, 100, 100] # Tamanho e posição do Minimap
# [X, Y, Width, Height]
# Você pode mudar isso no jogo, chamando o script por eventos:
# $game_system.minimap = [X, Y, Width, Height]

MAP_Z = 50 # Minimap's Z-coordinate
# Aumente este numero caso tenha problema do Minimap ficar embaixo de algum item da tela

GRID_SIZE = 5 # Tamanho do grid do Minimap. Recomendado mais que 3.

MINIMAP_BORDER_COLOR = Color.new(0, 0, 255, 160) # Cor da borda do Minimap
# Color.new(Vermelho, Verde, Azul, Opacidade)
MINIMAP_BORDER_SIZE = 2 # Tamanho da borda do Minimap

FOREGROUND_COLOR = Color.new(224, 224, 255, 160) # Cor do tile passavel
BACKGROUND_COLOR = Color.new(0, 0, 0, 160) # Cor do tile não-passavel

USE_OUTLINE_PLAYER = true # Mostra sombra em torno do jogador?
PLAYER_OUTLINE_COLOR = Color.new(0, 0, 0, 192) # Cor da sombra em torno do jogador
USE_OUTLINE_EVENT = true # Mostra sombra em torno dos eventos no MiniMap?
EVENT_OUTLINE_COLOR = Color.new(255, 255, 255, 192) # Cor da sombra em torno dos eventos

PLAYER_COLOR = Color.new(255, 0, 0, 192) # Cor do jogador
#---------------------------------------------------------------------------

OBJECT_COLOR = {} # Não mude ou apague esta linha!
#===============================================================
# * Opção de Eventos Palavras-Chaves & Cores
#---------------------------------------------------------------
# * Template:
# OBJECT_COLOR['Palavras-Chave'] = Color.new(Red, Green, Blue, Opacity)
#-------------------------------------------------------------
# * 'Palavras-Chave': Palavra que você coloca no comentario do evento para mostara a cor
# * Nota: 'Palavras-Chave' é CASE SENSITIVE!
# * Color.new(...): Cor que você quer
# Você pode colocar entre 0 - 255 em cada argumento (Vermelho, Verde, Azul, Opacidade)
#-------------------------------------------------------------
OBJECT_COLOR['npc'] = Color.new(30,144,255,160)
OBJECT_COLOR['treasure'] = Color.new(0,255,255,160)
OBJECT_COLOR['enemy'] = Color.new(139,35,35,160)
OBJECT_COLOR['merchant'] = Color.new(255,255,0,160)

#===========================================================================
# * [OPCIONAL] TAGS:
#---------------------------------------------------------------------------
# Trocar Palavra-Chave para desativar MiniMap & e Palavra-Chave para mostrar evento~
#-----------------------------------------------------------------------
TAG_NO_MINIMAP = '[NOMAP]' # Tag para deshabilita MiniMap
TAG_EVENT = 'MMEV' # Tag para mostrar evento no MiniMap
#---------------------------------------------------------------------------

#---------------------------------------------------------------------------
# [Fim] OPÇÔES DO MINIMAP SCRIPT
#===========================================================================

def self.refresh
if $scene.is_a?(Scene_Map)
$scene.spriteset.minimap.refresh
end
end

def self.update_object
if $scene.is_a?(Scene_Map)
$scene.spriteset.minimap.update_object_list
end
end
end

#==============================================================================
# ¦ RPG::MapInfo
#==============================================================================
class RPG::MapInfo
def name
return @name.gsub(/\\[.*\\]/) { }
end

def original_name
return @name
end

def show_minimap?
return !@name.include?(MiniMap::TAG_NO_MINIMAP)
end
end
#==============================================================================
# ¦ Game_System
#==============================================================================
class Game_System
attr_accessor :minimap
alias wora_minimap_gamsys_ini initialize

def initialize
wora_minimap_gamsys_ini
@minimap = MiniMap::MAP_RECT
end

def show_minimap
return !$game_switches[MiniMap::SWITCH_NO_MINIMAP]
end
end
#==============================================================================
# ¦ Game_Map
#==============================================================================
class Game_Map
alias wora_minimap_gammap_setup setup
def setup(map_id)
wora_minimap_gammap_setup(map_id)
@db_info = load_data('Data/MapInfos.rvdata') if @db_info.nil?
@map_info = @db_info[map_id]
end

def show_minimap?
return @map_info.show_minimap?
end
end
#==============================================================================
# ¦ Game_Event
#==============================================================================
class Game_Event = 3
bitmap.fill_rect(bitmap.rect, MiniMap::PLAYER_OUTLINE_COLOR)
brect = Rect.new(bitmap.rect.x + 1, bitmap.rect.y + 1, bitmap.rect.width - 2,
bitmap.rect.height - 2)
bitmap.clear_rect(brect)
else
brect = bitmap.rect
end

bitmap.fill_rect(brect, MiniMap::PLAYER_COLOR)
@position_sprite.bitmap = bitmap

draw_map
update_object_list
draw_object
update_position
end

def draw_map
bitmap = @map_sprite.bitmap
bitmap.fill_rect(bitmap.rect, MiniMap::BACKGROUND_COLOR)
map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3])
grid_size = [MiniMap::GRID_SIZE, 1].max

$game_map.width.times do |i|
$game_map.height.times do |j|
if !$game_map.passable?(i, j)
next
end
rect = Rect.new(map_rect.width / 2 + grid_size * i,
map_rect.height / 2 + grid_size * j,
grid_size, grid_size)
if grid_size >= 3
if !$game_map.passable?(i, j)
rect.height -= 1
rect.x += 1
rect.width -= 1
rect.width -= 1
rect.y += 1
rect.height -= 1
end
end
bitmap.fill_rect(rect, MiniMap::FOREGROUND_COLOR)
end
end
end

def update_object_list
@object_list = {}
$game_map.events.values.each do |e|
comment = e.mm_comment?(MiniMap::TAG_EVENT, true)
if comment != ''
type = comment.gsub(/#{MiniMap::TAG_EVENT}/){}.gsub(/\\s+/){}
@object_list[type] = [] if @object_list[type].nil?
@object_list[type] <= 3
bitmap.fill_rect(rect, MiniMap::EVENT_OUTLINE_COLOR)
brect = Rect.new(rect.x + 1, rect.y + 1, rect.width - 2,
rect.height - 2)
bitmap.clear_rect(brect)
else
brect = bitmap.rect
end
bitmap.fill_rect(brect, color)
end
end
end
end

def update
if @mmr != $game_system.minimap
dispose
refresh
end
draw_object
update_position
if @map_sprite.visible
@map_sprite.update
@object_sprite.update
@position_sprite.update
end
end

def update_position
map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3])
grid_size = [MiniMap::GRID_SIZE, 1].max
sx = $game_player.real_x * grid_size / 256
sy = $game_player.real_y * grid_size / 256
@map_sprite.src_rect.x = sx
@map_sprite.src_rect.y = sy
@object_sprite.src_rect.x = sx
@object_sprite.src_rect.y = sy
end
end
#==============================================================================
# ¦ Spriteset_Map
#------------------------------------------------------------------------------
class Spriteset_Map
attr_reader :minimap
alias wora_minimap_sprsetmap_ini initialize
alias wora_minimap_sprsetmap_dis dispose
alias wora_minimap_sprsetmap_upd update

def initialize
wora_minimap_sprsetmap_ini
if $game_map.show_minimap?
@minimap = Game_MiniMap.new(@tilemap)
$game_system.show_minimap = true if $game_system.show_minimap.nil?
@minimap.visible = $game_system.show_minimap
end
end

def dispose
@minimap.dispose if !@minimap.nil?
wora_minimap_sprsetmap_dis
end

def update
if !@minimap.nil?
if $game_system.show_minimap
@minimap.visible = true
@minimap.update
else
@minimap.visible = false
end
end
wora_minimap_sprsetmap_upd
end
end
#==============================================================================
# ¦ Scene_Map
#------------------------------------------------------------------------------
class Scene_Map < Scene_Base
attr_reader :spriteset
end

Anúncios