public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer) { if (GameProcedure.GetActiveProcedure() == GameProcedure.s_ProcChangeScene) { //LogManager.Log("Recv GCConnect!"); GCConnect Packet = (GCConnect)pPacket; //设置要进入的场景的数据 //!!Import //只有第一次连接某服务器,该消息发回来的场景id和进入位置才有意义 //其他情况(从别的场景切换过来,从别的服务器切换过来)该消息 //发回来的这两个值是不可信的,需要使用GCNotifyChangeScene通知的值 if (Packet.Estate == 1) { CGConnect msg = (CGConnect)NetManager.GetNetManager().CreatePacket((int)PACKET_DEFINE.PACKET_CG_CONNECT); msg.Key = GameProcedure.s_pVariableSystem.GetAs_Int("GameServer_Key"); msg.ServerID = -1; msg.GUID = GameProcedure.s_pVariableSystem.GetAs_Int("User_GUID"); byte[] temp = Encoding.ASCII.GetBytes(GameProcedure.s_pVariableSystem.GetAs_String("User_NAME")); Array.Copy(temp, msg.SzAccount, temp.Length); msg.Gender = GameProcedure.s_pVariableSystem.GetAs_Int("User_GENDER"); NetManager.GetNetManager().SendPacket(msg); GameProcedure.s_ProcChangeScene.SetStatus(GamePro_ChangeScene.PLAYER_CHANGE_SERVER_STATUS.CHANGESCENE_SENDING_CGCONNECT); } else { //场景id bool Had = false; GameProcedure.s_pVariableSystem.GetAs_Int("Scene_ID", ref Had); if (!Had) { GameProcedure.s_pVariableSystem.SetAs_Int("Scene_ID", Packet.SceneID); } //场景位置 GameProcedure.s_pVariableSystem.GetAs_Vector2("Scene_EnterPos", ref Had); if (!Had) { GameProcedure.s_pVariableSystem.SetAs_Vector2("Scene_EnterPos", Packet.Position.m_fX, Packet.Position.m_fZ); //LogManager.Log("Scene_EnterPos" + pos); } if (GameProcedure.s_ProcChangeScene != null) { GameProcedure.s_ProcChangeScene.SetStatus(GamePro_ChangeScene.PLAYER_CHANGE_SERVER_STATUS.CHANGESCENE_RECEIVE_CGCONNECT_SUCCESS); } } } return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE); }
public void Connect(CGConnect packet) { this.UserID = GameServer.AuthPlayers[packet.AuthKey]; GameServer.AuthPlayers.Remove(packet.AuthKey); this.PCName = packet.PCName; GConsole.WriteStatus("Received CGConnectPacket: {0}:{1}:{2}", this.UserID, this.PCName, packet.AuthKey); PCSlayerInfo2 pc = DBManager.GetPCSlayerInfo2(packet.PCName); GCUpdateInfo answer = new GCUpdateInfo(pc); answer.Write(ref netstream); }
// 发送cgconnect public void SendCGConnectMsg() { CGConnect msg = (CGConnect)NetManager.GetNetManager().CreatePacket((int)PACKET_DEFINE.PACKET_CG_CONNECT); msg.Key = GameProcedure.s_pVariableSystem.GetAs_Int("GameServer_Key"); msg.ServerID = -1; msg.GUID = GameProcedure.s_pVariableSystem.GetAs_Int("User_GUID"); byte[] temp = Encoding.ASCII.GetBytes(GameProcedure.s_pVariableSystem.GetAs_String("User_NAME")); Array.Copy(temp, msg.SzAccount, temp.Length); msg.Gender = GameProcedure.s_pVariableSystem.GetAs_Int("User_GENDER"); msg.CheckVer = 0x00000005; NetManager.GetNetManager().SendPacket(msg); SetStatus(PLAYER_CHANGE_SERVER_STATUS.CHANGESCENE_SENDING_CGCONNECT); //LogManager.Log("Send Connect to Server"); }