幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: secondsen

[RM2K&2K3] RMXP有办法获取audio  graphic的所有文件的名字不?

[复制链接]

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2007-9-11 18:53:48 | 显示全部楼层
试着写了一个
  1. #列出游戏工程中所用到的所有资源文件
  2. #                        by shawind
  3. #  license: BSD
  4. #注意:
  5. #1.把标准库中的资源复制到当前工程的对应目录下,本脚本没有分析标准库的绝对路径
  6. #2.如果用自定义素材,请按RMXP的方式和文件格式把文件放在对应目录下
  7. #  或者可以自己修改这个脚本,为你的资源文件生成对应的目录和后缀名
  8. #3.从事件中列出的资源,不太好判断目录和后缀名,
  9. #  似乎判断文件类型,目录等是rmxp的IDE做的事,而不是rgss
  10. #4.如果在rgss脚本使用的资源,则不能正常列出这些额外资源。
  11. Actors = load_data("Data/Actors.rxdata")
  12. Animations = load_data("Data/Animations.rxdata")
  13. Armors = load_data("Data/Armors.rxdata")
  14. Classes = load_data("Data/Classes.rxdata")
  15. CommonEvents = load_data("Data/CommonEvents.rxdata")
  16. Enemies = load_data("Data/Enemies.rxdata")
  17. Items = load_data("Data/Items.rxdata")
  18. Scripts = load_data("Data/Scripts.rxdata")
  19. MapInfos = load_data("Data/MapInfos.rxdata")
  20. Skills = load_data("Data/Skills.rxdata")
  21. States = load_data("Data/States.rxdata")
  22. System = load_data("Data/System.rxdata")
  23. Tilesets = load_data("Data/Tilesets.rxdata")
  24. Troops = load_data("Data/Troops.rxdata")
  25. Weapons = load_data("Data/Weapons.rxdata")
  26. Map = Array.new
  27. for i in 1..MapInfos.length
  28. Map[i] = load_data("Data/" + MapInfos[i].name + ".rxdata")
  29. end
  30. p "列出在数据库和事件中使用到的资源,并输出到db.txt文件中"
  31. f = open("db.txt", "w+")
  32.   f.write("角色行走图:\\n")
  33.   for i in 1...Actors.length
  34.     f.write("Graphics/Characters/" + Actors[i].character_name + ".png\\n")
  35.   end
  36.   
  37.   f.write("角色战斗图:\\n")
  38.   for i in 1...Actors.length
  39.     f.write("Graphics/Battlers/" + Actors[i].battler_name + ".png\\n")
  40.   end
  41.   f.write("敌人战斗图:\\n")
  42.   for i in 1...Enemies.length
  43.     f.write("Graphics/Battlers/" + Enemies[i].battler_name + ".png\\n")
  44.   end
  45.   
  46.   f.write("动画图像名:\\n")
  47.   for i in 1...Animations.length
  48.     f.write("Graphics/Animations/" + Animations[i].animation_name + ".png\\n")
  49.   end
  50.   
  51.   f.write("动画音效名:\\n")
  52.   for i in 1...Animations.length
  53.     for j in 0...Animations[i].timings.length-1
  54.       if Animations[i].timings[j].se.name != ""
  55.         f.write("Audio/SE/" + Animations[i].timings[j].se.name + ".ogg\\n")
  56.         end
  57.     end
  58.   end
  59.   f.write("道具图标名:\\n")
  60.   for i in 1...Items.length
  61.     f.write("Graphics/Icons/" + Items[i].icon_name + ".png\\n")
  62.   end
  63.   f.write("道具音效名:\\n")
  64.   for i in 1...Items.length
  65.     if Items[i].menu_se.name != ""
  66.       f.write("Audio/SE/" + Items[i].menu_se.name + ".ogg\\n")
  67.     end
  68.   end
  69.   
  70.   f.write("武器图标名:\\n")
  71.   for i in 1...Weapons.length
  72.     f.write("Graphics/Icons/" + Weapons[i].icon_name + ".png\\n")
  73.   end
  74.   f.write("防具图标名:\\n")
  75.   for i in 1...Armors.length
  76.     f.write("Graphics/Icons/" + Armors[i].icon_name + ".png\\n")
  77.   end
  78.   f.write("技能图标名:\\n")
  79.   for i in 1...Skills.length
  80.     f.write("Graphics/Icons/" + Skills[i].icon_name + ".png\\n")
  81.   end
  82.   f.write("技能音效名:\\n")
  83.   for i in 1...Skills.length
  84.     if Skills[i].menu_se.name != ""
  85.       f.write("Audio/SE/" + Skills[i].menu_se.name + ".ogg\\n")
  86.     end
  87.   end
  88.   f.write("地图音乐名:\\n")
  89.   for i in 1...Map.length
  90.     if Map[i].bgm.name != ""
  91.       f.write("Audio/BGM/" + Map[i].bgm.name + ".mid\\n")
  92.     end
  93.   end
  94.   
  95.   f.write("地图音效名:\\n")
  96.   for i in 1...Map.length
  97.     if Map[i].bgs.name != ""
  98.       f.write("Audio/BGS/" + Map[i].bgs.name + ".ogg\\n")
  99.     end
  100.   end
  101.   f.write("地图图块名:\\n")
  102.   for i in  1...Tilesets.length
  103.     f.write("Graphics/Tilesets/" + Tilesets[i].tileset_name + ".png\\n")
  104.   end
  105.   f.write("地图自动图块名:\\n")
  106.   for i in  1...Tilesets.length
  107.     for j in 0...Tilesets[i].autotile_names.length-1
  108.         if Tilesets[i].autotile_names[j] != ""
  109.           f.write("Graphics/Autotiles/" + Tilesets[i].autotile_names[j] + ".png\\n")
  110.         end
  111.     end
  112.   end
  113.   
  114.   f.write("地图远景图像名:\\n")
  115.   for i in  1...Tilesets.length
  116.     if Tilesets[i].panorama_name != ""
  117.       f.write("Graphics/Panoramas/" + Tilesets[i].panorama_name + ".jpg\\n")
  118.     end
  119.   end
  120.   
  121.   f.write("地图雾图像名:\\n")
  122.   for i in  1...Tilesets.length
  123.     if Tilesets[i].fog_name != ""
  124.       f.write("Graphics/Fogs/" + Tilesets[i].fog_name + ".png\\n")
  125.     end
  126.   end
  127.   f.write("地图战斗背景图名:\\n")
  128.   for i in  1...Tilesets.length
  129.     if Tilesets[i].battleback_name != 0
  130.     f.write("Graphics/Battlebacks/" + Tilesets[i].battleback_name + ".jpg\\n")
  131.     end
  132.   end
  133.   
  134.   f.write("系统设定:\\n")
  135.   f.write("Graphics/Windowskins/" + System.windowskin_name + ".png\\n")
  136.   f.write("Graphics/Titles/" + System.title_name + ".jpg\\n")
  137.   f.write("Graphics/Gameovers/" + System.gameover_name + ".jpg\\n")
  138.   f.write("Graphics/Transitions/" + System.battle_transition + ".png\\n")
  139.   f.write("Audio/BGM/" + System.title_bgm.name + ".mid\\n")
  140.   f.write("Audio/BGM/" + System.battle_bgm.name + ".mid\\n")
  141.   f.write("Audio/ME/" + System.battle_end_me.name + ".mid\\n")
  142.   f.write("Audio/ME/" + System.gameover_me.name + ".mid\\n")
  143.   f.write("Audio/SE/" + System.cursor_se.name + ".ogg\\n")
  144.   f.write("Audio/SE/" + System.decision_se.name + ".ogg\\n")
  145.   f.write("Audio/SE/" + System.cancel_se.name + ".ogg\\n")
  146.   f.write("Audio/SE/" + System.buzzer_se.name + ".ogg\\n")
  147.   f.write("Audio/SE/" + System.equip_se.name + ".ogg\\n")
  148.   f.write("Audio/SE/" + System.shop_se.name + ".ogg\\n")
  149.   f.write("Audio/SE/" + System.save_se.name + ".ogg\\n")
  150.   f.write("Audio/SE/" + System.load_se.name + ".ogg\\n")
  151.   f.write("Audio/SE/" + System.battle_start_se.name + ".ogg\\n")
  152.   f.write("Audio/SE/" + System.escape_se.name + ".ogg\\n")
  153.   f.write("Audio/SE/" + System.actor_collapse_se.name + ".ogg\\n")
  154.   f.write("Audio/SE/" + System.enemy_collapse_se.name + ".ogg\\n")
  155.   f.write("Graphics/Battlebacks/" + System.battleback_name + ".jpg\\n")
  156. #暂时还没有想到获取这些资源后缀名的办法
  157.   CEpic = "公共事件中调用的资源的图片:\\n"
  158.   CEsound = "公共事件中调用的资源的声音文件:\\n"
  159.   for i in 1...CommonEvents.length
  160.     for j in 0...CommonEvents[i].list.length
  161.       for k in 0...CommonEvents[i].list[j].parameters.length
  162.         begin
  163.           CEsound += ( CommonEvents[i].list[j].parameters[k].name + "\\n")
  164.         rescue
  165.           CEpic += ("Graphics/Pictures/" + CommonEvents[i].list[j].parameters[1] + "\\n")
  166.           break
  167.         end
  168.       end
  169.     end
  170.   end
  171.   f.write(CEpic)
  172.   f.write(CEsound)
  173.   TEpic = "队伍事件中调用的资源的图片:\\n"
  174.   TEsound = "队伍事件中调用的资源的声音文件:\\n"
  175.   for i in 1...Troops.length
  176.     for j in 0...Troops[i].pages.length
  177.       for k in 0...Troops[i].pages[j].list.length
  178.         for l in 0...Troops[i].pages[j].list[k].parameters.length
  179.           begin
  180.             TEsound += (Troops[i].pages[j].list[k].parameters[l].name + "\\n")
  181.           rescue
  182.             TEpic += ("Graphics/Pictures/" + Troops[i].pages[j].list[k].parameters[1] + "\\n")
  183.             break
  184.           end
  185.         end
  186.        end
  187.      end
  188.   end
  189.   f.write(TEpic)
  190.   f.write(TEsound)
  191.   
  192.   MEpic = "地图事件中调用的资源的图片:\\n"
  193.   MEsound = "地图事件中调用的资源的声音文件:\\n"
  194.   for i in 1...Map.length
  195.     for j in 1...Map[i].events.length
  196.       for k in 0...Map[i].events[j].pages.length
  197.         for l in 0...Map[i].events[j].pages[k].list.length
  198.           for m in 0...Map[i].events[j].pages[k].list[l].parameters.length
  199.             begin
  200.               MEsound += (Map[i].events[j].pages[k].list[l].parameters[m].name + "\\n")
  201.             rescue
  202.               MEpic += ("Graphics/Pictures/" + Map[i].events[j].pages[k].list[l].parameters[1] + "\\n")
  203.               break
  204.             end
  205.           end
  206.         end
  207.       end
  208.     end
  209.   end
  210.   f.write(MEpic)
  211.   f.write(MEsound)
  212.   
  213. f.close
复制代码
え~え~お!!!
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2007-9-11 18:56:52 | 显示全部楼层
还有很多BUG,应付默认工程,应该没问题....-_-!
え~え~お!!!
回复 支持 反对

使用道具 举报

550

主题

9117

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2007-9-11 20:28:55 | 显示全部楼层
挺好挺好。。。还会有BUG。。。没有看出来啊 [s:2]
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2007-9-12 09:21:04 | 显示全部楼层
BUG主要出在输出事件脚本中调用的资源的时候。
我写的时候,只测试了加载图片和音乐音效的语句,然后就直接输出了,
其实是应该先判断脚本调用的类型,如:是不是RPG::AudioFile之类的,然后再输出文件名。
我ruby学得不多,没想到如何去实现这样的判断。 [s:6]
え~え~お!!!
回复 支持 反对

使用道具 举报

550

主题

9117

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2007-9-12 12:24:24 | 显示全部楼层
在研究研究,,谢谢LS哈
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2007-9-12 15:06:48 | 显示全部楼层
有办法判断脚本类型了。
CommonEvents.list[j].code 这个就是判断脚本的类型
能加载上资源的事件类型有:
131: 更改窗口外观
132: 更改战斗 BGM
133: 更改战斗结束 ME
204: 更改地图设置
222: 执行渐变
231: 显示图片
241: 演奏 BGM
245: 演奏 BGS
249: 演奏 ME
250: 演奏 SE
322: 更改角色图形
都非常具体,可以获得资源及其目录所在
另外
File.extname(filename) 获得后缀名
File.expand_path(path[, default_dir]) 获得绝对路径
File.delete(filename ... ) 删除文件
这样就可以写出很完备的资源管理脚本了。
え~え~お!!!
回复 支持 反对

使用道具 举报

550

主题

9117

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2007-9-12 15:12:02 | 显示全部楼层
研究下哈,,看得迷糊了都
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-21 17:36 , Processed in 0.010261 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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