扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 254|回复: 0

[转载发布] 导出游戏中的全部对话

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    昨天 18:47
  • 签到天数: 145 天

    连续签到: 4 天

    [LV.7]常住居民III

    2398

    主题

    463

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    12420
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    15309

    灌水之王

    发表于 2024-4-20 00:21:23 | 显示全部楼层 |阅读模式
    对话导出工具,具体见注释
    cat发的一切脚本都有明确注释,确保新人能看懂
    导出对话是cat的RGSS Assistant系列脚本第二弹,第一弹见"地图清洁工"
    1. #==============================================================================# ■ 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")    end  end  #--------------------------------------------------------------------------  # ● 执行导出对话  #     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[i]          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[0])                    f.write("\n")                  end                end              end            end            # 结束输出对话            if t              f.write("-----------------------------------------------------\n")            end          end        end      end    end  end  #--------------------------------------------------------------------------  # ● 批量导出对话  #--------------------------------------------------------------------------  def export_all_dialogs    for map_id in 1..999      export_dialog(map_id)    end  endenddialog = Dialog_Export.newdialog.export_all_dialogsexit复制代码
    复制代码
                 本帖来自P1论坛作者DeathKing,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=142142  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2025-6-8 00:17 , Processed in 0.090405 second(s), 54 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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