Inheritance: global::ProtoBuf.IExtensible
コード例 #1
0
        private void EGMI_ACK_DATA_FINISHED(int id, MemoryStream stream)
        {
            NFMsg.MsgBase xMsg = NFMsg.MsgBase.Parser.ParseFrom(stream);

            NFMsg.AckPlayerEntryList xData = NFMsg.AckPlayerEntryList.Parser.ParseFrom(xMsg.MsgData);

            for (int i = 0; i < xData.ObjectList.Count; ++i)
            {
                NFMsg.PlayerEntryInfo xInfo = xData.ObjectList[i];

                NFVector3 vPos = new NFVector3(xInfo.X, xInfo.Y, xInfo.Z);

                NFDataList var = new NFDataList();
                var.AddString("Position");
                var.AddVector3(vPos);

                NFGUID xObjectID    = mHelpModule.PBToNF(xInfo.ObjectGuid);
                string strClassName = xInfo.ClassId.ToStringUtf8();
                string strConfigID  = xInfo.ConfigId.ToStringUtf8();

                Debug.Log("create Object: " + strClassName + " " + xObjectID.ToString() + " " + strConfigID + " (" + xInfo.X + "," + xInfo.Y + "," + xInfo.Z + ")");

                ObjectDataBuff xDataBuff;
                if (mxObjectDataBuff.TryGetValue(xObjectID, out xDataBuff))
                {
                    NFIObject xGO = mKernelModule.CreateObject(xObjectID, xInfo.SceneId, 0, strClassName, strConfigID, var);
                    if (null == xGO)
                    {
                        Debug.LogError("ID conflict: " + xObjectID.ToString() + "  ConfigID: " + strClassName);
                        continue;
                    }
                }
            }
        }
コード例 #2
0
        private void OnObjectEntry(UInt16 id, MemoryStream stream)
        {
            NFMsg.MsgBase xMsg = NFMsg.MsgBase.Parser.ParseFrom(stream);

            NFMsg.AckPlayerEntryList xData = NFMsg.AckPlayerEntryList.Parser.ParseFrom(xMsg.msg_data);

            for (int i = 0; i < xData.object_list.Count; ++i)
            {
                NFMsg.PlayerEntryInfo xInfo = xData.object_list[i];

                NFDataList var = new NFDataList();
                var.AddString("X");
                var.AddFloat(xInfo.x);
                var.AddString("Y");
                var.AddFloat(xInfo.z);
                var.AddString("Z");
                var.AddFloat(xInfo.y);

                Debug.LogWarning("Object Enter: " + mHelpModule.PBToNF(xInfo.object_guid).ToString() + "  ConfigID:" + xInfo.class_id.ToStringUtf8());
                NFIObject xGO = mKernelModule.CreateObject(mHelpModule.PBToNF(xInfo.object_guid), xInfo.scene_id, 0, xInfo.class_id.ToStringUtf8(), xInfo.config_id.ToStringUtf8(), var);
                if (null == xGO)
                {
                    Debug.LogError("ID: " + xInfo.object_guid + "  ConfigID:" + xInfo.config_id.ToStringUtf8());
                    continue;
                }
            }
        }
コード例 #3
0
        private void EGMI_ACK_OBJECT_ENTRY(int id, MemoryStream stream)
        {
            NFMsg.MsgBase xMsg = NFMsg.MsgBase.Parser.ParseFrom(stream);

            NFMsg.AckPlayerEntryList xData = NFMsg.AckPlayerEntryList.Parser.ParseFrom(xMsg.MsgData);

            for (int i = 0; i < xData.ObjectList.Count; ++i)
            {
                NFMsg.PlayerEntryInfo xInfo = xData.ObjectList[i];

                NFVector3 vPos = new NFVector3(xInfo.X, xInfo.Y, xInfo.Z);

                NFDataList var = new NFDataList();
                var.AddString(NFrame.NPC.Position);
                var.AddVector3(vPos);

                NFGUID xObjectID    = mHelpModule.PBToNF(xInfo.ObjectGuid);
                string strClassName = xInfo.ClassId.ToStringUtf8();
                string strConfigID  = xInfo.ConfigId.ToStringUtf8();

                Debug.Log("new Object enter: " + strClassName + xObjectID.ToString() + " " + xInfo.X + " " + xInfo.Y + " " + xInfo.Z);

                ObjectDataBuff xDataBuff = new ObjectDataBuff();
                mxObjectDataBuff.Add(xObjectID, xDataBuff);

                /*
                 * NFIObject xGO = mKernelModule.CreateObject(xObjectID, xInfo.scene_id, 0, strClassName, strConfigID, var);
                 * if (null == xGO)
                 * {
                 *  Debug.LogError("ID conflict: " + xObjectID.ToString() + "  ConfigID: " + strClassName);
                 *  continue;
                 * }
                 */
            }
        }
コード例 #4
0
ファイル: NFMsgListener.cs プロジェクト: zh423328/NFClient
        private void EGMI_ACK_DATA_FINISHED(NFMsg.MsgBase xMsg)
        {
            NFMsg.AckPlayerEntryList xData = new NFMsg.AckPlayerEntryList();
            xData = mxSerializer.Deserialize(new MemoryStream(xMsg.msg_data), null, typeof(NFMsg.AckPlayerEntryList)) as NFMsg.AckPlayerEntryList;

            for (int i = 0; i < xData.object_list.Count; ++i)
            {
                NFMsg.PlayerEntryInfo xInfo = xData.object_list [i];

                NFVector3 vPos = new NFVector3(xInfo.x, xInfo.y, xInfo.z);

                NFDataList var = new NFDataList();
                var.AddString("Position");
                var.AddVector3(vPos);

                NFGUID xObjectID    = NFNetController.PBToNF(xInfo.object_guid);
                string strClassName = System.Text.Encoding.Default.GetString(xInfo.class_id);
                string strConfigID  = System.Text.Encoding.Default.GetString(xInfo.config_id);

                Debug.Log("new " + strClassName + " Object: " + xObjectID.ToString() + " " + xInfo.x + " " + xInfo.y + " " + xInfo.z);

                ObjectDataBuff xDataBuff;
                if (mxObjectDataBuff.TryGetValue(xObjectID, out xDataBuff))
                {
                    NFIObject xGO = NFCKernelModule.Instance.CreateObject(xObjectID, xInfo.scene_id, 0, strClassName, strConfigID, var);
                    if (null == xGO)
                    {
                        Debug.LogError("ID conflict: " + xObjectID.ToString() + "  ConfigID: " + strClassName);
                        continue;
                    }
                }
            }
        }
コード例 #5
0
        private void OnObjectEntry(UInt16 id, MemoryStream stream)
        {
            NFMsg.MsgBase xMsg = new NFMsg.MsgBase();
            xMsg = Serializer.Deserialize <NFMsg.MsgBase>(stream);

            NFMsg.AckPlayerEntryList xData = new NFMsg.AckPlayerEntryList();
            xData = Serializer.Deserialize <NFMsg.AckPlayerEntryList>(new MemoryStream(xMsg.msg_data));

            for (int i = 0; i < xData.object_list.Count; ++i)
            {
                NFMsg.PlayerEntryInfo xInfo = xData.object_list[i];

                NFIDataList var = new NFCDataList();
                var.AddString("X");
                var.AddFloat(xInfo.x);
                var.AddString("Y");
                var.AddFloat(xInfo.z);
                var.AddString("Z");
                var.AddFloat(xInfo.y);

                Debug.LogWarning("Object Enter: " + PBToNF(xInfo.object_guid).ToString() + "  ConfigID:" + System.Text.Encoding.Default.GetString(xInfo.class_id));
                NFIObject xGO = NFCKernelModule.Instance().CreateObject(PBToNF(xInfo.object_guid), xInfo.scene_id, 0, System.Text.Encoding.Default.GetString(xInfo.class_id), System.Text.Encoding.Default.GetString(xInfo.config_id), var);
                if (null == xGO)
                {
                    Debug.LogError("ID冲突: " + xInfo.object_guid + "  ConfigID:" + System.Text.Encoding.Default.GetString(xInfo.config_id));
                    continue;
                }
            }
        }
コード例 #6
0
        private void EGMI_ACK_OBJECT_ENTRY(NFMsg.MsgBase xMsg)
        {
            NFMsg.AckPlayerEntryList xData = new NFMsg.AckPlayerEntryList();
            xData = mxSerializer.Deserialize(new MemoryStream(xMsg.msg_data), null, typeof(NFMsg.AckPlayerEntryList)) as NFMsg.AckPlayerEntryList;

            for (int i = 0; i < xData.object_list.Count; ++i)
            {
                NFMsg.PlayerEntryInfo xInfo = xData.object_list[i];

                NFVector3 vPos = new NFVector3(xInfo.x, xInfo.y, xInfo.z);

                NFDataList var = new NFDataList();
                var.AddString(NFrame.NPC.Position);
                var.AddVector3(vPos);

                NFGUID xObjectID    = NFNetController.PBToNF(xInfo.object_guid);
                string strClassName = System.Text.Encoding.Default.GetString(xInfo.class_id);
                string strConfigID  = System.Text.Encoding.Default.GetString(xInfo.config_id);

                Debug.Log("new Object enter: " + strClassName + xObjectID.ToString() + " " + xInfo.x + " " + xInfo.y + " " + xInfo.z);

                ObjectDataBuff xDataBuff = new ObjectDataBuff();
                mxObjectDataBuff.Add(xObjectID, xDataBuff);

                /*
                 * NFIObject xGO = NFCKernelModule.Instance.CreateObject(xObjectID, xInfo.scene_id, 0, strClassName, strConfigID, var);
                 * if (null == xGO)
                 * {
                 *      Debug.LogError("ID conflict: " + xObjectID.ToString() + "  ConfigID: " + strClassName);
                 *      continue;
                 * }
                 */
            }
        }
コード例 #7
0
        private void EGMI_ACK_OBJECT_ENTRY(MsgHead head, MemoryStream stream)
        {
            NFMsg.MsgBase xMsg = new NFMsg.MsgBase();
            xMsg = Serializer.Deserialize<NFMsg.MsgBase>(stream);

            NFMsg.AckPlayerEntryList xData = new NFMsg.AckPlayerEntryList();
            xData = Serializer.Deserialize<NFMsg.AckPlayerEntryList>(new MemoryStream(xMsg.msg_data));

            for (int i = 0; i < xData.object_list.Count; ++i)
            {
                NFMsg.PlayerEntryInfo xInfo = xData.object_list[i];

                NFIDataList var = new NFCDataList();
                var.AddString("X");
                var.AddFloat(xInfo.x);
                var.AddString("Y");
                var.AddFloat(xInfo.y);
                var.AddString("Z");
                var.AddFloat(xInfo.z);
                NFIObject xGO = NFCKernelModule.Instance.CreateObject(PBToNF(xInfo.object_guid), xInfo.scene_id, 0, System.Text.Encoding.Default.GetString(xInfo.class_id), System.Text.Encoding.Default.GetString(xInfo.config_id), var);
                if (null == xGO)
                {
                    Debug.LogError("ID冲突: " + xInfo.object_guid + "  ConfigID:" + System.Text.Encoding.Default.GetString(xInfo.config_id));
                    continue;
                }
            }
        }
コード例 #8
0
    public void RequireEnterGameServer(NFCoreEx.NFIDENTID objectID, string strAccount, string strRoleName, int nServerID)
    {
        NFMsg.ReqEnterGameServer xData = new NFMsg.ReqEnterGameServer();
        xData.name = UnicodeEncoding.Default.GetBytes(strRoleName);
        xData.account = UnicodeEncoding.Default.GetBytes(strAccount);
        xData.game_id = nServerID;
        xData.id = NFToPB(objectID);

        MemoryStream stream = new MemoryStream();
        Serializer.Serialize<NFMsg.ReqEnterGameServer>(stream, xData);

        SendMsg(objectID, NFMsg.EGameMsgID.EGMI_REQ_ENTER_GAME, stream);

        if (NFStart.Instance.bDebugMode)
        {
            //EGMI_ACK_OBJECT_ENTRY
            //property
            //EGMI_ACK_SWAP_SCENE
            //EGMI_ACK_OBJECT_ENTRY
            //property
            float fX = 0.0f;
            float fY = 0.0f;
            float fZ = 0.0f;
            NFIElement xElement = NFCElementManager.Instance.GetElement("1");
            if (null != xElement)
            {
                string strRelivePos = xElement.QueryString("RelivePos");
                string[] sArray = strRelivePos.Split(';');
                if (sArray.Length > 0)
                {
                    sArray = sArray[0].Split(',');
                }

                if (sArray.Length == 3)
                {
                    fX = float.Parse(sArray[0]);
                    fY = float.Parse(sArray[1]);
                    fZ = float.Parse(sArray[2]);
                }
            }
            /////////////////////////////////////////////
            //mainplayer
            NFMsg.AckPlayerEntryList xAckMainBodyData = new NFMsg.AckPlayerEntryList();
            NFMsg.PlayerEntryInfo xInfo = new NFMsg.PlayerEntryInfo();
            NFMsg.Ident xID = new NFMsg.Ident();
            xInfo.object_guid = xID;
            xInfo.x = fX;
            xInfo.y = fY;
            xInfo.z = fZ;
            xInfo.career_type = 1;
            xInfo.player_state = 1;
            xInfo.config_id = UnicodeEncoding.Default.GetBytes("");
            xInfo.scene_id = 1;
            xInfo.class_id = UnicodeEncoding.Default.GetBytes("Player");

            xAckMainBodyData.object_list.Add(xInfo);

            MemoryStream xAckMianPlayerBodyStream = new MemoryStream();
            Serializer.Serialize<NFMsg.AckPlayerEntryList>(xAckMianPlayerBodyStream, xAckMainBodyData);

            NFMsg.MsgBase xAckMianPlayerData = new NFMsg.MsgBase();
            xAckMianPlayerData.player_id = xID;
            xAckMianPlayerData.msg_data = xAckMianPlayerBodyStream.ToArray();

            MemoryStream xAckAllStream = new MemoryStream();
            Serializer.Serialize<NFMsg.MsgBase>(xAckAllStream, xAckMianPlayerData);

            MsgHead head = new MsgHead();
            head.unMsgID = (UInt16)NFMsg.EGameMsgID.EGMI_ACK_OBJECT_ENTRY;
            head.unDataLen = (UInt32)xAckAllStream.Length + (UInt32)ConstDefine.NF_PACKET_HEAD_SIZE;

            xNet.mxBinMsgEvent.OnMessageEvent(head, xAckAllStream.ToArray());
            /////////////////////////////////////////////
            //property

            NFMsg.ObjectPropertyInt propertyData = new NFMsg.ObjectPropertyInt();

            PropertyInt xPropertyInt = new PropertyInt();
            xPropertyInt.property_name = UnicodeEncoding.Default.GetBytes("MOVE_SPEED");
            xPropertyInt.data = 50000;
            propertyData.property_list.Add(xPropertyInt);
            propertyData.player_id = xID;

            MemoryStream xAckPropertyIntStream = new MemoryStream();
            Serializer.Serialize<NFMsg.ObjectPropertyInt>(xAckPropertyIntStream, propertyData);

            NFMsg.MsgBase xPropertyIntMsg = new NFMsg.MsgBase();
            xPropertyIntMsg.player_id = xID;
            xPropertyIntMsg.msg_data = xAckPropertyIntStream.ToArray();

            MemoryStream xAckPropertyIntAllStream = new MemoryStream();
            Serializer.Serialize<NFMsg.MsgBase>(xAckPropertyIntAllStream, xPropertyIntMsg);

            MsgHead xAckPropertyhead = new MsgHead();
            xAckPropertyhead.unMsgID = (UInt16)NFMsg.EGameMsgID.EGMI_ACK_PROPERTY_INT;
            xAckPropertyhead.unDataLen = (UInt32)xAckPropertyIntAllStream.Length + (UInt32)ConstDefine.NF_PACKET_HEAD_SIZE;

            xNet.mxBinMsgEvent.OnMessageEvent(xAckPropertyhead, xAckPropertyIntAllStream.ToArray());

            /////////////////////////////////////////////
            xNet.mPlayerState = NFNet.PLAYER_STATE.E_PLAYER_GAMEING;
            //NFCRenderInterface.Instance.LoadScene(1, fX, fY, fZ);
            /////////////////////////////////////////////

            //npc
            NFMsg.AckPlayerEntryList xAckNPCBodyData = new NFMsg.AckPlayerEntryList();
            for (int i = 0; i < 5; ++i)
            {
                NFMsg.PlayerEntryInfo xNPCInfo = new NFMsg.PlayerEntryInfo();

                NFMsg.Ident xNPCID = new NFMsg.Ident();
                xNPCID.index = i + 10000;
                xNPCInfo.object_guid = xNPCID;
                xNPCInfo.x = fX + i;
                xNPCInfo.y = fY;
                xNPCInfo.z = fZ + i;
                xNPCInfo.career_type = 1;
                xNPCInfo.player_state = 1;
                xNPCInfo.config_id = UnicodeEncoding.Default.GetBytes("");
                xNPCInfo.scene_id = 1;
                xNPCInfo.class_id = UnicodeEncoding.Default.GetBytes("Player");

                xAckNPCBodyData.object_list.Add(xNPCInfo);
            }

            MemoryStream xAckNPCBodyStream = new MemoryStream();
            Serializer.Serialize<NFMsg.AckPlayerEntryList>(xAckNPCBodyStream, xAckNPCBodyData);

            NFMsg.MsgBase xAckNPCrData = new NFMsg.MsgBase();
            xAckNPCrData.player_id = xID;
            xAckNPCrData.msg_data = xAckNPCBodyStream.ToArray();

            MemoryStream xAckAllNPCStream = new MemoryStream();
            Serializer.Serialize<NFMsg.MsgBase>(xAckAllNPCStream, xAckNPCrData);

            MsgHead xNPCHead = new MsgHead();
            xNPCHead.unMsgID = (UInt16)NFMsg.EGameMsgID.EGMI_ACK_OBJECT_ENTRY;
            xNPCHead.unDataLen = (UInt32)xAckAllNPCStream.Length + (UInt32)ConstDefine.NF_PACKET_HEAD_SIZE;

            xNet.mxBinMsgEvent.OnMessageEvent(xNPCHead, xAckAllNPCStream.ToArray());
            //////////////////////////////////////////////
        }
    }
コード例 #9
0
    public void RequireEnterGameServer(NFCoreEx.NFIDENTID objectID, string strAccount, string strRoleName, int nServerID)
    {
        NFMsg.ReqEnterGameServer xData = new NFMsg.ReqEnterGameServer();
        xData.name    = UnicodeEncoding.Default.GetBytes(strRoleName);
        xData.account = UnicodeEncoding.Default.GetBytes(strAccount);
        xData.game_id = nServerID;
        xData.id      = NFToPB(objectID);

        MemoryStream stream = new MemoryStream();

        Serializer.Serialize <NFMsg.ReqEnterGameServer>(stream, xData);

        SendMsg(objectID, NFMsg.EGameMsgID.EGMI_REQ_ENTER_GAME, stream);

        if (NFStart.Instance.bDebugMode)
        {
            //EGMI_ACK_OBJECT_ENTRY
            //property
            //EGMI_ACK_SWAP_SCENE
            //EGMI_ACK_OBJECT_ENTRY
            //property
            float      fX       = 0.0f;
            float      fY       = 0.0f;
            float      fZ       = 0.0f;
            NFIElement xElement = NFCElementManager.Instance.GetElement("1");
            if (null != xElement)
            {
                string   strRelivePos = xElement.QueryString("RelivePos");
                string[] sArray       = strRelivePos.Split(';');
                if (sArray.Length > 0)
                {
                    sArray = sArray[0].Split(',');
                }

                if (sArray.Length == 3)
                {
                    fX = float.Parse(sArray[0]);
                    fY = float.Parse(sArray[1]);
                    fZ = float.Parse(sArray[2]);
                }
            }
            /////////////////////////////////////////////
            //mainplayer
            NFMsg.AckPlayerEntryList xAckMainBodyData = new NFMsg.AckPlayerEntryList();
            NFMsg.PlayerEntryInfo    xInfo            = new NFMsg.PlayerEntryInfo();
            NFMsg.Ident xID = new NFMsg.Ident();
            xInfo.object_guid  = xID;
            xInfo.x            = fX;
            xInfo.y            = fY;
            xInfo.z            = fZ;
            xInfo.career_type  = 1;
            xInfo.player_state = 1;
            xInfo.config_id    = UnicodeEncoding.Default.GetBytes("");
            xInfo.scene_id     = 1;
            xInfo.class_id     = UnicodeEncoding.Default.GetBytes("Player");

            xAckMainBodyData.object_list.Add(xInfo);

            MemoryStream xAckMianPlayerBodyStream = new MemoryStream();
            Serializer.Serialize <NFMsg.AckPlayerEntryList>(xAckMianPlayerBodyStream, xAckMainBodyData);

            NFMsg.MsgBase xAckMianPlayerData = new NFMsg.MsgBase();
            xAckMianPlayerData.player_id = xID;
            xAckMianPlayerData.msg_data  = xAckMianPlayerBodyStream.ToArray();

            MemoryStream xAckAllStream = new MemoryStream();
            Serializer.Serialize <NFMsg.MsgBase>(xAckAllStream, xAckMianPlayerData);

            MsgHead head = new MsgHead();
            head.unMsgID   = (UInt16)NFMsg.EGameMsgID.EGMI_ACK_OBJECT_ENTRY;
            head.unDataLen = (UInt32)xAckAllStream.Length + (UInt32)ConstDefine.NF_PACKET_HEAD_SIZE;

            xNet.mxBinMsgEvent.OnMessageEvent(head, xAckAllStream.ToArray());
            /////////////////////////////////////////////
            //property

            NFMsg.ObjectPropertyInt propertyData = new NFMsg.ObjectPropertyInt();

            PropertyInt xPropertyInt = new PropertyInt();
            xPropertyInt.property_name = UnicodeEncoding.Default.GetBytes("MOVE_SPEED");
            xPropertyInt.data          = 50000;
            propertyData.property_list.Add(xPropertyInt);
            propertyData.player_id = xID;

            MemoryStream xAckPropertyIntStream = new MemoryStream();
            Serializer.Serialize <NFMsg.ObjectPropertyInt>(xAckPropertyIntStream, propertyData);

            NFMsg.MsgBase xPropertyIntMsg = new NFMsg.MsgBase();
            xPropertyIntMsg.player_id = xID;
            xPropertyIntMsg.msg_data  = xAckPropertyIntStream.ToArray();

            MemoryStream xAckPropertyIntAllStream = new MemoryStream();
            Serializer.Serialize <NFMsg.MsgBase>(xAckPropertyIntAllStream, xPropertyIntMsg);

            MsgHead xAckPropertyhead = new MsgHead();
            xAckPropertyhead.unMsgID   = (UInt16)NFMsg.EGameMsgID.EGMI_ACK_PROPERTY_INT;
            xAckPropertyhead.unDataLen = (UInt32)xAckPropertyIntAllStream.Length + (UInt32)ConstDefine.NF_PACKET_HEAD_SIZE;

            xNet.mxBinMsgEvent.OnMessageEvent(xAckPropertyhead, xAckPropertyIntAllStream.ToArray());

            /////////////////////////////////////////////
            xNet.mPlayerState = NFNet.PLAYER_STATE.E_PLAYER_GAMEING;
            //NFCRenderInterface.Instance.LoadScene(1, fX, fY, fZ);
            /////////////////////////////////////////////

            //npc
            NFMsg.AckPlayerEntryList xAckNPCBodyData = new NFMsg.AckPlayerEntryList();
            for (int i = 0; i < 5; ++i)
            {
                NFMsg.PlayerEntryInfo xNPCInfo = new NFMsg.PlayerEntryInfo();

                NFMsg.Ident xNPCID = new NFMsg.Ident();
                xNPCID.index          = i + 10000;
                xNPCInfo.object_guid  = xNPCID;
                xNPCInfo.x            = fX + i;
                xNPCInfo.y            = fY;
                xNPCInfo.z            = fZ + i;
                xNPCInfo.career_type  = 1;
                xNPCInfo.player_state = 1;
                xNPCInfo.config_id    = UnicodeEncoding.Default.GetBytes("");
                xNPCInfo.scene_id     = 1;
                xNPCInfo.class_id     = UnicodeEncoding.Default.GetBytes("Player");

                xAckNPCBodyData.object_list.Add(xNPCInfo);
            }

            MemoryStream xAckNPCBodyStream = new MemoryStream();
            Serializer.Serialize <NFMsg.AckPlayerEntryList>(xAckNPCBodyStream, xAckNPCBodyData);

            NFMsg.MsgBase xAckNPCrData = new NFMsg.MsgBase();
            xAckNPCrData.player_id = xID;
            xAckNPCrData.msg_data  = xAckNPCBodyStream.ToArray();

            MemoryStream xAckAllNPCStream = new MemoryStream();
            Serializer.Serialize <NFMsg.MsgBase>(xAckAllNPCStream, xAckNPCrData);

            MsgHead xNPCHead = new MsgHead();
            xNPCHead.unMsgID   = (UInt16)NFMsg.EGameMsgID.EGMI_ACK_OBJECT_ENTRY;
            xNPCHead.unDataLen = (UInt32)xAckAllNPCStream.Length + (UInt32)ConstDefine.NF_PACKET_HEAD_SIZE;

            xNet.mxBinMsgEvent.OnMessageEvent(xNPCHead, xAckAllNPCStream.ToArray());
            //////////////////////////////////////////////
        }
    }