设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1203|回复: 1
打印 上一主题 下一主题

[已经解决] RPG MAKER VX 地图保存为图片~求教

[复制链接]

Lv1.梦旅人

梦石
0
星屑
640
在线时间
0 小时
注册时间
2014-6-17
帖子
1
跳转到指定楼层
1
发表于 2014-6-17 14:25:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
RT:
需求:弄好地图了,但是想把整张地图保存成一张图片
遭遇:地图大~截图多,边还要对齐,拼接手残估计会有误差。求解那些个截图脚本,用了按F7都没反应,不知道为何(脚本放的位置不对,还是少了什么插件吗?)

求大神指引光明大道!!!!!!!!!!!!!!

Lv2.观梦者

永无止境的旅程

梦石
0
星屑
503
在线时间
1552 小时
注册时间
2012-6-19
帖子
1226

开拓者贵宾

2
发表于 2014-6-18 11:12:36 | 只看该作者
试一下这个,地图上按F7可以截图当前画面。
不过首先你要在游戏目录新建一个Album文件夹
  1. #==============================================================================
  2. #  Screenshot
  3. #  Version: 1.0
  4. #  Author: modern algebra (rmrk.net)
  5. #  Date: April 5, 2010
  6. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  7. #  Description:
  8. #    This script allows the player to take a screenshot of any area in the game
  9. #   that he/she wants. Useful for sharing achievements I suppose.
  10. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  11. #  Instructions:
  12. #    All you need to do is set which button you want to use for taking
  13. #   screenshots with at line 31, and set the destination folder for screenshots
  14. #   at line 33.
  15. #    If you want to force a screenshot, you can put this code in a call script:
  16. #       $scene.take_screenshot
  17. #==============================================================================
  18. #==============================================================================
  19. # ** Scene_Base
  20. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  21. #  Summary of Changes:
  22. #    new constant - MA_SCREENSHOT_BUTTON, MA_SCREENSHOT_PATH
  23. #    aliased method - update
  24. #==============================================================================

  25. class Scene_Base
  26.   #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  27.   # * CONSTANTS
  28.   #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  29.   #  MA_SCREENSHOT_BUTTON - the button to press to take a Screenshot
  30.   MA_SCREENSHOT_BUTTON = Input::F7
  31.   #  MA_SCREENSHOT_PATH - the path to save the file
  32.   MA_SCREENSHOT_PATH = "Album/Photograph "
  33.   #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  34.   # * Frame Update
  35.   #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  36.   alias modag_screenshot_upd_9ik2 update
  37.   def update (*args)
  38.     modag_screenshot_upd_9ik2 (*args) # Run Original Method
  39.     if Input.trigger? (MA_SCREENSHOT_BUTTON)
  40.       take_screenshot
  41.     end
  42.   end
  43.   #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  44.   # * Take Screenshot
  45.   #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  46.   def take_screenshot
  47.     x = 1
  48.     while FileTest.exist? ("#{MA_SCREENSHOT_PATH}#{x}.png")
  49.       x += 1
  50.     end
  51.     Graphics.snap_to_bitmap.make_png (x.to_s, MA_SCREENSHOT_PATH, 1)
  52.   end
  53. end
  54. #==============================================================================
  55. #  Everything below this point is the PNG Saver script, written by 66rpg.com
  56. #==============================================================================

  57. # PNG Saver by 66rpg.com

  58. module Zlib
  59.   class Png_File < GzipWriter
  60.     def make_png(bitmap, mode = 0)
  61.       @bitmap, @mode = bitmap, mode
  62.       self.write(make_header)
  63.       self.write(make_ihdr)
  64.       self.write(make_idat)
  65.       self.write(make_iend)
  66.     end
  67.     def make_header
  68.       return [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a].pack('C*')
  69.     end
  70.     def make_ihdr
  71.       ih_size               = [13].pack('N')
  72.       ih_sign               = 'IHDR'
  73.       ih_width              = [@bitmap.width].pack('N')
  74.       ih_height             = [@bitmap.height].pack('N')
  75.       ih_bit_depth          = [8].pack('C')
  76.       ih_color_type         = [6].pack('C')
  77.       ih_compression_method = [0].pack('C')
  78.       ih_filter_method      = [0].pack('C')
  79.       ih_interlace_method   = [0].pack('C')
  80.       string = ih_sign + ih_width + ih_height + ih_bit_depth + ih_color_type +
  81.                ih_compression_method + ih_filter_method + ih_interlace_method
  82.       ih_crc = [Zlib.crc32(string)].pack('N')
  83.       return ih_size + string + ih_crc
  84.     end
  85.     def make_idat
  86.       header  = "\x49\x44\x41\x54"
  87.       data    = @mode == 0 ? make_bitmap_data0 : make_bitmap_data1
  88.       data    = Zlib::Deflate.deflate(data, 8)
  89.       crc     = [Zlib.crc32(header + data)].pack('N')
  90.       size    = [data.length].pack('N')
  91.       return size + header + data + crc
  92.     end
  93.     def make_bitmap_data0
  94.       gz = Zlib::GzipWriter.open('png2.tmp')
  95.       t_Fx = 0
  96.       w = @bitmap.width
  97.       h = @bitmap.height
  98.       data = []
  99.       for y in 0...h
  100.         data.push(0)
  101.         for x in 0...w
  102.           t_Fx += 1
  103.           if t_Fx % 10000 == 0
  104.             Graphics.update
  105.             if t_Fx % 100000 == 0
  106.               s = data.pack('C*')
  107.               gz.write(s)
  108.               data.clear
  109.             end
  110.           end
  111.           color = @bitmap.get_pixel(x, y)
  112.           data.push(color.red, color.green, color.blue, color.alpha)
  113.         end
  114.       end
  115.       s = data.pack('C*')
  116.       gz.write(s)
  117.       gz.close  
  118.       data.clear
  119.       gz = Zlib::GzipReader.open('png2.tmp')
  120.       data = gz.read
  121.       gz.close
  122.       File.delete('png2.tmp')
  123.       return data
  124.     end
  125.     def make_bitmap_data1
  126.       w = @bitmap.width
  127.       h = @bitmap.height
  128.       data = []
  129.       for y in 0...h
  130.         data.push(0)
  131.         for x in 0...w
  132.           color = @bitmap.get_pixel(x, y)
  133.           data.push(color.red, color.green, color.blue, color.alpha)
  134.         end
  135.       end
  136.       return data.pack('C*')
  137.     end
  138.     def make_iend
  139.       ie_size = [0].pack('N')
  140.       ie_sign = 'IEND'
  141.       ie_crc  = [Zlib.crc32(ie_sign)].pack('N')
  142.       return ie_size + ie_sign + ie_crc
  143.     end
  144.   end
  145. end

  146. #=============================================================================
  147. # ** Bitmap
  148. #=============================================================================
  149. class Bitmap
  150.   def make_png(name = 'like', path = '', mode = 0)
  151.     #Audio.se_play("Audio/SE/weapon00", 100, 150)
  152.     Sound.play_escape
  153.     Zlib::Png_File.open('png.tmp')   { |gz| gz.make_png(self, mode) }
  154.     Zlib::GzipReader.open('png.tmp') { |gz| $read = gz.read }
  155.     f = File.open(path + name + '.png', 'wb')
  156.     f.write($read)
  157.     f.close
  158.     File.delete('png.tmp')
  159.   end
  160. end
复制代码
[url=https://rpg.blue/thread-389697-1-1.html]https://rpg.blue/https://rpg.blue/data/attachment/forum/201602/26/220128cfbxxs47xth4xkz4.jpg[/url]
&lt;font size=&quot;5&quot;&gt;[color=Green][url=https://rpg.blue/forum.php?mod=viewthread&amp;tid=396208&amp;extra=page%3D1][color=DeepSkyBlue]全新配套ACT系统,每周末一大更新,尽请期待。[/color][/url][/color]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-15 12:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表