RUBY 代码 - #==============================================================================
- # ■ 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
- # 删除前次导出的文件
- ifFileTest.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)
- ifFileTest.exist?(map_name)
- # 载入当前地图
- map = load_data(map_name)
- m = false
- # 循环地图中所有事件
- for i in1..999
- event = map.events[i]
- if event != nil
- t = false
- # 循环事件的每一页
- event.pages.eachdo |page|
- # 如果指令不为空
- if page.list.length > 0
- # 循环页的所有指令
- page.list.eachdo |command|
- # 检查宝箱指令
- info = ""
- case command.code
- when125# 增减金钱
- if command.parameters[0] == 0
- info = sprintf("金钱: %s%d", command.parameters[1] == 1 ?
- "变量" : "", command.parameters[2])
- end
- when126# 增减道具
- 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
- when127# 增减武器
- 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
- when128# 增减防具
- 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 in1..999
- export_treasure(map_id)
- end
- end
- end
- t=Treasure_Export.new
- t.export_all_treasures
- exit
复制代码
导出效果展示:
本帖来自P1论坛作者Zhangjiaxing1,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址: https://rpg.blue/forum.php?mod=viewthread&tid=374635 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。 |