Project1
标题:
RPG MAKER VX 地图保存为图片~求教
[打印本页]
作者:
cclxc61259425
时间:
2014-6-17 14:25
标题:
RPG MAKER VX 地图保存为图片~求教
RT:
需求:弄好地图了,但是想把整张地图保存成一张图片
遭遇:地图大~截图多,边还要对齐,拼接手残估计会有误差。求解那些个截图脚本,用了按F7都没反应,不知道为何(脚本放的位置不对,还是少了什么插件吗?)
求大神指引光明大道!!!!!!!!!!!!!!
作者:
丿梁丶小柒
时间:
2014-6-18 11:12
试一下这个,地图上按F7可以截图当前画面。
不过首先你要在游戏目录新建一个Album文件夹
#==============================================================================
# Screenshot
# Version: 1.0
# Author: modern algebra (rmrk.net)
# Date: April 5, 2010
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Description:
# This script allows the player to take a screenshot of any area in the game
# that he/she wants. Useful for sharing achievements I suppose.
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Instructions:
# All you need to do is set which button you want to use for taking
# screenshots with at line 31, and set the destination folder for screenshots
# at line 33.
# If you want to force a screenshot, you can put this code in a call script:
# $scene.take_screenshot
#==============================================================================
#==============================================================================
# ** Scene_Base
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Summary of Changes:
# new constant - MA_SCREENSHOT_BUTTON, MA_SCREENSHOT_PATH
# aliased method - update
#==============================================================================
class Scene_Base
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * CONSTANTS
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# MA_SCREENSHOT_BUTTON - the button to press to take a Screenshot
MA_SCREENSHOT_BUTTON = Input::F7
# MA_SCREENSHOT_PATH - the path to save the file
MA_SCREENSHOT_PATH = "Album/Photograph "
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Frame Update
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias modag_screenshot_upd_9ik2 update
def update (*args)
modag_screenshot_upd_9ik2 (*args) # Run Original Method
if Input.trigger? (MA_SCREENSHOT_BUTTON)
take_screenshot
end
end
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Take Screenshot
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def take_screenshot
x = 1
while FileTest.exist? ("#{MA_SCREENSHOT_PATH}#{x}.png")
x += 1
end
Graphics.snap_to_bitmap.make_png (x.to_s, MA_SCREENSHOT_PATH, 1)
end
end
#==============================================================================
# Everything below this point is the PNG Saver script, written by 66rpg.com
#==============================================================================
# PNG Saver by 66rpg.com
module Zlib
class Png_File < GzipWriter
def make_png(bitmap, mode = 0)
@bitmap, @mode = bitmap, mode
self.write(make_header)
self.write(make_ihdr)
self.write(make_idat)
self.write(make_iend)
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, 8)
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
if t_Fx % 100000 == 0
s = data.pack('C*')
gz.write(s)
data.clear
end
end
color = @bitmap.get_pixel(x, y)
data.push(color.red, color.green, color.blue, color.alpha)
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)
data.push(color.red, color.green, color.blue, color.alpha)
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)
#Audio.se_play("Audio/SE/weapon00", 100, 150)
Sound.play_escape
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
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1