【幻想黑科技】国服3.4版本战斗数据上传FFlogs的正确姿势

迫于团里龙骑迫切想要装比的强烈需求,作为学者的我潜心钻研了一晚上的fflogs。考虑到经过几周的Farm,国服玩家的装等应该已经提升到可以刷数据的阶段,所以与国际接轨的FFlogs将成为必不可少的装比利器。
然而现在国服版本正常情况是不能够将数据上传到fflogs的,由于各种原因(翻译问题、国服版本问题),并且ACT和FFlogs的开发者并没有打算为国服这个问题做什么特殊调整,因此很多时候在国服装比只需要一张截图,而对整场战斗的介绍却是非常含糊。也由此诞生了很多华而不实的贴吧数据。
为了解决这个问题,将真实的战斗情况反映出来,必须实现国服上传FFlogs。幸运的是,经过研究,这个想法是可行的。不过对于普通玩家而言实在过于麻烦,所以我修改了某个版本的ACT_FFXIV_Plugin,使用修改版本得到的国服logs数据可以直接上传到FFlogs。这个插件在国服更新3.5之前应该是有效的。想要用数据碾压国际服的贴吧大神们,请开始你们的表演~
先来几张效果图:(萌芽池某次野队A12s带4个宝宝过本)

可以看到整场战斗统计、玩家输出在全世界所有玩家中的排位,所有人的输出循环。也可以进行战斗回放,总之FFlogs所有的功能都可以正常使用。




楼主 alpha02  发布于 2017-03-14 04:04:00 +0800 CST  
插件地址
度盘:https://pan.baidu.com/s/1qYO2otm

楼主 alpha02  发布于 2017-03-14 04:06:00 +0800 CST  
FFlogs的官方网站:https://cn.fflogs.com/
ACT插件的教程:http://bbs.ngacn.cc/read.php?tid=8746485
想上传战斗数据的朋友先做好基础功课,弄清楚关于ACT如何使用、FFlogs如何使用这种基本问题,然后使用这个版本的FFXIV_Plugin.dll代替原有的汉化版FFXIV_Plugin.dll。之后获取ACT的战斗记录文件,就可以用于直接上传。
至于做了什么修改。。很简单,把FFXIV_Plugin1.4.2.23汉化了一遍,然后在输出战斗记录的程序中,把所有Boss的名字重新翻译成英文。为什么是1.4.2.23,因为


在ACT_Plugin的所有版本中,NGA提供的汉化版是基于1.4.2.20的,而FFLogs已经不支持1.4.2.20。
1.4.2.23是在3.5更新前最后一个支持3.4x游戏的插件版本。

楼主 alpha02  发布于 2017-03-14 04:14:00 +0800 CST  
对了接下来我想把整个研究的思路写一遍。大概会变成一个技术贴,不喜欢的就不用往下看了。我也不会介绍fflogs怎么用之类的。

楼主 alpha02  发布于 2017-03-14 04:15:00 +0800 CST  
在3.4以前,我们发现,简单地把logs中的boss名称替换成英文有的时候就能使FFlogs正确识别国服数据。这个办法在我们团以前farm5s~8s的时候屡试不爽,而且在完美地为我团战士极邪龙野队装比提供了技术支持。
但是更新3.4以后,或者,准确地说,更新插件1.4.2.23以后,替换boss名这种简单的方法将不能再使用。
请看以下两个logs文件:
1.4.2.20


1.4.2.23


同样是咏唱护盾。但是后者在最后多了一串意味不明的数字。
经过替换boss名的做法以后,所有被替换的记录将会失效,在fflogs中会显示一个空白战斗记录。
只替换部分名称,例如把索菲娅的小怪名称替换后,关于小怪的战斗记录就全部消失。
因此一个合理的假设就是,后面这串数字中包含了某种校验信息。它能告诉fflogs战斗记录是否遭到了非法修改。而新版的fflogs之所以不再兼容国服3.4版本的旧插件,正是因为在1.4.2.23版本之前的fflogs文件中没有这一串校验码,所有别有用心的玩家都可以通过修改logs文件来上传虚假的战斗记录。

楼主 alpha02  发布于 2017-03-14 04:29:00 +0800 CST  
之后对FFXIV_Plugin的反编译证实了这个想法。
这个数字来源于这个函数:


而事实上:
它就是一个关于某条记录的MD5校验码。


这样一来,在今后的战斗记录中,单纯替换任何一个部分,哪怕修改一个数字都会导致校验码的不正确,整条记录都会被抛弃,换句话说,1.4.2.23版本以后fflogs中存在的战斗记录不再允许任何形式的修改或伪造。
为了上传国服的数据,修改boss名称必须使用更为先进的办法

楼主 alpha02  发布于 2017-03-14 04:37:00 +0800 CST  
最后一张图:


这就是我的解决方案。。。。
这个方法非常拙劣,就是在校验码生成之前把boss名字统统替换回去
(没时间考虑更好的办法,我是能用就行选手。这里抛砖引玉,会编程的dalao们有时间可以把它弄得更好一些)
这样一来我们得到的战斗记录中,boss的名字就会是英文的,并且能被fflogs接受为正确的战斗记录。

楼主 alpha02  发布于 2017-03-14 04:43:00 +0800 CST  
带来的副作用:在战斗记录中,凡是有boss名字出现的地方,都会被无脑翻译成英文。甚至你和朋友聊天说的一句话,只要包含“巡航驱逐者”或者类似的boss名,都会被翻译。因此,如果你使用其它插件,比如时间轴或者ACT触发器,其中若是有中文的boss名,可能在这个版本的插件中要做对应的修改,否则不再有效。翻译规则如下:
(我只做了极女神和零式天动的英文化翻译,其它副本没有任何影响,当然,上传的话也不能被fflogs识别,只会显示为trash fights,不过,其仍然具有可读性。毕竟上传logs的目的是装比,不是为了打个高随撕逼上传logs来甩锅的
索菲娅Sophia
芭碧萝Barbelo
信徒其一The First Demiurge
信徒其二The Second Demiurge
信徒其三The Third Demiurge
移涌Aion Teleos


终极浮士德Faust Z
废品翻新装置Refurbisher 0
报废的哥布林坦克Gobtank Scrap
报废的哥布林装甲Vangob Scrap
报废的装甲人偶Panzer Doll Scrap
全装甲浮士德Full-Metal Faust
警报Alarum


佣兵雷姆普里克斯Lamebrix Strikebocks
虚兵雷姆普里克斯Lameprix Strikedocks
6号哥布林压路机Gobpress R-VI
佣兵战士Goblin of Fortune
佣兵骑士Hedge Gobknight


巡航驱逐者Cruise Chaser
等离子护盾Plasmasphere
护航机甲E.D.D.
肩部装甲Armored Pauldron
天青石Lapis Lazuli
等离子球Plasmasphere
层积科学结界Multifield


至尊亚历山大Alexander Prime
阿里达乌斯之速Arrhidaeus's Lanner
阿里达乌斯之翼The General's Wing
阿里达乌斯之力The General's Might
阿里达乌斯之时The General's Time
审判结晶Judgment Crystal

楼主 alpha02  发布于 2017-03-14 04:50:00 +0800 CST  
好了,就介绍到这里。觉得有用的朋友可以下载用用,没问题的话这贴可以沉了。


楼主 alpha02  发布于 2017-03-14 04:57:00 +0800 CST  
大家可以帮忙测试一下,因为做好以后只有机会在野队打了一次12s渡劫,不知道前几层是否正常。如果有不对的请告诉我

楼主 alpha02  发布于 2017-03-14 10:57:00 +0800 CST  

楼主:alpha02

字数:2785

发表时间:2017-03-14 12:04:00 +0800 CST

更新时间:2017-04-18 14:52:09 +0800 CST

评论数:109条评论

帖子来源:百度贴吧  访问原帖

 

热门帖子

随机列表

大家在看