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

Project1

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

[原创发布] 制作攻略必备——宝箱导出工具

[复制链接]

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
22432
在线时间
2335 小时
注册时间
2005-10-15
帖子
1160

开拓者

跳转到指定楼层
1
发表于 2014-12-20 17:25:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 SailCat 于 2014-12-20 17:27 编辑

RUBY 代码复制
  1. #==============================================================================
  2. # ■ Treasure_Export
  3. #------------------------------------------------------------------------------
  4. #  宝箱导出工具 by SailCat
  5. #   该程序能够导出工程中的全部宝箱,包括剧情获得道具,方便查错。
  6. #   使用说明:
  7. #     插入本脚本到Game_Temp(注意:不是Main)之前后执行就可以,你也可以手工做:
  8. #     treasure = Treasure_Export.new
  9. #     treasure.export_treasure(1)  # 导出第1张地图的宝箱
  10. #     treasure.export_all_treasures # 导出所有地图的宝箱
  11. #     导出的对话写在工程目录下的TreasureScript.txt文件里
  12. #     注释掉第109行及以下的语句可以屏蔽这个功能,正常测试游戏
  13. #==============================================================================
  14. class Treasure_Export
  15.   #--------------------------------------------------------------------------
  16.   # ● 初期化
  17.   #--------------------------------------------------------------------------
  18.   def initialize
  19.     # 删除前次导出的文件
  20.     if FileTest.exist?("TreasureScript.txt")
  21.       File.delete("TreasureScript.txt")
  22.     end
  23.     @item_data = load_data("Data/Items.rxdata")
  24.     @weapon_data = load_data("Data/Weapons.rxdata")
  25.     @armor_data = load_data("Data/Armors.rxdata")
  26.     @map_infos = load_data("Data/MapInfos.rxdata")
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 执行导出宝箱
  30.   #     map_id: 地图ID
  31.   #--------------------------------------------------------------------------
  32.   def export_treasure(map_id)
  33.     File.open("TreasureScript.txt", "a") do |f|
  34.       map_name = sprintf("Data/Map%03d.rxdata", map_id)
  35.       if FileTest.exist?(map_name)
  36.         # 载入当前地图
  37.         map = load_data(map_name)
  38.         m = false
  39.         # 循环地图中所有事件
  40.         for i in 1..999
  41.           event = map.events[i]
  42.           if event != nil
  43.             t = false
  44.             # 循环事件的每一页
  45.             event.pages.each do |page|
  46.               # 如果指令不为空
  47.               if page.list.length > 0
  48.                 # 循环页的所有指令
  49.                 page.list.each do |command|
  50.                   # 检查宝箱指令
  51.                   info = ""
  52.                   case command.code
  53.                   when 125 # 增减金钱
  54.                     if command.parameters[0] == 0
  55.                       info = sprintf("金钱: %s%d", command.parameters[1] == 1 ?
  56.                       "变量" : "", command.parameters[2])
  57.                     end
  58.                   when 126 # 增减道具
  59.                     if command.parameters[1] == 0  
  60.                       info = sprintf("道具: %s x %s%d", @item_data[command.parameters[0]].name,
  61.                       command.parameters[2] == 1 ? "变量" : "", command.parameters[3])
  62.                     end
  63.                   when 127 # 增减武器
  64.                     if command.parameters[1] == 0  
  65.                       info = sprintf("武器: %s x %s%d", @weapon_data[command.parameters[0]].name,
  66.                       command.parameters[2] == 1 ? "变量" : "", command.parameters[3])
  67.                     end
  68.                   when 128 # 增减防具
  69.                     if command.parameters[1] == 0  
  70.                       info = sprintf("防具: %s x %s%d", @armor_data[command.parameters[0]].name,
  71.                       command.parameters[2] == 1 ? "变量" : "", command.parameters[3])
  72.                     end
  73.                   end
  74.                   if info != ""
  75.                     # 输出事件提示字样
  76.                     if !m
  77.                       f.write("-----------------------------------------------------\n")
  78.                       f.write(sprintf(" ■ Map: %d (%s)\n", map_id, @map_infos[map_id].name))
  79.                       f.write("-----------------------------------------------------\n")
  80.                       m = true
  81.                     end
  82.                     if !t
  83.                       f.write(sprintf(" □ 坐标: (%03d, %03d); ", event.x, event.y))
  84.                       t = true
  85.                     else
  86.                       f.write("                      ")
  87.                     end
  88.                     # 输出宝箱
  89.                     f.write(info)
  90.                     f.write("\n")
  91.                   end
  92.                 end
  93.               end
  94.             end
  95.           end
  96.         end
  97.       end
  98.     end
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ● 批量导出宝箱
  102.   #--------------------------------------------------------------------------
  103.   def export_all_treasures
  104.     for map_id in 1..999
  105.       export_treasure(map_id)
  106.     end
  107.   end
  108. end
  109. t=Treasure_Export.new
  110. t.export_all_treasures
  111. exit


导出效果展示:

评分

参与人数 5星屑 +460 收起 理由
美丽晨露 + 150 塞糖
欧买歌 + 40 好东西啊
天使喝可乐 + 240 厉害~ 好带劲的功能
david_ng223 + 7 有木有VA版的?
kuerlulu + 23 [s]前辈诈尸了[s]

查看全部评分

SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
20935
在线时间
9332 小时
注册时间
2012-6-19
帖子
7106

开拓者短篇九导演组冠军

2
发表于 2014-12-20 19:18:10 | 只看该作者
前辈诈尸了

评分

参与人数 2星屑 +2 收起 理由
kuerlulu + 1 pr【死【已告诉david_ng223直接改成rvdata2.
david_ng223 + 1 喵喵來弄个VA版吧~~順便把今日最后的1粒糖.

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
865 小时
注册时间
2010-6-27
帖子
131
3
发表于 2014-12-23 17:05:56 | 只看该作者
不止做攻略,对做游戏也有很大帮助,特别是大型游戏。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-24 12:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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