AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  



Le Deal du moment : -40%
Tefal Ingenio Emotion – Batterie de cuisine 10 ...
Voir le deal
59.99 €

Partagez
 

 (Résolu) Rendre l'omega Map Saver compatible avec vx Ace

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
RitoJS
Modérateur
Modérateur
RitoJS


Masculin Age : 29
Inscrit le : 22/12/2011
Messages : 1600

(Résolu) Rendre l'omega Map Saver compatible avec vx Ace Empty
MessageSujet: (Résolu) Rendre l'omega Map Saver compatible avec vx Ace   (Résolu) Rendre l'omega Map Saver compatible avec vx Ace Icon_minitimeLun 30 Avr 2012 - 19:30

Bonsoirs, je voudrais savoir si il est possible de rendre l'omega Map Saver compatible avec VX Ace.
Cela me faciliterais grandement la tâche pour pouvoir mappé en panorama.
Et voilà le script:
Code:
# =============================================================================
# Map Saver
# Version 0.1
# Author: Omegas7.  Site: http://www.myrpgmaker.com
# Credit: Woratana for PNG Saver script.
# =============================================================================
# Save a whole map into a .png file by taking multiple screenshots and finally
# combining them. Exporting the resulting bitmap to a .png image file using
# Woratana's PNG Saver script.
# =============================================================================
# Instructions:
#  Go to Paint or whatever image editing software you want.
#  Create a new file, width and height will be the same as your map, but
#  multiplied by 32. (If map's width is 20, the image's width will be 640).
#  Name the image "Blank", and save it on the System folder of your game.
#  Go to your game map, and put the player starting position on the
#  bottom left part of the map.
#  Now make a new event, autorun, with script call:
#  $saver = Map_Saver.new
#  Then turn self-switch A ON.
#  Go to the event's second page, put as condition self-switch A, then put
#  script call:
#  $saver.update
#  Finally make the second page to be autorun as well.
#  Run the game, you will see the map will start scrolling. Let it be.
#  At the end the script will start creating the image file, this process
#  may take several minutes depending on your map's size.
#  Sure, it may take very long, but it saves HOURS if you planned to make
#  your map manually, so do not complain ;).
# =============================================================================
# Notes:
#  The final result will be an image file located on your game's main folder.
#  The image will be exactly what appears on the screen, so if you got a HUD,
#  it will appear as well.
#  If you notice a problem with the final result, like with tiles etc,
#  try activating "weird mode" below.
#  If the final result is still not fixed, try to get support.
# =============================================================================


class Map_Saver
  def initialize
   
    # If the resulting image seems to be wrongly made, try turning this value
    # to "true". Normally, this should be false.
    @weird_mode = false
   
    @result = Bitmap.new('Graphics/System/Blank')
    @bitmaps = []
    @moving = true
    @last_place = 'none'
    @finishing = false
    @pause_time = 30
    @scrolling_x = 13
  end
  def update
    if !(@finishing)
      if !($game_map.scrolling?)
        if @moving
          execute_image
        else
          if can_move?(8)
            $game_map.start_scroll(8, @scrolling_x, 7)
            @moving = true
            @last_place = 'down'
          elsif can_move?(6) && @last_place == 'down'
            $game_map.start_scroll(6, 17, 7)
            @last_place = 'left'
          elsif can_move?(2) && @last_place == 'left'
            $game_map.start_scroll(2, $game_map.height, 9)
            @last_place = 'up'
            @moving = true
          else
            @finishing = true
            for i in 0...@bitmaps.size
              y = @bitmaps[i][2]*32
              if @bitmaps[i][3] == true
                y += 16 if @weird_mode
              end
              @result.blt(@bitmaps[i][1]*32,y,@bitmaps[i][0],
              Rect.new(0,0,544,416))
            end
            @result.make_png('Map','')
            print "Map image production is over!"
            exit
          end
        end
      end
    end
  end
  def execute_image
    Graphics.freeze
    Sound.play_decision
    @bitmaps.push([Graphics.snap_to_bitmap,
    $game_map.display_x/256,
    $game_map.display_y/256,
    nil])
    @moving = false
    Graphics.transition(@pause_time)
    if can_move?(8) && can_move?(2)
      @bitmaps[@bitmaps.size - 1][3] = true
    end
  end
  def can_move?(direction)
    case direction
    when 6
      return false if ($game_map.display_x/256) == ($game_map.width - 17)
      return true
    when 2
      return false if ($game_map.display_y/256) == ($game_map.height - 13)
      return true
    when 4
      return false if ($game_map.display_x/256 == 0)
      return true
    when 8
      return false if ($game_map.display_y/256 == 0)
      return true
    end
  end
end


# =============================================================================
# PNG Saver by Woratana.
# =============================================================================

module Zlib
  class Png_File < GzipWriter
    def make_png(bitmap, mode = 0)
      @bitmap, @mode = bitmap, mode
      create_loader
      self.write(make_header)
      self.write(make_ihdr)
      self.write(make_idat)
      self.write(make_iend)
    end
    def create_loader
      w = @bitmap.width
      h = @bitmap.height
      @calculated = [0,nil]
      @calculated[1] = Float.induced_from(w*h)
      @window = Window_Base.new(0,150,544,116)
      @window.contents.font.size = 16
      @update = ((@bitmap.width*@bitmap.height)/3000.0).floor.to_i
      refresh_loader
    end
    def refresh_loader
      Graphics.update
      @window.contents.clear
      text = ['Creating image file, please wait...',
      percent.to_s + '% done...']
      for i in 0...text.size
        @window.contents.draw_text(0,20*i,520,20,text[i])
      end
      Graphics.update
    end
    def percent
      return ((100/@calculated[1])*@calculated[0]).floor
    end
    def make_header
      return [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a].pack('C*')
    end
    def make_ihdr
      ih_size              = [13].pack('N')
      ih_sign              = 'IHDR'
      ih_width              = [@bitmap.width].pack('N')
      ih_height            = [@bitmap.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
    def make_idat
      header  = "\x49\x44\x41\x54"
      data    = @mode == 0 ? make_bitmap_data0 : make_bitmap_data1
      data    = Zlib::Deflate.deflate(data, 8)
      crc    = [Zlib.crc32(header + data)].pack('N')
      size    = [data.length].pack('N')
      return size + header + data + crc
    end
    def make_bitmap_data0
      gz = Zlib::GzipWriter.open('png2.tmp')
      t_Fx = 0
      w = @bitmap.width
      h = @bitmap.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
          end
          color = @bitmap.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)
          @calculated[0] += 1
          if @calculated[0] % @update == 0
            refresh_loader
          end
        end
      end
      s = data.pack('C*')
      gz.write(s)
      gz.close 
      data.clear
      gz = Zlib::GzipReader.open('png2.tmp')
      data = gz.read
      gz.close
      File.delete('png2.tmp')
      return data
    end
    def make_bitmap_data1
      w = @bitmap.width
      h = @bitmap.height
      data = []
      for y in 0...h
        data.push(0)
        for x in 0...w
          color = @bitmap.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)
          @calculated[0] += 1
          if @calculated[0] % @update == 0
            refresh_loader
          end
        end
      end
      return data.pack('C*')
    end
    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
#=============================================================================
class Bitmap
  def make_png(name = 'like', path = '', mode = 0)
    Zlib::Png_File.open('png.tmp')  { |gz| gz.make_png(self, mode) }
    Zlib::GzipReader.open('png.tmp') { |gz| $read = gz.read }
    f = File.open(path + name + '.png', 'wb')
    f.write($read)
    f.close
    File.delete('png.tmp')
  end
end
Voilà, merci d'avance.^^


Dernière édition par RitoJS le Lun 30 Avr 2012 - 20:37, édité 1 fois
Revenir en haut Aller en bas
http://lunarito.wordpress.com/
RitoJS
Modérateur
Modérateur
RitoJS


Masculin Age : 29
Inscrit le : 22/12/2011
Messages : 1600

(Résolu) Rendre l'omega Map Saver compatible avec vx Ace Empty
MessageSujet: Re: (Résolu) Rendre l'omega Map Saver compatible avec vx Ace   (Résolu) Rendre l'omega Map Saver compatible avec vx Ace Icon_minitimeLun 30 Avr 2012 - 20:37

Oups ! Désolé j'ai mal chercher.^^
C'est résolu !
Revenir en haut Aller en bas
http://lunarito.wordpress.com/
 

(Résolu) Rendre l'omega Map Saver compatible avec vx Ace

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» Rendre ce script compatible avec le SBS + ATB ^^
» [RESOLU] Arbre compatible avec le Mac&Blue
» Menu compatible avec l'ordre amélioré de KGC [non resolu]
» Rendre compatible un script
» HUD compatible avec Yanfly

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Scripts :: Requêtes :: Archives-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Forumactif.com