Project1
标题:
能不能利用游戏里的截图来制作STAFF?
[打印本页]
作者:
精灵使者
时间:
2014-12-31 14:27
标题:
能不能利用游戏里的截图来制作STAFF?
本帖最后由 精灵使者 于 2014-12-31 14:28 编辑
也就是利用你在游戏里的精彩一瞬间来制作最后游戏团队字幕的背景,例如和三国志赤壁之战那样。
结局的所有图片都来源于你战胜BOSS的所有截图集合。
现在唯一的一件事是:
你不知道截图的内容,如何调用截图来做最后的STAFF?
另:这里的截图不是用截图工具放进去的,而是系统根据游戏进程自动截图
请高手指教。
作者:
喵呜喵5
时间:
2014-12-31 17:23
# 保存屏幕截图
module M5SS20141231
def self.shot
$snap_shot.dispose if $snap_shot
$snap_shot = Graphics.snap_to_bitmap
end
end
# 快速储存Bitmap的Marshal By 柳之一
class Font
def marshal_dump
end
def marshal_load(obj)
end
end
class Bitmap
RtlMoveMemory_pi = Win32API.new('kernel32', 'RtlMoveMemory', 'pii', 'i')
RtlMoveMemory_ip = Win32API.new('kernel32', 'RtlMoveMemory', 'ipi', 'i')
def _dump(limit)
data = "rgba" * width * height
RtlMoveMemory_pi.call(data, address, data.length)
[width, height, Zlib::Deflate.deflate(data)].pack("LLa*")
end
def self._load(str)
w, h, zdata = str.unpack("LLa*")
b = self.new(w, h)
RtlMoveMemory_ip.call(b.address, Zlib::Inflate.inflate(zdata), w * h * 4)
return b
end
def address
buffer, ad = "rgba", object_id * 2 + 16
RtlMoveMemory_pi.call(buffer, ad, 4)
ad = buffer.unpack("L")[0] + 8
RtlMoveMemory_pi.call(buffer, ad, 4)
ad = buffer.unpack("L")[0] + 16
RtlMoveMemory_pi.call(buffer, ad, 4)
return buffer.unpack("L")[0]
end
end
# 截图保存到存档中
class << DataManager
alias m5_20121231_load_normal_database load_normal_database
def load_normal_database
m5_20121231_load_normal_database
$snap_shot = nil
end
alias m5_20141231_make_save_contents make_save_contents
def make_save_contents
contents = m5_20141231_make_save_contents
contents[:snapshot] = $snap_shot
contents
end
alias m5_20141231_extract_save_contents extract_save_contents
def extract_save_contents(contents)
m5_20141231_extract_save_contents(contents)
$snap_shot = contents[:snapshot]
end
end
# 测试脚本效果的界面
class Scene_Snap_Test < Scene_Base
def start
super
@sprite = Sprite.new
bitmap = $snap_shot || Bitmap.new(1,1)
@sprite.bitmap = bitmap.clone
@sprite.x -= 10
end
def update
super
return_scene if Input.trigger?(:B)
end
def terminate
super
@sprite.dispose
end
end
# F5截图,F6打开测试界面
class << Graphics
alias m5_20141231_update update
def update
m5_20141231_update
if Input.press?(:F5)
M5SS20141231.shot
elsif Input.trigger?(:F6)
return if SceneManager.scene.is_a? Scene_Snap_Test
SceneManager.call(Scene_Snap_Test)
end
end
end
复制代码
RMVA用
作者:
精灵使者
时间:
2014-12-31 23:57
本帖最后由 精灵使者 于 2015-1-1 12:04 编辑
如果调用同一个文件名的图片,里面的内容会刷新么?
精灵的想法是这样的:
建立一系列空白图片来做STAFF,然后每关的需要的截图就截在这些空白图片里……
但是不知道STAFF能及时更新成截图否。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1