本帖最后由 SixRC 于 2018-1-1 13:49 编辑
# 复制游戏所需RTP资源的脚本 请插到最前面 # 请自行修改下面第 9 行RTP目录 # 以及第 18 行非RTP素材的后缀名 # 原理是用到的时候检查文件是否存在 不存在则拷贝 # 所以不能一次性拷贝 需要过一遍游戏才行 # 假如错过一些细节就喜剧了 # 游戏正式发布的时候删掉这个脚本就好 # 复制文件方法 RGSS_RTP = "E:/RPGVXAce/" class File def self.copy(dest, source) open(source, "rb") do |file| open(dest, "wb") do |f| f.syswrite(file.sysread(size(source))) end end end CRTP_Suffix = [".png", ".jpg", ".bmp", ".ogg", ".wav", ".mp3"] def self.CRTP_exist?(filename) for i in CRTP_Suffix return true if File.exist?(filename + i) end false end end # 实例化位图时检查文件是否存在在游戏目录 不存在则从RTP拷贝 # File类的文件查找并不会找RTP目录 so class Bitmap alias CRTP_initialize initialize def initialize(x, y = nil) if x.class == String File.copy(x + ".png", RGSS_RTP + x + ".png") unless File.CRTP_exist?(x) CRTP_initialize(x) else CRTP_initialize(x, y) end end end # 检查音频文件 有 bgm bgs se me class << Audio # bgm alias CRTP_bgm_play bgm_play def bgm_play(*args) File.copy(args[0] + ".ogg", RGSS_RTP + args[0] + ".ogg") unless File.CRTP_exist?(args[0]) CRTP_bgm_play(*args) end # bgs alias CRTP_bgs_play bgs_play def bgs_play(*args) File.copy(args[0] + ".ogg", RGSS_RTP + args[0] + ".ogg") unless File.CRTP_exist?(args[0]) CRTP_bgs_play(*args) end # me alias CRTP_me_play me_play def me_play(*args) File.copy(args[0] + ".ogg", RGSS_RTP + args[0] + ".ogg") unless File.CRTP_exist?(args[0]) CRTP_me_play(*args) end # se alias CRTP_se_play se_play def se_play(*args) File.copy(args[0] + ".ogg", RGSS_RTP + args[0] + ".ogg") unless File.CRTP_exist?(args[0]) CRTP_se_play(*args) end end
# 复制游戏所需RTP资源的脚本 请插到最前面
# 请自行修改下面第 9 行RTP目录
# 以及第 18 行非RTP素材的后缀名
# 原理是用到的时候检查文件是否存在 不存在则拷贝
# 所以不能一次性拷贝 需要过一遍游戏才行
# 假如错过一些细节就喜剧了
# 游戏正式发布的时候删掉这个脚本就好
# 复制文件方法
RGSS_RTP = "E:/RPGVXAce/"
class File
def self.copy(dest, source)
open(source, "rb") do |file|
open(dest, "wb") do |f|
f.syswrite(file.sysread(size(source)))
end
end
end
CRTP_Suffix = [".png", ".jpg", ".bmp", ".ogg", ".wav", ".mp3"]
def self.CRTP_exist?(filename)
for i in CRTP_Suffix
return true if File.exist?(filename + i)
end
false
end
end
# 实例化位图时检查文件是否存在在游戏目录 不存在则从RTP拷贝
# File类的文件查找并不会找RTP目录 so
class Bitmap
alias CRTP_initialize initialize
def initialize(x, y = nil)
if x.class == String
File.copy(x + ".png", RGSS_RTP + x + ".png") unless File.CRTP_exist?(x)
CRTP_initialize(x)
else
CRTP_initialize(x, y)
end
end
end
# 检查音频文件 有 bgm bgs se me
class << Audio
# bgm
alias CRTP_bgm_play bgm_play
def bgm_play(*args)
File.copy(args[0] + ".ogg", RGSS_RTP + args[0] + ".ogg") unless File.CRTP_exist?(args[0])
CRTP_bgm_play(*args)
end
# bgs
alias CRTP_bgs_play bgs_play
def bgs_play(*args)
File.copy(args[0] + ".ogg", RGSS_RTP + args[0] + ".ogg") unless File.CRTP_exist?(args[0])
CRTP_bgs_play(*args)
end
# me
alias CRTP_me_play me_play
def me_play(*args)
File.copy(args[0] + ".ogg", RGSS_RTP + args[0] + ".ogg") unless File.CRTP_exist?(args[0])
CRTP_me_play(*args)
end
# se
alias CRTP_se_play se_play
def se_play(*args)
File.copy(args[0] + ".ogg", RGSS_RTP + args[0] + ".ogg") unless File.CRTP_exist?(args[0])
CRTP_se_play(*args)
end
end
介绍及使用在脚本里面了
插入就好
你测试游戏的时候会自动把需要的资源拷贝过去
但是你必须玩到一次用到资源的地方 不然无法触发拷贝机制
外挂脚本用到的RTP资源也可以拷贝的
有问题请提 |