O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

SheolShade MiniMap

Iniciado por Raizen, 05/02/2013 às 18:12

05/02/2013 às 18:12 Última edição: 23/02/2013 às 19:46 por King Gerar
SheolShade MiniMap

Compativel com: RMVXAce
Compatibilidade :boa
Facilidade de uso: fácil
Lag gerado: baixo
[box class=titlebg]
Condições de Uso
[/box]
  Não especificado pelo autor

[box class=titlebg]
Para que serve o script
[/box]
  Ele apresenta um mini-mapa bem agradável, para quem já o usava, pegue a versão atualizada, o Gerar não conseguiu falar com o Sheol então eu resolvi eu mesmo corrigir um bugzinho que havia nele.

[box class=titlebg]
Script
[/box]
Download: http://www.4shared.com/rar/aBk_GqUv/SheolShade_Minimap.html

#==============================================================================#
#                          **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
#==============================================================================#
   


[box class=titlebg]
Imagens
[/box]

Spoiler
[close]

[box class=titlebg]
Créditos e Avisos
[/box]

SheolShade

Poxa, manuuu! Primeiramente valeu mesmo por corrigir o bug!  :*-*:

Bem, na verdade é o único Mini-mapa para o Ace que vi, e
de quebra é muito bom, muito mesmo. Editando um pouco
as imagens, dá para deixar com um visual tremendamente
belo. Além de permitir configurar todas as cores de modo
fácil e acessível...

Muito bom mesmo. Obrigado por trazer e arrumar man
:blink:

Que mini mapa lindo *-*
Gostei muito cara, tanto do design quanto do funcionamento em si, provavelmente vou usar em algum futuro projeto, muito bem feito mesmo. Obrigado por disponibilizar Raizen ^^
To Die Is To Find Out If Humanity Ever Conquers Death

O melhor minimap que vi ate agora. Mas no download ele tah off.

Verdade :/, mas tenho ele aqui no PC, assim que der eu faço o upload novamente, obrigado pelo aviso :).


Okay vlw pois preciso da demo para entender melhor como ela funciona. ^^

Com toda licença, Raizen...

Vi que em outro fórum ele deixou outro link para o download,
então substituí pelo script que o Raizen arrumou e reupei,
portanto está disponível novamente.
Merece mesmo dar uma conferida, é o melhor até então que vi.
  :ok:

Tô tendo um probleminha com uma coisa que provavelmente é simples de resolver inclusive achei um script aqui que pode resolver o meu problema.... Esse minimap foi o melhor que eu já vi(só vi 2 aqui no fórum!) *O*
Está acontecendo um erro na linha 251 do script. Toda vez que coloca um evento para executar "apagar evento temporariamente" ocorre o erro... Inclusive em um dos mapas que eu tento me "teleportar" ocorre o mesmo erro! D: Será alguém pode resolver ou dizer o que posso fazer para resolver o problema?! T_T
Eu upei o jogo com um print do Erro para ter noção melhor do que estou falando!  :T.T:

http://www.mediafire.com/download/m4ccoprd713gpjj/Minimap+Erro.rar