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

Screenshot de Mapa Completo

Iniciado por Raizen, 18/12/2012 às 20:01

[box class=titlebg2]
Screenshot do Mapa Completo
[/box]

[box class=catbg]Introdução:[/box]
[box class=randomquote]     Já havia convertido o script, mas realmente estava com alguns problemas, então foi preferível reescrever.[/box]

[box class=catbg]Características:[/box]
[box class=randomquote]- Customizável
- Plug 'n Play
- Gera screenshots de mapas com mais de 64x64 (Valor definido pela quantidade de memória RAM disponível)
[/box]

[box class=catbg]Screenshots:[/box]
[box class=randomquote]Exemplo de screenshot gerada:
Spoiler
[close]
[/box]

[box class=catbg]Como usar:[/box]
[box class=randomquote]Chamar o script ou pela tecla configurada no módulo:

$game_map.snap_to_bitmap

[/box]

[box class=catbg]Script:[/box]
[box class=randomquote]
#==============================================================================
# Screenshot do Mapa Completo [VXA]
#------------------------------------------------------------------------------
# Tira uma screenshot de todo o mapa onde está localizado e armazena em um 
# arquivo.
#------------------------------------------------------------------------------
# Autor      : Kyo Panda
# Conversão  : Gab!
# Site       : http://www.mundorpgmaker.com/
# Versão     : 1.0
# Lançado em : 23 de Abril de 2011
#==============================================================================

#==============================================================================
# Agradecimentos:
#------------------------------------------------------------------------------
# • Falco :
#   * Pelo módulo PNG utilizado na gravação das imagens.
# • Lu Sd 04 // stif.alown // Guedes:
#   * Por ajudar na localização dos bugs do script.
#==============================================================================

#==============================================================================
# Como usar:
#------------------------------------------------------------------------------
# 
# #--------------------------------------------------------------------------
# # Instalação
# #--------------------------------------------------------------------------
# 
# • Cole o script abaixo dos "▼ Scripts Adicionais" e acima do "▼ Principal" 
#   no Editor de Scripts do RPG Maker VX.
#
# • Configure o script na área "Configuração" logo abaixo, se desejar.
#
#==============================================================================

#==============================================================================
# Para scripters:
#------------------------------------------------------------------------------
# • $game_map.snap_to_bitmap 
#   Executa o comando de screenshot do mapa.
#==============================================================================

#==============================================================================
# Histórico de versões:
#------------------------------------------------------------------------------
# • 1.0 - 23 de Abril de 2011:
#   * Primeira versão do script.
# • 2.0 - 24 de Agosto de 2012:
#   * Versão para RPG Maker VX Ace; funcional
#==============================================================================

#==============================================================================
# Map_ScreenshotSettings
#------------------------------------------------------------------------------
# Módulo de configuração do script Screenshot do Mapa.
#==============================================================================
module Map_ScreenshotSettings
  #--------------------------------------------------------------------------
  # Configuração
  #--------------------------------------------------------------------------
  
  # Defina aqui se o script estará ativo ou não.
  # Defina true para ativar e false para desativar
  SCRIPT_ACTIVE = true
  
  # Defina aqui o nome da pasta onde suas screenshots serão armazenadas.
  # Se nenhuma pasta for definida, as screenshots serão gravadas na pasta 
  # principal do seu projeto.
  # Defina o nome da pasta entre apóstrofos ('') ou aspas ("").
  # Defina como '', "" ou nil, para não utilizar uma pasta em especial.
  DIRECTORY = "Screenshots"
  
  # Defina aqui o modo atribuído ao nome da screenshot que será armazenada.
  # Utilize a tag "%m" para que seja definido o nome do mapa. 
  # Utilize a tag "%{n}d" para definir a quantidade de números que será 
  # atribuído ao nome. Onde {n} siginifica o número de digitos no nome.
  # Se não for definido a tag "%{n}d", o número será adicionado ao final do
  # nome, por padrão.
  # Defina o nome entre apóstrofos ('') ou aspas ("").
  FILENAME = "%4d - %m"
  
  # Defina aqui a tecla utilizada para se tirar a screenshot do mapa.
  # Defina a tecla entre apóstrofes ('') ou aspas ("").
  # As teclas disponíveis serão mostradas à seguir, pela configuração padrão
  # do RPG Maker VX.
  #
  # Letra : Tecla
  #----------------------
  #   A   : Shift
  #   B   : X, Esc, 0
  #   C   : Z, Enter, Espaço
  #   L   : Q
  #   R   : W
  #   X   : A
  #   Y   : S
  #   Z   : D
  INPUT = :Y
  
  # Defina aqui se deseja exibir uma mensagem de que a screenshot foi
  # processada.
  MESSAGE_ACTIVE = true
  
  # Defina aqui a mensagem exibida antes que a screenshot seja processada.
  MESSAGE1 = "Gerando Screenshot..."
  
  # Defina aqui a mensagem exibida após a screenshot ser processada.
  MESSAGE2 = "Screenshot criada com sucesso!"
  
  #--------------------------------------------------------------------------
  # Fim da configuração
  #--------------------------------------------------------------------------
  
  # Criação da pasta de armazenamento de screenshots do mapa
  if !DIRECTORY.nil? && !DIRECTORY.empty?
    Dir.mkdir(DIRECTORY) if !Dir.entries("./").include?(DIRECTORY)
  end
end

if Map_ScreenshotSettings::SCRIPT_ACTIVE
  class Game_Map
    def snap_to_bitmap
      def updateMap
        Graphics.update
        SceneManager.scene.spriteset.update
      end
      
      oldpos = [@display_x, @display_y]
      
      gw, gh     = Graphics.width, Graphics.height
      bitmap     = Bitmap.new(@map.width * 32, @map.height * 32)
      sampleRect = Rect.new(0, 0, gw, gh)
      
      (bitmap.height/gh.to_f).ceil.times{|i| 
        (bitmap.width/gw.to_f).ceil.times{|j|
          y = gh * i > bitmap.height - gh ? bitmap.height - gh : gh * i
          x = gw * j > bitmap.width  - gw ? bitmap.width  - gw : gw * j
          
          set_display_pos(x/32,y/32)
          
          updateMap
          bitmap.blt(x, y, Graphics.snap_to_bitmap, sampleRect)
        } 
      }
      
      set_display_pos(*oldpos)
      updateMap
      
      msgbox(Map_ScreenshotSettings::MESSAGE1) if Map_ScreenshotSettings::MESSAGE_ACTIVE
      
      fullname = File.join(Map_ScreenshotSettings::DIRECTORY, "Screenshot#{Time.new.to_i}.png")
      bitmap.save(fullname)
      
      msgbox(Map_ScreenshotSettings::MESSAGE2)  if Map_ScreenshotSettings::MESSAGE_ACTIVE
    end
  end

  class Bitmap
    def save(file_name)
      def chunk(type, data)
        [data.size, type, data, Zlib.crc32(type + data)].pack("NA4A*N")
      end
    
      img_data = ""
      width, height = self.width, self.height
      
      for j in 0...(height)
        img_data << "\0"
        for i in 0...(width)
          pos_c = self.get_pixel(i, j)
          img_data << [pos_c.red, pos_c.green, pos_c.blue, pos_c.alpha].pack("C*")
        end
      end
      
      c = [
        "\x89PNG\r\n\x1a\n",
        chunk("IHDR", [width, height, 8, 6, 0, 0, 0].pack("N2C5")),
        chunk("IDAT", Zlib::Deflate.deflate(img_data)),
        chunk("IEND", "")
      ]
      
      File.open(file_name, "wb"){|file| c.each{|chunk| file.write(chunk) }}
    end
  end

  class Scene_Map
    attr_reader :spriteset
    alias mapscreenshot_update update
    
    def update(*args)
      mapscreenshot_update(*args)
      return unless Input.trigger?(Map_ScreenshotSettings::INPUT)
      $game_map.snap_to_bitmap
    end
  end
end

[/box]

[box class=catbg]Créditos e Considerações finais:[/box]
[box class=randomquote]
[user]Kyo Panda[/user] - Criação do script
[user]Gab![/user] - Conversão
[user]Falco[/user] - Módulo PNG

Qualquer dúvida de como usar, procurem ele no msn (gab.teles@hotmail.com) ou por PM.
[/box]

Obrigado por disponibilizar. Esse script é ótimo pra quem usa parallax mapping.
Usando em conjunto com o Script Full Keyboard , foi bem fácil configurar pra tirar print usando a tecla Print mesmo ^^

Que coincidência... Peguei o de vx essa semana. XD É um bom script, pra mostrar seu trabalho e também colocar uma iluminação(o meu caso) de um jeito mais fácil.

Desculpem ressuscitar, mas tive um problema, o meu ficou todo preto, dando para visualizar quase nada do mapa. Tentei arrumar tratando a imagem, mas também não deu, aqui como ficou:
Spoiler
[close]

Desculpe por ter ressuscitado o tópico.
seus pubububu.

nho
DeMolay

Citação de: DFox online 30/08/2013 às 16:37
Desculpem ressuscitar, mas tive um problema, o meu ficou todo preto, dando para visualizar quase nada do mapa. Tentei arrumar tratando a imagem, mas também não deu, aqui como ficou:
Spoiler
[close]

Desculpe por ter ressuscitado o tópico.
Veja se você não apertou a tecla correspondente depois de um fade out, ou escurecimento de tela.
Se não for isto verifique imagens, e etc, que o mapa esteja talvez usando.
  

Não tem nada. '-'

EDIT: Desculpe-me, sou um retardado, eu botei como processo paralelo e.e

Agora foi! Valeu ae e.e
seus pubububu.

nho
DeMolay

Recebi uma imagem totalmente preta. O que aconteceu?  :hein:

Daria para adaptar para o MV? Fiquei com essa duvida  :o:

30/09/2018 às 14:15 #8 Última edição: 30/09/2018 às 17:35 por Corvo
Para MV use o do Hime.

Eu tava vendo que essa configuração do Hime ta classifica como Script. Para eu colocar no meu RPG Maker MV basta eu salvar como .js?


Citação de: Corvo online 30/09/2018 às 17:36
Ignore, eu sugeri o código errado. Este sim, pro MV.  :facepalm:

Hehehe, sem problemas. Testei o plugin, ele parece a menssagem que bateu a foto da tela, porem quando eu vou no local indicado a pasta mapshot não é criada, bem estranho. Sera que o problema é que o meu projeto não esta na pasta padrão do RPG Maker MV? Na hora de criar um novo projeto eu escolhi uma outra pasta para manter o meu projeto,  não sei se tem alguma coisa a ver.

Aí vou ter que pedir para que você abra um tópico aqui porque vamos tratar de uma dúvida não relacionada ao código postado.

faz a imagem aparecer na tela e ai fica parecido com mapa so que não aparece o heroi

Citação de: nomefausoJOHN online 16/12/2018 às 06:45
faz a imagem aparecer na tela e ai fica parecido com mapa so que não aparece o heroi

É justamente esse o objetivo. A proposta do script é ser uma ferramenta para a criação de panomapas.