赞 | 95 |
VIP | 77 |
好人卡 | 113 |
积分 | 69 |
经验 | 147345 |
最后登录 | 2024-9-22 |
在线时间 | 7028 小时 |
Lv4.逐梦者 (版主)
- 梦石
- 0
- 星屑
- 6901
- 在线时间
- 7028 小时
- 注册时间
- 2013-11-2
- 帖子
- 1344
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 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数据,因为你刚已经弄完了!
使用上有什么问题,或者有建议的,可以留个回复。以上。
-
|
评分
-
查看全部评分
|