Project1

标题: 利用容错脚本来做到提取素材的脚本 [打印本页]

作者: DeathKing    时间: 2009-3-7 23:48
标题: 利用容错脚本来做到提取素材的脚本
这个脚本是给予 轮回者的容错脚本 来的,主要是在输出缺失的文件时用CMD的语法输出,然后,改点小东西……就可以提取素材了。

唯一美中不足的时,正因为这是利用容错脚本来的,理论上是100%提取……但是,必须每个素材都发生一次Error才可以被容错脚本记录到(文件名有Windows不支持的字符MS也会出错)……

需要说明的是:这个东西既可以提取素材,也可以当容错脚本用。

(之中有些是打广告的地方。版主别骂我啊~)

这是使用手册的下载地址(手册?视屏吧!)(因为没下FTP软件,所以请版主将其放置到6R的FTP中吧!)
http://www.uushare.com/user/deathking/file/1335906

下面是代码:



  1. #==============================================================================
  2. # ■ 容错脚本-> CMD辅助素材提取脚本                                      
  3. #------------------------------------------------------------------------------
  4. #  容错脚本             BY 轮回者
  5. #  CMD辅助素材提取脚本  BY DeathKing
  6. #  此脚本具有上述两个功能!
  7. #==============================================================================
  8. #  使用方法请参考萌芽游戏社中此工程相关的使用说明!
  9. #
  10. #  - 获取工程路径
  11. #    使用Windows浏览文件,直到可以直接看到Game.exe这个文件,然后直接复制
  12. #    这个地址,粘贴到$GAME_PATH,并将\替换为\\。
  13. #
  14. #  - 获取RTP路径
  15. #    方法一:打开注册表(“开始”->“运行”->regedt32.exe),
  16. #            HKEY_LOCAL_MACHINE\SOFTWARE\Enterbrain\RGSS\RTP
  17. #            这个名项的值给复制下来,粘贴到$RTP_PATH中,并把\变为\#    方法二:打开安装RMXP的文件夹,找到Standard文件夹的路径,把它复制到
  18. #            $RTP_PATH中,把\变为\#
  19. #  - 选择RTP
  20. #    将RTP选为“无”
  21. #  
  22. #  - 经行游戏
  23. #    点击“游戏测试”(快捷键F12)测试游戏,使每个素材都触发一次Error
  24. #    (因为没有素材,所以会提示“找不到****”这正是此脚本所需要的,触发的
  25. #    Eorry不会中断工程,而是通过容错脚本来得知需要的素材,再输出到文件中去
  26. #    因此,想要完全提取素材,必须使每个素材都发生一次Error。)
  27. #
  28. #  - 修改文件
  29. #    此时你会发现,文件夹下多了两个文件,打开这两个文件,先使用记事本自带的
  30. #    “查找、替换”功能将 / 替换为 \ 避免出错。
  31. #    * Notepad
  32. #      对于XP的记事本,请继续看:
  33. #      在文档的最后一行独行书写一个 pause 方便等会儿查看素材是否已提取。
  34. #      然后点击“文件”->“另存为” 这里文件名自定,但是将他写成这种格式:
  35. #      文件名.bat 且将编码变为 ANSI 的。
  36. #      现在关闭文件,并运行新创建的bat文件,如果看到了“已复制了*个文件”
  37. #      就说明素材已经提取成功。
  38. #    * Notepad2
  39. #      对于Vista的记事本2,请继续看:
  40. #      在文档的最后一行独行书写一个 pause 方便待会儿查看素材是否已提取。
  41. #      然后点击“文件”->“编码”->“ANSI”,并另存为“文件名自定.bat”
  42. #      运行这个新建的批处理文件就可以了。
  43. #      同样,如果看到了“已复制了*个文件”就说明素材已经提取成功了。
  44. #==============================================================================
  45. $GAME_PATH = "H:\\RMXP工程\\素材提取脚本"
  46. # 工程路径
  47. $RTP_PATH  = "H:\\RMXP\\RGSS\\Standard"
  48. # RTP路径

  49. $need_file_bitmap = []
  50. if FileTest.exist?("log_bitmap.txt")
  51. f = File.open("./log_bitmap.txt","r")
  52. $need_file_bitmap = f.read.split(/\n/)
  53. f.close
  54. end
  55. module Graphics
  56. @transition = method("transition")
  57. def self.transition(*arg)
  58.    begin
  59.      @transition.call(*arg)
  60.    rescue Errno::ENOENT
  61.      ary=[*arg]
  62.      filename=ary[1]
  63.      unless $need_file_bitmap.include?(filename)
  64.        $need_file_bitmap.push(filename)
  65.        f = File.open("./log_bitmap.txt","a")
  66.        f.write("copy " + $RTP_PATH.to_s + "\\" + filename + ".* " + $GAME_PATH.to_s + "\\Graphics\\Transitions" + "\n")
  67.        f.close
  68.      end
  69.      @transition.call(ary[0])
  70.    end
  71. end
  72. end
  73. class Bitmap < Object
  74. alias ini initialize
  75. def initialize(*arg)
  76.    begin
  77.      ini(*arg)
  78.    rescue Errno::ENOENT
  79.      filename=[*arg][0]
  80.      unless $need_file_bitmap.include?(filename)
  81.        $need_file_bitmap.push(filename)
  82.        f = File.open("./log_bitmap.txt","a")
  83.       
  84.        filepath = "Graphics\\"
  85.        if filename.include?("Titles")
  86.          filepath = "Graphics\\Titles\\"
  87.        end
  88.        if filename.include?("Windowskins")
  89.          filepath = "Graphics\\Windowskins\\"
  90.        end
  91.        if filename.include?("Autotiles")
  92.          filepath = "Graphics\\Autotiles\\"
  93.        end
  94.        if filename.include?("Characters")
  95.          filepath = "Graphics\\Characters\\"
  96.        end
  97.        if filename.include?("Pictures")
  98.          filepath = "Graphics\\Pictures\\"
  99.        end
  100.        if filename.include?("Animations")
  101.          filepath = "Graphics\\Animations\\"
  102.        end
  103.        if filename.include?("Battlebacks")
  104.          filepath = "Graphics\\Battlebacks\\"
  105.        end
  106.        if filename.include?("Battlers")
  107.          filepath = "Graphics\\Battlers\\"
  108.        end
  109.        if filename.include?("Tilesets")
  110.          filepath = "Graphics\\Tilesets\\"
  111.        end
  112.        if filename.include?("Panoramas")
  113.          filepath = "Graphics\\Panoramas\\"
  114.        end
  115.        if filename.include?("Icons")
  116.          filepath = "Graphics\\Icons\\"
  117.        end
  118.        if filename.include?("Gameovers")
  119.          filepath = "Graphics\\Gameovers\\"
  120.        end
  121.        if filename.include?("Fogs")
  122.          filepath = "Graphics\\Fogs\\"
  123.        end
  124.       
  125.        f.write("copy " + $RTP_PATH.to_s + "\\" + filename + ".* " + $GAME_PATH.to_s + "/#{filepath}" + "\n")
  126.        f.close
  127.      end
  128.      ini(32,32)
  129.    end
  130. end
  131. end
  132. $need_file_audio = []
  133. if FileTest.exist?("log_audio.txt")
  134. f = File.open("./log_audio.txt","r")
  135. $need_file_audio = f.read.split(/\n/)
  136. f.close
  137. end
  138. module Audio
  139. @me_play = method("me_play")
  140. def self.me_play(*arg)
  141.    begin
  142.      @me_play.call(*arg)
  143.    rescue Errno::ENOENT
  144.      filename=[*arg][0]
  145.      unless $need_file_audio.include?(filename)
  146.        $need_file_audio.push(filename)
  147.        f = File.open("./log_audio.txt","a")
  148.        f.write("copy " + $RTP_PATH.to_s + "\\" + filename + ".* " + $GAME_PATH.to_s + "\\Audio\\ME" + "\n")
  149.        f.close
  150.      end
  151.      me_stop
  152.    end
  153. end
  154. @bgm_play = method("bgm_play")
  155. def self.bgm_play(*arg)
  156.    begin
  157.      @bgm_play.call(*arg)
  158.    rescue Errno::ENOENT
  159.      filename=[*arg][0]
  160.      unless $need_file_audio.include?(filename)
  161.        $need_file_audio.push(filename)
  162.        f = File.open("./log_audio.txt","a")
  163.        f.write("copy " + $RTP_PATH.to_s + "\\" + filename + ".* " + $GAME_PATH.to_s + "\\Audio\\BGM" + "\n")
  164.        f.close
  165.      end
  166.      bgm_stop
  167.    end
  168. end
  169. @se_play = method("se_play")
  170. def self.se_play(*arg)
  171.    begin
  172.      @se_play.call(*arg)
  173.    rescue Errno::ENOENT
  174.      filename=[*arg][0]
  175.      unless $need_file_audio.include?(filename)
  176.        $need_file_audio.push(filename)
  177.        f = File.open("./log_audio.txt","a")
  178.        f.write("copy " + $RTP_PATH.to_s + "\\" + filename + ".* " + $GAME_PATH.to_s + "\\Audio\\SE" + "\n")
  179.        f.close
  180.      end
  181.      se_stop
  182.    end
  183. end
  184. @bgs_play = method("bgs_play")
  185. def self.bgs_play(*arg)
  186.    begin
  187.      @bgs_play.call(*arg)
  188.    rescue Errno::ENOENT
  189.      filename=[*arg][0]
  190.      unless $need_file_audio.include?(filename)
  191.        $need_file_audio.push(filename)
  192.        f = File.open("./log_audio.txt","a")
  193.        f.write("copy " + $RTP_PATH.to_s + "\\" + filename + ".* " + $GAME_PATH.to_s + "\\Audio\\BGS" + "\n")
  194.        f.close
  195.      end
  196.      bgs_stop
  197.    end
  198. end
  199. end
复制代码

作者: Rose丶旋律    时间: 2010-7-27 00:28
每個发生一次错误的意思是不是说,
比如用到了1000個文件,就要提取1000次=,=?
作者: 阿阿阿阿    时间: 2010-7-30 14:48
提示: 作者被禁止或删除 内容自动屏蔽




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