设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3869|回复: 9
打印 上一主题 下一主题

[RMVA发布] VA rtp提取脚本

[复制链接]

Lv4.逐梦者

梦石
2
星屑
5520
在线时间
2564 小时
注册时间
2012-2-9
帖子
990

开拓者

跳转到指定楼层
1
发表于 2016-7-26 19:59:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 garfeng 于 2016-8-1 12:13 编辑

怀疑这个脚本之前有人写过,但找不到了。
自己动手吧。

因为ace的rtp有200M,全加进去太大,手动加又很麻烦。

这个脚本可以在游戏运行时,把用到的,却不存在的BGM,图片移动到游戏自己的目录下。

推荐在游戏制作整个过程中,都使用本脚本,保证每个角落要用到的图片和bgm都移过去了。
在发布前将本脚本删除。

RUBY 代码复制
  1. #ACE rtp提取工具,by garfeng
  2. #只能提取bgm,和图片
  3. #请把原始rtp复制一份使用,不要使用原始的rtp路径
  4. #因为是移动文件,而非复制。
  5.  
  6.  
  7.  
  8. $rootDir = "../rtp/"
  9.  
  10. def mvBgm(bgm)
  11.   name = bgm.name
  12.   p name
  13.   path = "Audio/BGM/" + name + ".ogg"
  14.   exist = File.exist?(path)
  15.   if !exist
  16.     ori = $rootDir + path
  17.     if File.exist?(ori)
  18.       p ori
  19.       File.rename(ori,path)
  20.     end
  21.   end
  22. end
  23.  
  24. def mvImg(img)
  25.   path1 = img+".png"
  26.   path2 = img+".jpg"
  27.   exist = File.exist?(path1) || File.exist?(path2)
  28.   if !exist
  29.     ori1 = $rootDir + path1
  30.     ori2 = $rootDir + path2
  31.     if File.exist?(ori1)
  32.       File.rename(ori1,path1)
  33.     elsif File.exist?(ori2)
  34.       file.rename(ori2,path2)
  35.     end
  36.   end
  37. end
  38.  
  39.  
  40. module Cache
  41.  
  42.   def self.normal_bitmap(path)
  43.     mvImg(path)
  44.     @cache[path] = Bitmap.new(path) unless include?(path)
  45.     @cache[path]
  46.   end
  47.  
  48. end
  49.  
  50.  
  51.  
  52. class Game_Map
  53.  
  54.   def autoplay
  55.     if @map.autoplay_bgm
  56.       mvBgm(@map.bgm)
  57.     end
  58.     @map.bgm.play if @map.autoplay_bgm
  59.     @map.bgs.play if @map.autoplay_bgs
  60.   end
  61.  
  62. end
  63.  
  64.  
  65. module BattleManager
  66.  
  67.   def self.play_battle_bgm
  68.     mvBgm($game_system.battle_bgm)
  69.     $game_system.battle_bgm.play
  70.     RPG::BGS.stop
  71.   end
  72.  
  73. end
  74.  
  75. class Game_Vehicle < Game_Character
  76.  
  77.   def get_on
  78.     @driving = true
  79.     @walk_anime = true
  80.     @step_anime = true
  81.     @walking_bgm = RPG::BGM.last
  82.     mvBgm(system_vehicle.bgm)
  83.     system_vehicle.bgm.play
  84.   end
  85.  
  86.   def get_off
  87.     @driving = false
  88.     @walk_anime = false
  89.     @step_anime = false
  90.     @direction = 4
  91.     mvBgm(@walking_bgm)
  92.     @walking_bgm.play
  93.   end
  94.  
  95. end
  96.  
  97. class Scene_Title < Scene_Base
  98.  
  99.   def play_title_music
  100.     mvBgm($data_system.title_bgm)
  101.     $data_system.title_bgm.play
  102.     RPG::BGS.stop
  103.     RPG::ME.stop
  104.   end
  105.  
  106. end
  107.  
  108. class Game_Interpreter
  109.  
  110.   def command_241
  111.     mvBgm(@params[0])
  112.     @params[0].play
  113.   end
  114.  
  115. end

点评

复制可以用 IO.copy_stream,参考 ruby 标准库的 FileUtils  发表于 2016-11-19 10:56

评分

参与人数 1+1 收起 理由
Kim_Shyuen + 1 塞糖

查看全部评分

Lv1.梦旅人

梦石
0
星屑
2008
在线时间
47 小时
注册时间
2016-6-7
帖子
3
2
发表于 2016-7-26 20:40:16 | 只看该作者
好东西。为什么不能直接复制呢。

点评

因为不知道ruby怎么复制文件……【归根结底是懒= - =】  发表于 2016-7-26 20:45
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
2008
在线时间
47 小时
注册时间
2016-6-7
帖子
3
3
发表于 2016-7-26 21:46:36 | 只看该作者
本帖最后由 WQ3465802 于 2016-11-18 23:25 编辑

试了一下调用API可以实现复制文件


  1. $rootDir = "../rtp/" #设置rtp的位置
  2. def fileCopy(原文件,目标,覆盖=1)
  3.   sCopy = Win32API.new('kernel32', 'CopyFileA',%(p p l), 'l')
  4.   sCopy.call(原文件,目标,覆盖)
  5. end

  6. def mvBgm(bgm)
  7.   name = bgm.name
  8.   p name
  9.   path = "Audio/BGM/" + name + ".ogg"
  10.   exist = File.exist?(path)
  11.   if !exist
  12.     ori = $rootDir + path
  13.     if File.exist?(ori)
  14.       fileCopy(ori,path)
  15.     end
  16.   end
  17. end

  18. def mvImg(img)
  19.   path1 = img+".png"
  20.   path2 = img+".jpg"
  21.   exist = File.exist?(path1) || File.exist?(path2)
  22.   if !exist
  23.     ori1 = $rootDir + path1
  24.     ori2 = $rootDir + path2
  25.     if File.exist?(ori1)
  26.       fileCopy(ori1,path1)
  27.     elsif File.exist?(ori2)
  28.       fileCopy(ori2,path2)
  29.     end
  30.   end
  31. end


  32. module Cache

  33.   def self.normal_bitmap(path)
  34.     mvImg(path)
  35.     @cache[path] = Bitmap.new(path) unless include?(path)
  36.     @cache[path]
  37.   end

  38. end



  39. class Game_Map

  40.   def autoplay
  41.     if @map.autoplay_bgm
  42.       mvBgm(@map.bgm)
  43.     end
  44.     @map.bgm.play if @map.autoplay_bgm
  45.     @map.bgs.play if @map.autoplay_bgs
  46.   end

  47. end


  48. module BattleManager

  49.   def self.play_battle_bgm
  50.     mvBgm($game_system.battle_bgm)
  51.     $game_system.battle_bgm.play
  52.     RPG::BGS.stop
  53.   end

  54. end

  55. class Game_Vehicle < Game_Character

  56.   def get_on
  57.     @driving = true
  58.     @walk_anime = true
  59.     @step_anime = true
  60.     @walking_bgm = RPG::BGM.last
  61.     mvBgm(system_vehicle.bgm)
  62.     system_vehicle.bgm.play
  63.   end

  64.   def get_off
  65.     @driving = false
  66.     @walk_anime = false
  67.     @step_anime = false
  68.     @direction = 4
  69.     mvBgm(@walking_bgm)
  70.     @walking_bgm.play
  71.   end

  72. end

  73. class Scene_Title < Scene_Base

  74.   def play_title_music
  75.     mvBgm($data_system.title_bgm)
  76.     $data_system.title_bgm.play
  77.     RPG::BGS.stop
  78.     RPG::ME.stop
  79.   end

  80. end

  81. class Game_Interpreter

  82.   def command_241
  83.     mvBgm(@params[0])
  84.     @params[0].play
  85.   end

  86. end
复制代码

点评

或者我修改下发到一楼?可以吗?  发表于 2016-8-1 15:14
你好,108行开始我新加了一段,是事件bgm,我之前弄掉了……你这边需要重新加上吗?  发表于 2016-8-1 12:14

评分

参与人数 1星屑 +100 收起 理由
garfeng + 100 非常感谢!

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
2008
在线时间
47 小时
注册时间
2016-6-7
帖子
3
4
发表于 2016-11-18 23:31:19 | 只看该作者
本帖最后由 WQ3465802 于 2016-11-18 23:35 编辑

本来就是你的代码。有什么更新的,你就修改发布吧,你看着办吧


(我几乎不来论坛,也就找游戏玩的时候才来看看。也不会做游戏,在论坛也就回复过2次,连这次3次)

点评

好的,谢谢~  发表于 2016-11-19 09:57
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
10 小时
注册时间
2023-8-5
帖子
9
5
发表于 2023-9-11 11:01:50 | 只看该作者
666666666666666
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-29 04:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表