//角色信息返回 private void ProcessRoleInfo_Ret(byte[] data) { GameBase.Network.Internal.RoleInfo_Ret ret = new GameBase.Network.Internal.RoleInfo_Ret(); ret.Create(data); Data.SetOnlineState(ret.accountid, 0); //发给loginserver服务器 GameBase.Network.Internal.QueryRole_Ret queryrole_ret = new GameBase.Network.Internal.QueryRole_Ret(); queryrole_ret.gameid = ret.gameid; queryrole_ret.key = ret.key; queryrole_ret.key2 = ret.key2; queryrole_ret.ret = 1; SessionManager.Instance().SendLoginServer(queryrole_ret.GetBuffer()); Log.Instance().WriteLog("通知loginserver登录服务器:" + ret.accountid.ToString()); }
private void ProcessQueryRole(byte[] data) { GameBase.Network.Internal.QueryRole info = new GameBase.Network.Internal.QueryRole(); info.Create(data); byte ret = 0; String sAccount = info.GetAccount(); int accountid = Data.QueryAccount(sAccount); //查询数据库是否有该角色-- if (accountid != -1) { ret = 1; //-优先查询是否在线,要是在线就踢掉了-- int mapserverindex = -1; if (Data.IsOnline(sAccount, ref mapserverindex)) { ret = 2; //发送给mapserver踢掉该玩家,因为被挤下线了 GameBase.Network.Internal.KickGamePlay kickplay = new GameBase.Network.Internal.KickGamePlay(); kickplay.accountid = accountid; SessionManager.Instance().SendMapServer(mapserverindex, kickplay.GetBuffer()); //设置该玩家帐号为离线状态 Data.SetOnlineState(accountid, -1); } if (ret == 1) { Log.Instance().WriteLog("查询角色成功:" + sAccount + "id:" + accountid.ToString()); //发送给mapserver服务器 GameBase.Network.Internal.RoleInfo roleinfo = Data.QueryRoleInfo(accountid); roleinfo.gameid = info.gameid; roleinfo.mKey = info.key; roleinfo.mKey1 = info.key2; roleinfo.sAccount = sAccount; SessionManager.Instance().SendMapServer(roleinfo.mapid, roleinfo.GetBuffer()); //如果有角色,读取角色的其他信息 //物品数据 GameBase.Network.Internal.ROLEDATA_ITEM item = new GameBase.Network.Internal.ROLEDATA_ITEM(); item.key = info.key; item.key2 = info.key2; item.playerid = roleinfo.playerid; item.SetLoadTag(); Data.LoadRoleData_Item(item); if (item.mListItem.Count > 0) //没数据就不发了。。 { SessionManager.Instance().SendMapServer(0, item.GetBuffer()); } //技能数据 GameBase.Network.Internal.RoleData_Magic magic = new GameBase.Network.Internal.RoleData_Magic(); magic.SetLoadTag(); magic.ownerid = roleinfo.playerid; magic.key = roleinfo.mKey; magic.key2 = roleinfo.mKey1; Data.LoadRoleData_Magic(magic); if (magic.mListMagic.Count > 0) { SessionManager.Instance().SendMapServer(0, magic.GetBuffer()); } //幻兽数据-- List <RoleData_Item> list_eudemondata = item.GetEudemonItemList(); if (list_eudemondata != null) { GameBase.Network.Internal.ROLEDATE_EUDEMON eudemon = new GameBase.Network.Internal.ROLEDATE_EUDEMON(); eudemon.SetLoadTag(); eudemon.playerid = roleinfo.playerid; eudemon.key = roleinfo.mKey; eudemon.key2 = roleinfo.mKey1; Data.LoadRoleData_Eudemon(eudemon); SessionManager.Instance().SendMapServer(0, eudemon.GetBuffer()); } //好友数据 GameBase.Network.Internal.ROLEDATA_FRIEND friend = new GameBase.Network.Internal.ROLEDATA_FRIEND(); friend.SetLoadTag(); friend.playerid = roleinfo.playerid; friend.key = roleinfo.mKey; friend.key2 = roleinfo.mKey1; Data.LoadRoleData_Friend(friend); SessionManager.Instance().SendMapServer(0, friend.GetBuffer()); } else { Log.Instance().WriteLog("查询角色失败:" + sAccount + "id:" + accountid.ToString()); } } if (ret == 1) { return; //有该角色 } //发送给loginserver服务器-- GameBase.Network.Internal.QueryRole_Ret queryrole_ret = new GameBase.Network.Internal.QueryRole_Ret(); queryrole_ret.gameid = info.gameid; queryrole_ret.key = info.key; queryrole_ret.key2 = info.key2; queryrole_ret.ret = ret; mTcpServer.SendData(mSocket, queryrole_ret.GetBuffer()); }