1 SheolShade MiniMap Sáb 05 Jan 2013, 14:26
~Razor
Membro de Honra
SheolShade MiniMap
por SheolShade
Introdução
Este script adiciona um mini mapa circular ao jogo.
Características
•Mini mapa circular.
•Fácil customização.
Screenshots
Como usar
Cole na seção "Scripts Adicionais".
Imagens necessárias inclusas na demo.
Maiores instruções no script.
Script
Demo
http://www.mediafire.com/?q35liryb35rgll1
Créditos e Agradecimentos
•Feito por SheolShade
por SheolShade
Introdução
Este script adiciona um mini mapa circular ao jogo.
Características
•Mini mapa circular.
•Fácil customização.
Screenshots
Como usar
Cole na seção "Scripts Adicionais".
Imagens necessárias inclusas na demo.
Maiores instruções no script.
Script
- Código:
#==============================================================================#
# **SheolShade Minimap** #
#------------------------------------------------------------------------------#
# ** Autor: SheolShade #
# ** Versão: 1.0b #
# ** Data: 24/12/2012 #
#------------------------------------------------------------------------------#
# - Descrição: #
# Este script adiciona um mini mapa circular no jogo. #
# - Utilização: #
# Cole este script na seção "Scripts Adicionais". #
#==============================================================================#
#==============================================================================#
# ** Configuração #
#------------------------------------------------------------------------------#
# TileSize -> linha: 99
# Define o tamanho do tile utilizado no minimapa.
#
# MapOffset -> linha: 100
# Dependendo do tamanho do tile utilizado será necessário ajustar a
# posição do minimapa.
#
# PlayerColor -> linha: 101
# Define a cor do jogador mostrada no mapa.
#
# ObjectColor -> linha: 102
# Permite definir uma cor pra cada tipo de objeto no mapa, como
# NPCS, teletranportes, baús e etc, usando comenta´rios nos eventos.
# Use a seguinte sintaxe dentro do {}, separado por vírgulas:
#
# "comentário" => Color.new(R, G, B).invert
# R = valor RGB para vermelho;
# G = valor RGB para verde;
# B = valor RGB para azul;
#
# BorderColor -> linha: 104
# Define a cor do contorno dos eventos e jogador.
#
# ObjectLayerOpacity -> linha: 105
# Define a transparencia da camada de eventos.
#
# MiniMapCorner -> linha: 106
# Define a posção do mini mapa.
# 1 = Canto superior esquerdo;
# 2 = Canto superior direito;
# 3 = Canto inferior esquerdo;
# 4 = Canto inferior direito;
#
# MapColor -> linha: 107
# Define a cor da parte não passável do mapa.
#
# MapBorderColor -> linha: 108
# Define a cor do contorno das areas não passávies.
#
# BorderName -> linha: 109
# Nome do arquivo de imagem para a borda do mini mapa. Na pasta System.
#
# BackTextureName -> linha: 110
# Nome do arquivo de imagem para a textura de fundo. Na pasta System.
#
# ClearOutsideArea -> linha: 111
# Permite preeencher com uma cor as area fora do mapa ao invez de usar
# a textura. true ou false
#
# ClearOutsideColor -> linha: 112
# Se ClearoutsideArea for true, utilizará a cor definida aqui para
# preencher a area externa.
#
# OutlineMapArea -> linha: 113
# Permite definir um contorno demarcando o limite do mapa. true ou false
#
# OutlineMapColor -> linha: 114
# Se OutlineMapArea for true, utilizará a cor definida aqui para
# o contorno.
#
# EnableSwitchID
# Define a id do switch usado para ligar ou desligar o mini mapa.
#==============================================================================#
#==============================================================================#
# ** Classe Color
#==============================================================================#
class Color
#-----------------------------------------------------------------------------
# * Inverte o valor das cores
#-----------------------------------------------------------------------------
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
#==============================================================================#
# ** Modulo SheolShade
#==============================================================================#
module SheolShade
module MiniMap
#Inicio da configuração#
TileSize = 8
MapOffset = -4
PlayerColor = Color.new(255,0,0).invert
ObjectColor = {"npc" => Color.new(0,255,0).invert,
"door" => Color.new(0,0,255).invert,
"chest" => Color.new(100,100,100).invert}
BorderColor = Color.new(0,0,0).invert
ObjectLayerOpacity = 255
MiniMapCorner = 2
MapColor = Color.new(200,150,150).invert
MapBorderColor = Color.new(50,50,50).invert
BorderName = "Border"
BackTextureName = "OldPaper"
ClearOutsideArea = false
ClearOutsideColor = Color.new(0,0,0).invert
OutlineMapArea = true
OutlineMapColor = Color.new(0,0,0).invert
EnableSwitchId = 1
#Fim da configuração#
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]}
end
end
#==============================================================================#
# ** Classe Mini Map
#==============================================================================#
class MiniMap
include SheolShade::MiniMap
def initialize(viewport)
@viewport = viewport
refresh
end
def refresh
@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)
bit = Cache::system(BackTextureName)
bitmap.stretch_blt(bitmap.rect, bit, bit.rect)
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]])
p ObjectColor[item.parameters[0]]
end
end
end
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.passable?(x, y, 4)
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
@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
#==============================================================================#
# ** Classe Spriteset_Map
#==============================================================================#
class Spriteset_Map
alias old_init initialize
alias old_updt update
alias old_disp dispose
include SheolShade::MiniMap
def initialize
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)
old_init
end
def dispose
old_disp
@minimapa.dispose
end
def update
old_updt
@minimapa.update
end
end
#==============================================================================#
# ** Fim do Script
#==============================================================================#
Demo
http://www.mediafire.com/?q35liryb35rgll1
Créditos e Agradecimentos
•Feito por SheolShade