示例#1
0
        private void Callbacks_PlayerConnect(object sender, PlayerConnectEventArgs e)
        {
            if (e.Handled)
            {
                return;
            }

            RunCatchLog(() =>
            {
                if (Settings.ShowPBUserInterface)
                {
                    uint?personalBest = HostPlugin.RecordAdapter.GetBestTime(e.Login, HostPlugin.CurrentChallengeID);
                    SendPBManiaLinkPage(e.Login, personalBest);
                }

                if (Settings.ShowLocalRecordUserInterface)
                {
                    SendLocalRecordManiaLinkToLogin(e.Login);
                }

                if (Settings.ShowLocalRecordListUserInterface)
                {
                    string maniaLinkPageContent = GetRecordListManiaLinkPage(LastRankings, PlayersCount < Settings.StaticModeStartLimit ? e.Login : null);
                    string hash = maniaLinkPageContent.ToHash();
                    SetManiaLinkPageHash(e.Login, _localRecordListManiaLinkPageID, hash);

                    Context.RPCClient.Methods.SendDisplayManialinkPageToLogin(e.Login, maniaLinkPageContent, 0, false);
                }

                if (Settings.ShowMessages)
                {
                    SendServerRankMessageToLogin(e.Login);
                }
            }, "Error in Callbacks_PlayerConnect Method.", true);
        }
示例#2
0
        private void Callbacks_PlayerConnect(object sender, PlayerConnectEventArgs e)
        {
            if (e.Handled)
            {
                return;
            }

            RunCatchLog(() => ResetValues(e.Login), "Error in Callbacks_PlayerConnect Method.", true);
        }
示例#3
0
        private void Callbacks_PlayerConnect(object sender, PlayerConnectEventArgs e)
        {
            if (e.Handled)
            {
                return;
            }

            RunCatchLog(() =>
            {
                if (ClanMembers.Contains(e.Login.ToLower()))
                {
                    return;
                }

                string nickname = GetNickname(e.Login);

                if (nickname == null)
                {
                    Logger.Debug(string.Format("Could not determine nickname for login: {0}", e.Login));
                    return;
                }

                if (!Regex.IsMatch(nickname, Pattern, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Compiled))
                {
                    return;
                }

                GenericResponse <bool> kickResponse = Context.RPCClient.Methods.Kick(e.Login, KickReason);

                if (kickResponse.Erroneous)
                {
                    Logger.Debug(string.Format("Could not kick login: {0}. Reason: {1}({2})", e.Login, kickResponse.Fault.FaultMessage, kickResponse.Fault.FaultCode));
                    return;
                }

                if (kickResponse.Value)
                {
                    Logger.InfoToUI(string.Format("Login {0} with player name {1} was kicked due to name abuse!", e.Login, nickname));

                    SendFormattedMessage(PublicKickReason, "Nickname", StripTMColorsAndFormatting(nickname));
                    e.Handled = true;
                }
                else
                {
                    Logger.Debug(string.Format("Could not kick login: {0}. Kickresposne returned: false", e.Login));
                }
            }, "Error in Callbacks_PlayerConnect Method.", true);
        }
示例#4
0
        private void Callbacks_PlayerConnect(object sender, PlayerConnectEventArgs e)
        {
            RunCatchLog(() =>
            {
                DetailedPlayerInfo detailedPlayerInfo = GetDetailedPlayerInfo(e.Login);

                if (detailedPlayerInfo == null)
                {
                    e.Handled = true;
                    Context.RPCClient.Methods.Kick(e.Login, "TMSPS couldn't determine your player information, try reconnecting!");
                    return;
                }

                NicknameResolverFactory.Instance.Set(e.Login, detailedPlayerInfo.NickName);

                if (detailedPlayerInfo.NickName.IsNullOrTimmedEmpty())
                {
                    Context.RPCClient.Methods.Kick(e.Login, "Please provide a nickname!");
                    e.Handled = true;
                    return;
                }

                if (Settings.EnableJoinMessage)
                {
                    string nation           = "Unknown";
                    List <string> pathParts = new List <string>(detailedPlayerInfo.Path.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries));

                    if (pathParts.Count > 1)
                    {
                        nation = string.Join(" > ", pathParts.ToArray(), 1, pathParts.Count - 1);
                    }

                    int ladderRank = -1;

                    PlayerRanking worldRanking = detailedPlayerInfo.LadderStats.PlayerRankings.Find(ranking => ranking.Path == "World");

                    if (worldRanking != null)
                    {
                        ladderRank = worldRanking.Ranking;
                    }

                    SendFormattedMessage(Settings.JoinMessage, "Nickname", StripTMColorsAndFormatting(detailedPlayerInfo.NickName), "Nation", nation, "Ladder", ladderRank.ToString(Context.Culture));
                }
            }, "Error in Callbacks_PlayerConnect Method.", true);
        }
示例#5
0
        public void OnTcpAddPlayer(Packet packet)
        {
            int    idPlayer = packet.ReadInt();
            string name     = packet.ReadString();

            if (!client.PlayersData.ContainsKey(idPlayer) && idPlayer != client.myId)
            {
                PlayerConnectEventArgs e = new PlayerConnectEventArgs()
                {
                    Message     = $"{name} joined the game.",
                    MessageType = MessageType.OnTcpAddPlayer,
                    Packet      = packet,
                    Name        = name,
                    ID          = idPlayer,
                    Protocol    = Protocol.TCP,
                    RequestType = RequestType.Receive,
                };
                client.PacketReceived(e);
            }
        }
示例#6
0
        private void Callbacks_PlayerConnect(object sender, PlayerConnectEventArgs e)
        {
            if (e.Handled)
            {
                return;
            }

            RunCatchLog(() =>
            {
                string nickname = GetNickname(e.Login);

                if (nickname == null)
                {
                    return;
                }

                if (!nickname.IsNullOrTimmedEmpty())
                {
                    Player player = new Player(e.Login, nickname);
                    PlayerAdapter.CreateOrUpdate(player);
                    OnPlayerCreatedOrUpdated(player, nickname);
                }
            }, "Error in Callbacks_PlayerConnect Method.", true);
        }
示例#7
0
        private void Callbacks_PlayerConnect(object sender, PlayerConnectEventArgs e)
        {
            if (e.Handled)
            {
                Logger.Debug(string.Format("Callbacks_PlayerConnect method skipped for login: {0}. Eventargs stated: Already handled", e.Login));
                return;
            }

            RunCatchLog(() =>
            {
                PlayerSettings playerSettings = GetPlayerSettings(e.Login);

                if (playerSettings == null)
                {
                    Logger.Debug(string.Format("Could not get PlayerSettings for login: {0}", e.Login));
                    return;
                }

                int ladderRanking;

                if (!playerSettings.DetailMode.HasDetailedPlayerInfo())
                {
                    DetailedPlayerInfo detailedPlayerInfo = GetDetailedPlayerInfo(e.Login);

                    if (detailedPlayerInfo == null)
                    {
                        Logger.Debug(string.Format("Could not get DetailedPlayerInfo for login: {0}", e.Login));
                        return;
                    }

                    PlayerRanking worldRanking = detailedPlayerInfo.LadderStats.PlayerRankings.Find(ranking => ranking.Path == "World");

                    if (worldRanking == null)
                    {
                        Logger.Debug(string.Format("Could not find World-Ranking for login: {0}", e.Login));
                        return;
                    }

                    ladderRanking = worldRanking.Ranking;
                }
                else
                {
                    ladderRanking = playerSettings.LadderRanking;
                }


                if (ladderRanking != -1)
                {
                    return;
                }

                GenericResponse <bool> kickResponse = Context.RPCClient.Methods.Kick(e.Login, Settings.PersonalKickMessage);

                if (kickResponse.Erroneous)
                {
                    Logger.Debug(string.Format("Could not kick login: {0}. Reason: {1}({2})", e.Login, kickResponse.Fault.FaultMessage, kickResponse.Fault.FaultCode));
                    return;
                }

                SendFormattedMessage(Settings.PublicKickMessage, "Nickname", StripTMColorsAndFormatting(playerSettings.NickName));
                e.Handled = true;
            }, "Error in Callbacks_PlayerConnect Method.", true);
        }
 public void OnPlayerConnect(object sender, ref PlayerConnectEventArgs e)
 {
     CommandLine.WriteLine(e.tcpClient.Client.RemoteEndPoint.ToString() + "connected", this.ToString(), 0, ConsoleColor.White);
 }