• Moderators

    日志行 与 触发器

    旨在作为日志行的综合指南

    致 想为FF14编写ACT触发器的人

    本指南翻译自LogGuide.md,最新更新:

    进一步更新于:

    目录

    数据流

    dataflow.png

    战斗后查看日志

    如果您在战斗时打开着ACT,解析插件则会自动产生日志。这些日志将被修剪到战斗的开始和结束。

    想要查看日志,打开 首页 选项卡,展开战斗所在的区域,右键相关的战斗,选择 View Logs

    viewlogs.png

    被标明 All 的战斗包含了该区域中所有的可见战斗。您必须查看下面的某一个单独的战斗。

    弹出的窗口中包含可以触发的文本。这通常是搜索和查找您要触发的文本的最佳方法。

    导入旧的战斗

    有时您必须关闭ACT,但是您想看看以前的战斗。或者,其他人向您发送了日志,而您想从中进行触发的编写。

    为此,请点击 导入/导出 选项卡,点击 导入日志文件,点击 选择文件… 选择命名为 Network_date.log 的日志文件,最后点击 YOU 按钮.

    logguide_import.png

    这将在首页选项卡中产生 可见的战斗日志

    导入ffxivmon

    如果您想深入研究网络数据本身,ffxivmon是一个很好的工具。

    要创建适合ffxivmon的日志文件,请先在ACT中启用 [调试]输出所有网络数据 设置。

    logguide_dumpnetworkdata.png

    然后,在运行ACT的情况下在游戏中进行一场战斗。完成后,将该网络日志文件导入ffxivmon。

    logguide_ffxivmon_import.png

    现在,您可以直接浏览并调查网络数据。

    logguide_ffxivmon.png

    专业术语

    网络数据

    这是从ff14服务器发送到计算机的原始数据包转储。游戏本身以及ffxiv解析插件都会处理此数据,解析插件会生成网络日志行。

    logguide_networkdata.png

    人们编写触发器通常不必担心原始数据包数据,因此本文档并不太关注此类数据。

    网络日志行

    这些代表ffxiv解析插件写入磁盘 Network_20191002.log 文件中的日志行。这些行仍由ffxiv解析插件处理和过滤,并且(大部分)不是原始网络数据。

    以下是一些示例网络日志行:

    21|2019-05-31T21:14:56.8980000-07:00|10532971|宙一黑魔|DF9|炽炎|40002F21|僵尸布罗宾雅克|150003|3B9D4002|1C|DF98000|0|0|0|0|0|0|0|0|0|0|0|0|104815|348652|12000|12000|1000|1000|-767.7882|156.939|-672.0446|26285|28784|13920|15480|1000|1000|-771.8156|157.1111|-671.3281||8eaa0245ad01981b69fc1af04ea8f9a1
    30|2019-05-31T20:02:41.4560000-07:00|6b4|蓄力|0.00|1069C23F|宙一青魔|1069C23F|宙一青魔|00|3394|3394||4f7b1fa11ec7a2746a8c46379481267c
    20|2019-05-31T20:02:41.4660000-07:00|105E3321|宙一青魔|2C9D|惊奇光|105E3321|宙一青魔||c375d8a2d1cf48efceccb136584ed250
    

    网络日志行上的数据由垂直分隔符(即|)分隔。网络日志行的末尾也包含该行的哈希值,用以避免伪造。网络日志行的类别用开头的十进制表示,举例来讲,AOE技能的日志以 22|开头。相对应的 ACT 日志行 将被写为十六进制 0x16,也就是 NetworkAOEAbility

    请注意,ffxiv解析插件不会将与插件交互的ACT日志行写入磁盘。

    网络日志行由某些工具使用,例如:

    • fflogs上传器
    • ffxivmon
    • cactbot make_timeline 工具

    如果您 将网络日志文件导入ACT,那么您可以在战斗中查看ACT日志行。

    ACT日志行

    这些是在运行时从ffxiv解析插件中出现的日志行,并向触发器传递这些日志行。这也是ACT中 View Logs 选项显示出来的日支行。

    ACT日志行中的数据以冒号(:)分隔。日志行类型为十六进制。

    这是一个例子:

    [21:16:44.288] 15:10532971:宙一黑魔:9C:崩溃:40001299:木人:750003:90D0000:1C:9C8000:0:0:0:0:0:0:0:0:0:0:0:0:2778:2778:0:0:1000:1000:-653.9767:-807.7275:31.99997:26945:28784:6720:15480:1000:1000:-631.5208:-818.5244:31.95173:
    

    游戏日志行

    游戏日志行是ACT日志行的特定类型,类型为 00。这些日志行也直接显示在游戏的聊天窗口中,可能显示在“战斗日志”选项卡中。请 尽可能避免 使用游戏日志行编写触发器。

    有关示例,请参见 00: 日志行

    对象/角色/成员/怪物/战斗员

    这些都是本文档中同义词,指的是游戏中可以使用技能并具有属性的对象。它可以指代一个玩家,一个巴哈姆特,宝石兽,或者木人等等等等。

    对象ID

    对象ID是4个字节的标识符,用于所有类型的对象。

    玩家ID始终以字节10开头,举例: 1069C23F10532971

    敌人和宠物ID总是以字节 40 开头,举例: 4000A8484000A962

    诸如 NetworkAOEAbility 等日志可能并没有击中任何对象,举例来讲,全员躲过了泰坦的地裂,则日志中的被击中目标的ID会以 E0000000 表示 (而角色名则为空)。

    要注意的一件事是,在大多数战斗中,场景中有许多小怪同名。例如,在T13,该区域中大约有20个至尊巴哈姆特,他们大多数是不可见的。您通常可以通过HP值来区分它们 (参阅 添加战斗员 日志行)。这些看不见的小怪经常被用作造成伤害的角色,这就是为什么在绝神兵的泰坦阶段,迦楼罗和泰坦都使用花岗岩牢狱将玩家关进监狱。

    技能ID

    尽管ff14区分能力和法术,本文档可以交替使用这些词。玩家或敌人采取的所有行动都是“技能”,并且具有唯一的4字节ID。

    您可以使用 xivapi.com (国服 cafemaker)查找特定技能,因为有时ffxiv插件尚未更新,则这些技能会列为“Unknown”。例如,炽炎具有能力ID 0xDF9 = 3577,因此,这个链接将为您提供有关它的更多信息:https://xivapi.com/action/3577?columns=ID,Name,Description,ClassJobCategory.Name 国服:https://cafemaker.wakingsands.com/action/3577?columns=ID,Name,Description,ClassJobCategory.Name

    这对玩家和敌人,能力和咏唱都有效。

    日志行概述

    这是典型的日志行的示例:[12:01:48.293] 21:80034E29:40000001:E10:00:00:00.该日志行恰好是开始泰坦歼殛战的角色控制行(type =0x21)。

    日志行始终以方括号中的时间开头。该时间的格式设置基于您当地的时区。时间后跟一个十六进制值(在本例中为0x21),该值指示日志行的类型。这些类型是ffxiv解析插件的内部功能,表示将网络数据和内存数据转换为统一的事件的方式。

    日志行中的其余数据则需要根据其类型进行解释。请参阅以下描述每个日志行的部分。为了简化,这些部分中的示例不包含时间前缀。

    00: 日志行

    结构:00:[消息类别ID]:游戏内显示的消息

    举例:

    00:0839:巴哈姆特的右手的封锁解除了……
    00:0840:巴哈姆特大迷宫 真源之章2 完成时间 8:37。
    00:0b3a:被压迫者击败。
    00:302b:重力系统发动了“叉形闪电”。
    00:322a:失误!
    

    这些就是本文档所说的“游戏日志行”。两个字节的日志类型,然后是一个字符串。由于这些触发器通常不用于触发器(0839消息除外),因此本文档没有完整记录所有的消息类别ID。

    (欢迎提出评论留言完善!)

    不要针对游戏日志行编写触发器

    由于以下原因,请尽可能避免基于游戏日志行编写触发器:

    • 显示时间晚于ACT日志行(通常长达半秒)
    • 并不总是出现
    • 文字不一致(“获得了”vs“得到了”,“开始咏唱”vs“使用了”,等等)
    • 含糊不清(“失误!”)
    • 可能会由于SE的脑子一热而更改文本

    所以,我们强烈建议您基于非00类型的ACT日志行编写触发器,例如:

    • 使用 1A “gains the effect” 而不是 00 “附加了…效果” 的消息。
    • 使用 14 “starts using” 而不是 00 “使用了” 或者"开始咏唱"的消息。

    然而目前在某些情况下,您必须使用游戏日志行,例如,区域的封锁和解除,或Boss通过台词进行特定的操作或阶段转换。

    01: 切换区域

    首次登录时以及更改区域时都会发送此消息。

    结构:01:Changed Zone to [区域名称].

    举例:

    01:Changed Zone to 薰衣草苗圃.
    01:Changed Zone to 巴哈姆特绝境战.
    

    02: 切换主要玩家

    每条 切换区域 消息之后都会出现此冗余消息,以指示当前玩家的名称。

    结构:
    02:Changed primary player to [玩家名称].

    举例:

    02:Changed primary player to 桐谷和人.
    02:Changed primary player to 结城明日奈.
    

    03: 添加战斗员

    当将新对象添加到场景中或与玩家足够接近,能够接收到其相关网络数据时,将发送此消息。

    结构:
    03:[对象ID]:Added new combatant [战斗员名称]. Job: [职业ID] Level: [等级] Max HP: [最大HP] Max MP: [最大MP] Pos: ([X坐标],[Z坐标],[Y坐标]).

    举例:

    03:40123456:Added new combatant 恒冰深瞳.  Job: N/A Level: 70 Max HP: 348652 Max MP: 12000 Pos: (-720.9337,90.80706,-679.6056).
    03:10987654:Added new combatant 桐谷和人 (萌芽池).  Job: 28 Level: 70 Max HP: 39835 Max MP: 16461 Pos: (-143.9604,168.5795,-4.999999).
    

    请注意,这个战斗员可能是看不见的且是假的。 真正的战斗员应当具有更多的生命值。
    例如,在T5开始时,您将看到以下消息:

    03:40123450:Added new combatant 双塔尼亚.  Job: N/A Level: 50 Max HP: 2778 Max MP: 0 Pos: (-6.27745,-5.304218,50.00586).
    03:40123451:Added new combatant 双塔尼亚.  Job: N/A Level: 50 Max HP: 2778 Max MP: 0 Pos: (-6.27745,-5.304218,50.00586).
    03:40123452:Added new combatant 双塔尼亚.  Job: N/A Level: 50 Max HP: 2778 Max MP: 0 Pos: (-6.27745,-5.304218,50.00586).
    03:40123453:Added new combatant 双塔尼亚.  Job: N/A Level: 50 Max HP: 2778 Max MP: 0 Pos: (-6.27745,-5.304218,50.00586).
    03:40123454:Added new combatant 双塔尼亚.  Job: N/A Level: 50 Max HP: 2778 Max MP: 0 Pos: (-6.27745,-5.304218,50.00586).
    03:40123455:Added new combatant 双塔尼亚.  Job: N/A Level: 50 Max HP: 2778 Max MP: 0 Pos: (-6.27745,-5.304218,50.00586).
    03:40123456:Added new combatant 美拉西迪亚祸龙.  Job: N/A Level: 50 Max HP: 20307 Max MP: 0 Pos: (-8.42909,17.4637,50.15326).
    03:40123457:Added new combatant 双塔尼亚.  Job: N/A Level: 50 Max HP: 514596 Max MP: 0 Pos: (2.251731,4.753533,50.03756).
    03:40123458:Added new combatant 双塔尼亚.  Job: N/A Level: 50 Max HP: 2778 Max MP: 0 Pos: (7.752398,1.972908,50.04842).
    03:40123459:Added new combatant 双塔尼亚.  Job: N/A Level: 50 Max HP: 2778 Max MP: 0 Pos: (7.752398,1.972908,50.04842).
    03:40123460:Added new combatant 双塔尼亚.  Job: N/A Level: 50 Max HP: 2778 Max MP: 0 Pos: (-6.27745,-5.304218,50.00586).
    03:40123461:Added new combatant 双塔尼亚.  Job: N/A Level: 50 Max HP: 2778 Max MP: 0 Pos: (-6.27745,-5.304218,50.00586).
    03:40123462:Added new combatant 美拉西迪亚祸龙.  Job: N/A Level: 50 Max HP: 20307 Max MP: 0 Pos: (8.960839,18.12193,50.66183).
    03:40123463:Added new combatant 美拉西迪亚祸龙.  Job: N/A Level: 50 Max HP: 20307 Max MP: 0 Pos: (18.30528,3.778645,50.44044).
    

    在角色密集的地区(例如尤里卡或狩猎车),如果附近有太多东西,战斗人员可能会被忽略。通常其他玩家首先被忽略,但有时怪物也可以被忽略(队长窝看不到怪啦)。尤里卡里的恶名精英(和S狩猎怪)会被服务器赋予一个特殊标志,该标志允许通过添加战斗员消息从区域中的任何位置看到它们,这就是为什么可以在这些消息出现时编写触发器的原因。

    译者注:5.15版本后尤里卡的恶名精英也需要到一定范围内才会出现这条消息,S怪仍是全图可见。

    04: 移除战斗员

    当某个物体从场景中移出时会生成此消息,这可能是因为玩家离它太远,它已经死亡或者玩家改变了区域。

    结构:
    04:[对象ID]:Removing combatant [战斗员名称]. Max HP: [最大HP]. Pos: ([X坐标],[Z坐标],[Y坐标])

    举例:

    04:10987654:Removing combatant 桐谷和人.  Max HP: 28784. Pos: (-776.6765,152.5261,-671.2197)
    04:40123462:Removing combatant 虚无冰雪龙.  Max HP: 348652. Pos: (-710.7075,49.39039,-646.7071)
    

    05: 增加Buff

    这是 1A: 网络Buff 的内存解析模式日志。请勿为此编写触发器,因为仅在从内存解析时才会发出此消息。

    结构:
    05:[目标名称] gains the effect of [Buff名称] from [来源名称]

    举例:

    05:木人 gains the effect of 雪仇 from 桐谷和人.
    05:桐谷和人 gains the effect of 武装戍卫 from 桐谷和人.
    

    06: 消除Buff

    这是 1E: 网络消除Buff 的内存解析模式日志。请勿为此编写触发器,因为仅在从内存解析时才会发出此消息。

    结构:
    06:[目标名称] loses the effect of [Buff名称] from [来源名称]

    举例:

    06:木人 loses the effect of 雪仇 from 桐谷和人.
    06:木人 loses the effect of 厄运流转 from 桐谷和人.
    

    07: DoT

    这是 18: 网络DoT 的内存解析模式日志。请勿为此编写触发器,因为仅在从内存解析时才会发出此消息。

    结构:
    07:[类别名称] tick on [来源名称] for [伤害数值] damage.

    举例:

    07:DoT tick on 木人 for 509 damage.
    

    08: 发出技能

    这是 14: 网络开始咏唱 的内存解析模式日志。请勿为此编写触发器,因为仅在从内存解析时才会发出此消息。

    结构:
    08:[来源名称] starts using [技能名称] on [目标名称].

    举例:

    08:桐谷和人 starts using 厄运流转 on 木人.
    

    0A: 受到技能

    这是 15: 网络技能16: 网络AOE技能 的内存解析模式日志。请勿为此编写触发器,因为仅在从内存解析时才会发出此消息。

    举例:

    0A:10532971:桐谷和人:17:厄运流转:40001299:木人:710003:6850000:ef010f:f80000:0:0:0:0:0:0:0:0:0:0:0:0:2778:2778:0
    

    0B: 小队列表

    日志行会被打印,但数据为空。 😭

    0C: 角色状态

    每当您的角色的状态发生变化以及进入新的区域/分线时,就会发送此消息。

    结构:

    0C:Player Stats: 职业:力量:灵巧:耐力:智力:精神:信仰:物理攻击力:直击:暴击:攻击魔法威力:治疗魔法威力:信念:技速:咏速:0:坚韧

    举例:

    0C:Player Stats: 23:305:4240:4405:290:275:340:4240:2694:2795:290:275:2473:578:380:0:380
    

    0D: 战斗员HP

    如果您在ACT的FFXIV解析插件中将 解析日志包含HP 选项打开,则会产生此类日志行记录每个目标的HP百分比变化。

    这通常用于Boss转换阶段的触发器。

    logguide_includehp.png

    结构:
    0D:[目标名称] HP at [HP百分比]%.

    举例:

    0D:木人 HP at 96%.
    0D:桐谷和人 HP at 98%.
    

    14: 网络开始咏唱

    对于具有读条的技能,这是一条用于玩家或怪物已开始咏唱技能的日志行。它位于类型为 15, 16, 或 17 的日志行之前,无论是成功使用或是被打断。

    结构:
    14:[来源ID]:[来源名称] starts using [技能名称] on [目标名称].

    举例:

    14:5B2:双塔尼亚 starts using 死刑 on 桐谷和人.
    14:DF9:結城明日奈 starts using 炽炎 on 木人.
    

    14 后面的数值是4字节的的技能ID

    这些通常(但并非总是)与游戏日志行00:282B:神龙发动了大地之怒.00:302b:原型奇美拉开始咏唱“寒冰咆哮”. 相关联。

    15: 网络技能

    这种能力最终会击中单个目标(可能是施法者的本身)。之所以被称为“最终击中”,是因为某些AOE技能可能只击中一个目标,在这种情况下,它们仍然会导致日志行类型为15。例如,在绝巴哈中,如果火角在奈尔阶段的火球击中了整个队,则它将为16类型。如果一个人引导火球而只击中了他自己,则日志行类别为15,因为只击中了一个目标。如果您写的触发器包含消息类型,通常最好将正则表达式写为1[56]以同时包含这两种可能性。没有击中任何人的地面AOE是类型16

    举例:
    15:10532971:桐谷和人:07:攻击:40001299:木人:710003:9420000:0:0:0:0:0:0:0:0:0:0:0:0:0:0:2778:2778:0:0:1000:1000:-653.9767:-807.7275:31.99997:66480:74095:4560:4560:1000:1000:-653.0394:-807.9677:31.99997:

    索引 举例 解释
    0 15 日志类别(16进制)
    1 10532971 施法者ID
    2 桐谷和人 施法者名称
    3 07 技能ID
    4 攻击 技能名
    5 40001299 目标ID
    6 木人 目标名称
    7 710003 技能标志
    8 9420000 技能伤害
    9-22 0 ??? (参阅: 特殊情况偏移)
    23 2778 目标当前HP
    24 2778 目标最大HP
    25 0 目标当前MP
    26 0 目标最大MP
    27 1000 目标当前TP
    28 1000 目标最大TP
    29 -653.9767 目标X坐标位置
    30 -807.7275 目标Y坐标位置
    31 31.99997 目标Z坐标位置
    32 66480 施法者当前HP
    33 74095 施法者最大HP
    34 4560 施法者当前MP
    35 4560 施法者最大MP
    36 1000 施法者当前TP
    37 1000 施法者最大TP
    38 -653.0394 施法者X坐标位置
    39 -807.9677 施法者Y坐标位置
    40 31.99997 施法者Z坐标位置

    网络技能的日志行是原始网络数据的组合(比如710003 技能标志与 9420000 技能伤害)并且经常从内存中采样数据(比如 66480 的当前HP值与 -653.0394 的X坐标位置)。

    这意味着在处理这些行中的所有数据时有许多警告。原始网络数据可能会随着时间的流逝而从ff14服务器进行更改。此外,内存中的数据可能有些陈旧且过时。

    技能标志

    伤害掩码:

    • 0x01 = 躲避
    • 0x03 = 造成伤害
    • 0x05 = 格挡伤害
    • 0x06 = 招架伤害
    • 0x33 = 即死
    • 0x100 = 暴击伤害
    • 0x200 = 直击伤害
    • 0x300 = 直暴伤害

    治疗掩码:

    • 0x00004 = 治疗
    • 0x10004 = 暴击治疗

    其他位掩码会出现在特定的技能上,并且可以指示是失误还是击中了目标。 但是,这些似乎都是特定于能力技的。

    这些标志中的某些标志还指示该能力是否是连招的一部分以及是否命中特定身位。但是,这些值在不同职业之间似乎不一致。

    举例来讲,成功的攻其不备的标志为 28710.03。这里的 . 可能为0-3,代表其可能暴击/直击/直暴/不暴。失败的攻其不备的标志为 710.03。所以,有一个 0x28700000 掩码会被应用在这里,来表明其击中了正确的身位,
    这些结论通过实验推断。

    如果您关心特定的能力技标志,则可能必须自己进行这项研究。

    欢迎在评论中写下您的发现,本文档也会随之更新!

    技能伤害

    伤害掩码:
    0x1000 = 无敌,无伤害
    0x4000 = "巨额"伤害

    上述位置的十六进制并不是实际的伤害,因为那太容易了。

    从能力日志行中的伤害值到实际伤害值的公式如下。

    首先,高位填充0至4字节(8位),比如 2934001 => 02934001, 或1000 => 00001000.

    最高的两个字节 (4 位) 是实际伤害。

    然而,如果有一个 0x00004000 掩码,则说明这是一个"巨额"伤害。在这种情况下,考虑这个八位十六进制数为 ABCD,其中C是 0x40。实际的伤害则是 D A (B-D) 组成的三字节数值。

    举例来说,424E400F 会变成 0F 42 (4E - OF = 3F) => 0F 42 3F => 999999

    特殊情况偏移

    目前尚不清楚这代表什么,但有时标志会被一对(或多对)值取代。

    最可能的情况是,如果此处的标志为 3F,那么标记和损坏分别位于索引9和10中,而不是7和8中。换句话说,当您看到此处标志是一个特定的值时,您需要将所有内容都移到两个以上才能找到真实的标志。请参见下面的示例。
    还应注意的是,该值随着时间的推移逐渐增加,在2017年为3C

    另一个变化是全大赦将在标志中的分别列出113213313,并紧接着一个 4C3的标志。因此,这些也应移至两个位置以找到真实标志。

    技能举例

    1. 18216 伤害 来自于 大十字·阿尔法 (基础伤害)
      16:40001333:新生艾克斯迪司:242B:大十字·阿尔法:1048638C:桐谷和人:750003:47280000:1C:80242B:0:0:0:0:0:0:0:0:0:0:0:0:36906:41241:5160:5160:880:1000:0.009226365:-7.81128:-1.192093E-07:16043015:17702272:12000:12000:1000:1000:-0.01531982:-19.02808:0:

    2. 82538 伤害 来自于 超驱动 (0x4000 额外伤害掩码)
      15:40024FBA:凯夫卡:28E8:超驱动:106C1DBA:桐谷和人:750003:426B4001:1C:28E88000:0:0:0:0:0:0:0:0:0:0:0:0:35811:62464:4560:4560:940:1000:-0.1586061:-5.753153:0:30098906:31559062:12000:12000:1000:1000:0.3508911:0.4425049:2.384186E-07:

    3. 22109 伤害 来自于 大十字·欧米茄 (:3F:0: 偏移)
      16:40001333:新生艾克斯迪司:242D:大十字·阿尔法:1048638C:桐谷和人:3F:0:750003:565D0000:1C:80242D:0:0:0:0:0:0:0:0:0:0:41241:41241:5160:5160:670:1000:-0.3251641:6.526299:1.192093E-07:7560944:17702272:12000:12000:1000:1000:0:19:2.384186E-07:

    4. 15732 暴击治疗 来自于 三层全大赦 (:?13:4C3: 偏移)
      16:10647D2F:结城明日奈:1D09:全大赦:106DD019:桐谷和人:313:4C3:10004:3D74:0:0:0:0:0:0:0:0:0:0:0:0:7124:40265:14400:9192:1000:1000:-10.78815:11.94781:0:11343:40029:19652:16451:1000:1000:6.336648:7.710004:0:

    5. 即死 旋风
      16:40004D5D:双塔尼亚:26AB:旋风:10573FDC:桐谷和人:33:0:1C:26AB8000:0:0:0:0:0:0:0:0:0:0:0:0:43985:43985:5760:5760:910:1000:-8.42179:9.49251:-1.192093E-07:57250:57250:0:0:1000:1000:-8.565645:10.20959:0:

    6. 零伤害无目标AOE (E0000000 空目标)
      16:103AAEE4:结城明日奈:B1:瘴疠:E0000000::0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0::::::::::19400:40287:17649:17633:1000:1000:-0.656189:-3.799561:-5.960464E-08:

    16: 网络AOE技能

    这是游戏中的一种技能用法,最终导致击中多个角色或根本0个角色。

    有关网络技能网络AOE技能之间的区别的讨论,请参见 15: 网络技能

    17: 网络技能取消

    对于具有咏唱条的技能,可能会产生此日志行,用于表示由于移动或打断而取消了咏唱,从而取消了咏唱。

    结构:
    17:[来源ID]:[来源名称]:[技能ID]:[技能名称]:Cancelled.

    举例:

    17:105EDD08:结城明日奈:1D07:崩石:Cancelled:
    17:40000FE3:莱丁:3878:极·斩铁剑:Cancelled:
    

    18: 网络DoT

    HoT(随时间的愈合)和DoT(随时间的伤害)量。这些是该目标上每个DoT或Hot的伤害/治疗量。

    ACT和fflog之间关于DoT存在如此差异的原因是ff14不会为每个DoT返回确切的伤害量。
    相反,如果一个Boss被上了20个DoT,则会返回所有这些DoT的总伤害量。解析插件可以估计各个DoT的数量。

    结构:
    18:[类别名] on [来源名称] for [数值] damage.

    举例:

    18:DoT Tick on 未确认飞行物体 for 13003 damage.
    18:HoT Tick on 桐谷和人 for 2681 damage.
    18:暗影核爆 DoT Tick on 兵武半人马 for 151 damage.
    

    地面效果的DoT会被单独列出。

    19: 网络死亡

    此消息对应于被击败并杀死的角色。这通常伴随着游戏内战斗日志消息,例如“神龙的核心”被击败了

    结构:
    19:[目标名称] was defeated by [来源名称].

    举例:

    19:桐谷和人 was defeated by 未确认飞行物体.
    19:美拉西迪亚祸龙 was defeated by 不明物体.
    

    1A: 网络Buff

    此日志用于表示玩家和怪物获得了(无论好坏的)Buff效果。

    结构:
    1A:[对象ID]:[目标名称] gains the effect of [状态] from [来源名称] for [浮点值] Seconds

    举例:

    1A:105EDD08:桐谷和人 gains the effect of 冲刺 from 桐谷和人 for 20.00 Seconds.
    1A:10660108:结城明日奈 gains the effect of 保护 from 桐谷和人 for 1800.00 Seconds.
    1A:405EFA09:未确认飞行物体 gains the effect of 烈风 from  for 18.00 Seconds.
    

    “来源名称”在此处可以为空白(如果是这种情况,将有两个空格,如上例所示)。

    这对应于如下所示的游戏日志消息:
    00:12af:对神龙的核心附加了“斩击耐性降低”的效果。
    00:112e:对桐谷和人附加了“太阳神之衡”的效果。
    00:08af;对桐谷和人附加了“烈焰链”的效果。

    尽管游戏消息会区分增益效果和减益效果(译者注:国服不区分),但日志消息类型1A包括所有效果类型(正面和负面)。

    您不能指望剩余时间是准确的。因为在极少数情况下,时间已经倒计时了一点。这对于诸如绝巴哈的奈尔的死亡宣告Buff等情况很重要。

    1B: 网络目标图标 (头部标记)

    结构:
    1B:[对象ID]:[角色名称]:[未知1 (4字节)]:[未知2 (4字节)]:[类型 (4字节)]:0000:0000:0000

    举例:

    1B:10532971:桐谷和人:0000:0000:0027:0000:0000:0000:
    1B:106F0213:结城明日奈:0000:0EE3:0061:0000:0000:0000:
    

    不同的头部标记类型 (比如上述 00270061) 在不同的战斗中是统一的,只要他们看上去表示的内容相同。 (然而相同标记的机制正确处理方法可能不同。) 举例来讲, 0039 是极神龙的陨石阶段点名,在巴尔德西昂兵武塔也是如此。实际情况下类型后面的位置总是0,而 未知1未知2 很少有非零值。

    注意:目前尚不清楚何时头部标记消失。 也许未知2是持续时间? 目前尚不清楚这两个未知值的含义。

    而且,这似乎仅在较后版本的战斗中才成立。(译者注:多为4.0后的副本。)双塔尼亚的五个火球机制是它的技能,不会产生1B的日志。似乎这是较后版本才采用的,没有人愿意通过将某些旧值其更新为较新的类型来破坏旧内容。

    标记类型 名称 应用地点 统一含义?
    000[1-2, 4] 猎物圈 (橙色) o6s, 焦土老二 Yes
    0007 绿色陨石 t9n/s N/A
    0008 幽灵陨石 t9n/s N/A
    0009 红色陨石 t9n/s N/A
    000A 黄色陨石 t9n/s N/A
    000D 吞噬花 t6n/s, 灵峰老一 Yes
    000E 猎物圈 (蓝色) t6n/s, o7s No
    0010 蓝绿色水晶 绝神兵 N/A
    0011 激光 (红色) t8n/s, e1n No
    0017 红色风车 灵峰老二, 豪神, e3n/s No
    0028 大地摇动 魔神, o4s Yes
    001C 重力圈 e1n N/A
    001E 猎物圈 (橙色) 影之国老三, o7n/s No
    001F 猎物圈 (蓝色) t10 N/A
    003[2-5] 剑标记 1-4 武神, 孪晶塔老一 N/A
    0037 红色点名 玛哈老二, 大灯塔老一 Yes
    0039 绿色陨石 (大) 武神, 神龙 Yes
    003E 分摊标记 (有边缘) o8n/s, 影之国 Yes
    0046 绿色风车 影之国老一, o5n/s Yes
    004B 加速度怍彈 玛哈老三, 豪神, o4s Yes
    004C 紫色火圈 (大) e2n/s Yes
    0054 雷连线 (橙色) 缇坦妮雅 N/A
    0057 核爆 o4n/s, e2n/s Yes
    005C 猎物(深黑色) 影之国老三/四, 水滩村老三 No
    005D 分摊标记 (坦克–无边缘) 影之国老四, e4s Yes
    0060 橙色扩散圈 (小) 哈迪斯 Yes
    0061 锁链连线 (橙色) 教皇厅老三, 神龙 Yes
    0064 分摊标记 (有边缘) o3s, 大灯塔老三 Yes
    0065 扩散水泡 o3s, 极白虎 N/A
    006E 雷槍 极豪神 N/A
    0076 猎物(深黑色) 绝巴哈 N/A
    0078 橙色扩散圈 (大) 阿尼德罗学院 Yes
    007B 分散 (动态运行标记) 拉巴纳斯塔老四 N/A
    007C 转身 (动态眼睛标记) 拉巴纳斯塔老四 N/A
    007E 绿色水晶 神龙 No
    0083 剑陨石 (月读) 极月读 N/A
    0087 猎物圈 (蓝色) 阿尼德罗学院 N/A
    008A 橙色扩散圈 (大) 无瑕灵君, 修道院老三 Yes
    008B 紫色扩散圈 (小) 大灯塔老一, 哈迪斯 Yes
    008E 天之灾厄 o10s N/A
    008F 地之灾厄 o10s N/A
    009[1-8] 协作程序 方/圆 o12s N/A
    00A1 分摊标记 (有边缘) 缇坦妮雅 Yes
    00A9 橙色扩散圈 (小) o11n/s, e3n/s Yes
    00AB 绿色毒圈 奇坦那神影洞 N/A
    00AC 再生连线 无瑕灵君EX N/A
    00AE 蓝色风车 灵峰老二 N/A
    00B9 黄色三角 (分散) e4s N/A
    00BA 橙色方块 (集合) e4s N/A
    00BB 蓝色方块 (躲远) e4s N/A
    00BD 紫色扩散圈 (巨大) 缇坦妮雅 Yes
    00BF 花岗石牢 e4s N/A

    1C: 网络Raid标记

    歪?

    1D: 网络目标标记

    歪?

    1E: 网络消除Buff

    这是与 1A: 网络Buff “开始”消息配对的“结束”消息。此消息对应于Buff效果的消失(包括正面或负面)。

    结构:
    1E:[目标ID]:[目标名称] loses the effect of [效果] from [来源名称]

    举例:

    1E:10657868:桐谷和人 loses the effect of 冲刺 from 桐谷和人.
    1E:10299838:结城明日奈 loses the effect of 保护 from 桐谷和人.
    1E:40686258:未确认飞行物体 loses the effect of 烈风.
    

    1F: 网络量谱

    有关当前玩家的职业量谱的信息。

    举例:

    1F:10532971:结城明日奈:C8000019:FD32:D0DF8C00:7FC0
    1F:10532971:桐谷和人:C863AC19:1000332:D0DF8C00:7FC0
    

    名称后面的每个值都代表职业量谱的内存,表示为4字节整数。要返回原始内存,请零填充4个字节,然后反转字节数组(因为使用小端序)。

    举例来说,以这行作为例子:1F:10532971:结城明日奈:C8000019:FD32:D0DF8C00:7FC0

    填充上0::C8000019:0000FD32:D0DF8C00:

    反转:19 00 00 C8 32 FD 00 00 00 8C DF D0

    第一个字节代表职业,剩下的字节是职业量谱内存的复制。The remaining bytes are a copy of the job gauge memory.

    当前职业 0x19 (黑魔).
    剩下的 表示:

    • 下一次通晓剩余时间:short TimeUntilNextPolyglot = 0x0000 = 0
    • 冰火时间剩余: short ElementTimeRemaining = 0x32C8 = 13000ms
    • 冰火层数:byte ElementStance = 0xFD = -3 (三层冰)
    • 灵极心:byte NumUmbralHearts = 0x00 = 0
    • 天语状态:byte EnoState = 0x00 = 0 (断天语啦!)

    职业量谱有许多参考:

    1. cactbot FFXIVProcess code
    2. Dalamud code

    不幸的是,其他角色的职业量谱的网络数据并不会被发送。所以您无法看到其他玩家的职业量谱,只有您自己的。(这可能是为了减少发送的网络数据量而设计的。)

    20: 网络世界

    没用。

    21: 网络6D (角色控制行)

    角色控制行用于几个其他区域命令:

    • 改变音乐
    • 团灭后重设整个区域
    • Boss战中的极限技量谱
    • 剩余副本时间的更新(门神/本体切换和通关后)

    结构:
    21:区域ID (4字节):命令 (4字节):数据 (4x 4? 额外字节数据)

    举例:

    21:8003753A:40000010:00:00:00:00
    21:80034E52:8000000D:1601:00:00:00
    21:80037543:80000004:257:00:00:00
    

    区域ID对于游戏中的特定区域是恒定的,但不一定与 01: 切换区域 的日志含有相同的区域ID。

    通过此正则表达式可以检测到大多数Raid和蛮神的团灭:21:........:40000010:。 然而在某些较早的副本中不会发生这种情况,例如巴哈姆特大迷宫一类的含有区域封锁的早期副本。

    已知类型:

    • 初始挑战: 21:区域:40000001:时间: (时间是锁定时间,以秒为单位)
    • 重新挑战: 21:区域:40000006:时间:00:00:00
    • 封锁时间调整: 21:区域:80000004:时间:00:00:00
    • Boss极限技充能: 21:区域:8000000C:值1:值2:00:00
    • 音乐切换: 21:区域:80000001:value:00:00:00
    • 团灭1: 21:区域:40000010:00:00:00:00 (总在团灭2之前出现)
    • 团灭2: 21:区域:40000012:00:00:00:00 (总在团灭1之后出现)

    还是未知:

    • 21:区域:40000003:00:00:00:00 (胜利?)
    • 21:区域:40000005:00:00:00:00 (团灭后变黑?)
    • 21:区域:40000007:00:00:00:00

    22: 网络名称切换

    此日志消息切换特定实体的名字是否可见。例如,这可以帮助您知道Boss何时可以被选中。

    结构:
    22:[对象ID]:[目标名称]:[对象ID]:[目标名称]:[可见状态]

    举例:

    22:105E3321:桐谷和人:105E3321:桐谷和人:01
    22:40018065:双塔尼亚:40018065:双塔尼亚:00
    

    23: 网络连线

    此日志行用于敌人之间或敌人与玩家之间的连线。这似乎并不用于玩家对玩家的技能连线,例如龙眼或保护。(它可以用于敌人造成的玩家与玩家的连线,例如神龙中的烈焰连线。)

    结构:
    23:[来源ID]:[来源名称]:[目标ID]:[目标名称]:[未知1 (4字节)]:[未知2 (4字节)]:[类型 (4字节)]:[目标ID]:[未知3 (4字节)]:[未知4 (4字节)]:

    举例:

    23:40015B4E:炮击系统:40015B4D:重力系统:751E:0000:000E:40015B4D:000F:7F4B:
    23:4000E84B:结城明日奈:1048638C:桐谷和人:0000:0000:0006:1048638C:000F:7FEF:
    23:40001614:欧米茄:10532971:桐谷和人:0023:0000:0054:10532971:000F:0000:
    

    以上三行中的连线类型分别为000E00060054

    就像 1B: 网络目标图标 (头部标记) 一样,如果它们看起来长得一样,则连线类型在不同的战斗中的类型保持一致。

    还有许多例子以其他方式生成连线:

    • 究极以太怍彈的球: 按照NPC出现时的parentActorId设置球的连线
    • t12 红莲之炎的球: 按照NPC出现时的parentActorId设置目标
    • t13 黑暗以太的球:按照NPC出现时的parentActorId和targetId 设置目标玩家
    • 朱雀鸟连线: 谁知道呢
    • 玩家与玩家的连线 (龙眼, 保护, 小仙女牵线)

    24: 极限技

    此日志行记录每个在组队的战斗中会产生的极限技增长事件。(开启战斗记录/录像则不会产生)它从区域开始处(或在单个Boss的战斗开始处)以0x0000开始,并以0x00DC(十进制的220)递增,直到使用极限技或达到极限技量谱的最大限制值为止。该增加速率是恒定的,但是采取的其他操作可能导致额外的增加。(译者注:骗LB加油)(这些额外增量与基本增量属于同类数据包,但是会单独另外出现。)

    每个LB槽包含 0x2710 (十进制的10,000) 点。因此,最大可能的记录值为0x7530。

    结构:24:Limit Break: [数值]

    举例:

    24:Limit Break: 7530
    

    25: 网络效果结果

    这个日志行会在角色受到了敌对技能的选中时产生。看来该技能必须命中并且必须造成非零伤害,或者必须施加额外作用才能生成此日志行。单体的DoT似乎不会产生独立的日志行。

    结构:
    25:[角色对象ID]:[序列标号]:[当前HP]:[最大HP]:[当前MP]:[最大MP]:[当前TP]:[最大TP]:[位置X]:[位置Y]:[位置Z]:[面向]:[之后的封包数据]

    举例:

    25:12345678:一号角色:0000132A:33635:35817:10000:10000:0::0.3841706:-207.8767:2.901163:-3.00212:03E8:2500:0:01:03000000:0:0:E0000000:
    

    26: 网络状态影响

    对于NPC敌人(可能还有PvP),此日志行与 18:网络DoT 行一起生成。对于不是小仙女的盟友,它与 1A: 网络Buff,1E: 网络消除Buff, 和 25: 网络效果结果 一起出现。

    结构:
    26:[目标ID]:[目标名称]:[职业等级]:[当前HP]:[最大HP]:[当前MP]:[最大MP]:[当前TP]:[最大TP]:[位置X]:[位置Y]:[位置Z]:[面向]:<状态列表; 格式未知>

    举例:

    26:12345678:一号角色:3C503C1C:24136:24136:9045:10000:4:0:-0.4730835:-158.1598:-23.9:3.110625:03E8:45:0:020130:0:106501CA:0129:4172D113:106501CA:012A:4168C8B4:106501CA:012B:40919168:106501CA:0232:40E00000:E0000000:
    

    似乎添加了此行是为了扩展功能用于181A1E日志行,而不会破坏先前的内容或插件。

    27: 网络HP更新

    目前尚不清楚是什么触发了此日志行,但包含的基本信息与2526类似。它对所有的盟友/仙女/宠物有效。

    结构:
    27:[目标ID]:[目标名称]:[当前HP]:[最大HP]:[当前MP]:[最大MP]:[当前TP]:[最大TP]:[位置X]:[位置Y]:[位置Z]:[面向]

    举例:

    27:12345678:朝日小仙女:22851:22851:10000:10000:0:0:12.13086:-169.9398:-23.90031:-2.310888:
    

    FB: 调试

    日志行会被打印,但有空白数据。

    如果是网络日志行,它们通常具有以下信息:251|2019-05-21T19:11:02.0268703-07:00|ProcessTCPInfo: New connection detected for Process [2644]: 192.168.1.70:49413=>204.2.229.85:55021|909171c500bed915f8d79fc04d3589fa

    FC: 数据包转储

    如果启用了将所有网络数据转储到日志文件的设置,则ACT会将所有网络数据发送到网络日志文件本身。在ACT日志行中,这些日志行也会被打印,但只带有空白数据。

    这可用于将网络日志文件导入ffxivmon并检查数据包数据。

    logguide_dumpnetworkdata.png

    FD: 版本

    日志行会被打印,但有空白数据。

    如果是网络日志行,它们通常具有以下信息:253|2019-05-21T19:11:02.0268703-07:00|FFXIV PLUGIN VERSION: 1.7.2.12, CLIENT MODE: FFXIV_64|845e2929259656c833460402c9263d5c

    FE: 错误

    这些是发生错误时ffxiv插件直接发出的行。

    FF: 计时器

    从理论上讲,使用内存解析时会用到,但我还没有看到它们。

    进一步研究网络数据

    对于人们来说,深入研究网络数据以找出当前未在日志中公开的某些特定机制是如何工作的,这将是很好的。

    • 佣兵雷姆普里克斯的Boss头部标记 (A10S和优雷卡涌火之地)
    • 撞上即死的边缘墙
    • 弄懂t13暗黑以太和极朱雀如何连线
    • 找到区域封锁的网络数据,从而不必使用游戏内日志行
    • 绝对的美德的克隆Buff的网络数据 (如今只是相关的游戏内日志)
    • 在较早的副本(诸如巴哈姆特大迷宫)如何检测团灭?
    • 如何在添加战斗员的日志中区分假小怪与真小怪,以便将假的过滤掉。

    参阅: 导入ffxivmon


  • 大佬,。学习了(萌新看不懂QAQ


  • 原来是这样,我懂了。(棒读)