Project1
标题:
利用容错脚本来做到提取素材的脚本
[打印本页]
作者:
DeathKing
时间:
2009-3-7 23:48
标题:
利用容错脚本来做到提取素材的脚本
这个脚本是给予 轮回者的容错脚本 来的,主要是在输出缺失的文件时用CMD的语法输出,然后,改点小东西……就可以提取素材了。
唯一美中不足的时,正因为这是利用容错脚本来的,理论上是100%提取……但是,必须每个素材都发生一次Error才可以被容错脚本记录到(文件名有Windows不支持的字符MS也会出错)……
需要说明的是:这个东西既可以提取素材,也可以当容错脚本用。
(之中有些是打广告的地方。版主别骂我啊~)
这是使用手册的下载地址(手册?视屏吧!)(因为没下FTP软件,所以请版主将其放置到6R的FTP中吧!)
http://www.uushare.com/user/deathking/file/1335906
下面是代码:
#==============================================================================
# ■ 容错脚本-> CMD辅助素材提取脚本
#------------------------------------------------------------------------------
# 容错脚本 BY 轮回者
# CMD辅助素材提取脚本 BY DeathKing
# 此脚本具有上述两个功能!
#==============================================================================
# 使用方法请参考萌芽游戏社中此工程相关的使用说明!
#
# - 获取工程路径
# 使用Windows浏览文件,直到可以直接看到Game.exe这个文件,然后直接复制
# 这个地址,粘贴到$GAME_PATH,并将\替换为\\。
#
# - 获取RTP路径
# 方法一:打开注册表(“开始”->“运行”->regedt32.exe),
# HKEY_LOCAL_MACHINE\SOFTWARE\Enterbrain\RGSS\RTP
# 这个名项的值给复制下来,粘贴到$RTP_PATH中,并把\变为\# 方法二:打开安装RMXP的文件夹,找到Standard文件夹的路径,把它复制到
# $RTP_PATH中,把\变为\#
# - 选择RTP
# 将RTP选为“无”
#
# - 经行游戏
# 点击“游戏测试”(快捷键F12)测试游戏,使每个素材都触发一次Error
# (因为没有素材,所以会提示“找不到****”这正是此脚本所需要的,触发的
# Eorry不会中断工程,而是通过容错脚本来得知需要的素材,再输出到文件中去
# 因此,想要完全提取素材,必须使每个素材都发生一次Error。)
#
# - 修改文件
# 此时你会发现,文件夹下多了两个文件,打开这两个文件,先使用记事本自带的
# “查找、替换”功能将 / 替换为 \ 避免出错。
# * Notepad
# 对于XP的记事本,请继续看:
# 在文档的最后一行独行书写一个 pause 方便等会儿查看素材是否已提取。
# 然后点击“文件”->“另存为” 这里文件名自定,但是将他写成这种格式:
# 文件名.bat 且将编码变为 ANSI 的。
# 现在关闭文件,并运行新创建的bat文件,如果看到了“已复制了*个文件”
# 就说明素材已经提取成功。
# * Notepad2
# 对于Vista的记事本2,请继续看:
# 在文档的最后一行独行书写一个 pause 方便待会儿查看素材是否已提取。
# 然后点击“文件”->“编码”->“ANSI”,并另存为“文件名自定.bat”
# 运行这个新建的批处理文件就可以了。
# 同样,如果看到了“已复制了*个文件”就说明素材已经提取成功了。
#==============================================================================
$GAME_PATH = "H:\\RMXP工程\\素材提取脚本"
# 工程路径
$RTP_PATH = "H:\\RMXP\\RGSS\\Standard"
# RTP路径
$need_file_bitmap = []
if FileTest.exist?("log_bitmap.txt")
f = File.open("./log_bitmap.txt","r")
$need_file_bitmap = f.read.split(/\n/)
f.close
end
module Graphics
@transition = method("transition")
def self.transition(*arg)
begin
@transition.call(*arg)
rescue Errno::ENOENT
ary=[*arg]
filename=ary[1]
unless $need_file_bitmap.include?(filename)
$need_file_bitmap.push(filename)
f = File.open("./log_bitmap.txt","a")
f.write("copy " + $RTP_PATH.to_s + "\\" + filename + ".* " + $GAME_PATH.to_s + "\\Graphics\\Transitions" + "\n")
f.close
end
@transition.call(ary[0])
end
end
end
class Bitmap < Object
alias ini initialize
def initialize(*arg)
begin
ini(*arg)
rescue Errno::ENOENT
filename=[*arg][0]
unless $need_file_bitmap.include?(filename)
$need_file_bitmap.push(filename)
f = File.open("./log_bitmap.txt","a")
filepath = "Graphics\\"
if filename.include?("Titles")
filepath = "Graphics\\Titles\\"
end
if filename.include?("Windowskins")
filepath = "Graphics\\Windowskins\\"
end
if filename.include?("Autotiles")
filepath = "Graphics\\Autotiles\\"
end
if filename.include?("Characters")
filepath = "Graphics\\Characters\\"
end
if filename.include?("Pictures")
filepath = "Graphics\\Pictures\\"
end
if filename.include?("Animations")
filepath = "Graphics\\Animations\\"
end
if filename.include?("Battlebacks")
filepath = "Graphics\\Battlebacks\\"
end
if filename.include?("Battlers")
filepath = "Graphics\\Battlers\\"
end
if filename.include?("Tilesets")
filepath = "Graphics\\Tilesets\\"
end
if filename.include?("Panoramas")
filepath = "Graphics\\Panoramas\\"
end
if filename.include?("Icons")
filepath = "Graphics\\Icons\\"
end
if filename.include?("Gameovers")
filepath = "Graphics\\Gameovers\\"
end
if filename.include?("Fogs")
filepath = "Graphics\\Fogs\\"
end
f.write("copy " + $RTP_PATH.to_s + "\\" + filename + ".* " + $GAME_PATH.to_s + "/#{filepath}" + "\n")
f.close
end
ini(32,32)
end
end
end
$need_file_audio = []
if FileTest.exist?("log_audio.txt")
f = File.open("./log_audio.txt","r")
$need_file_audio = f.read.split(/\n/)
f.close
end
module Audio
@me_play = method("me_play")
def self.me_play(*arg)
begin
@me_play.call(*arg)
rescue Errno::ENOENT
filename=[*arg][0]
unless $need_file_audio.include?(filename)
$need_file_audio.push(filename)
f = File.open("./log_audio.txt","a")
f.write("copy " + $RTP_PATH.to_s + "\\" + filename + ".* " + $GAME_PATH.to_s + "\\Audio\\ME" + "\n")
f.close
end
me_stop
end
end
@bgm_play = method("bgm_play")
def self.bgm_play(*arg)
begin
@bgm_play.call(*arg)
rescue Errno::ENOENT
filename=[*arg][0]
unless $need_file_audio.include?(filename)
$need_file_audio.push(filename)
f = File.open("./log_audio.txt","a")
f.write("copy " + $RTP_PATH.to_s + "\\" + filename + ".* " + $GAME_PATH.to_s + "\\Audio\\BGM" + "\n")
f.close
end
bgm_stop
end
end
@se_play = method("se_play")
def self.se_play(*arg)
begin
@se_play.call(*arg)
rescue Errno::ENOENT
filename=[*arg][0]
unless $need_file_audio.include?(filename)
$need_file_audio.push(filename)
f = File.open("./log_audio.txt","a")
f.write("copy " + $RTP_PATH.to_s + "\\" + filename + ".* " + $GAME_PATH.to_s + "\\Audio\\SE" + "\n")
f.close
end
se_stop
end
end
@bgs_play = method("bgs_play")
def self.bgs_play(*arg)
begin
@bgs_play.call(*arg)
rescue Errno::ENOENT
filename=[*arg][0]
unless $need_file_audio.include?(filename)
$need_file_audio.push(filename)
f = File.open("./log_audio.txt","a")
f.write("copy " + $RTP_PATH.to_s + "\\" + filename + ".* " + $GAME_PATH.to_s + "\\Audio\\BGS" + "\n")
f.close
end
bgs_stop
end
end
end
复制代码
作者:
Rose丶旋律
时间:
2010-7-27 00:28
每個发生一次错误的意思是不是说,
比如用到了1000個文件,就要提取1000次=,=?
作者:
阿阿阿阿
时间:
2010-7-30 14:48
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1