查看: 5714|回复: 2

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

[复制链接]

遠航の猫咪

梦石
3
星屑
27007
在线时间
2426 小时
注册时间
2005-10-15
回帖
989

开拓者

发表于 2014-12-20 17:25:43 | 显示全部楼层 |阅读模式

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

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

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

[pre lang="ruby" line="1"]#==============================================================================
# ■ Treasure_Export
#------------------------------------------------------------------------------
#  宝箱导出工具 by SailCat
#   该程序能够导出工程中的全部宝箱,包括剧情获得道具,方便查错。
#   使用说明:
#     插入本脚本到Game_Temp(注意:不是Main)之前后执行就可以,你也可以手工做:
#     treasure = Treasure_Export.new
#     treasure.export_treasure(1)  # 导出第1张地图的宝箱
#     treasure.export_all_treasures # 导出所有地图的宝箱
#     导出的对话写在工程目录下的TreasureScript.txt文件里
#     注释掉第109行及以下的语句可以屏蔽这个功能,正常测试游戏
#==============================================================================
class Treasure_Export
  #--------------------------------------------------------------------------
  # ● 初期化
  #--------------------------------------------------------------------------
  def initialize
    # 删除前次导出的文件
    if FileTest.exist?("TreasureScript.txt")
      File.delete("TreasureScript.txt")
    end
    @item_data = load_data("Data/Items.rxdata")
    @weapon_data = load_data("Data/Weapons.rxdata")
    @armor_data = load_data("Data/Armors.rxdata")
    @map_infos = load_data("Data/MapInfos.rxdata")
  end
  #--------------------------------------------------------------------------
  # ● 执行导出宝箱
  #     map_id: 地图ID
  #--------------------------------------------------------------------------
  def export_treasure(map_id)
    File.open("TreasureScript.txt", "a") do |f|
      map_name = sprintf("Data/Map%03d.rxdata", map_id)
      if FileTest.exist?(map_name)
        # 载入当前地图
        map = load_data(map_name)
        m = false
        # 循环地图中所有事件
        for i in 1..999
          event = map.events
          if event != nil
            t = false
            # 循环事件的每一页
            event.pages.each do |page|
              # 如果指令不为空
              if page.list.length > 0
                # 循环页的所有指令
                page.list.each do |command|
                  # 检查宝箱指令
                  info = ""
                  case command.code
                  when 125 # 增减金钱
                    if command.parameters[0] == 0
                      info = sprintf("金钱: %s%d", command.parameters[1] == 1 ?
                      "变量" : "", command.parameters[2])
                    end
                  when 126 # 增减道具
                    if command.parameters[1] == 0  
                      info = sprintf("道具: %s x %s%d", @item_data[command.parameters[0]].name,
                      command.parameters[2] == 1 ? "变量" : "", command.parameters[3])
                    end
                  when 127 # 增减武器
                    if command.parameters[1] == 0  
                      info = sprintf("武器: %s x %s%d", @weapon_data[command.parameters[0]].name,
                      command.parameters[2] == 1 ? "变量" : "", command.parameters[3])
                    end
                  when 128 # 增减防具
                    if command.parameters[1] == 0  
                      info = sprintf("防具: %s x %s%d", @armor_data[command.parameters[0]].name,
                      command.parameters[2] == 1 ? "变量" : "", command.parameters[3])
                    end
                  end
                  if info != ""
                    # 输出事件提示字样
                    if !m
                      f.write("-----------------------------------------------------\n")
                      f.write(sprintf(" ■ Map: %d (%s)\n", map_id, @map_infos[map_id].name))
                      f.write("-----------------------------------------------------\n")
                      m = true
                    end
                    if !t
                      f.write(sprintf(" □ 坐标: (%03d, %03d); ", event.x, event.y))
                      t = true
                    else
                      f.write("                      ")
                    end
                    # 输出宝箱
                    f.write(info)
                    f.write("\n")
                  end
                end
              end
            end
          end
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 批量导出宝箱
  #--------------------------------------------------------------------------
  def export_all_treasures
    for map_id in 1..999
      export_treasure(map_id)
    end
  end
end
t=Treasure_Export.new
t.export_all_treasures
exit[/pre]

导出效果展示:
QQ截图20141220172448.png

评分

参与人数 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] 到本站一游。

梦石
1
星屑
23306
在线时间
9569 小时
注册时间
2012-6-19
回帖
7021

开拓者短篇九导演组冠军

发表于 2014-12-20 19:18:10 | 显示全部楼层
前辈诈尸了

评分

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

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
865 小时
注册时间
2010-6-27
回帖
123
发表于 2014-12-23 17:05:56 | 显示全部楼层
不止做攻略,对做游戏也有很大帮助,特别是大型游戏。
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部