Project1

标题: 求一个能把使用了的RTP素材自动找出来复制到工程里的脚本 [打印本页]

作者: 寒冷的企鹅    时间: 2017-12-31 23:24
标题: 求一个能把使用了的RTP素材自动找出来复制到工程里的脚本
求一个能把使用了的RTP素材自动找出来复制到工程里的脚本
原先我找到一个脚本,链接:http://himeworks.com/2013/05/resource-checker/
可是怎么用都有问题,不知道怎么回事,如果能把那个弄好也可以,问题链接:https://rpg.blue/thread-404840-1-1.html

作者: SixRC    时间: 2017-12-31 23:24
本帖最后由 SixRC 于 2018-1-1 13:49 编辑

RUBY 代码复制
  1. # 复制游戏所需RTP资源的脚本 请插到最前面
  2. #   请自行修改下面第 9 行RTP目录
  3. #     以及第 18 行非RTP素材的后缀名
  4. # 原理是用到的时候检查文件是否存在 不存在则拷贝
  5. #   所以不能一次性拷贝 需要过一遍游戏才行
  6. # 假如错过一些细节就喜剧了
  7. #   游戏正式发布的时候删掉这个脚本就好
  8. # 复制文件方法
  9. RGSS_RTP = "E:/RPGVXAce/"
  10. class File
  11.   def self.copy(dest, source)
  12.     open(source, "rb") do |file|
  13.       open(dest, "wb") do |f|
  14.         f.syswrite(file.sysread(size(source)))
  15.       end
  16.     end
  17.   end
  18.   CRTP_Suffix = [".png", ".jpg", ".bmp", ".ogg", ".wav", ".mp3"]
  19.   def self.CRTP_exist?(filename)
  20.     for i in CRTP_Suffix
  21.       return true if File.exist?(filename + i)
  22.     end
  23.     false
  24.   end
  25. end
  26. # 实例化位图时检查文件是否存在在游戏目录 不存在则从RTP拷贝
  27. #   File类的文件查找并不会找RTP目录 so
  28. class Bitmap
  29.   alias CRTP_initialize initialize
  30.   def initialize(x, y = nil)
  31.     if x.class == String
  32.       File.copy(x + ".png", RGSS_RTP + x + ".png") unless File.CRTP_exist?(x)
  33.       CRTP_initialize(x)
  34.     else
  35.       CRTP_initialize(x, y)
  36.     end
  37.   end
  38. end
  39. # 检查音频文件 有 bgm bgs se me
  40. class << Audio
  41.   # bgm
  42.   alias CRTP_bgm_play bgm_play
  43.   def bgm_play(*args)
  44.     File.copy(args[0] + ".ogg", RGSS_RTP + args[0] + ".ogg") unless File.CRTP_exist?(args[0])
  45.     CRTP_bgm_play(*args)
  46.   end
  47.   # bgs
  48.   alias CRTP_bgs_play bgs_play
  49.   def bgs_play(*args)
  50.     File.copy(args[0] + ".ogg", RGSS_RTP + args[0] + ".ogg") unless File.CRTP_exist?(args[0])
  51.     CRTP_bgs_play(*args)
  52.   end
  53.   # me
  54.   alias CRTP_me_play me_play
  55.   def me_play(*args)
  56.     File.copy(args[0] + ".ogg", RGSS_RTP + args[0] + ".ogg") unless File.CRTP_exist?(args[0])
  57.     CRTP_me_play(*args)
  58.   end
  59.   # se
  60.   alias CRTP_se_play se_play
  61.   def se_play(*args)
  62.     File.copy(args[0] + ".ogg", RGSS_RTP + args[0] + ".ogg") unless File.CRTP_exist?(args[0])
  63.     CRTP_se_play(*args)
  64.   end
  65. end

介绍及使用在脚本里面了
插入就好
你测试游戏的时候会自动把需要的资源拷贝过去
但是你必须玩到一次用到资源的地方 不然无法触发拷贝机制
外挂脚本用到的RTP资源也可以拷贝的
有问题请提
作者: 寒冷的企鹅    时间: 2017-12-31 23:28
抱歉,上面的那个脚本好像并不能复制
作者: gforce    时间: 2018-1-1 11:21


你找到的腳本的確有這個功能,作者寫在使用方法(usage),而不是簡介(Description)上面,我一開始也沒注意到。

路徑使用了我的電腦上面的,跟你的可能不一樣。

啟用按鍵改為Enter, 因為我沒找到input module

復原了一句被作者本人注釋的代碼,第556行
RUBY 代码复制
  1. return name + ".#{ext}"
,應該為閱讀文件格式之用,被注釋原因不明。

不支援額外腳本中引用的RTP文件

無法觸發你在另一個帖碰上的BUG,也就無法除錯,不過在我的電腦上是運行成功。
可能還有其他BUG,而我其實並不熟悉這種特殊科技,星屑你先留著。
作者: 寒冷的企鹅    时间: 2018-1-1 13:09
SixRC 发表于 2018-1-1 12:24
# 复制游戏所需RTP资源的脚本 请插到最前面
#   请自行修改下面第 8 行RTP目录
# 原理是用到的时候检查文件 ...

嗯,感谢回答,脚本可用
作者: 寒冷的企鹅    时间: 2018-1-1 13:36
SixRC 发表于 2017-12-31 23:24
# 复制游戏所需RTP资源的脚本 请插到最前面
#   请自行修改下面第 8 行RTP目录
# 原理是用到的时候检查文件 ...

一个问题:我导入一个WAV格式的音频文件,然后出现以下提示,需要变成OGG的,而且导入的文件都需要在导入到RTP目录里,而且工程文件里面已经有啦,不需要了,这个怎么破。如图
作者: 寒冷的企鹅    时间: 2018-1-1 13:53
SixRC 发表于 2017-12-31 23:24
# 复制游戏所需RTP资源的脚本 请插到最前面
#   请自行修改下面第 9 行RTP目录
#     以及第 18 行非RTP素 ...

18行?
不是,可不可以自己跳过导入的,因为工程文件已经有了
作者: 寒冷的企鹅    时间: 2018-1-1 13:56
SixRC 发表于 2017-12-31 23:24
# 复制游戏所需RTP资源的脚本 请插到最前面
#   请自行修改下面第 9 行RTP目录
#     以及第 18 行非RTP素 ...

抱歉,是我弄错了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1