HUNTERMar Ene 29, 2013 12:08 am
Super Usuario
SheolShade MiniMap
COMENTARIO:
Este es un Script muy bueno que lo que hace es mostrar
un minimapa echo por imagenes y con buen estilo visual
si buscan un Minimapa para su juego este es el mejor
que hay por el momento asi que lo recomiendo.
IMAGEN DE MUESTRA:
COMO SE USA:
Habres el editor de scripst F11 y colocas
el Script encima de main.
CREDITOS:
SheolShade
SCRIPT:Haora que no hay demo las imagenes las tendran que hacer vosotros.
- 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]])
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.airship_land_ok?(x, y)
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
#==============================================================================#
Eso es todo un saludo y disfrutenlo.
Última edición por HUNTER el Miér Feb 13, 2013 1:49 am, editado 1 vez