关于Warframe的worldstate.php的一点研究

为什么到处都找不到什么好用的资料,难道这个json就这么“浅显易懂”吗?

这是啥?

worldstate.php是Warframe国际服官方给出的服务器状态信息,本质上是JSON,包含警报、入侵、突击等等的游戏实时状况信息。

为什么?

因为我想从头开始做个Discord机器人。

怎么用?

这就是让我最纠结的地方,除了WFCD的Parser之外,我压根就没找到什么能用的文档……

所以免得我自己忘掉,写在这里备忘。


警报

Alerts数组,内含多个数组,每个数组中(我认为)有用的数据如下:

  • Activation:警报开始时间,Epoch时间,毫秒。
  • Expiry:警报结束时间,同上。
  • MissionInfo:任务信息,内含如下内容。
    • missionType:任务类型,内部字符串,MT_啥啥的,实际内容转换我扔到Github了
    • location:星图节点,内部字符串,SolNodeXXX,实际内容转换也在Github
    • minEnemyLevel、maxEnemyLevel:警报的等级范围。
    • missionReward:警报奖励,默认会有钱Credits,如果有单个的物品,会在items数组,ItemType表示物品类型;如果有多个数量的物品,会在countedItems数组,多一个ItemCount表示物品数量。
  • archwingRequired:表示警报需要archwing。

突击

Sorties数组,内含1个数组,包含三个突击任务。

  • Activation、Expiry同警报,意义不大,反正一天一更。
  • Boss:Boss。
  • Variants:含三个数组,就是三个突击。
    • missionType:同警报。
    • modifierType:限制条件,我忘了把json汉化掉,所以用世界上最好的编程语言附在后面了。
    • node:同警报。
modifierType
$sortieModifier = Array("SORTIE_MODIFIER_LOW_ENERGY" => "能量上限减少",
"SORTIE_MODIFIER_IMPACT" => "敌人物理强化: 冲击",
"SORTIE_MODIFIER_SLASH" => "敌人物理强化: 切割",
"SORTIE_MODIFIER_PUNCTURE" => "敌人物理强化: 穿刺",
"SORTIE_MODIFIER_EXIMUS" => "卓越者要塞",
"SORTIE_MODIFIER_MAGNETIC" => "敌人元素强化: 磁力",
"SORTIE_MODIFIER_CORROSIVE" => "敌人元素强化: 腐蚀",
"SORTIE_MODIFIER_VIRAL" => "敌人元素强化: 病毒",
"SORTIE_MODIFIER_ELECTRICITY" => "敌人元素强化: 电击",
"SORTIE_MODIFIER_RADIATION" => "敌人元素强化: 辐射",
"SORTIE_MODIFIER_GAS" => "敌人元素强化: 毒气",
"SORTIE_MODIFIER_FIRE" => "敌人元素强化: 火焰",
"SORTIE_MODIFIER_EXPLOSION" => "敌人元素强化: 爆炸",
"SORTIE_MODIFIER_FREEZE" => "敌人元素强化: 冰冻",
"SORTIE_MODIFIER_TOXIN" => "敌人元素强化: 毒素",
"SORTIE_MODIFIER_POISON" => "敌人元素强化: 毒素",
"SORTIE_MODIFIER_HAZARD_RADIATION" => "环境: 辐射灾害",
"SORTIE_MODIFIER_HAZARD_MAGNETIC" => "环境: 电磁异常",
"SORTIE_MODIFIER_HAZARD_FOG" => "环境: 浓雾",
"SORTIE_MODIFIER_HAZARD_FIRE" => "环境: 火灾",
"SORTIE_MODIFIER_HAZARD_ICE" => "环境: 冷液泄露",
"SORTIE_MODIFIER_HAZARD_COLD" => "环境: 极度低温",
"SORTIE_MODIFIER_ARMOR" => "敌人护甲强化",
"SORTIE_MODIFIER_SHIELDS" => "敌人护盾强化",
"SORTIE_MODIFIER_SECONDARY_ONLY" => "武器限制: 手枪",
"SORTIE_MODIFIER_SHOTGUN_ONLY" => "武器限制: 霰弹枪",
"SORTIE_MODIFIER_SNIPER_ONLY" => "武器限制: 狙击枪",
"SORTIE_MODIFIER_RIFLE_ONLY" => "武器限制: 突击步枪",
"SORTIE_MODIFIER_MELEE_ONLY" => "武器限制: 近战",
"SORTIE_MODIFIER_BOW_ONLY" => "武器限制: 弓");

虚空裂缝

ActiveMissions数组。需要注意的是数组的顺序是混乱的,需要自己按照古纪前纪排个序。

  • MissionType、Node、Expiry:同警报。注意大小写。
  • Modifier:只会有四个值,VoidT1、VoidT2、VoidT3、VoidT4。代表古纪、前纪、中纪、后纪。

入侵

Invasions数组。比较烦人的一个。

  • Completed:是否已完成,1的话表示这个节点已经打完,就不用输出出来看了。
  • DefenderMissionInfo:防御方的任务信息,这里有个弯儿,见底下的描述
    • faction:表示进攻方的阵营,因为是防御方要打的阵营。
  • AttackerMissionInfo:同上,表示防御方的阵营。
  • DefenderReward、AttackerReward:防守方进攻方的完成奖励,这个不是反过来的,别混了。I系作为进攻方没有奖励,注意写好错误陷阱。
    • countedItems:任务奖励。
      • ItemType:奖励种类。
      • ItemCount:奖励数量。
  • Node:地点。
  • LocTag:入侵任务描述。
  • Count:目前任务已经完成的总次数,双方对战的话,支持往右边打+1,往左边打-1,比如-1000表示右边打左边多1000次。
  • Goal:入侵完成的目标值,当Count达到Goal的时候任务结束。(如果你要计算百分比的话,两边互推是从50%开始的,也就是0为50%)

奸商

VoidTraders数组。为啥是复数?

  • Activation、Expiry:奸商到来和离去时间,同上上上。
  • Character:到来的角色,说明刚开始的设计可能不止Baro一个。目前来看只有“Baro’Ki Teel”一个值,但实际上游戏里奸商的名字是“Baro Ki’Teer”。迷。
  • Node:地点。
  • Manifest:数组。带来的商品。
    • ItemType:物品种类。
    • PrimePrice:需要的杜卡德金币数。
    • RegularPrice:需要的Credits数。

Darvo的每日特

DailyDeals数组。

  • StoreItem:物品名。
  • Activation、Expiry:我懒得说了。
  • Discount:降价百分比。
  • OriginalPrice、SalePrice:原价、现价(白金)。
  • AmountTotal、AmountSold:库存、已售。

语言文件

上面提到了很多物品名、语言描述之类的东西,直接获取到的其实是类似“/Lotus/StoreItems/Types/Keys/MummyQuestKeyBlueprint”之类的内部字符串。由于现在WF没有有效的字符串提取方式,因此虽然获取英文版很容易,但是翻译还是需要自己来的。

根据WFCD的英文版我自己汉化了一部分放到了Github:https://github.com/Raka-loah/warframe-worldstate-data/blob/master/data/languages.json 。目前不全。


集团任务

SyndicateMissions数组。内容待更。


希图斯白天、黑夜

在SyndicateMissions数组找到Tag为“CetusSyndicate”的集团,其中Activation就是白天开始时间,100分钟白天,50分钟夜晚,自己减一下就知道是白天还是晚上了。

地球的白天黑夜很巧在东八区时间零点是白天开始,每4小时一更,也就是凌晨4点进入夜晚、早晨8点进入白天……循环一天。

分享到: