查看: 2338|回复: 0

[结贴] 【有偿】求移植一个脚本,从VA到VX。

[复制链接]
梦石
0
星屑
60
在线时间
23 小时
注册时间
2016-1-3
回帖
1
发表于 2017-7-25 20:56:42 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 FlyingCandy 于 2017-7-25 22:27 编辑

一个VA的地图截图脚本,我要移植到VX上用。
应该不难,求大佬帮个忙。
联系方式:QQ 1226405570


[fold=截图脚本]#******************************************************************************
#
#    * PNG 保存
#
#  --------------------------------------------------------------------------
#    バージョン :  1.0.0
#    対      応 :  RPGツクールVX Ace : RGSS3
#    制  作  者 :  CACAO
#    配  布  元 :  http://cacaosoft.web.fc2.com/
#  --------------------------------------------------------------------------
#   == 概    要 ==
#
#    : ピングファイルの出力機能を追加します。
#
#  --------------------------------------------------------------------------
#   == 使用方法 ==
#
#    ★ Bitmap#save_png(filename, alpha = false)
#     このビットマップをピングファイルで出力
#     filename : 保存するファイル名
#     alpha    : αチャンネルの有無
#
#
#******************************************************************************


#/////////////////////////////////////////////////////////////////////////////#
#                                                                             #
#                  このスクリプトに設定項目はありません。                     #
#                                                                             #
#/////////////////////////////////////////////////////////////////////////////#


class Bitmap
  #--------------------------------------------------------------------------
  # ● ピング画像として保存
  #     filename : ファイル名
  #     alpha    : アルファチャンネルの有無
  #--------------------------------------------------------------------------
  def save_png(filename, alpha = false)
    sgnt = "\x89PNG\r\n\x1a\n"
    ihdr = _chunk('IHDR', [width,height,8,(alpha ? 6 : 2),0,0,0].pack('N2C5'))
    data = []
    height.times do |y|
      data << 0
      width.times do |x|
        color = self.get_pixel(x, y)
        data << color.red << color.green << color.blue
        data << color.alpha if alpha
      end
    end
    idat = _chunk('IDAT', Zlib::Deflate.deflate(data.pack('C*')))
    iend = _chunk('IEND', "")
    File.open(filename, 'wb') do |file|
      file.write(sgnt)
      file.write(ihdr)
      file.write(idat)
      file.write(iend)
    end
  end
private
  #--------------------------------------------------------------------------
  # ● チャンクの作成
  #     name : チャンク名
  #     data : チャンクデータ
  #--------------------------------------------------------------------------
  def _chunk(name, data)
    return [data.size, name, data, Zlib.crc32(name + data)].pack('NA4A*N')
  end
end


#******************************************************************************
#
#    * マップ画像の保存
#
#  --------------------------------------------------------------------------
#    バージョン :  1.0.0
#    対      応 :  RPGツクールVX Ace : RGSS3
#    制  作  者 :  CACAO
#    配  布  元 :  http://cacaosoft.web.fc2.com/
#  --------------------------------------------------------------------------
#   == 概    要 ==
#
#    : マップを1枚の画像にして保存します。
#
#  --------------------------------------------------------------------------
#   == 注意事項 ==
#
#    ※ 画像保存に『PNG 保存』スクリプトが必要になります。
#    ※ ゲーム配布時には、削除してください。
#    ※ 撮影時にプレイヤーは非表示になります。
#
#  --------------------------------------------------------------------------
#   == 使用方法 ==
#
#    ★ マップ画像を保存する
#     マップ画面で F7 キーを押してください。
#     右下まで移動すると停止しますが、画像を保存しています。
#     画面が元に戻るまで、しばらくお持ちください。
#     画像は、ゲームフォルダに保存されます。
#
#    ※ キーを変更するには、:F7 で検索してください。
#       1箇所のみ引っかかるので、そこを変更してください。
#
#
#******************************************************************************


#/////////////////////////////////////////////////////////////////////////////#
#                                                                             #
#                下記のスクリプトを変更する必要はありません。                 #
#                                                                             #
#/////////////////////////////////////////////////////////////////////////////#


class Sprite_Character < Sprite_Base
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update_snap
    self.x = @character.screen_x
    self.y = @character.screen_y
    self.z = @character.screen_z
    self.visible = !@character.transparent

    if @balloon_duration > 0
      @balloon_sprite.x = x
      @balloon_sprite.y = y - height
      @balloon_sprite.z = z + 200
    end
  end
end

class Spriteset_Map
  #--------------------------------------------------------------------------
  # ●
  #--------------------------------------------------------------------------
  def update_snap
    @tilemap.ox = $game_map.display_x * 32
    @tilemap.oy = $game_map.display_y * 32

    @parallax.ox = $game_map.parallax_ox(@parallax.bitmap)
    @parallax.oy = $game_map.parallax_oy(@parallax.bitmap)

    @character_sprites.each {|sprite| sprite.update_snap }

    airship = $game_map.airship
    @shadow_sprite.x = airship.screen_x
    @shadow_sprite.y = airship.screen_y + airship.altitude
    @shadow_sprite.opacity = airship.altitude * 8

    Graphics.update
  end
end

class Scene_Map < Scene_Base
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias _cao_mapshot_update update
  def update
    _cao_mapshot_update
    map_shop if Input.press?(:F7)
  end
  #--------------------------------------------------------------------------
  # ●
  #--------------------------------------------------------------------------
  def map_shop
    # プレイヤーを非表示
    last_player_transparent = $game_player.transparent
    $game_player.transparent = true
    # マップの撮影
    bitmap = Bitmap.new($game_map.width * 32, $game_map.height * 32)
    screen_width = $game_map.screen_tile_x
    screen_height = $game_map.screen_tile_y
    ($game_map.width / screen_width.to_f).ceil.times do |x|
      ($game_map.height / screen_height.to_f).ceil.times do |y|
        $game_map.set_display_pos(screen_width * x, screen_height * y)
        @spriteset.update_snap
        dx = $game_map.display_x * 32
        dy = $game_map.display_y * 32
        snap = Graphics.snap_to_bitmap
        bitmap.blt(dx, dy, snap, snap.rect)
      end
    end
    # マップ画像の保存
    Graphics.update
    filename = sprintf('ground%03d-1.png', $game_map.map_id,$game_map.display_name)
    bitmap.save_png(filename)
    puts "`#{filename}' 保存完了!"
    # プレイヤーの状態を戻す
    $game_player.transparent = last_player_transparent
    $game_player.center($game_player.x, $game_player.y)
    $game_player.update
  end
end[/fold]
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部