じ☆ve冰风 发表于 2024-4-20 00:21:23

导出游戏中的全部对话

对话导出工具,具体见注释
cat发的一切脚本都有明确注释,确保新人能看懂
导出对话是cat的RGSS Assistant系列脚本第二弹,第一弹见"地图清洁工"#==============================================================================# ■ Dialog_Export#------------------------------------------------------------------------------#  对话导出工具 by SailCat#   该程序能够导出工程中的全部对话,包括对话中使用的控制指令等,方便剧情debug#   使用说明:#   插入本脚本到Game_Temp(注意:不是Main)之前后执行就可以,你也可以手工做:#   dialog = Dialog_Export.new#   dialog.export_dialog(1)# 导出第1张地图的对话#   dialog.export_all_dialogs # 导出所有地图的对话#   导出的对话写在工程目录下的DialogScript.txt文件里#   注释掉第82行及以下的语句可以屏蔽这个功能,正常测试游戏#==============================================================================class Dialog_Export#--------------------------------------------------------------------------# ● 初期化#--------------------------------------------------------------------------def initialize    # 删除前次导出的文件    if FileTest.exist?("DialogScript.txt")      File.delete("DialogScript.txt")    endend#--------------------------------------------------------------------------# ● 执行导出对话#   map_id: 地图ID#--------------------------------------------------------------------------def export_dialog(map_id)    File.open("DialogScript.txt", "a") do |f|      map_name = sprintf("Data/Map%03d.rxdata", map_id)      if FileTest.exist?(map_name)      # 载入当前地图      f.write("-----------------------------------------------------\n")      f.write(sprintf(" ■ Map: %d\n", map_id))      f.write("-----------------------------------------------------\n")      map = load_data(map_name)      # 循环地图中所有事件      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|                  # 检查“显示文章”指令                  case command.code                  when 101, 401                  # 输出事件提示字样                  if !t                      f.write(sprintf(" □ Event: %d: %s\n", event.id, event.name))                      f.write("-----------------------------------------------------\n")                      t = true                  end                  # 输出对话                  f.write(command.parameters)                  f.write("\n")                  end                end            end            end            # 结束输出对话            if t            f.write("-----------------------------------------------------\n")            end          end      end      end    endend#--------------------------------------------------------------------------# ● 批量导出对话#--------------------------------------------------------------------------def export_all_dialogs    for map_id in 1..999      export_dialog(map_id)    endendenddialog = Dialog_Export.newdialog.export_all_dialogsexit复制代码
             本帖来自P1论坛作者DeathKing,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=142142若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页: [1]
查看完整版本: 导出游戏中的全部对话