Super Maker Forums
Please Login or Sign Up to activate member privileges



 
HomeMy PortalWIXSuper Maker ChatroomShinGamix StudiosSuper Maker is Now On YouTubeSuper Maker is Now on FaceBookRegisterLog inDeviantArt ClubSign up for Super Maker Tweets

Share | 
 

 Omegas7 Map Saver Ace

View previous topic View next topic Go down 
AuthorMessage
ShinGamix
Admin
Admin
avatar

Male
Location : Rules this forum
Join date : 2011-04-17
Posts : 727
Birthday : 1913-07-09
Age : 103

PostSubject: Omegas7 Map Saver Ace   Fri Mar 23, 2012 10:00 pm

# =============================================================================
# Map Saver
# Version 0.1
# Author: Omegas7. Site: [You must be registered and logged in to see this link.]
# Credit: Woratana for PNG Saver script.
# RGSS3 by Yami (yamiryzayuki)
# Original Topic [You must be registered and logged in to see this link.]
# =============================================================================
# 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 Wink.
# =============================================================================
# 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?(Cool
$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 [You must be registered and logged in to see this link.]
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,Graphics.width,Graphics.height))
end
@result.make_png('Map','')
print "Map image production is over!"
exit
end
end
end
end
end
def execute_image
Graphics.freeze
@bitmaps.push([Graphics.snap_to_bitmap,
$game_map.display_x,
$game_map.display_y,
nil])
@moving = false
Graphics.transition(@pause_time)
if can_move?(Cool && 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) == ($game_map.width - Graphics.width / 32)
return true
when 2
return false if ($game_map.display_y) == ($game_map.height - Graphics.height / 32)
return true
when 4
return false if ($game_map.display_x == 0)
return true
when 8
return false if ($game_map.display_y == 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] = (w*h).to_f
@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, Cool
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
Back to top Go down
http://shingamix.forumotion.com
 

Omegas7 Map Saver Ace

View previous topic View next topic Back to top 
Page 1 of 1

 Similar topics

-
» recommend me a manga
» MITH.TRUST DOTA2 BOOTCAMP PICS

Permissions in this forum:You cannot reply to topics in this forum
Super Maker Forums :: The Forum :: RPG Maker Scripting Support :: Ace Scripts Storage-