예제 #1
0
        //通知进入场景
        public void NotifyLoginEnterScene(ServerClient client,
                                          CharacterSceneInfo info,
                                          ulong sceneGuid,
                                          ServiceDesc desc)
        {
            Logger.Info("Enter Game {0} - NotifyEnterScene - 1 - {1}", info.CharacterId,
                        TimeManager.Timer.ElapsedMilliseconds);
            Logger.Info("NotifyEnterScene {0}, {1}.", info.CharacterId, info.SceneInfo.Server.RemoteEndPoint);

            var content = new __RPC_Scene_PrepareDataForEnterGame_RET_uint64__();

            content.ReturnValue = sceneGuid;

            var message = new ServiceDesc();

            message.FuncId      = 3051;
            message.ServiceType = (int)ServiceType.Login;
            message.PacketId    = desc.PacketId;
            message.Data        = ProtocolExtension.Serialize(content);
            message.Type        = desc.Type;
            message.CharacterId = desc.CharacterId;
            message.ClientId    = desc.ClientId;

            client.SendMessage(message);
        }
예제 #2
0
        // 服务器收到消息

        public override void ServerOnMessageReceived(ServiceDesc desc)
        {
            try
            {
                var type = (MessageType)desc.Type;
                Logger.Debug("ServerOnMessageReceived ,type={0},FuncId={1}", type, desc.FuncId);
                switch (type)
                {
                case MessageType.CS:
                    Logger.Error("SceneBroker ServerOnMessageReceived MessageType.CS is Error! FuncId={0}",
                                 desc.FuncId);
                    break;

                case MessageType.SC:
                    Logger.Error("SceneBroker ServerOnMessageReceived MessageType.SC is Error! FuncId={0}",
                                 desc.FuncId);
                    break;

                case MessageType.Connect:
                    Logger.Error("SceneBroker ServerOnMessageReceived MessageType.Connect is Error! FuncId={0}",
                                 desc.FuncId);
                    break;

                case MessageType.Lost:
                    Logger.Error("SceneBroker ServerOnMessageReceived MessageType.Lost is Error! FuncId={0}",
                                 desc.FuncId);
                    break;

                case MessageType.Sync:
                    Logger.Error("SceneBroker ServerOnMessageReceived MessageType.Sync is Error! FuncId={0}",
                                 desc.FuncId);
                    break;

                case MessageType.Ping:
                    break;

                case MessageType.SB:
                    Logger.Error("SceneBroker ServerOnMessageReceived MessageType.SB is Error! FuncId={0}",
                                 desc.FuncId);
                    break;

                case MessageType.BS:
                    OnSocketListenerMessageReceiveBS(desc);
                    return;

                case MessageType.SCAll:
                    Logger.Error("SceneBroker ServerOnMessageReceived MessageType.SCAll is Error!");
                    break;

                case MessageType.SCServer:
                    OnSocketClientMessageReceivedSCServer(desc);
                    return;

                case MessageType.SCList:
                    OnSocketClientMessageReceivedSCList(desc);
                    return;

                case MessageType.SS:
                case MessageType.SAS:
                case MessageType.PrepareData:
                    var routing = GetRouting(desc);
                    if (routing == ulong.MaxValue)
                    {
                        if (desc.FuncId == 3501)
                        {
                            OnNotifyConnected(desc);
                            return;
                        }
                        return;
                    }
                    if (desc.FuncId == 3051)
                    {
                        var chara = GetCharacter(desc.CharacterId);
                        //Logger.Fatal("PrepareDataForEnterGame  sceneGuid = {0}", chara.SceneInfo.SceneGuid);
                        if (chara != null)
                        {
                            var content = new __RPC_Scene_PrepareDataForEnterGame_RET_uint64__();
                            content.ReturnValue = chara.SceneInfo.SceneGuid;
                            desc.Data           = ProtocolExtension.Serialize(content);
                        }
                    }
                    mFrontEndServer.Clients[routing].SendMessage(desc);
                    return;

                case MessageType.SASReply:
                    Logger.Error("SceneBroker ServerOnMessageReceived MessageType.SASReply is Error! FuncId={0}",
                                 desc.FuncId);
                    break;

                default:
                    Logger.Error("SceneBroker ServerOnMessageReceived MessageType.SB is Error! FuncId={0}",
                                 desc.FuncId);
                    return;
                }
                var character = GetCharacterInfo(desc.CharacterId);
                if (character == null)
                {
                    Logger.Error(
                        "SceneBroker ServerOnMessageReceived character = null desc.CharacterId :{0} ,funcId={1},ServiceType={2},clientId={3},type={4}",
                        desc.CharacterId, desc.FuncId, desc.ServiceType, desc.ClientId, desc.Type);
                    return;
                }
                if (character.Gate == null)
                {
                    Logger.Error("Can not reply message for character 9 = null desc.CharacterI0d :{0} ",
                                 desc.CharacterId);
                    return;
                }
                // desc.ClientId = character.ClientId;
                character.Gate.Gate.SendMessage(desc);
            }
            catch (Exception ex)
            {
                Logger.Warn(ex, "Some error inside ClientMessageReceived ");
            }
        }