Project1
标题:
[RGSS3] VX Ace RTP 脱离脚本
[打印本页]
作者:
RaidenInfinity
时间:
2016-10-16 16:59
标题:
[RGSS3] VX Ace RTP 脱离脚本
本帖最后由 RaidenInfinity 于 2016-10-31 15:14 编辑
算是我第一次在技术区发帖吧。是应游戏发布大区改版而写的脚本,旨在协助新手发行脱离RTP运行,但不至于容量过大的游戏。
此脚本的原理是遍历数据库和所有地图文件,确认游戏所使用的素材后,从电脑内安装的RTP文件夹复制素材到游戏文件夹。
插件脚本或事件脚本指令使用的素材不被考虑,而且如果有素材的替换,此脚本不会帮忙删除。遇到这种状况请自行解决。
毕竟脱离RTP是游戏制作的最终阶段,已经到了发行的地步了,不是吗?
好,废话说完了,上脚本。
#RTP脱离脚本 by RaidenInfinity
#调用方法:在main上方写:
#RTP_Pack.pack_rtp
module RTP_Pack
#RTP的文件夹。请自行寻找。
RTP_PATH = "C:/Program Files (x86)/RPG Maker VX Ace/RTP"
class << self
def pack_rtp
$res_list = []
p "操作开始!"
perform_select
p "复制文件中…请稍候…"
perform_pack
$res_list = nil
p "操作完成!请记得将Game.ini里面的RTP=RPGVXAce"
p "改成RTP="
p "以真正脱离RTP!"
end
def g_path(a,b)
$res_list ||= []
return if b == ""
$res_list.push("Graphics/" + a + "/" + b)
end
def a_path(a,b)
$res_list ||= []
return if b == ""
$res_list.push("Audio/" + a + "/" + b)
end
def process_event(event)
event.pages.each{|p|
g_path("Characters",p.graphic.character_name)
process_move_route(p.move_route)
process_event_list(p.list)
}
end
def process_move_route(route)
route.list.each{|s|
g_path("Characters",s.parameters[0]) if s.code == 41
a_path("SE",s.parameters[0].name) if s.code == 44
}
end
def process_event_list(list)
list.each{|s|
case s.code
when 205; process_move_route(s.parameters[1])
when 231; g_path("Pictures",s.parameters[1])
when 241; a_path("BGM", s.parameters[0].name)
when 245; a_path("BGS", s.parameters[0].name)
when 249; a_path("ME", s.parameters[0].name)
when 250; a_path("SE", s.parameters[0].name)
when 132; a_path("BGM", s.parameters[0].name)
when 133; a_path("ME", s.parameters[0].name)
when 322; g_path("Characters",s.parameters[1])
g_path("Faces",s.parameters[3])
when 323; g_path("Characters",s.parameters[1])
when 283; g_path("Battlebacks1",s.parameters[0])
g_path("Battlebacks2",s.parameters[1])
when 284; g_path("Parallaxes",s.parameters[0])
end
}
end
def perform_select
DataManager.load_normal_database
$data_actors.each{|s| next if !s
g_path("Characters",s.character_name)
g_path("Faces",s.face_name)
}
$data_enemies.each{|s| next if !s
g_path("Battlers",s.battler_name)
}
$data_animations.each{|s| next if !s
g_path("Animations",s.animation1_name)
g_path("Animations",s.animation2_name)
s.timings.each{|t| a_path("SE",t.se.name) }
}
$data_tilesets.each{|s| next if !s
s.tileset_names.each{|t| g_path("Tilesets",t) }
}
s = $data_system
g_path("Titles1",s.title1_name)
g_path("Titles2",s.title2_name)
g_path("Characters",s.boat.character_name)
g_path("Characters",s.ship.character_name)
g_path("Characters",s.airship.character_name)
a_path("BGM",s.boat.bgm.name)
a_path("BGM",s.ship.bgm.name)
a_path("BGM",s.airship.bgm.name)
a_path("BGM",s.title_bgm.name)
a_path("BGM",s.battle_bgm.name)
a_path("ME",s.battle_end_me.name)
a_path("ME",s.gameover_me.name)
s.sounds.each{|t| a_path("SE",t.name) }
g_path("System","Window")
g_path("System","IconSet")
g_path("System","Shadow")
g_path("System","Balloon")
g_path("System","BattleStart")
g_path("System","GameOver")
g_path("Battlebacks1","Grassland")
g_path("Battlebacks2","Grassland")
$data_mapinfos.each{|k,v|
map = load_data(sprintf("Data/Map%03d.rvdata2", k))
g_path("Parallaxes",map.parallax_name)
g_path("Battlebacks1",map.battleback1_name)
g_path("Battlebacks2",map.battleback2_name)
a_path("BGM", map.bgm.name)
a_path("BGS", map.bgs.name)
map.events.each{|k,v|
process_event(v)
}
}
$data_common_events.each{|s| next if !s
process_event_list(s.list)
}
$res_list.uniq!.delete("")
$res_list = $res_list.sort
p $res_list
end
def perform_pack
if !(Dir.exists?(RTP_PATH) && Dir.exists?(RTP_PATH + "/Graphics") &&
Dir.exists?(RTP_PATH + "/Audio"))
throw "请在RTP_PATH内填入正确的RTP路径!"
end
$res_list.each{|s|
r = RTP_PATH + "/" + s
[".png",".jpg",".bmp",".ogg",".mp3",".wma",".wav"].each{|i|
a = File.exist?(r + i)
next if !a
a = File.exist?(s + i)
break if a
move_file(r + i,s + i)
break
}
}
end
def move_file(r,s)
File.open(r,"rb"){|f|
File.open(s,"wb"){|g|
v = f.readlines
v.each{|i|
g.write(i)
}
}
}
end
end
end
复制代码
附截图的详细使用方法有时间再写。
文字叙述的话,基本使用方法是:
1. 将这个插件脚本安装到Main以上
2. 填写RTP_PATH,请自行寻找。汉化版的RMVA大概安装位置在C:/Program Files/RPG Maker VX Ace/RTP,如果是64位电脑的话,就如脚本内所写的那样。
3. 在Main脚本里面,rgss_main { SceneManager.run }的上方写:
RTP_Pack.pack_rtp
4. 等待运行结束,标题画面出来就是成功了。如果有开控制台的话,会看到游戏使用素材的详细列表。
5. 这还没结束呢!打开Game.ini,把
RTP=RPGVXACE
改成
RTP=
以完全脱离RTP的使用。
6.
删除本脚本和在Main的调用。
因为你已经不需要这个脚本了。怕留着会出事。
7. 现在你可以打包游戏了。请不要勾选附带RTP数据,因为你刚已经弄完了!
使用上有什么问题,或者有建议的,可以留个回复。以上。
-
[groupid=600]精神污染[/groupid]
作者:
Elevenorth
时间:
2016-10-16 20:08
很不错的东西,之前在黑科技那看到XP有一个还挺想要。
今天随便转转就找到VA的了……
作者:
枕少不暖~
时间:
2016-10-31 13:45
115行错误啥的
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1