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

Azraven MiniMap 1.5

Iniciado por SheolShade, 08/03/2013 às 10:06

08/03/2013 às 10:06 Última edição: 14/06/2014 às 03:32 por SheolShade
Azraven MiniMap

Compativel com:  RMVXA.
Compatibilidade: boa.
Facilidade de uso: fácil.
Lag gerado:  baixo.

[box class=titlebg]
Condições de Uso
[/box]
Livre para uso em projetos não comerciais.
Você pode alterar o script desde que mantenha os créditos.
Não é permitido a postagem de versões alteradas.
Peço que não poste este script em outros fóruns se meu consentimento.

[box class=titlebg]
Para que serve o script
[/box]
Este script adiciona um mini mapa no jogo, com o diferencial do mesmo ser circular e altamente customizável ao gosto do usuário.

[box class=titlebg]
Características
[/box]
Mini mapa circular.
Possibilidade de adicionar uma cor personalizada para cada tipo de objeto (npc, teleporte, baú, etc...)
Possibilidade de mostrar os membro do grupo.
Possibilidade de mostrar os veículos.
Possibilidade de ocultar passagens usando Id de Terreno, por exemplo, para não mostrar passagens secretas no mini mapa.
Uso de textura ou cor sólida como fundo.
Todas as cores e imagens utilizadas são personalizáveis.
Entre outras opções inclusas nas instruções do script.

[box class=titlebg]
Imagens
[/box]

[box class=titlebg]
Download e Script
[/box]

[box class=titlebg]
Créditos e Avisos
[/box]
Criador: Azraven
Agradecimento:Raizen por corrigir um bug que me incomodava.

Qualquer bug reporte neste tópico que farei o possível para corrigir, sugestões para novas adições são bem vindas.

Bonito mini-map, não encontrei bugs, bem feito, parabéns.
Com certeza irei usar no meu project, continue assim  :blink:

e... +Ouro

Olá a todos.
Sou novo aqui e no RPG Maker. E gostei muito do fórum.

Estou fazendo um jogo e usei esse script. Queria ativa-ló e desativar com o mesmo botão.

Coloquei la no maker coloquei um evento assim:
Condicional - botão y
opção de switch :[1: mapa]=on
parar evento
opção de switch:[2:mapa off]=on
para evento

em uma nova página. condição de switch marcada (mapa off)
Condicional - botão y
opção de switch :[1: mapa]=off
parar evento
opção de switch:[2:mapa off]=off
para evento

ai da erro. queria saber, se alguém se puder, poderia mostrar como usar as switch para dar certo.
Isso aqui em casa, tem hora parece que da bug. Está tudo certo mas não funciona, ai excluo tudo, faço do mesmo geito e da ok, só que nesse caso, não funcionou.

No caso acima, hoje deixei, a segunda parte na mesma página, dando o off só que com outro botão, mas queria com o mesmo.

Desculpe qualquer coisa, e fica ai o pedido.

Gostei dessa nova adição.

Muito bom este mini mapa circular, obrigado mesmo por tê-lo disponibilizado por aqui!
:ok:

Muito bom o script
Estou tendo problemas com o script e já até dei umas modificação quanto a ativação por teclas e por mapas.
No caso específico é quanto a utilização de um evento com comentário, o erro apontado é na linha 252.

if $game_map.events[event].list.size >= 0

Quando tiro o evento da tela funciona normalmente, mas preciso realmente q funcione ambos.
Agradeço a quem puder me responder.

OBS: mesmo eu adicionando um novo evento na lista q define as colorações ele não aceita.

Wow. Mini-mapa bonitão! Curti bastante o layout dele, cara. Parabéns pelo script! + ouro. =)

Um grande abraço,

Kazuyashi.

Citação de: Galter online 31/07/2013 às 15:08
Muito bom o script
Estou tendo problemas com o script e já até dei umas modificação quanto a ativação por teclas e por mapas.
No caso específico é quanto a utilização de um evento com comentário, o erro apontado é na linha 252.

if $game_map.events[event].list.size >= 0

Quando tiro o evento da tela funciona normalmente, mas preciso realmente q funcione ambos.
Agradeço a quem puder me responder.

OBS: mesmo eu adicionando um novo evento na lista q define as colorações ele não aceita.


Estranho, baixei a demo deste tópico e funcionou como deveria, adicionei novos eventos e cores e etc. Pode ser mais especifico onde você editou e como está a página do evento para que eu possa corrigir o script? Agradeceria muito se pudesse.

Citação de: Kazuyashi online 31/07/2013 às 16:12
Wow. Mini-mapa bonitão! Curti bastante o layout dele, cara. Parabéns pelo script! + ouro. =)

Um grande abraço,

Kazuyashi.

Obrigado pelo feedback Kazuyashi. Em breve trarei mais opções para esse script bem como uma otimização no código em si que tá bem feio ainda.

Esclarecimento
Sim, eu sou o SheolShade, este é meu novo nick e estranhei o Raizen não ter deletado a conta antiga, pois lhe pedi permissão para criar uma segunda conta já que não é possível mudar o nick no momento
[close]

Nossa, muito bom, estava esperando por um minimapa mais diferente  :XD:
Esse está bem bonito, com certeza vou usar no meu projeto :lol:

+Ouro

Abraços, Elemento0  :ok:
They're taking the hobbits to Isengard!

Bom... desculpem lá por postar nesse tópico depois de tanto tempo sem comentários(ja que existe esse topico, não faz sentido criar outro), mas preciso de ajuda.
Eu tentei utilizar esse mini-mapa no meu projeto mas deu um erro na hora de jogar:

erro
[close]
Eu fiz uma copia e retirei os scripts(ficheiros e tags) que eu uso no projeto e executei no game e continuou com esse erro.
Será que alguém pode me dizer como resolver esse problema?
... ... ...

Citação de: Kowts online 16/01/2014 às 10:51
Bom... desculpem lá por postar nesse tópico depois de tanto tempo sem comentários(ja que existe esse topico, não faz sentido criar outro), mas preciso de ajuda.
Eu tentei utilizar esse mini-mapa no meu projeto mas deu um erro na hora de jogar:

erro
[close]
Eu fiz uma copia e retirei os scripts(ficheiros e tags) que eu uso no projeto e executei no game e continuou com esse erro.
Será que alguém pode me dizer como resolver esse problema?

Não há problema algum em reviver tópicos quando se tem uma dúvida, alias não tem problema algum reviver tópicos, é que reviver quando se é por exemplo, "poxa o sistema ficou legal e talz", 3 anos depois não faz sentido xD, mas nesse caso sem problemas :).

Cara faz um bom tempo que o Sheol não entra.. vou ver se acho o cara, se não achar tento testar aqui e ver o que acontece.


[user]Raizen[/user]... assim a Demo funciona perfeitamente... mas quando eu transfiro o script para meu projeto com a switch ativada ele da esse erro(testei de outras formas com foi referido antes).
Fico aguardando uma resposta... esse script é perfeito para o que estou trabalhando agora e obrigado por responder.

Mais info: Antes de dar o erro o jogo inicia e +/- 1 segundo depois ele mostra esse erro.
... ... ...

Olá, Sheol aqui   :XD:

Bem, na verdade faz algum tempo que estou me enrolando pra reescrever esse script, pois se não me engano foi meu primeiro script em RGSS 3, e ei manjava só do RGSS do XP.

Pelo que mostra a mensagem de erro, por alguma razão seus eventos não contem uma lista de comandos, provavelmente pela forma que eu escrevi esse método que está meio nada a ver. Dei uma modificada nesse método, veja se resolve. Apenas troque o script.

#==============================================================================#
#                          **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.                                     #
#------------------------------------------------------------------------------#
module SheolShade
  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 = false
    #--------------------------------------------------------------------------#
    #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 habilida/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 SheolShade::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
      if event.list.size >= 0
        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 sheol_mini_map_init initialize
  alias sheol_mini_map_updt update
  alias sheol_mini_map_disp dispose
  
  include SheolShade::MiniMap
  
  def initialize
    create_minimap
    sheol_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
    sheol_mini_map_disp
    @minimapa.dispose
  end
  
  def update
    sheol_mini_map_updt
    @minimapa.update
  end
end
#==============================================================================#
# ** Fim do Script
#==============================================================================#



Demo atualizada.

[user]Azraven[/user]... obrigado, utilizei o novo script e funcionou perfeitamente. Sinceramente não sei qual era o problema... talvez incompatibilidade com algum script ou sei lá.  Mais uma vez obrigado e parabéns pelo ótimo trabalho.
[hs width=20 height=20]http://i.imgur.com/0BnacnK.png[/hs] (Precisa de alguns ajustes mas isso é comigo.)
... ... ...

(Desculpe o mau português, estou usando o Google Translate)
Estou tendo muitos vários problemas com esse roteiro em vários mapas de vários tamanhos.
Parece que você tem que começar um projeto completamente novo com o minimap instalado pela primeira vez (sim, eu verifiquei para compatibilidade) ou então ligar o minimapa, às vezes, dar-lhe o erro:

Script 'SS-Minimap' line 252: NoMethodError occurred.

undefined method 'size' for nil:NilClass

Você sabe como me ajudar?
Se for necessário, eu posso dar uma demonstração