Unificador de Tilesets

    tecao98
    tecao98
    Membro Experiente
    Membro Experiente

    Mensagens : 146
    Credibilidade : 17

    Unificador de Tilesets Empty Unificador de Tilesets

    Mensagem por tecao98 em Qui Mar 29, 2012 12:51 pm

    Introdução:

    Spoiler:
    E aew galera da Battle Maker estou aqui para postar mais um script para RGSS,então vou disponibilizar um script que faz tipo uma fusão
    com os tilesets que está na pasta graphics em breve postará um tutorial na categoria de tutoriais...

    Engines e outros:

    Spoiler:
    Apenas testei o script no Rpg Maker XP...e funciona perfeitamente
    A versão do script é a versão 1.0

    Script:

    Spoiler:
    Código:
    ===============================================================================
    # Tileset  Merger - Unificador de Tileset
    # Versão  1.0
    #
    #-------------------------------------------------------------------------------
    # Introdução:
    #
    # -Nescessita de tilesets unidos para mapear? Esse script unifica
    # tilesets automaticamente para você.
    #
    #-------------------------------------------------------------------------------
    #
    # Instruções:
    #
    # 1- Coloque os tilesets que queira unificar na pasta
    # "\Graphics\Tilesets".
    #
    # Execute o jogo para unifica-los, não feche o aplicativo até que
    # uma mensagem de alerta confirme a unificação.
    #
    #
    # Os tilesets devem ter a mesma cor de fundo para ser importado
    # corretamente.
    #
    #-------------------------------------------------------------------------------

    =begin
    ==============================================================================
                            Bitmap to PNG By ???
    ==============================================================================

     ?Bitmap??????
     
     bitmap_obj.make_png(name[, path])
     
     name:?????
     path:????

     ??66?????????????!
     
    ==============================================================================
    =end

    module Zlib
      class Png_File < GzipWriter
        #--------------------------------------------------------------------------
        # ? ???
        #--------------------------------------------------------------------------
        def make_png(bitmap_Fx,mode)
          @mode = mode
          @bitmap_Fx = bitmap_Fx
          self.write(make_header)
          self.write(make_ihdr)
          self.write(make_idat)
          self.write(make_iend)
        end
        #--------------------------------------------------------------------------
        # ? PNG??????
        #--------------------------------------------------------------------------
        def make_header
          return [0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a].pack("C*")
        end
        #--------------------------------------------------------------------------
        # ? PNG????????(IHDR)
        #--------------------------------------------------------------------------
        def make_ihdr
          ih_size = [13].pack("N")
          ih_sign = "IHDR"
          ih_width = [@bitmap_Fx.width].pack("N")
          ih_height = [@bitmap_Fx.height].pack("N")
          ih_bit_depth = [8].pack("C")
          ih_color_type = [6].pack("C")
          ih_compression_method = [0].pack("C")
          ih_filter_method = [0].pack("C")
          ih_interlace_method = [0].pack("C")
          string = ih_sign + ih_width + ih_height + ih_bit_depth + ih_color_type +
                  ih_compression_method + ih_filter_method + ih_interlace_method
          ih_crc = [Zlib.crc32(string)].pack("N")
          return ih_size + string + ih_crc
        end
        #--------------------------------------------------------------------------
        # ? ??????(IDAT)
        #--------------------------------------------------------------------------
        def make_idat
          header = "\x49\x44\x41\x54"
          case @mode # ?54~
          when 1
            data = make_bitmap_data#1
          else
            data = make_bitmap_data
          end
          data = Zlib::Deflate.deflate(data, 8)
          crc = [Zlib.crc32(header + data)].pack("N")
          size = [data.length].pack("N")
          return size + header + data + crc
        end
        #--------------------------------------------------------------------------
        # ? ?Bitmap????????? mode 1(?54~)
        #--------------------------------------------------------------------------
        def make_bitmap_data1
          w = @bitmap_Fx.width
          h = @bitmap_Fx.height
          data = []
          for y in 0...h
            data.push(0)
            for x in 0...w
              color = @bitmap_Fx.get_pixel(x, y)
              red = color.red
              green = color.green
              blue = color.blue
              alpha = color.alpha
              data.push(red)
              data.push(green)
              data.push(blue)
              data.push(alpha)
            end
          end
          return data.pack("C*")
        end
        #--------------------------------------------------------------------------
        # ? ?Bitmap????????? mode 0
        #--------------------------------------------------------------------------
        def make_bitmap_data
          gz = Zlib::GzipWriter.open('hoge.gz')
          t_Fx = 0
          w = @bitmap_Fx.width
          h = @bitmap_Fx.height
          data = []
          for y in 0...h
            data.push(0)
            for x in 0...w
              t_Fx += 1
              if t_Fx % 10000 == 0
                Graphics.update
              end
              if t_Fx % 100000 == 0
                s = data.pack("C*")
                gz.write(s)
                data.clear
                #GC.start
              end
              color = @bitmap_Fx.get_pixel(x, y)
              red = color.red
              green = color.green
              blue = color.blue
              alpha = color.alpha
              data.push(red)
              data.push(green)
              data.push(blue)
              data.push(alpha)
            end
          end
          s = data.pack("C*")
          gz.write(s)
          gz.close   
          data.clear
          gz = Zlib::GzipReader.open('hoge.gz')
          data = gz.read
          gz.close
          File.delete('hoge.gz')
          return data
        end
        #--------------------------------------------------------------------------
        # ? PNG??????(IEND)
        #--------------------------------------------------------------------------
        def make_iend
          ie_size = [0].pack("N")
          ie_sign = "IEND"
          ie_crc = [Zlib.crc32(ie_sign)].pack("N")
          return ie_size + ie_sign + ie_crc
        end
      end
    end
    #==============================================================================
    # ¦ Bitmap
    #------------------------------------------------------------------------------
    #  ???Bitmap?
    #==============================================================================
    class Bitmap
      #--------------------------------------------------------------------------
      # ? ??
      #--------------------------------------------------------------------------
      def make_png(name="like", path="",mode=0)
        make_dir(path) if path != ""
        Zlib::Png_File.open("temp.gz") {|gz|
          gz.make_png(self,mode)
        }
        Zlib::GzipReader.open("temp.gz") {|gz|
          $read = gz.read
        }
        f = File.open(path + name + ".png","wb")
        f.write($read)
        f.close
        File.delete('temp.gz')
        end
      #--------------------------------------------------------------------------
      # ? ??????
      #--------------------------------------------------------------------------
      def make_dir(path)
        dir = path.split("/")
        for i in 0...dir.size
          unless dir == "."
            add_dir = dir[0..i].join("/")
            begin
              Dir.mkdir(add_dir)
            rescue
            end
          end
        end
      end
    end
    begin
      @time = Time.now
      @height = 0
      @names = []
      dir = Dir.new('Graphics/Tilesets/')
      dir.entries.each {|file| next unless file.include?('.png')
      @names.push(file); RPG::Cache.tileset(file)}
      for i in 0...@names.size
        @tile = RPG::Cache.tileset(@names[i])
        @height += @tile.height
      end
      @bitmap = Bitmap.new(256, @height)
      @height = 0
      for i in 0...@names.size
        @tile = RPG::Cache.tileset(@names[i])
        @rect = Rect.new(0, 0, @tile.width, @tile.height)
        @bitmap.blt(0, @height, @tile, @rect)
        @height += @tile.height
      end
      @bitmap.make_png("Tileset Unificado")
      print "                                Unificação Completa!\nForam unificados #{@names.size} tilesets no tempo de #{Time.now - @time} segundos."
      exit
    end

    Creditos:

    Os creditos vai para:
    Game_guy este quem fez o script



    Link do Tutorial: https://battlemaker.forumeiros.com/t1355-tutorialunificador-de-tilesets#3502

    Demo do Script:http://www.mediafire.com/?0zygmdnifmw

    Se você gostou e quer me retribuir pode me dar um credito cheers
    Alucard
    Alucard
    Semi-programador
    Semi-programador

    Mensagens : 191
    Credibilidade : 9

    Unificador de Tilesets Empty Re: Unificador de Tilesets

    Mensagem por Alucard em Sab Mar 31, 2012 8:52 pm

    gostei sempre é bom fazer uma fusão kkkkkk

    o bom é que tem mais variedade
    tecao98
    tecao98
    Membro Experiente
    Membro Experiente

    Mensagens : 146
    Credibilidade : 17

    Unificador de Tilesets Empty Re: Unificador de Tilesets

    Mensagem por tecao98 em Dom Abr 01, 2012 10:59 am

    Vlw pelo agradecimento kara...

    Conteúdo patrocinado

    Unificador de Tilesets Empty Re: Unificador de Tilesets

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qui Set 19, 2019 6:02 pm