摘要:
1.在GS这边发送(本地玩家信息) LocPlayerInfo info; InitLocalPlayer(rActorEx, info); SendCmd(s2c_local_player_info, &info, sizeof(info));这个LocPlayerInfo好像内容比较多struc... 阅读全文
摘要:
小退void GameChannel::OnLogOut(){ if(m_eGameState != eGameState_EnterMap)//小退玩家肯定是进入地图状态 return; ClearMapRcd();//清除地图相关记录,实现就是给相应地图 ... 阅读全文
摘要:
GS发包到MS(GS,MS包交互过程)例:人物上线首先看看其实如何确定是哪张地图的数据库首先只保存一个mapid在share初始化的时候已经初始化了所有map,并保存了map的指针信息,其key就是mapidif(rActorEx.GetMapID() TGetnBodyId(rActorEx.Ge... 阅读全文
摘要:
要看懂share先看与map的交互以及跨地图的交互share初始化void Share::ShareInit(I_DataLayer* data_layer){ // 加载xls表 if(!LoadnBodyId())//两种性别,三种职业 Plug::PlugMessag... 阅读全文
摘要:
与网络打交道在GS,GC,Share都与网络打交道,但还是GC最多GC打交道过程send_stat BaseChannel::SendCmdTry(){ if (!m_queCmd.size()) return send_stat::send_succeed; for(;;... 阅读全文
摘要:
GS与数据库打交道link_stat stat = (link_stat)rPkt.size;if (stat == link_stat::link_connected){ GameChannel* pNewGC = new GameChannel(); pNewGC->m... 阅读全文
摘要:
再看GS接包过程bool GameServer::ProcessLoop(packet& rPkt){ if(false == m_spDataLayer->Recv(rPkt)) return true;//没数据了 if(rPkt.is_data) { ... 阅读全文
摘要:
再看GS线程void GameServer::ProcessThreadTry(){ int nCount = 0; packet rcvPkt; rcvPkt.data = new char[1024 * 100]; //该事件工厂主要创建了两个定时器1.livemgr的检... 阅读全文
摘要:
GS给客户单发包以及m_queGcWait(所有GC共享)send_stat BaseChannel::SendCmd(int nCmd, void* pData, int nLen){ Protocol Ptl; Ptl.cmd_type = nCmd; Ptl.conte... 阅读全文
摘要:
//最近数据库存储做了重大改变,数据库内部的回头再说,先看看GS这边的1.现在感觉数据库的状态将请求包放入命令队列中,以前是全部放进去,这样让其他的数据库操作不会随着数据库定时器而变慢,GS线程去驱动,一分钟不太可能还存不完2.差异更新,GS只获取更改了的记录,这样不用每次都把全部的记录都放进去,这... 阅读全文