第一个任务是看游戏道具,包裹这些,看懂游戏道具创建,删除的过程,实现通过GM指令,读取配置文件,创建和移除道具。
第二个任务是看装备相关,看懂装备一些操作的计算流程,分清客户端显示装备和服务器存储装备数据,实现通过GM指令,把装备升星。
第一个任务花了4天左右,前两天是看道具相关的内容,周二下午一个策划让我修改一下分身的掉落,因为不知道配置的东西,一直没能给解决,实在是惭愧。这块内容要仔细看看。后面两天是完成这个任务,从写配置到完成,大概1天就能完成。把写的代码给师傅看了以后,总是一大堆喷,不过那些问题确实让我印象深刻。这周从师傅那学到的一些东西如下:
-
查找某一块代码,从网关/网关日志(tail -f ~log/gatewayserver.log)收到的大小消息号入手,大消息号在share/code/command.h里找,然后找到这个数字对应的小消息文件名,在小消息文件名里找到小消息号对应的消息,一个操作可能会收到其他干扰消息,多执行几次一个一个查。
-
程序宕掉,可以从core文件入手,gdb -c core文件。core文件跟当时宕掉的进程号相关。bt查看堆栈信息。
-
写功能尽量用上层函数,SceneUser里重新包装的函数,但是看的时候要看到底层的实现。
-
stl这块,要掌握一些优化技巧。
-
一个处理,有可能成功,有可能失败,失败了怎么处理。(大多数还是写日志)
第二个任务,跟了一天的升星流程,写了一个指令,但是还存在的问题是,客户端可以看到15星,却不能摘星,这表明服务器那还是没有升星成功,可能是漏了一步。装备这块流程特别多,可能只能够看完一个流程,加上几个重要的地方。
道具管理这块:
packages是SceneUser身上管理各种包裹的组合,每个包裹里都是装着zObject,当需要添加一个道具进包裹时,new一个zObject出来,加入到包裹管理器中。
装备升星这块: