예제 #1
0
 //角色信息返回
 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());
 }
예제 #2
0
        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());
        }