Project1

标题: 【通用】边运行游戏边提取素材文件到游戏目录 [打印本页]

作者: R-零    时间: 2013-2-1 17:23
标题: 【通用】边运行游戏边提取素材文件到游戏目录
本帖最后由 R-零 于 2013-8-1 20:21 编辑

这个先在幻天发布过了,这里只是想让更多的人看到。

通常来说发布游戏的时候需要把素材文件放进自己的工程里面

但是如果文件太多,然后又懒得自己一个一个去选呢?

用游戏发布素材提取脚本就可以帮你解决这个问题,站里也有不少这样的脚本

但是因为有些工程用到的文件往往是在脚本里指定的,或者是变量生成的,所以原先一般的一次性能提取完的脚本多少会提取不全

这个脚本可以在运行时根据需要将文件复制到工程目录下,如果文件找不到还可以忽略文件(缺少图片的话自动变成32*32的空白位图,音效直接变为没有)
只要把游戏从头到尾彻底测试一遍就可以了呢
RUBY 代码复制下载
  1. =begin
  2. 说明:
  3. <span style="background-color: rgb(255, 255, 255); ">这个脚本可以在运行时根据需要将文件复制到工程目录下,如果文件找不到还可以忽略文件(缺少图片的话自动变成32*32的空白位图,音效直接变为没有)</span>
  4. <span style="background-color: rgb(255, 255, 255); ">只要把游戏从头到尾彻底测试一遍就可以了呢</span>
  5.  
  6. 2013年2月1日 from 幻想天空 [url]www.rpgsky.net[/url] 作者:克莉丝
  7. =end
  8. #这里填写复制来源(Graphics是这个目录的子目录,注意不能用"\"来表示子目录要用"/"
  9.  
  10. RES = 'D:/Program Files (x86)/RPG Maker VX Ace/RTP/'  #●●●●●●●●●●●●●●●●
  11.  
  12. #这里填写工程的目录(Graphics是这个目录的子目录
  13.  
  14. TO = '请自己填写你的工程目录哦,例子子在上面'
  15. #●●●●●●●●●●●●●●●●
  16.  
  17. FS = ["","jpeg",".jpg",".png",".bmp",".wav",".mp3",".ogg","mid","wma","mov"]#这里填写需要查找的格式
  18. #==============================================================================
  19. # ■ String
  20. #------------------------------------------------------------------------------
  21. #  String 类追加定义。
  22. #==============================================================================
  23. class String
  24.         #----------------------------------------------------------------------------
  25.         # ● API
  26.         #----------------------------------------------------------------------------
  27.         @@MultiByteToWideChar  = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  28.         @@WideCharToMultiByte  = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')
  29.         #----------------------------------------------------------------------------
  30.         # ● UTF-8 转系统编码
  31.         #----------------------------------------------------------------------------
  32.         def u2s
  33.                 i = @@MultiByteToWideChar.call(65001, 0 , self, -1, nil,0)
  34.                 buffer = "\0" * (i*2)
  35.                 @@MultiByteToWideChar.call(65001, 0 , self, -1, buffer, i)
  36.                 i = @@WideCharToMultiByte.call(0, 0, buffer, -1, nil, 0, nil, nil)
  37.                 result = "\0" * i
  38.                 @@WideCharToMultiByte.call(0, 0, buffer, -1, result, i, nil, nil)
  39.                 result.chop!
  40.                 return result
  41.         end
  42. end
  43. COPYFILE = Win32API.new("kernel32","CopyFile","ppl","l")
  44. def copyfile(from,to)
  45.   from = from.u2s
  46.   to = to.u2s
  47.   a = 1
  48.   if not File.exist?(to)
  49.     a = COPYFILE.call(from,to,1)
  50.   end
  51.   return a
  52. end
  53. class Bitmap
  54.   alias saku_init initialize
  55.   def initialize*a
  56.     if a[0].is_a?(String)
  57.       from = RES + a[0]
  58.       to = TO+a[0]
  59.       l = []
  60.       for af in FS
  61.         copyfile(from+af,to+af)
  62.         l.push(File.exist?((a[0]+af).u2s))
  63.       end
  64.       a = [32,32] if not l.include?(true)
  65.     end
  66.     saku_init *a
  67.   end
  68. end
  69. module Audio
  70.   for word in ["se","me","bgm","bgs"]
  71.     eval(
  72.   "@saku_#{word} = method('#{word}_play')
  73.   def self.#{word}_play*a
  74.       from = RES + a[0]
  75.       to = TO+a[0]
  76.       l = []
  77.       for af in FS
  78.         copyfile(from+af,to+af)
  79.         l.push(File.exist?((a[0]+af).u2s))
  80.       end
  81.       a = [""] if not l.include?(true)
  82.     @saku_#{word}.call *a
  83.     end
  84. ")
  85. end
  86. end

如果有错误请及时反馈哦,毕竟这个是没严格测试的

顺道召唤精灵@精灵使者  
作者: zq7695zq    时间: 2013-2-1 17:25
看了几遍都看不懂。。
作者: 喵呜喵5    时间: 2013-2-1 18:14
本帖最后由 喵呜喵5 于 2013-2-1 18:29 编辑

好像很实用的样子
精简RTP利器么……

拿自己的游戏试试看看…………

=============================


用VA试了半天结果都没成功…………


作者: 精灵使者    时间: 2013-2-1 18:27
我记得以前通过游戏之后会给出一个txt写出来丢失文件的列表来着。
作者: 忧雪の伤    时间: 2013-2-10 14:09
UI> 于是没测试到还是会漏掉……(干脆直接扫脚本的读取段吧!
作者: R-零    时间: 2013-2-10 15:06
忧雪の伤 发表于 2013-2-10 14:09
UI> 于是没测试到还是会漏掉……(干脆直接扫脚本的读取段吧!

扫描脚本的话不是会把按照变量生成文件名的文件漏掉么
作者: zhangbanxian    时间: 2013-2-11 23:28
R-零 发表于 2013-2-10 15:06
扫描脚本的话不是会把按照变量生成文件名的文件漏掉么

正则表达式匹配graphics神马的- -b




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