Vai al contenuto

Rilevato Ad-Blocker. Per favore disabilita il tuo adblocker quando navighi su makerando.com - Non c'è nessun annuncio invasivo.

  • Chatbox

    You don't have permission to chat.
    Load More
Ally

Maker tool Vx To Xp Char Converter

Recommended Posts

Titolo: Vx To Xp Char Converter

Versione: 1.0

Autore/i: game_guy

 

Informazioni:

Converte Chara VX in Chara XP

 

Screenshots:

 

213m6bb.jpg->2dmea28.jpg

 

Istruzioni:

Mettete il file nella cartella giusta e avviate il gioco e convertirà automaticamente...

Ah se all'avvio vi da errore è perchè dovete creare la cartella 3x4 che serve per mettere i file a un chara.. le conversioni le trovate nella cartella Converted...

 

Script:

#===============================================================================
#===============================================================================
# Vx To Xp Char Converter
# Version 1.0
# Author game_guy
#-------------------------------------------------------------------------------
# Intro
# Converts the little vx guys to xp format.
#
# Features
# Converts the 12x8 frame chars (ones with 8 people)
# Converts the 3x4 frame chars (the single person)
#
# Instructions
# Just place character files in the Chars/12x8 folder for 12x8 chars.
# Place files in Chars/3x4 folder for 3x4 chars. 
# Then run the game, it'll convert it for you.
#
# Credits
# game_guy ~ for making it
# Fantasist ~ teaching me how to get files from folder, and how to use bitmap to
#             png code
# 66rpg ~ for their bitmap to png code
# 
#===============================================================================
=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
module GameGuy
  def self.vxconvert(file)
    begin
      char = GameGuy.character(file, 0)
    rescue
      $skipped += 1
      return
    end
    width = char.width / 4
    height = char.height / 2
    vxwidth = width / 3
    index = 0
    xx = 0
    yy = 0
    unless FileTest.directory?("Converted/#{file}/")
      Dir.mkdir("Converted/#{file}/")
    end
    loop do
      bitmap = Bitmap.new(width + vxwidth, height)
      rect1 = Rect.new(xx+vxwidth, yy, vxwidth, height)
      bitmap.blt(0, 0, char, rect1)
      rect2 = Rect.new(xx, yy, width, height)
      bitmap.blt(vxwidth, 0, char, rect2)
      bitmap.make_png("#{file} #{index}", "Converted/#{file}/")
      bitmap.dispose
      bitmap = nil
      if index == 7 
        $converted += 1
        break
      end
      index += 1
      case index
      when 0,4
        xx = width*0
      when 1,5
        xx = width*1
      when 2,6
        xx = width*2
      when 3,7
        xx = width*3
      end
      if index == 4
        yy = height
      end
    end
  end
  def self.svxconvert(file)
    begin
      char = GameGuy.scharacter(file, 0)
    rescue
      $skipped += 1
      return
    end
    width = char.width / 3
    height = char.height
    bitmap = Bitmap.new(width * 4, height)
    rect1 = Rect.new(width, 0, width, height)
    bitmap.blt(0, 0, char, rect1)
    rect2 = Rect.new(0, 0, width * 3, height)
    bitmap.blt(width, 0, char, rect2)
    unless FileTest.directory?("Converted/#{file}/")
      Dir.mkdir("Converted/#{file}/")
    end
    bitmap.make_png("#{file}", "Converted/#{file}/")
    $converted += 1
  end
end
module GameGuy
    @cache = {}
    def self.load_bitmap(folder_name, filename, hue = 0)
      path = folder_name + filename
      if not @cache.include?(path) or @cache[path].disposed?
        if filename != ""
          @cache[path] = Bitmap.new(path)
        else
          @cache[path] = Bitmap.new(32, 32)
        end
      end
      if hue == 0
        @cache[path]
      else
        key = [path, hue]
        if not @cache.include?(key) or @cache[key].disposed?
          @cache[key] = @cache[path].clone
          @cache[key].hue_change(hue)
        end
        @cache[key]
      end
    end
    def self.character(filename, hue)
      self.load_bitmap("Chars/12x8/", filename, hue)
    end
    def self.scharacter(filename, hue)
      self.load_bitmap("Chars/3x4/", filename, hue)
    end
  end

begin
  
  unless FileTest.directory?("Converted")
    Dir.mkdir("Converted")
  end
  $time = Time.now
  $converted = 0
  $skipped = 0
  @names = []
  dir = Dir.new('Chars/12x8/')
  dir.entries.each {|file| next unless file.include?('.png')
  @names.push(file); GameGuy.character(file, 0)}
  for i in [email protected]
    GameGuy.vxconvert(@names[i])
  end
  @names = []
  dir = Dir.new('Chars/3x4/')
  dir.entries.each {|file| next unless file.include?('.png')
  @names.push(file); GameGuy.scharacter(file, 0)}
  for i in [email protected]
    GameGuy.svxconvert(@names[i])
  end
  print "Converted #{$converted} files in #{Time.now - $time} seconds" + "\n" +
        "Total Skipped Files: #{$skipped}"
  exit
end
Demo:

Download

 

Incompatibilita:

Nessuna incompatibilità riscontrata.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

You need to be a member in order to leave a comment

Crea un account

Iscriviti per un nuovo account nella nostra comunità. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

  • Contenuti simili

    • Da Ally
      Nome Script: FIX Pictures su mappa
      Versione: 1.0
      Autore/i: Ally

      Informazioni:
      Vedendo uno script per VX, ne ho fatta una versione per VX Ace, sperando possa essere utile a qualcuno.

      Quest'ultimo, come da titolo, da la possibilità di fissare le picture su mappa, dandovi la possibilità quindi di utilizzare picture che staranno ancorate sulla mappa anche se il PG si muove.

      La cosa si può fare benissimo anche ad eventi, ma l'utilizzo di questo è semplicissimo e in questo modo non starete a settarvi varibili etc...

      Istruzioni:
      Inserite lo script sotto Material.

      Le istruzioni sono all'interno dello script.

      Script:
      #======================================================= # ▼FIX Picture su Mappa▼ # Autore: Ally # Data: 08/01/2012 # Versione: 1.0 # Esclusiva per http://www.rpgmkr.net # Vietato postare lo script senza il permesso dell'Autore # # ▼Info e Istruzioni▼ # Con questo script si ha la possibilità di fissare # le picture alla mappa aggiungendo semplicemente la # parola FIX prima del nome della picture. # # ▼Conflitti Noti: N/D▼ #======================================================= #============================================================================== # ** Sprite_Picture #------------------------------------------------------------------------------ #  This sprite is used to display pictures. It observes an instance of the # Game_Picture class and automatically changes sprite states. #============================================================================== class Sprite_Picture < Sprite def update_position if @picture.name.include?("FIX") self.x = -$game_map.display_x*32 self.y = -$game_map.display_y*32 else self.x = @picture.x self.y = @picture.y end self.z = @picture.number end end # Fine Script # Incompatibilità:
      N/D

      Note dell'Autore:
      Per uso a scopo commerciale, contattate l'Autore per MP.
      E' vietato distribuire lo script senza il permesso dell'Autore.
    • Da Ally
      Nome Script: Visible Debug
      Versione: 1.2c
      Autore/i: mikb89
       
      Informazioni:
      Capita che qualcosa vada storto fra switch e variabili. Non sai cosa succede, sai solo che non funziona come previsto. Qui entra in gioco questo script!
       
      Features:
      Con questo script puoi tenere sotto controllo una lista di parametri vari i cui cambiamenti saranno mostrati in tempo reale. Questa lista include:
      switch e variabili, switch locali degli eventi; grafica di eventi, giocatore, eroi, nemici; posizione e stato 'Come fantasma' di eventi e giocatore; id dei tile dove si trova il giocatore; numero di oggetti, armi, armature possedute; hp, mp, tp (se abilitato), atk, def, luk, agi, due stati dei combattenti; nomi & livello degli eroi (i nemici non li hanno); altre informazioni utili aggiunte dalle configurazioni (puoi vedere come sono fatte e aggiungerne di tue). Screenshots:
       
      Istruzioni:
      Inserite lo script sotto Materials. Le istruzioni sono fra i commenti.
       
      Script
       
      Demo:
      Demo multilingua v. 1.2c (1.33 MB)
      http://www.mediafire.com/?o5dqoberdpn9opa
       
      Incompatibilità:
      I salvataggi vengono modificati per contenere la lista di dati scelta. È possibile comunque caricare salvataggi precedenti, mentre per continuare ad usare quelli effettuati in presenza dello script, nel caso quest'ultimo venisse rimosso, è presente nella demo un piccolo codicino - per nulla invadente - da lasciare.
       
      Note dell'autore:
      Grazie a @Silver Element per avermi ispirato l'idea (:
      Grazie a @Melosx per avermi supportato con un fastidioso bug ^^
    • Da Ally
      Nome Script: Link Event
      Versione: 1.60
      Autore/i: kingartur2(kingartur3)

      Informazioni:
      Nello script ce ne sono a suffienza.
      PS : se ci sono suggerimenti sono bel accolti.

      Istruzioni:
      Le trovate sempre nello script

      Script:


      #===============================================================================# Autore : kingartur2(kingartur3)# Versione : 1.60#===============================================================================# Istruzioni :# Apporre in un evento il seguente commento :## Link Event x## dove x rappresenta l'id dell'evento da collegare# in questo modo le switch locali dell'evento con id x non saranno più# considerate e le sue switch locali saranno on se tutti gli eventi ad esso# collegati avranno quella switch locale ad on.# Esempio :# Colleghi l'evento con id 1, 2, e 3 all'evento 4.# Se tramite il comando evento cambi la switch locale A dell'evento 4 non# succede nulla, se invece nell'evento 1,2 e 3 la switch locale A risulterà# a ON allora anche nell'evento 4 sarà così, però se nell'evento 1 e 2 la switch# locale A sarà ON e nell'evento 3 sarà OFF allora sarà OFF anche nell'evento 4## Link Event [id mappa, x]# Funziona allo stesso modo del comando precedente con la differenza che in# questo caso l'evento linkato si troverà in un altra mappa#===============================================================================class Game_Map attr_accessor :link_event alias djasijdiasj initialize def initialize djasijdiasj @link_event = [] endendclass Game_Event alias fshfusdhfusdih setup_page def setup_page(new_page) fshfusdhfusdih(new_page) if [email protected]? for i in @page.list if [108, 408].include?(i.code) if i.parameters[0].downcase.include?("link event") a = i.parameters[0].clone.downcase.gsub!("link event") {""} write_link_event(a.to_i) end if i.parameters[0].downcase.include?("link event [") or i.parameters[0].downcase.include?("link event[") a = i.parameters[0].clone.downcase.gsub!("link event") {""} eval("@b = " + a) write_overlink_event(@ end end end end end def write_link_event(id) if $game_map.link_event[$game_map.map_id].nil? $game_map.link_event[$game_map.map_id] = [] end if $game_map.link_event[$game_map.map_id][id].nil? $game_map.link_event[$game_map.map_id][id] = [] end $game_map.link_event[$game_map.map_id][id].push(self.id) end def write_overlink_event(val) if $game_map.link_event[val[0]].nil? $game_map.link_event[val[0]] = [] end if $game_map.link_event[val[0]][val[1]].nil? $game_map.link_event[val[0]][val[1]] = [] end $game_map.link_event[val[0]][val[1]].push([$game_map.map_id, self.id]) end endclass Game_SelfSwitches alias jfdsijfd [] def [](key) if !$game_map.link_event[key[0]].nil? if !$game_map.link_event[key[0]][key[1]].nil? state = true for i in $game_map.link_event[key[0]][key[1]] if i.is_a?(Array) if !$game_self_switches[[i[0], i[1], key[2]]] state = false end elsif !$game_self_switches[[key[0], i, key[2]]] state = false end end return state end end jfdsijfd(key) endend Demo:
      Coming Soon(Se richiesta, vista la semplicità dello script))

      Incompatibilità:
      N/A
    • Da Ally
      Nome Script: Switch Menu
      Versione: N/D
      Autore/i: Zerbu

      Informazioni:
      Come da titolo, con questo script si possono richiamare ad esempio degli eventi comuni al posto del menù etc...

      Screenshots:



      Istruzioni:
      Inserite lo script sotto Material.
      Istruzioni del suo funzionamento come da screen

      Script:


      #============================================================================== # › Switch Menu ‹ #------------------------------------------------------------------------------ # Using this script you can make it so that when the menu is called, a # switch is turned on instead. You can still open the menu by using a # [Open Menu Screen] event call. You can use the switch to create a common # event in place of the menu, or anthing else you want. #------------------------------------------------------------------------------ # by Zerbu #============================================================================== $imported = {} if $imported.nil? $imported["SwitchMenu"] = true #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= module SwitchMenu   #============================================================================   # ♦ Switch ID ♦   #----------------------------------------------------------------------------   # Set the switch you want turned on~   #============================================================================   SWITCH_ID = 1   #--- end #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= #============================================================================== # » Scene_Map #============================================================================== class Scene_Map   #----------------------------------------------------------------------------   # » overwrite method: call_menu   #----------------------------------------------------------------------------   def call_menu         $game_switches[SwitchMenu] = true         @menu_calling = false   end   #--- end
    • Da Ally
      Nome Script: MSX - XP Characters on VX/VXAce
      Versione: 1.0
      Autore/i: Melosx
       
      Informazioni:
      Lo script permette di usare i chara xp nel vx semplicemente inserendo il tag $xp.
      Compatibile con VX e VXAce.
       
      Istruzioni:
      All'interno dello script.
       
      Script:
       

      #============================================================================== # ** MSX - XP Characters on VX/VXAce #============================================================================== # Autore: Melosx # Versione: 1.0 # Compatibile con VX e VXAce # #============================================================================== # * Descrizione # ----------------------------------------------------------------------------- # Lo script permette di usare i chara xp nel vx semplicemente inserendo il tag # $xp # prima del nome del file. # Potete quindi usare i normali VX/VXAce insieme a quelli dell'XP. # #============================================================================== # * Istruzioni # ----------------------------------------------------------------------------- # Inserire lo script sotto Materials e sopra Main. Aggiungere ai chara dell'XP # il tag $xp prima del nome. # #============================================================================== #============================================================================== # ** Sprite_Character #============================================================================== class Sprite_Character < Sprite_Base def update_bitmap if @tile_id != @character.tile_id or @character_name != @character.character_name or @character_index != @character.character_index @tile_id = @character.tile_id @character_name = @character.character_name @character_index = @character.character_index if @tile_id > 0 sx = (@tile_id / 128 % 2 * 8 + @tile_id % 8) * 32; sy = @tile_id % 256 / 8 % 16 * 32; self.bitmap = tileset_bitmap(@tile_id) self.src_rect.set(sx, sy, 32, 32) self.ox = 16 self.oy = 32 else self.bitmap = Cache.character(@character_name) sign = @character_name[/^[!$]./] if sign != nil and sign.include?('$') @cw = bitmap.width / 3 @ch = bitmap.height / 4 else @cw = bitmap.width / 12 @ch = bitmap.height / 8 end if @character_name != nil and @character_name.include?('$xp') @cw = bitmap.width / 4 @ch = bitmap.height / 4 end self.ox = @cw / 2 self.oy = @ch end end end def update_src_rect if @character_name != nil and @character_name.include?('$xp') if @tile_id == 0 pattern = @character.pattern > 0 ? @character.pattern - 1 : 3 sx = pattern * @cw sy = (@character.direction - 2) / 2 * @ch self.src_rect.set(sx, sy, @cw, @ch) end else if @tile_id == 0 index = @character.character_index pattern = @character.pattern < 3 ? @character.pattern : 1 sx = (index % 4 * 3 + pattern) * @cw sy = (index / 4 * 4 + (@character.direction - 2) / 2) * @ch self.src_rect.set(sx, sy, @cw, @ch) end end end end #============================================================================== # ** Window_Base #============================================================================== class Window_Base < Window def draw_character(character_name, character_index, x, y) return if character_name == nil bitmap = Cache.character(character_name) sign = character_name[/^[!$]./] if character_name != nil and character_name.include?('$xp') cw = bitmap.width / 4 ch = bitmap.height / 4 n = character_index src_rect = Rect.new(0, 0, cw, ch) else if sign != nil and sign.include?('$') cw = bitmap.width / 3 ch = bitmap.height / 4 else cw = bitmap.width / 12 ch = bitmap.height / 8 end n = character_index src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch) end self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect) end end
×