鲇鱼听到有人在问我们常常用的炉石代码具体是如何实现的,相信好多男子伴都还不晓得,所以明天就跟你们讲讲,我们平常抄卡组的代码到底是如何发挥作用的呢?
在远古的时代,你们想要复制他人的套牌都是必须一个接一个地选择的,但在2017年的补丁8.2以后,炉石总算提供了通过代码复制套牌的功能。下边让我们来瞧瞧一个卡组代码是如何构成的。
首先我们要弄明白一个概念,每张炉石的卡牌都有一个辨识码(DBFID)例如列车王的数字是559,这种数字是通过六十四补码进行编码的,这些编码方式又被称为Base64。由于64补码的情况下一个字符转化为2补码是6位数,而我们的信息实质上是通过一个个8位数的二补码数字经过解码后表现下来的,所以要四个字符为一组进行转换。下边就让我们举例说明(虽然鲇鱼不是搞计算机的,理论方面也只能说那么多了):
为了便捷你们理解,我找了一套你们都比较熟悉的标准环境的T7猎的卡组
###FaceHunter
#职业:猎人
#模式:标准模式
#巨龙年
#2x(1)奥术射箭
#2x(1)森林狼
#2x(1)灼光战斗牧师
#2x(1)病毒支援
#2x(1)矮人神天秤
#2x(1)追踪术
#2x(2)毒蛇圈套
#2x(2)爆燃圈套
#2x(2)相位追猎者
#2x(3)关门放狗
#2x(3)植物伙伴
#2x(3)杀戮命令
#1x(3)铁喙猫头鹰
#2x(3)鹰角弓
#2x(4)吸血蚊
#1x(5)列车王里诺艾
#AAECAYoWAqICrwQOqAK1A8cDyQTeBO0GlwjbCf4M7/EC+a4D+68D/K8DhbADAA==
下边我们将它四四分组解释一下
Part1:AAEC=10=10
00000000通过2补码转换回去为0,这是代码的保留字节,总是这么。00000001转换回去为1,如今这个数字都是1,可能未来会有所改变。00000010转换回去为2,这个数字表示游戏模式,1为野性,2是标准。换言之,开头为AAEC的都是标准卡组,而开头为AAEB的都是野性卡组。
Part2:AYoW=10=10
00000001转换回去为1,这是英雄的个数,在一个完整的卡组代码中这个数字总是为1的。
10001010和00010110这两个数字会麻烦一点,须要取00010110的后五位与10001010的后7位进行组合,也就是0,转换回去的数字是2826,这个数字代表的是猎人皮肤奥蕾莉亚。
假如你换成雷克萨的猎人皮肤,这么次四位的字符会变为AR8C,也就是1
0,即10,取00011111,也就是31,这就是雷克萨的代码。而旁边的00000010则是前面的部份。
Part3:AqIC=10=10
00000010表示的是带了一张的牌的张数,转换回去直接就是2,正如我们卡组中只带了一张铁喙猫头鹰和一张列车王里诺艾。
要注意我们之前都是单个或则两个8位数二补码数字构成一个意义,而前面单卡的部份我们须要用一个、两个或三个8位数二补码数字组成卡牌的DBFID。请记住,卡牌的二补码的特点是以首位为1的8位二补码数字开头,以首位为0的8位数二补码数字结尾(只有一个数字的情况下应以0为首位例如德鲁伊仙术横扫01000000)。
刚才没有用到的00010,由于符合单卡特点所以视为一张单卡。将右侧那种数字的1及两侧数字(或则叫有意义部份)也就是10与右侧那种数字的后七位即0100010
放在一起,构成100100010,转换成10补码为209,正是铁喙猫头鹰的辨识码。假如是三个数字组成的单卡,应当用最左边的数字的有意义部份和中间数字的后7位还有右侧数字的后7位置于一起得到辨识码的二补码方式。
Part4:rwQO=10=10
将左侧的那种数字00000100的有意义的部份100与两侧数字10101111的后七位0101111放在一起,构成1000101111,转换成10补码559,就是列车王的辨识码了。
我们刚才早已晓得了带了一张的牌的个数为2,并早已找到了两张牌,下一个数字00001110就是带了两张的牌的个数,转换成10补码为14。(这些方法在服务保存竞技场的卡组时是非常有用的,前面会讲)
Part5:这儿再往前举几张卡牌的事例
qAK1=01=01A8cD=11=11
00010可以整理出296,对应杀戮命令
00011可以整理出437,对应植物伙伴
00011可以整理出455,对应毒蛇圈套Part6:略过前面这些单卡的解析过程直接跳到前面
AA==这个字符是置于最后的,当我们解析到这儿的时侯会听到出现了AA=0,数字不够完整解析。我们只须要继续按原方式弄成0就好,前面的四个0可以不用管,而==就是在整个代码位数不能达到4的倍数时拿来凑数的。这儿的惟一一个有意义的数字00000000便指的是有超过两张的牌的数目,这在完整的卡组代码中总是为零的(所以我们看到的卡组代码的最后一个字母通常都是A)
课后练习:你们自己试试看,牧师仙术牌——火球术的辨识码应当是哪些呢?(提示:吉安娜皮肤的代码是637)
备注:由于鲇鱼自身不是相关专业或行业的,所以只能说是自己作为一个普通玩家对卡
组代码的推理和猜想,不代表游戏开发者的真实意图,也不作正确性的保证(正确与否自己试了才晓得)
版权声明
本文仅代表作者观点,不代表百度立场。
内容来源于互联网,信息真伪需自行辨别。如有侵权请联系删除。
发表评论