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

Project1

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

[转载] RMVX的RTP素材提取脚本

[复制链接]

Lv1.梦旅人

派大星

梦石
0
星屑
195
在线时间
2133 小时
注册时间
2011-9-18
帖子
2652
跳转到指定楼层
1
发表于 2012-1-13 20:14:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  1. 【糟糕VX脚本又一枚】RMVX的RTP素材提取脚本
  2. 2009-10-03 11:49
  3. 如题。大约一年前写的,(我记得)在6R发布过但找不到了= =

  4. 核心完全参照XP版(写的时候还参照过http://rpg.blue/viewthread.php?tid=101473)所以几乎可以说是毫无技术含量

  5. 使用方法:使用前先备份RTP……把脚本复制到main上方就可以了(根目录下会生成被提取文件名的txt)用完以后把此脚本删了,然后把RTP恢复。……应该能提取基于事件的所有RTP使用吧?如有遗漏请联系我。

  6. 要说缺点的话,这儿有3个

  7. 1.由于原作者和我都很偷懒,因此SE文件夹是无差别直接拿来的……不过整个SE才900K所以没问题吧?(<-殴

  8. 2.关于脚本调用Sprite或者Bitmap什么的还在远目中……不过有谁能提供方法的话我倒是乐意尝试

  9. (不过,用脚本调用的应该不会是RTP吧?)

  10. 3.整个过程是剪切不是复制……所以使用前务必备份RTP

  11. ----------------------------------------------------------------------------

  12. #============================================================================
  13. # 核心作者:RoyRoy         VX化:superufo(小幽)
  14. # 使用方法:
  15. #    1、首先输入RMVX的标准素材库地址
  16. #    2、运行脚本就OK了。
  17. # ★★特别声明!!运用此脚本会删掉你给的路径的素材库★★请自己备份好★★★★
  18. #============================================================================

  19. RMVX = "F:/Program Files/RPGVX/RGSS2/"   # 素材库地址

  20. module DumpRgss
  21. def self.dump
  22.    @rgss_list = []   
  23.    @rgss_dir = {
  24.                 'BGM'            => 'Audio/BGM',
  25.                 'BGS'            => 'Audio/BGS',
  26.                 'ME'             => 'Audio/ME',
  27.                 'SE'             => 'Audio/SE',
  28.                 'fonts'          => 'Fonts',
  29.                 'Animations'     => 'Graphics/Animations',
  30.                 'Battlers'       => 'Graphics/Battlers',
  31.                 'Characters'     => 'Graphics/Characters',
  32.                 'Faces'          => 'Graphics/Faces',
  33.                 'Parallaxes'     => 'Graphics/Parallaxes',
  34.                 'System'         => 'Graphics/System'
  35.                 }
  36.    base_data = ['Actors', 'Animations', 'Enemies']
  37.    rgss_data = {
  38.                 'animation1_name' => 'Animations',
  39.                 'animation2_name' => 'Animations',
  40.                 'battler_name'     => 'Battlers',
  41.                 'character_name'   => 'Characters',
  42.                 'face_name'        => 'Faces',
  43.                 }
  44.    for fnbase in base_data
  45.      rvdata = self.open_file(fnbase)
  46.      for data in rvdata
  47.        for data_key in rgss_data.keys
  48.          begin
  49.            data_value = eval('data.' + data_key)
  50.            self.push_to_list(rgss_data[data_key], data_value)
  51.          rescue
  52.          end # begin
  53.        end # for data_key
  54.          
  55.        # Animations.rvdata
  56.        if fnbase == 'Animations'
  57.          begin
  58.            for timing in data.timings
  59.              self.push_to_list('SE', timing.se.name)
  60.            end # for timing
  61.          rescue
  62.          end # begin
  63.        end
  64.      end # for data
  65.    end # for fnbase
  66.    
  67.    # System.rvdata
  68.    rgss_data = {
  69.                 'boat' => 'Characters',
  70.                 'ship' => 'Characters',
  71.                 'air' => 'Characters',
  72.                 'title_bgm'        => 'BGM',
  73.                 'battle_bgm'        => 'BGM',
  74.                 'battle_end_me'        => 'ME',
  75.                 'gameover_me'        => 'ME',
  76.                 'name'                 => 'SE'
  77.                 }
  78.    rvdata = self.open_file('System')
  79.    self.push_to_list('BGM', rvdata.title_bgm.name)
  80.    self.push_to_list('BGM', rvdata.battle_bgm.name)
  81.    self.push_to_list('ME', rvdata.battle_end_me.name)
  82.    self.push_to_list('ME', rvdata.gameover_me.name)
  83.    self.push_to_list('Characters', rvdata.boat.character_name)
  84.    self.push_to_list('Characters', rvdata.ship.character_name)
  85.    self.push_to_list('Characters', rvdata.airship.character_name)

  86.    for data_key in rgss_data.keys
  87.      begin
  88.        data_value = eval('rvdata.' + data_key)
  89.        self.push_to_list(rgss_data[data_key.name], data_value)
  90.        if data_value == 'sounds'
  91.          for sound in data_value
  92.            sound_value = eval('rvdata.' + sound)
  93.            self.push_to_list(rgss_data[sound], sound_value)
  94.          end
  95.        elsif data_value == 'boat'
  96.          self.push_to_list(rgss_data[data_key.character_name], data_value)
  97.        elsif data_value == 'ship'
  98.          self.push_to_list(rgss_data[data_key.character_name], data_value)
  99.        elsif data_value == 'air'
  100.          self.push_to_list(rgss_data[data_key.character_name], data_value)
  101.        end
  102.      rescue
  103.      end # begin
  104.    end # for data_key
  105.    
  106.    # CommonEvents.rvdata
  107.    rvdata = self.open_file('CommonEvents')
  108.    
  109.    for data in rvdata
  110.      begin
  111.        self.dump_event_list(data.list)
  112.      rescue
  113.      end # begin
  114.    end
  115.    
  116.    # Troops (events) data
  117.    rvdata = self.open_file('Troops')
  118.    
  119.    for data in rvdata
  120.      begin
  121.        for page in data.pages
  122.          self.dump_event_list(page.list)
  123.        end # begin
  124.      rescue
  125.      end
  126.    end
  127.    
  128.    # Map (events) data
  129.    fldata = 'Data/MapInfos.rvdata'
  130.    mapinfos = load_data(fldata)
  131.    for mapinfo in mapinfos
  132.      rvdata = self.open_file(sprintf('Map%03d', mapinfo[0]))
  133.      begin
  134.        self.push_to_list('BGM', rvdata.bgm)
  135.        self.push_to_list('BGS', rvdata.bgs)
  136.        self.push_to_list('Parallaxes', rvdata.parallax_name)
  137.      rescue
  138.      end # begin
  139.      # Events
  140.      for event in rvdata.events.values
  141.        for page in event.pages
  142.          begin
  143.            self.push_to_list('Characters', page.graphic.character_name)
  144.            self.dump_custom_move_list(page.move_route.list)
  145.            self.dump_event_list(page.list)
  146.          rescue
  147.          end # begin
  148.        end
  149.      end
  150.    end
  151.    #System
  152.    @rgss_list.push('System')
  153.    begin
  154.    self.push_to_list('System','Balloon')
  155.    self.push_to_list('System','BattleFloor')
  156.    self.push_to_list('System','BattleStart')
  157.    self.push_to_list('System','GameOver')
  158.    self.push_to_list('System','IconSet')
  159.    self.push_to_list('System','MessageBack')
  160.    self.push_to_list('System','Shadow')
  161.    self.push_to_list('System','TileA1')
  162.    self.push_to_list('System','TileA2')
  163.    self.push_to_list('System','TileA3')
  164.    self.push_to_list('System','TileA4')
  165.    self.push_to_list('System','TileA5')
  166.    self.push_to_list('System','TileB')
  167.    self.push_to_list('System','TileC')
  168.    self.push_to_list('System','TileD')
  169.    self.push_to_list('System','TileE')
  170.    self.push_to_list('System','Title')
  171.    self.push_to_list('System','Window')
  172. rescue
  173.    end
  174.    # Save
  175.    @rgss_list.shift
  176.    f = open('./dump_rgss.txt', 'w')
  177.    begin
  178.      for rgss in @rgss_list
  179.        printf(f, '%s%s', rgss, "\n")
  180.      end
  181.    ensure
  182.      f.close
  183.    end
  184.    
  185. end
  186. def self.open_file(fndata)
  187.    fldata = sprintf('Data/%s.rvdata', fndata)
  188.    
  189.    @rgss_list.push('')
  190.    @rgss_list.push(sprintf('[%s]', fldata))
  191.    
  192.    return load_data(fldata)
  193. end
  194. def self.push_to_list(dir_key, value)
  195.    # Audio/SE
  196.    if value.is_a?(RPG::AudioFile)
  197.      value = value.name
  198.    end
  199.    if value != ''
  200.      flrgss = sprintf('%s/%s', @rgss_dir[dir_key], value)
  201.      if File.exist?(RMVX+flrgss+".jpg")
  202.        File.rename(RMVX+flrgss+".jpg",flrgss+".jpg")
  203.      end
  204.      if File.exist?(RMVX+flrgss+".bmp")
  205.        File.rename(RMVX+flrgss+".bmp",flrgss+".bmp")
  206.      end
  207.      if File.exist?(RMVX+flrgss+".png")
  208.        File.rename(RMVX+flrgss+".png",flrgss+".png")
  209.      end
  210.      if File.exist?(RMVX+flrgss+".wav")
  211.         File.rename(RMVX+flrgss+".wav",flrgss+".wav")
  212.      end
  213.      if File.exist?(RMVX+flrgss+".mp3")
  214.        File.rename(RMVX+flrgss+".mp3",flrgss+".mp3")
  215.      end
  216.      if File.exist?(RMVX+flrgss+".mid")
  217.        File.rename(RMVX+flrgss+".mid",flrgss+".mid")
  218.      end
  219.      if File.exist?(RMVX+flrgss+".wma")
  220.        File.rename(RMVX+flrgss+".wma",flrgss+".wma")
  221.      end
  222.      if File.exist?(RMVX+flrgss+".ogg")
  223.        File.rename(RMVX+flrgss+".ogg",flrgss+".ogg")
  224.      end
  225.      @rgss_list.push(flrgss)
  226.    end
  227. end
  228. def self.dump_event_list(event_commands)
  229.    for event_command in event_commands
  230.      self.dump_event(event_command)
  231.    end
  232. end
  233. def self.dump_event(event_command)
  234.    parameters = event_command.parameters
  235.    case event_command.code
  236.    when 101
  237.      self.push_to_list('Faces', parameters[0])
  238.    when 132
  239.      self.push_to_list('BGM', parameters[0])
  240.    when 133
  241.      self.push_to_list('ME', parameters[0])
  242.    when 205
  243.      dump_custom_move_list(parameters[1].list)
  244.    when 231
  245.      self.push_to_list('Pictures', parameters[1])
  246.    when 241
  247.      self.push_to_list('BGM', parameters[0])
  248.    when 245
  249.      self.push_to_list('BGS', parameters[0])
  250.    when 249
  251.      self.push_to_list('ME', parameters[0])
  252.    when 250
  253.      self.push_to_list('SE', parameters[0])
  254.    when 322
  255.      self.push_to_list('Characters', parameters[1])
  256.      self.push_to_list('Faces', parameters[3])
  257.    when 323
  258.      self.push_to_list('Characters', parameters[1])
  259.    end
  260. end
  261. def self.dump_custom_move_list(move_commands)
  262.    for move_command in move_commands
  263.      self.dump_custom_move(move_command)
  264.    end
  265. end
  266. def self.dump_custom_move(move_command)
  267.    parameters = move_command.parameters
  268.    case move_command.code
  269.    when 41
  270.      self.push_to_list('Characters', parameters[0])
  271.    when 44
  272.      self.push_to_list('SE', parameters[0])
  273.    end
  274. end
  275. end

  276. DumpRgss.dump
  277. p "Done"
复制代码
原地址:http://hi.baidu.com/mars_superuf ... 97b319632798c2.html

评分

参与人数 1星屑 +40 收起 理由
逍遥仙君 + 40 可以

查看全部评分

Lv1.梦旅人

梦石
0
星屑
50
在线时间
73 小时
注册时间
2014-4-6
帖子
37
2
发表于 2014-4-6 16:11:33 | 只看该作者
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
418
在线时间
555 小时
注册时间
2014-2-9
帖子
276
3
发表于 2014-4-20 16:47:17 | 只看该作者
表示不懂,但还支持

点评

做游戏也许会用到的,但不是必要的:)我还是喜欢手动找素材。  发表于 2014-4-20 17:40
3
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-4 02:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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