- 累计送礼:
- 0 个
- 累计收礼:
- 0 个
TA的每日心情 | 开心 6 天前 |
---|
签到天数: 127 天 连续签到: 11 天 [LV.7]常住居民III

管理员
  
- VIP
- 6
- 卡币
- 11285
- OK点
- 16
- 推广点
- 0
- 同能卷
- 0
- 积分
- 14071


|
首先呢,看到了这个帖子:
http://rpg.blue/thread-220151-1-1.html
于是在GOOGLE搜罗给全地图截图的方法,找到了:
http://gameface101.playogame.com/t920-map-screen-shot-rmxp
(外国RM触手真多 = = b 重现了Tilemap这个内部类)
发现这货只能截(其实用“截”并不准确,实际上它是“画”的)到地图元件,截不到事件。
于是本脚本诞生了 - - 可以看做是那个脚本的MOD。 - #==============================================================================# ■ 航拍 v 1.1 by 各种压力的猫君#------------------------------------------------------------------------------# 本脚本为 Map Screenshot by mr_wiggles 的汉化&加强,# 并未取得原作者允许,并未附加原脚本内容,需要原脚本的支持。# 【换言之本脚本不能单独使用】#------------------------------------------------------------------------------# Map Screenshot by mr_wiggles 的发布网址:# http://gameface101.playogame.com/t920-map-screen-shot-rmxp#------------------------------------------------------------------------------# 使用方法:# ① 将 Map Screenshot by mr_wiggles 插入 MAIN 之上;# ② 将本脚本插入上面脚本之下,MAIN 之上;# ③ 运行游戏,在需要截图的地图上按F6。#------------------------------------------------------------------------------# 更新记录:# 2012-01-21 v 1.1 支持行走图的色相、透明度以及合成方式(加减法)# 2012-01-21 v 1.0 修正行走图传送区域错误# 2012-01-21 v 0.9 初版#------------------------------------------------------------------------------# 更新预告:# 下一版将加入 设定部分暂未实现的功能# 下一版将加入 超过Bitmap上限自动分割的功能#==============================================================================#==============================================================================# ■ 设定部分#------------------------------------------------------------------------------# 本汉化加强版脚本的设定。#==============================================================================# 截图类型# - 0 仅图块(原脚本类型)# - 1 图块 + 事件(事件名称以NPC开头的以及主角除外)# - 2 图块 + 全事件(1的基础上包括NPC和主角)# - 3 图块 + 远景图 + 雾(暂未实现)# - 4 图块 + 远景图 + 雾 + 事件(暂未实现)# - 5 图块 + 远景图 + 雾 + 全事件(暂未实现)Aerial_Photography_TPYE = 2#==============================================================================# ■ 汉化部分#------------------------------------------------------------------------------# 对原脚本提示信息的汉化。#==============================================================================class Spriteset_Map def update bit_to_png_up if Input.trigger?(Input::F6) map_infos = load_data("Data/MapInfos.rxdata") bit = @tilemap.bitmap exp_time = (bit.height * bit.width) * 0.00000664 string = "航拍图已创建完成\n" + "像素数: #{bit.height * bit.width} \n" + "预计输出PNG用时: #{exp_time} 秒\n\n" + "按确定键开始输出PNG" print("#{string}") old_time = Time.now bit.make_png("#{map_infos[$game_map.map_id].name}") string = "#{map_infos[$game_map.map_id].name}.png 已被创建 \n" + "尺寸:宽 #{bit.width}, 高 #{bit.height} \n" + "耗时:#{Time.now - old_time} 秒" print("#{string}") end endend#==============================================================================# ■ 加强部分#------------------------------------------------------------------------------# 对原脚本功能的加强。#==============================================================================class Game_Event < Game_Character def name return @event.name endendclass Sprite_Character < RPG::Sprite attr_reader :tile_id # 元件 ID (0 为无效)endclass Tilemap #-------------------------------------------------------------------------- # * Collect Bitmap #-------------------------------------------------------------------------- def bitmap # Creates New Blank Bitmap bitmap = Bitmap.new(@layers[0].bitmap.width, @layers[0].bitmap.height) # Passes Through All Layers for layer in @layers bitmap.blt(0, 0, layer.bitmap, Rect.new(0, 0, bitmap.width, bitmap.height)) end #-------------------------------------------------------------------------- # 绘制事件行走图 #-------------------------------------------------------------------------- if Aerial_Photography_TPYE == 1 or Aerial_Photography_TPYE == 2 or Aerial_Photography_TPYE == 4 or Aerial_Photography_TPYE == 5 # 生成角色活动块 character_sprites = [] for i in $game_map.events.keys.sort # 排除NPC if Aerial_Photography_TPYE == 1 or Aerial_Photography_TPYE == 4 next if $game_map.events[i].name.slice(/^NPC/) end sprite = Sprite_Character.new(@viewport1, $game_map.events[i]) character_sprites.push(sprite) end # 排除主角 unless Aerial_Photography_TPYE == 1 or Aerial_Photography_TPYE == 4 character_sprites.push(Sprite_Character.new(@viewport1, $game_player)) end # 绘制 for npc4map in character_sprites rx = npc4map.x + $game_map.display_x / 4 - npc4map.ox ry = npc4map.y + $game_map.display_y / 4 - npc4map.oy o = npc4map.opacity r = npc4map.src_rect # 合成方式的处理 if npc4map.blend_type == 0 b = npc4map.bitmap.clone else # 将行走图切一块过来 sb = Bitmap.new(r.width, r.height) sb.blt(0, 0, npc4map.bitmap, r, o) # 同样地,将底部图片切一块过来 ub = Bitmap.new(r.width, r.height) sr = Rect.new(rx, ry, r.width, r.height) ub.stretch_blt(ub.rect, bitmap, sr) # 获取颜色值 ubc = [] sbc = [] bc = [] for y in 0..(ub.height - 1) for x in 0..(ub.width - 1) ubc.push ub.get_pixel(x, y) sbc.push sb.get_pixel(x, y) end end @tc = Color.new(0, 0, 0) # 生成bitmap b = Bitmap.new(r.width, r.height) for y in 0..(b.height - 1) for x in 0..(b.width - 1) i = x + y * b.width uc = ubc[i] sc = sbc[i] mc = mix_color(uc, sc, npc4map.blend_type) b.set_pixel(x, y, mc) end end r = Rect.new(0, 0, r.width, r.height) end # 若不是地图原件,采用行走图绘制方式 if npc4map.tile_id == 0 bitmap.blt(rx, ry, b, r, o) else bitmap.blt(rx, ry, b, Rect.new(0, 0, 32, 32), o) end end end #-------------------------------------------------------------------------- # Return Bitmap return bitmap end #-------------------------------------------------------------------------- def mix_color(c1, c2, bt) return c1 if c2.alpha == 0 case bt when 1 # 加法 tc_r = c1.red + c2.red tc_g = c1.green + c2.green tc_b = c1.blue + c2.blue tc_a = c1.alpha + c2.alpha when 2 # 减法 tc_r = (c1.red - c2.red).abs tc_g = (c1.green - c2.green).abs tc_b = (c1.blue - c2.blue).abs tc_a = [c1.alpha, c2.alpha].max end mc = [tc_r, tc_g, tc_b, tc_a] @tc.set(mc[0], mc[1], mc[2], mc[3]) return @tc end #--------------------------------------------------------------------------end复制代码
复制代码
地图大赛的时候这个脚本会很好用吧……
更新1.1:支持色相、透明度、以及加法/减法混合
(我到底在干嘛 = = b 预告的一个都没更……上次写着暂无支持计划的反而全支持了……)
本帖来自P1论坛作者各种压力的猫君,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址: https://rpg.blue/forum.php?mod=viewthread&tid=220157 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|