Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #==============================================================================#
- # **Azraven Minimap** #
- #------------------------------------------------------------------------------#
- # ** Autor: Azraven #
- # ** Versão: 1.5b #
- # ** 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". #
- #==============================================================================#
- # - Histórico #
- # 24/12/2012 - Início e término da versão 1.0b #
- # 04/03/2013 - Versão 1.5b Correção de bugs e adição de novas funções. #
- # * Correção de um bug em que não verificava corretamente o #
- # de determinados tiles. #
- # * Correção de um bug em que tiles de grama (bush) eram #
- # apresentados como bloqueio. #
- # * Correção de um bug em que tiles de bloqueio posicionados #
- # sobre tiles de grama era mrepresentados como passáveis. #
- # * Código melhorado. #
- # + Adicionado a função de mostrar os veiculos. #
- # + Adicionado a função de mostrar os seguidores. #
- # + Adicionado a função para utilizar IDs de Região para #
- # ocultar áreas passáveis. #
- # 14/06/2014 * Bug relacionado ao comando "Apagar Evento Temporário" #
- # corrigido. #
- # * Limpeza no código. #
- #------------------------------------------------------------------------------#
- module Azraven
- module MiniMap
- #--------------------------------------------------------------------------#
- # CONFIGURAÇÂO #
- #--------------------------------------------------------------------------#
- #Tamanho do tile do mini mapa, recomendável não usar valores menores que 3.
- TileSize = 8
- #--------------------------------------------------------------------------#
- #Ajuste do centralizamento do mini mapa, depende do tamanho do tile.
- MapOffset = -4
- #--------------------------------------------------------------------------#
- #Define a cor do jogador no mapa.
- PlayerColor = Color.new(255,0,0)
- #--------------------------------------------------------------------------#
- #Mostra os seguidores.
- ShowFollowers = true
- #--------------------------------------------------------------------------#
- #Define a cor dos seguidores no mapa.
- FollowerColor = Color.new(0,128,255)
- #--------------------------------------------------------------------------#
- #Define se irá mostrar os veiculos no map.
- ShowVehicles = true
- #--------------------------------------------------------------------------#
- #Define a cor do barco.
- BoatColor = Color.new(255,0,255)
- #--------------------------------------------------------------------------#
- #Define a cor do navio.
- ShipColor = Color.new(255,0,255)
- #--------------------------------------------------------------------------#
- #Define a cor do aeronave.
- AirshipColor = Color.new(255,0,255)
- #--------------------------------------------------------------------------#
- #Define a cor dos objetos mostrados no mapa.
- #Objetos são NPCs, portas, teleportes, baús e o que mais o usuário puder
- #imaginar.
- #Para adicionar um novo objeto use a seguinte sintaxe dentro das {}:
- # "tag" => Color.new(R,G,B,A)
- #Onde tag é o comentário que será adiocinado a tal evento.
- #Separe cada objeto por "," sem as aspas.
- ObjectColor = {"npc" => Color.new(0,255,0),
- "teleport" => Color.new(150,50,50),
- "chest" => Color.new(100,100,100)}
- #--------------------------------------------------------------------------#
- #Define a cor de contorno dos objetos e do jogador.
- BorderColor = Color.new(0,0,0)
- #--------------------------------------------------------------------------#
- #Opacidade dos objetos mostrados no mapa.
- ObjectLayerOpacity = 255
- #--------------------------------------------------------------------------#
- #Posição do mapa na tela.
- #1 = Canto superior esquerdo.
- #2 = Canto superior direito.
- #3 = Canto inferior esquerdo.
- #4 = Canto superior direito.
- MiniMapCorner = 2
- #--------------------------------------------------------------------------#
- #Define se determinada região mostrará como bloqueada no mini mapa.
- #Util pra não revelar "passagens secretas".
- UseHideRegion = true
- #--------------------------------------------------------------------------#
- #Id da região caso UseHideRegion for true.
- HideRegionId = 1
- #--------------------------------------------------------------------------#
- #Cor do da área impassável do mapa.
- MapColor = Color.new(200,150,150)
- #--------------------------------------------------------------------------#
- #Cor do contorno da área impassável do mapa.
- MapBorderColor = Color.new(50,50,50)
- #--------------------------------------------------------------------------#
- #Nome do arquivo de imagem da borda do mini mapa na pasta Graphics/System.
- BorderName = "Border"
- #--------------------------------------------------------------------------#
- #Define se irá utilizar uam textura ao fundo.
- UseBGTexture = true
- #--------------------------------------------------------------------------#
- #Nome do arquivo de imagem da textura usada ao
- #fundo do mini mapa na pasta Graphics/System.
- #Obs.: A imagem deve estar com as cores invertidas.
- BackTextureName = "OldPaper"
- #--------------------------------------------------------------------------#
- #Cor de preenchimento do fundo caso nã oseja utilizado uma textura.
- BGColor = Color.new( 100, 100, 100)
- #--------------------------------------------------------------------------#
- #Opção de preencher com uma cor a área externa do mapa.
- ClearOutsideArea = true
- #--------------------------------------------------------------------------#
- #Cor utilizada para preencher a área externa do mapa.
- ClearOutsideColor = Color.new(0,0,0)
- #--------------------------------------------------------------------------#
- #Opção de dermarcar os limites do mapa.
- OutlineMapArea = true
- #--------------------------------------------------------------------------#
- #Cor da demarcação dos limites do mapa.
- OutlineMapColor = Color.new(0,0,0)
- #--------------------------------------------------------------------------#
- #Id do switch que habilita/desabilita o mini mapa.
- 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 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
- #==============================================================================#
- # ** Classe Mini Map
- #==============================================================================#
- class MiniMap
- include Azraven::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.values
- unless event.list.nil?
- for item in event.list
- if item.code == 108 or item.code == 408
- if @objectcolor.has_key?(item.parameters[0])
- draw_object(event.real_x*TileSize+56,
- 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
- #==============================================================================#
- # ** Classe Spriteset_Map
- #==============================================================================#
- class Spriteset_Map
- alias azraven_mini_map_init initialize
- alias azraven_mini_map_updt update
- alias azraven_mini_map_disp dispose
- include Azraven::MiniMap
- def initialize
- create_minimap
- azraven_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
- azraven_mini_map_disp
- @minimapa.dispose
- end
- def update
- azraven_mini_map_updt
- @minimapa.update
- end
- end
- #==============================================================================#
- # ** Fim do Script
- #==============================================================================#
Advertisement
Add Comment
Please, Sign In to add comment