半个月前的那天下班后,黎允儿在休息室找到了孙轶民,将一个U盘交给了他。并吩咐:“自己参考,不能交给任何人。”
孙轶民惊愕:“这是……?”
黎允儿用食指贴近嘴唇。然后点了点头,神色庄重:“这是我帮你做好的醉风月的解码功能模块,可以将接受到的服务器数据解译成具体的游戏数值。程序是二进制的dll文件,我附带了函数调用的说明书,你可以拿去直接用。”
孙轶民双眼放光,满脸兴奋:“真的?你太厉害了!”对黎允儿举起了大拇指。
黎允儿报以甜甜的笑。那一刻,孙轶民感觉这前卫又另类的女孩,显得如此可爱动人。
孙轶民兴奋之余又问了一句:“只是二进制文件,没有源代码吗?”
“源代码不能给你。”黎允儿一脸郑重。
“哦……好,”孙轶民怔了一怔,又释然,说道,“那你……能不能告诉我一点具体思路,比如加密方式,密码长度等等信息。”
“你需要什么功能我帮你做就行了。具体细节说起来太麻烦了……”黎允儿似乎是不愿意透露技术细节,找借口婉拒。
孙轶民只好作罢,心想,这或许是因为这程序毕竟是辛苦的研究成果,或者出于黑客准则什么的吧。不好勉强。便说道:“好吧,不管怎样,真的是非常感谢你。”
“不用客气,你也帮过我很多忙啊?”黎允儿说完又叮嘱了一句,“记得,制作辅助软件,要谨守一个原则:不要采用直接向服务器发送虚假数据包的方式,因为你无法保证你模拟的数据包跟原装的一模一样。万一出了点纰漏,服务器的反挂系统会非常立即察觉,后果就是封号。最安全的方法就是通过向客户端发送模拟按键信息的方式进行操作。”
当晚回家,孙轶民便开始投入了辅助战斗程序的开发工作之中。
要说它的工作原理,其实真并不复杂:通过截获相应端口IP数据包,利用黎允儿提供的解码模块分析数据,获取当前任务角色即时状态数据,诸如生命值,能量值,技能冷却状态等等。然后根据这些基础数据做出合适的决策,构造并发送相应的技能的按键消息,驱使角色作出相应的战斗动作。
要实现这一过程,其他部分都不难,关键却在于对游戏数据的解读,解读的前提是解密。孙轶民尽管是一个资深的程序员,却不擅长做这种黑客的工作。这一点,多亏了黎允儿帮忙。
而程序的其他部分的实现,得益于他从事的这一份游戏开发工作,他对解码之后的数据解读,有了驾轻就熟的能力,自然很快就把程序编写出来。他感慨自己选择了这一份工作没有错,借由工作历练,让他在游戏世界拥有了一份天然的优势。
程序制作完成后,孙轶民给它起了一个好听的名字——“演奏家”。并设定了一个独特进程名称,这一点也是挺重要的。市面上流传的一些自动按键类的辅助程序,因为被广泛使用,进程名被游戏运营者所熟知因而被轻易屏蔽。而孙轶民的这一款却是为自己业量身定制的专用辅助程序,因而也相对安全。
而且就功能而言,这一辅助程序也比市场上那些低劣的外挂高明很多。相对于市面上那些只会傻乎乎的按照预定步骤发送按键的拙劣功能而言,“演奏家”实现了对游戏数据与角色自身状态的实时解读,从而能实现自动化决策,半智能化战斗操作。这是其一。其二,演奏家是对于特定的游戏里面的特定职业角色专门开发的,因此有更高的运行效率,从而能保证角色在战斗中占据优势。
借助辅助程序能在战斗中获得优势的关键在于利用计算机程序代替人工“判断状态然后发送技能按键”这个过程。
对于人工操作而言,这个过程需要消耗一定的时间。比如说,在对慕容施放技能“疾风冲刺”之前,孙轶民需要对襄王的自身状态做出判断:是否受到了慕容的控制技能施加的负面作用,比如眩晕状态。
如果有,那么需要考虑使用那一个解控技能,然后确定技能按键的位置。
当解开了受控状态之后,还要检查“疾风冲刺”这个技能是否出于冷却完成状态,如果是,那么就按下相应的按键。
所有这个过程,对于人工操作来说,都需要花一定的时间。时间的长短取决于操作者的熟练程度。
但对于计算机来说,这一过程却几乎不需要时间——当然,除了几个计算机指令周期之外。