赞 | 3 |
VIP | 300 |
好人卡 | 28 |
积分 | 5 |
经验 | 86206 |
最后登录 | 2023-8-1 |
在线时间 | 1552 小时 |
Lv2.观梦者 永无止境的旅程
- 梦石
- 0
- 星屑
- 503
- 在线时间
- 1552 小时
- 注册时间
- 2012-6-19
- 帖子
- 1226
|
试一下这个,地图上按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
复制代码 |
|