PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Richtung eines Charakter ändern



Perusa
16.06.2014, 16:06
Ich habe viele Charaktere, aber sie gucken in die Richtung, die für die alten Maker vorgesehen ist.
Und das wäre müßelig das selber zusammenzuschneiden, da es ganz schön viele Charaktere sind.
Die Größe ist schon perfekt, aber sie müssen in die Richtung wie bei XP/VX/Ace gucken.
Kann mir jemand helfen?

Stray
16.06.2014, 21:52
Was meinst du mit der "Richtung" in die sie sehen?
Alle Charaktere haben in jeder RPG Maker Version die Blickrichtungen Oben, Unten, Rechts und Links. Meinst du vielleicht die Blickrichtung der Augen?
Welche Version benutzt du außerdem?

Linkey
16.06.2014, 21:57
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):



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