Ergebnis 1 bis 3 von 3

Thema: Richtung eines Charakter ändern

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #3
    Hey Perusa,

    Bau dieses Script (am besten erstellst du dafür kurz ein neues Projekt) in dein RMXP Projekt ein (das Modul zum Speichern der PNG Datei habe ich vom Lighteffect Script von trebor777 verwendet):

    Code:
    def convert_all_characters()
      tdir = Dir["./Graphics/Characters/*.*"]
      tdir.each do |dr|
        convert_character(dr.split("/").last)
      end  
      p("Done!")
    end
    
    def convert_character(character_name)
      bitmap_old = RPG::Cache.character(character_name,0)
      bitmap_new = Bitmap.new(bitmap_old.width,bitmap_old.height)
      dir_height = bitmap_old.height/4
      
      bitmap_new.blt(0,dir_height*0,bitmap_old,Rect.new(0,dir_height*2,bitmap_old.width,dir_height))
      bitmap_new.blt(0,dir_height*1,bitmap_old,Rect.new(0,dir_height*3,bitmap_old.width,dir_height))
      bitmap_new.blt(0,dir_height*2,bitmap_old,Rect.new(0,dir_height*1,bitmap_old.width,dir_height))
      bitmap_new.blt(0,dir_height*3,bitmap_old,Rect.new(0,dir_height*0,bitmap_old.width,dir_height))
    
      bitmap_new.make_png(character_name,"./Graphics/Characters/Neu/")
    end
    
    
    
    
    ###Ab hier ist alles aus dem LightEffect Skript von Trebor777
    module Zlib
      #============================================================================
      # ** Png_File    
      #============================================================================
     
      class Png_File < GzipWriter
        #--------------------------------------------------------------------------
        # * Make PNG
        #--------------------------------------------------------------------------
        def make_png(bitmap, mode = 0)
          # Save Bitmap & Mode
          @bitmap, @mode = bitmap, mode
          # Create & Save PNG
          self.write(make_header)
          self.write(make_ihdr)
          self.write(make_idat)
          self.write(make_iend)
        end
        #--------------------------------------------------------------------------
        # * Make Header
        #--------------------------------------------------------------------------
        def make_header
          return [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a].pack('C*')
        end
        #--------------------------------------------------------------------------
        # * Make IHDR
        #--------------------------------------------------------------------------
        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
        #--------------------------------------------------------------------------
        # * Make IDAT
        #--------------------------------------------------------------------------
        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
        #--------------------------------------------------------------------------
        # * Make Bitmap Data 0
        #--------------------------------------------------------------------------
        def make_bitmap_data0
          gz = Zlib::GzipWriter.open('hoge.gz')
          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)
            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
        #--------------------------------------------------------------------------
        # * Make Bitmap Data Mode 1
        #--------------------------------------------------------------------------
        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)
            end
          end
          return data.pack("C*")
        end
        #--------------------------------------------------------------------------
        # * Make 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
    #=============================================================================
    class Bitmap
      def make_png(name = 'like', path = '', mode = 0)
        Dir.mkdir(path) if path != '' and !FileTest.directory?(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
    end
    Anschließend rufst du das Script über ein Event (3. Reiter, ganz unten Rechts auf "Script" klicken) folgendermaßen auf:
    convert_all_characters()

    Dann sollte das Script alle Charaktergrafiken aus dem "Graphics/Characters" Ordner in den Ordner "./Neu" konvertieren.

    @Stary:
    Die Reihenfolge der Blickrichtungen ist unterschiedlich. Bei den alten ist es: Oben,Rechts,Unten,Links. Bei den neuen ist Unten,Links,Rechts,Oben

    Geändert von Linkey (16.06.2014 um 22:01 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •