Exemple #1
0
        private static void OnBindServerSocketRequestMessageReceived(BindServerSocketRequestMessage message)
        {
            if (ProxySessionManager.TryGet(message.SessionId, out ProxySession session))
            {
                ServerSocket socket = message.ServerId != -1
                    ? ServerManager.GetSocket(message.ServerType, message.ServerId)
                    : ServerManager.GetNextSocket(message.ServerType);

                if (socket != null)
                {
                    session.SetSocket(socket, message);
                }
                else
                {
                    ServerRequestManager.SendResponse(new BindServerSocketResponseMessage
                    {
                        ServerType = message.ServerType,
                        ServerId   = message.ServerId,

                        Success = false
                    }, message);
                }
            }
            else
            {
                ServerRequestManager.SendResponse(new BindServerSocketResponseMessage
                {
                    ServerType = message.ServerType,
                    ServerId   = message.ServerId,

                    Success = false
                }, message);
            }
        }
Exemple #2
0
        private static void OnLoadAvatarStreamOfTypeRequestMessageReceived(LoadAvatarStreamOfTypeRequestMessage message)
        {
            LoadAvatarStreamOfTypeResponseMessage loadAvatarStreamOfTypeResponseMessage = new LoadAvatarStreamOfTypeResponseMessage();
            LogicArrayList <AvatarStreamEntry>    streamEntryList = new LogicArrayList <AvatarStreamEntry>(message.StreamIds.Size());

            for (int i = 0; i < message.StreamIds.Size(); i++)
            {
                AvatarStreamEntry entry = StreamManager.GetAvatarStream(message.StreamIds[i]);

                if (entry != null && entry.GetAvatarStreamEntryType() == message.Type)
                {
                    if (message.SenderAvatarId != null && !entry.GetSenderAvatarId().Equals(message.SenderAvatarId))
                    {
                        continue;
                    }

                    streamEntryList.Add(entry);
                }
            }

            loadAvatarStreamOfTypeResponseMessage.Success    = true;
            loadAvatarStreamOfTypeResponseMessage.StreamList = streamEntryList;

            ServerRequestManager.SendResponse(loadAvatarStreamOfTypeResponseMessage, message);
        }
        public static void OnStartServerSessionMessageReceived(StartServerSessionMessage message)
        {
            if (GameModeClusterManager.m_sessionClusters.ContainsKey(message.SessionId))
            {
                throw new Exception("GameModeClusterManager.onStartSessionMessageReceived: session already started!");
            }

            GameModeCluster gameModeCluster = GameModeClusterManager.GetFastestCluster();

            if (gameModeCluster != null)
            {
                GameModeClusterManager.m_sessionClusters.Add(message.SessionId, gameModeCluster);
                gameModeCluster.SendMessage(message);
            }
            else
            {
                if (message.BindRequestMessage != null)
                {
                    ServerRequestManager.SendResponse(new BindServerSocketResponseMessage(), message.BindRequestMessage);
                }
                ServerMessageManager.SendMessage(new StartServerSessionFailedMessage
                {
                    SessionId = message.SessionId
                }, message.Sender);
            }
        }
Exemple #4
0
        private static void OnCreateAllianceRequestMessageReceived(CreateAllianceRequestMessage message)
        {
            CreateAllianceResponseMessage createAllianceResponseMessage = new CreateAllianceResponseMessage();

            string allianceName = message.AllianceName;

            if (allianceName == null || allianceName.Length < 2)
            {
                createAllianceResponseMessage.ErrorReason = CreateAllianceResponseMessage.Reason.NAME_TOO_SHORT;
                ServerRequestManager.SendResponse(createAllianceResponseMessage, message);
                return;
            }

            if (allianceName.Length > 15)
            {
                createAllianceResponseMessage.ErrorReason = CreateAllianceResponseMessage.Reason.NAME_TOO_LONG;
                ServerRequestManager.SendResponse(createAllianceResponseMessage, message);
                return;
            }

            Alliance alliance = AllianceManager.Create();

            alliance.Header.SetAllianceName(allianceName);
            alliance.SetAllianceSettings(message.AllianceDescription, message.AllianceType, message.AllianceBadgeId, message.RequiredScore, message.RequiredDuelScore, message.WarFrequency,
                                         message.OriginData, message.PublicWarLog, message.ArrangedWarEnabled);

            createAllianceResponseMessage.Success    = true;
            createAllianceResponseMessage.AllianceId = alliance.Id;

            AllianceManager.Save(alliance);
            ServerRequestManager.SendResponse(createAllianceResponseMessage, message);
        }
        private static void OnLiveReplayAddSpectatorRequestMessageReceived(LiveReplayAddSpectatorRequestMessage message)
        {
            if (LiveReplayManager.TryGet(message.LiveReplayId, out LiveReplay liveReplay) && !liveReplay.ContainsSession(message.SessionId, message.SlotId) && liveReplay.IsInit())
            {
                if (liveReplay.IsFull())
                {
                    ServerRequestManager.SendResponse(new LiveReplayAddSpectatorResponseMessage
                    {
                        ErrorCode = LiveReplayAddSpectatorResponseMessage.Reason.FULL
                    }, message);
                }
                else
                {
                    ServerRequestManager.SendResponse(new LiveReplayAddSpectatorResponseMessage
                    {
                        Success = true
                    }, message);

                    liveReplay.AddSpectator(message.SessionId, message.SlotId);
                }
            }
            else
            {
                ServerRequestManager.SendResponse(new LiveReplayAddSpectatorResponseMessage
                {
                    ErrorCode = LiveReplayAddSpectatorResponseMessage.Reason.NOT_EXISTS
                }, message);
            }
        }
Exemple #6
0
 private static void OnCreateAvatarStreamRequestMessageReceived(CreateAvatarStreamRequestMessage message)
 {
     StreamManager.Create(message.OwnerId, message.Entry);
     ServerRequestManager.SendResponse(new CreateAvatarStreamResponseMessage
     {
         Success = true,
         Entry   = message.Entry
     }, message);
 }
Exemple #7
0
 private static void OnCreateReplayStreamRequestMessageReceived(CreateReplayStreamRequestMessage message)
 {
     ZLibHelper.CompressInZLibFormat(LogicStringUtil.GetBytes(message.JSON), out byte[] entry);
     StreamManager.Create(entry, out LogicLong id);
     ServerRequestManager.SendResponse(new CreateReplayStreamResponseMessage
     {
         Success = true,
         Id      = id
     }, message);
 }
 private static void OnGameAvatarRequestMessageReceived(GameAvatarRequestMessage message)
 {
     if (GameAvatarManager.TryGet(message.AccountId, out GameAvatar document))
     {
         ServerRequestManager.SendResponse(new GameAvatarResponseMessage
         {
             Document = document,
             Success  = true
         }, message);
     }
     else
     {
         ServerRequestManager.SendResponse(new GameAvatarResponseMessage(), message);
     }
 }
Exemple #9
0
        private static void OnLoadAvatarStreamRequestMessageReceived(LoadAvatarStreamRequestMessage message)
        {
            AvatarStreamEntry entry = StreamManager.GetAvatarStream(message.Id);

            if (entry != null)
            {
                ServerRequestManager.SendResponse(new LoadAvatarStreamResponseMessage
                {
                    Entry   = entry,
                    Success = true
                }, message);
            }
            else
            {
                ServerRequestManager.SendResponse(new LoadAvatarStreamResponseMessage(), message);
            }
        }
Exemple #10
0
        private static void OnLoadReplayStreamRequestMessageReceived(LoadReplayStreamRequestMessage message)
        {
            Core.Database.Document.ReplayStreamEntry entry = StreamManager.GetReplayStream(message.Id);

            if (entry != null)
            {
                ServerRequestManager.SendResponse(new LoadReplayStreamResponseMessage
                {
                    StreamData     = entry.GetStreamData(),
                    MajorVersion   = entry.GetMajorVersion(),
                    BuildVersion   = entry.GetBuildVersion(),
                    ContentVersion = entry.GetContentVersion(),
                    Success        = true
                }, message);
            }
            else
            {
                ServerRequestManager.SendResponse(new LoadReplayStreamResponseMessage(), message);
            }
        }
Exemple #11
0
        public ServerSession(StartServerSessionMessage message) : this(message.SessionId, message.AccountId, message.Country)
        {
            LogicArrayList <int> serverSocketTypeList = message.ServerSocketTypeList;
            LogicArrayList <int> serverSocketIdList   = message.ServerSocketIdList;

            for (int i = 0; i < serverSocketTypeList.Size(); i++)
            {
                int type = serverSocketTypeList[i];
                int id   = serverSocketIdList[i];

                this.m_sockets[type] = ServerManager.GetSocket(type, id);
            }

            if (message.BindRequestMessage != null)
            {
                ServerRequestManager.SendResponse(new BindServerSocketResponseMessage
                {
                    ServerType = ServerCore.Type,
                    ServerId   = ServerCore.Id,
                    Success    = true
                }, message.BindRequestMessage);
            }
        }
        private static void OnGameCreateAllianceInvitationRequestMessageReceived(GameCreateAllianceInvitationRequestMessage message)
        {
            if (GameAvatarManager.TryGet(message.AccountId, out GameAvatar avatar))
            {
                if (avatar.LogicClientAvatar.IsInAlliance() || avatar.HasServerCommandOfType(LogicCommandType.JOIN_ALLIANCE) || avatar.PendingAllianceJoinResponse)
                {
                    ServerRequestManager.SendResponse(new GameCreateAllianceInvitationResponseMessage
                    {
                        ErrorReason = GameCreateAllianceInvitationResponseMessage.Reason.ALREADY_IN_ALLIANCE
                    }, message);
                    return;
                }

                if (!avatar.LogicClientAvatar.HasAllianceCastle())
                {
                    ServerRequestManager.SendResponse(new GameCreateAllianceInvitationResponseMessage
                    {
                        ErrorReason = GameCreateAllianceInvitationResponseMessage.Reason.NO_CASTLE
                    }, message);
                    return;
                }

                ServerRequestManager.Create(new LoadAvatarStreamOfTypeRequestMessage
                {
                    StreamIds      = avatar.AvatarStreamList,
                    SenderAvatarId = message.Entry.GetSenderAvatarId(),
                    Type           = AvatarStreamEntryType.ALLIANCE_INVITATION
                }, ServerManager.GetDocumentSocket(11, avatar.Id), 5).OnComplete = args =>
                {
                    if (args.ErrorCode == ServerRequestError.Success && args.ResponseMessage.Success)
                    {
                        LoadAvatarStreamOfTypeResponseMessage loadAvatarStreamOfTypeResponseMessage = (LoadAvatarStreamOfTypeResponseMessage)args.ResponseMessage;

                        for (int i = 0; i < loadAvatarStreamOfTypeResponseMessage.StreamList.Size(); i++)
                        {
                            AllianceInvitationAvatarStreamEntry allianceInvitationAvatarStreamEntry = (AllianceInvitationAvatarStreamEntry)loadAvatarStreamOfTypeResponseMessage.StreamList[i];

                            if (allianceInvitationAvatarStreamEntry.GetAllianceId().Equals(message.Entry.GetAllianceId()))
                            {
                                ServerRequestManager.SendResponse(new GameCreateAllianceInvitationResponseMessage
                                {
                                    ErrorReason = GameCreateAllianceInvitationResponseMessage.Reason.ALREADY_HAS_AN_INVITE
                                }, message);
                                return;
                            }
                        }

                        if (loadAvatarStreamOfTypeResponseMessage.StreamList.Size() >= 10)
                        {
                            ServerRequestManager.SendResponse(new GameCreateAllianceInvitationResponseMessage
                            {
                                ErrorReason = GameCreateAllianceInvitationResponseMessage.Reason.HAS_TOO_MANY_INVITES
                            }, message);
                        }

                        ServerMessageManager.SendMessage(new CreateAvatarStreamMessage
                        {
                            AccountId = message.AccountId,
                            Entry     = message.Entry
                        }, 9);

                        ServerRequestManager.SendResponse(new GameCreateAllianceInvitationResponseMessage
                        {
                            Success = true
                        }, message);
                    }
                    else
                    {
                        ServerRequestManager.SendResponse(new GameCreateAllianceInvitationResponseMessage
                        {
                            ErrorReason = GameCreateAllianceInvitationResponseMessage.Reason.GENERIC
                        }, message);
                    }
                };
            }
            else
            {
                ServerRequestManager.SendResponse(new GameCreateAllianceInvitationResponseMessage
                {
                    ErrorReason = GameCreateAllianceInvitationResponseMessage.Reason.GENERIC
                }, message);
            }
        }
        private static void OnGameJoinAllianceRequestMessageReceived(GameJoinAllianceRequestMessage message)
        {
            if (GameAvatarManager.TryGet(message.AccountId, out GameAvatar document))
            {
                if (document.LogicClientAvatar.IsInAlliance() || document.HasServerCommandOfType(LogicCommandType.JOIN_ALLIANCE))
                {
                    ServerRequestManager.SendResponse(new GameJoinAllianceResponseMessage
                    {
                        ErrorReason = GameJoinAllianceResponseMessage.Reason.ALREADY_IN_ALLIANCE
                    }, message);
                    return;
                }

                if (!document.LogicClientAvatar.HasAllianceCastle())
                {
                    ServerRequestManager.SendResponse(new GameJoinAllianceResponseMessage
                    {
                        ErrorReason = GameJoinAllianceResponseMessage.Reason.NO_CASTLE
                    }, message);
                    return;
                }

                if (document.PendingAllianceJoinResponse || message.AvatarStreamId != null && document.AvatarStreamList.IndexOf(message.AvatarStreamId) == -1)
                {
                    ServerRequestManager.SendResponse(new GameJoinAllianceResponseMessage
                    {
                        ErrorReason = GameJoinAllianceResponseMessage.Reason.GENERIC
                    }, message);
                    return;
                }

                document.PendingAllianceJoinResponse = true;

                ServerRequestManager.Create(new AllianceJoinRequestMessage
                {
                    AllianceId = message.AllianceId,
                    Avatar     = document.LogicClientAvatar,
                    Created    = message.Created,
                    Invited    = message.Invited
                }, ServerManager.GetDocumentSocket(11, message.AllianceId), 15).OnComplete = args =>
                {
                    document.PendingAllianceJoinResponse = false;

                    if (args.ErrorCode == ServerRequestError.Success)
                    {
                        AllianceJoinResponseMessage allianceJoinResponseMessage = (AllianceJoinResponseMessage)args.ResponseMessage;

                        if (allianceJoinResponseMessage.Success)
                        {
                            if (message.AvatarStreamId != null)
                            {
                                document.RemoveAvatarStreamEntry(message.AvatarStreamId);
                            }

                            LogicJoinAllianceCommand logicJoinAllianceCommand = new LogicJoinAllianceCommand();
                            logicJoinAllianceCommand.SetAllianceData(allianceJoinResponseMessage.AllianceId, allianceJoinResponseMessage.AllianceName, allianceJoinResponseMessage.AllianceBadgeId, allianceJoinResponseMessage.AllianceLevel, allianceJoinResponseMessage.Created);
                            document.AddServerCommand(logicJoinAllianceCommand);
                            ServerRequestManager.SendResponse(new GameJoinAllianceResponseMessage
                            {
                                Success = true
                            }, message);
                        }
                        else
                        {
                            GameJoinAllianceResponseMessage gameJoinAllianceResponseMessage = new GameJoinAllianceResponseMessage();

                            switch (allianceJoinResponseMessage.ErrorReason)
                            {
                            case AllianceJoinResponseMessage.Reason.GENERIC:
                                gameJoinAllianceResponseMessage.ErrorReason = GameJoinAllianceResponseMessage.Reason.GENERIC;
                                break;

                            case AllianceJoinResponseMessage.Reason.FULL:
                                gameJoinAllianceResponseMessage.ErrorReason = GameJoinAllianceResponseMessage.Reason.FULL;
                                break;

                            case AllianceJoinResponseMessage.Reason.CLOSED:
                                gameJoinAllianceResponseMessage.ErrorReason = GameJoinAllianceResponseMessage.Reason.CLOSED;
                                break;

                            case AllianceJoinResponseMessage.Reason.SCORE:
                                gameJoinAllianceResponseMessage.ErrorReason = GameJoinAllianceResponseMessage.Reason.SCORE;
                                break;

                            case AllianceJoinResponseMessage.Reason.BANNED:
                                gameJoinAllianceResponseMessage.ErrorReason = GameJoinAllianceResponseMessage.Reason.BANNED;
                                break;
                            }

                            ServerRequestManager.SendResponse(gameJoinAllianceResponseMessage, message);
                        }
                    }
                    else
                    {
                        ServerRequestManager.SendResponse(new GameJoinAllianceResponseMessage
                        {
                            ErrorReason = GameJoinAllianceResponseMessage.Reason.GENERIC
                        }, message);
                    }
                };
            }
        }
Exemple #14
0
        private static void OnRequestAllianceJoinRequestMessageReceived(RequestAllianceJoinRequestMessage message)
        {
            if (AllianceManager.TryGet(message.AllianceId, out Alliance alliance))
            {
                LogicLong avatarId = message.Avatar.GetId();

                if (alliance.Members.ContainsKey(avatarId) || alliance.Header.GetAllianceType() == AllianceType.OPEN)
                {
                    ServerRequestManager.SendResponse(new RequestAllianceJoinResponseMessage
                    {
                        ErrorReason = RequestAllianceJoinResponseMessage.Reason.GENERIC
                    }, message);
                    return;
                }

                if (alliance.Header.GetAllianceType() == AllianceType.CLOSED)
                {
                    ServerRequestManager.SendResponse(new RequestAllianceJoinResponseMessage
                    {
                        ErrorReason = RequestAllianceJoinResponseMessage.Reason.CLOSED
                    }, message);
                    return;
                }

                if (alliance.IsBanned(avatarId))
                {
                    ServerRequestManager.SendResponse(new RequestAllianceJoinResponseMessage
                    {
                        ErrorReason = RequestAllianceJoinResponseMessage.Reason.BANNED
                    }, message);
                    return;
                }

                int pendingRequestCount = 0;

                for (int i = 0; i < alliance.StreamEntryList.Size(); i++)
                {
                    StreamEntry streamEntry = StreamManager.GetAllianceStream(alliance.StreamEntryList[i]);

                    if (streamEntry != null && streamEntry.GetStreamEntryType() == StreamEntryType.JOIN_REQUEST)
                    {
                        JoinRequestAllianceStreamEntry prevJoinRequestStreamEntry = (JoinRequestAllianceStreamEntry)streamEntry;

                        if (prevJoinRequestStreamEntry.GetState() == 1)
                        {
                            pendingRequestCount += 1;

                            if (prevJoinRequestStreamEntry.GetSenderAvatarId().Equals(avatarId))
                            {
                                ServerRequestManager.SendResponse(new RequestAllianceJoinResponseMessage
                                {
                                    ErrorReason = RequestAllianceJoinResponseMessage.Reason.ALREADY_SENT
                                }, message);
                                return;
                            }
                        }
                        else if (prevJoinRequestStreamEntry.GetState() == 0 && prevJoinRequestStreamEntry.GetAgeSeconds() < 3600)
                        {
                            ServerRequestManager.SendResponse(new RequestAllianceJoinResponseMessage
                            {
                                ErrorReason = RequestAllianceJoinResponseMessage.Reason.ALREADY_SENT
                            }, message);
                            return;
                        }
                    }
                }

                if (pendingRequestCount >= 10)
                {
                    ServerRequestManager.SendResponse(new RequestAllianceJoinResponseMessage
                    {
                        ErrorReason = RequestAllianceJoinResponseMessage.Reason.TOO_MANY_PENDING_REQUESTS
                    }, message);
                    return;
                }

                if (message.Avatar.GetScore() < alliance.Header.GetRequiredScore())
                {
                    ServerRequestManager.SendResponse(new RequestAllianceJoinResponseMessage
                    {
                        ErrorReason = RequestAllianceJoinResponseMessage.Reason.NO_SCORE
                    }, message);
                    return;
                }

                if (message.Avatar.GetDuelScore() < alliance.Header.GetRequiredDuelScore())
                {
                    ServerRequestManager.SendResponse(new RequestAllianceJoinResponseMessage
                    {
                        ErrorReason = RequestAllianceJoinResponseMessage.Reason.NO_DUEL_SCORE
                    }, message);
                    return;
                }

                JoinRequestAllianceStreamEntry joinRequestAllianceStreamEntry = new JoinRequestAllianceStreamEntry();
                AllianceStreamEntryUtil.SetSenderInfo(joinRequestAllianceStreamEntry, message.Avatar);

                string requestMessage = message.Message;

                if (requestMessage != null && requestMessage.Length >= 128)
                {
                    requestMessage = requestMessage.Substring(0, 128);
                }

                joinRequestAllianceStreamEntry.SetMessage(requestMessage);

                StreamManager.Create(alliance.Id, joinRequestAllianceStreamEntry);

                alliance.AddStreamEntry(joinRequestAllianceStreamEntry);

                AllianceManager.Save(alliance);
                ServerRequestManager.SendResponse(new RequestAllianceJoinResponseMessage
                {
                    Success = true
                }, message);
            }
            else
            {
                ServerRequestManager.SendResponse(new RequestAllianceJoinResponseMessage
                {
                    ErrorReason = RequestAllianceJoinResponseMessage.Reason.GENERIC
                }, message);
            }
        }
Exemple #15
0
        private static void OnAllianceJoinRequestMessageReceived(AllianceJoinRequestMessage message)
        {
            AllianceJoinResponseMessage joinAllianceResponseMessage = new AllianceJoinResponseMessage();

            if (!AllianceManager.TryGet(message.AllianceId, out Alliance alliance))
            {
                joinAllianceResponseMessage.ErrorReason = AllianceJoinResponseMessage.Reason.GENERIC;
                ServerRequestManager.SendResponse(joinAllianceResponseMessage, message);
                return;
            }

            if (!message.Created)
            {
                if (alliance.IsFull())
                {
                    joinAllianceResponseMessage.ErrorReason = AllianceJoinResponseMessage.Reason.FULL;
                    ServerRequestManager.SendResponse(joinAllianceResponseMessage, message);
                    return;
                }

                if (!message.Invited)
                {
                    if (alliance.Header.GetAllianceType() != AllianceType.OPEN || alliance.Header.GetNumberOfMembers() == 0)
                    {
                        joinAllianceResponseMessage.ErrorReason =
                            alliance.Header.GetAllianceType() == AllianceType.CLOSED ? AllianceJoinResponseMessage.Reason.CLOSED : AllianceJoinResponseMessage.Reason.GENERIC;
                        ServerRequestManager.SendResponse(joinAllianceResponseMessage, message);
                        return;
                    }

                    if (alliance.IsBanned(message.Avatar.GetId()))
                    {
                        joinAllianceResponseMessage.ErrorReason = AllianceJoinResponseMessage.Reason.BANNED;
                        ServerRequestManager.SendResponse(joinAllianceResponseMessage, message);
                        return;
                    }

                    if (alliance.Header.GetRequiredScore() > message.Avatar.GetScore() || alliance.Header.GetRequiredDuelScore() > message.Avatar.GetDuelScore())
                    {
                        joinAllianceResponseMessage.ErrorReason = AllianceJoinResponseMessage.Reason.SCORE;
                        ServerRequestManager.SendResponse(joinAllianceResponseMessage, message);
                        return;
                    }
                }
            }
            else
            {
                if (alliance.Header.GetNumberOfMembers() != 0)
                {
                    throw new Exception("StreamMessageManager.joinAllianceRequestMessageReceived: A new alliance must be empty!");
                }
            }

            AllianceMemberEntry memberEntry = AllianceMemberUtil.GetAllianceMemberEntryFromAvatar(message.Avatar);

            memberEntry.SetAllianceRole(message.Created ? LogicAvatarAllianceRole.LEADER : LogicAvatarAllianceRole.MEMBER);
            alliance.AddMember(memberEntry);

            if (!message.Created)
            {
                AllianceEventStreamEntry allianceEventStreamEntry = new AllianceEventStreamEntry();
                AllianceStreamEntryUtil.SetSenderInfo(allianceEventStreamEntry, memberEntry);

                allianceEventStreamEntry.SetEventType(AllianceEventStreamEntryType.JOINED);
                allianceEventStreamEntry.SetEventAvatarId(memberEntry.GetAvatarId());
                allianceEventStreamEntry.SetEventAvatarName(memberEntry.GetName());

                StreamManager.Create(alliance.Id, allianceEventStreamEntry);

                alliance.AddStreamEntry(allianceEventStreamEntry);
            }

            joinAllianceResponseMessage.Success         = true;
            joinAllianceResponseMessage.AllianceId      = alliance.Id;
            joinAllianceResponseMessage.AllianceName    = alliance.Header.GetAllianceName();
            joinAllianceResponseMessage.AllianceBadgeId = alliance.Header.GetAllianceBadgeId();
            joinAllianceResponseMessage.AllianceLevel   = alliance.Header.GetAllianceLevel();
            joinAllianceResponseMessage.Created         = message.Created;

            AllianceManager.Save(alliance);
            ServerRequestManager.SendResponse(joinAllianceResponseMessage, message);
        }