Kami_DDom Ago 26, 2012 1:16 pm
Moderador
Ya tengo demasiado tiempo sin aportar nada, pero como hace poco comenze el instituto no tenia mucho tiempo.
Características:
-Toma imágenes del Juego en formato .png y .bmp.
-El formato bmp es instantáneo, las .png son mas pequeñas pero toman más tiempo.
Creditos: Jet, Zeus81
Características:
-Toma imágenes del Juego en formato .png y .bmp.
-El formato bmp es instantáneo, las .png son mas pequeñas pero toman más tiempo.
- Código:
#===============================================================================
# Screenshot Taker
# By Jet10985 (Jet)
# PNG and BMP saving code by: Zeus81
#===============================================================================
# This script will allow you to take screenshots of the current gamescreen
# with the push of a button
# This script has: 7 customization options.
#===============================================================================
# Overwritten Methods:
# None
#-------------------------------------------------------------------------------
# Aliased methods:
# Graphics: update
#===============================================================================
=begin
Notes:
All screenshots are saved in a folder in the game directory called "Screenshots"
and they are named sequentially, depending on how many screenshots are in
the folder already.
=end
module JetScreenshotTaker
# Do you want to save the screenshot as a .bmp, or a .png?
# .bmp is basically instant, and is 32-bit but the alpha channel is not
# compatible with every image editing program.
# .png is slightly slower but it is usually smaller than the .bmp
# true is for .png, false if for .bmp
SAVE_AS_PNG = true
# Which button do you have to press to take a screenshot?
SCREENSHOT_BUTTON = Input::F5
# Do you want a pop-up window to appear when a screenshot has been taken?
# The popup window will display how many seconds it took for the screenshot
POPUP_SCREENSHOT_WINDOW = true
# Would you like a sound effect played when a screenshot is taken?
SCREENSHOT_SE = true
# What SE would you like played?
SCREENSHOT_SE_FILE = ""
# Do you want to add a "Watermark" or some other image ontop of screenshots?
WATERMARK = false
# What is the name of the watermark image name?
# This should be in the Pictures folder
# Watermark image starts at (0, 0) which is top left, so make the image
# screen-sized and place the contents accordingly.
WATERMARK_IMAGE = "Watermark"
end
#===============================================================================
# DON'T EDIT FURTHER UNLESS YOU KNOW WHAT TO DO.
#===============================================================================
# Bitmap export v 3.0 by Zeus81
class Bitmap
RtlMoveMemory_pi = Win32API.new('kernel32', 'RtlMoveMemory', 'pii', 'i')
RtlMoveMemory_ip = Win32API.new('kernel32', 'RtlMoveMemory', 'ipi', 'i')
def address
RtlMoveMemory_pi.call(a = "\0" * 4, __id__ * 2 + 16, 4)
RtlMoveMemory_pi.call(a, a.unpack('L')[0] + 8, 4)
RtlMoveMemory_pi.call(a, a.unpack('L')[0] + 16, 4)
a.unpack('L')[0]
end
def export(filename)
jet_file_type = JetScreenshotTaker::SAVE_AS_PNG ? ".png" : ".bmp"
Dir.mkdir("Screenshots") unless File.directory?("Screenshots")
filename = "Screenshots/Screenshot #{Dir.entries("Screenshots").size - 1}#{jet_file_type}"
file = File.open(filename, 'wb')
case format=File.extname(filename)
when '.bmp'
data, size = String.new, width*height*4
RtlMoveMemory_ip.call(data.__id__*2+8, [size,address].pack('L2'), 8)
file.write(['BM',size+54,0,54,40,width,height,1,32,0,size,0,0,0,0].pack('a2L6S2L6'))
file.write(data)
RtlMoveMemory_ip.call(data.__id__*2+8, "\0"*8, 8)
when '.png'
def file.write_chunk(chunk)
write([chunk.size-4].pack('N'))
write(chunk)
write([Zlib.crc32(chunk)].pack('N'))
end
file.write("\211PNG\r\n\32\n")
file.write_chunk("IHDR#{[width,height,8,6,0,0,0].pack('N2C5')}")
RtlMoveMemory_pi.call(data="\0"*(width*height*4), address, data.size)
(width*height).times {|i| data[i<<=2,3] = data[i,3].reverse!}
deflate, null_char, w4 = Zlib::Deflate.new(9), "\0", width*4
(height-1).downto(0) {|i| deflate << null_char << data[i*w4,w4]}
file.write_chunk("IDAT#{deflate.finish}")
deflate.close
file.write_chunk('IEND')
when ''; print("Export format missing for '#{filename}'.")
else print("Export format '#{format}' not supported.")
end
file.close
end
end
class << Graphics
alias jet9991_update update unless $@
def update(*args)
jet9991_update(*args)
if Input.trigger?(JetScreenshotTaker::SCREENSHOT_BUTTON)
old_time = Time.now
f = Graphics.snap_to_bitmap
if JetScreenshotTaker::WATERMARK
a = Cache.picture(JetScreenshotTaker::WATERMARK_IMAGE)
f.blt(0, 0, a, a.rect)
end
f.export("Image")
if JetScreenshotTaker::SCREENSHOT_SE
RPG::SE.new(JetScreenshotTaker::SCREENSHOT_SE_FILE, 100, 100).play
end
if JetScreenshotTaker::POPUP_SCREENSHOT_WINDOW
time = Time.now
real_time = (time - old_time)
elapsed_time = (real_time * 1000.0).to_i / 1000.0
p "Screenshot taken: #{elapsed_time} seconds"
end
end
end
end
Creditos: Jet, Zeus81