AdminTools.TestServerScript.OnPlayerConnect C# (CSharp) Метод

OnPlayerConnect() публичный Метод

public OnPlayerConnect ( Client player ) : bool
player Client
Результат bool
        public override bool OnPlayerConnect(Client player)
        {
            try
            {
                Console.Write("Nickname: " + player.DisplayName.ToString() + " | ");
                Console.Write("Realname: " + player.Name.ToString() + " | ");
                Console.Write("Ping: " + Math.Round(player.Latency * 1000, MidpointRounding.AwayFromZero).ToString() + "ms | ");
                Console.Write("IP: " + player.NetConnection.RemoteEndPoint.Address.ToString() + " | ");
                Console.Write("Game Version: " + player.GameVersion.ToString() + " | ");
                Console.Write("Script Version: " + player.RemoteScriptVersion.ToString() + " | ");
                Console.Write("Vehicle Health: " + player.VehicleHealth.ToString() + " | ");
                Console.Write("Last Position: " + player.LastKnownPosition.ToString() + " | ");
                Console.Write("\n");
            }
            catch (Exception e) { }
            string response = String.Empty;
            try
            {
                using (var webClient = new System.Net.WebClient())
                {
                    response = webClient.DownloadString("http://ip-api.com/json/"+player.NetConnection.RemoteEndPoint.Address);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Could not contact IP API.");
            }
            if (!string.IsNullOrWhiteSpace(response)) {
                IPInfo dejson = JsonConvert.DeserializeObject<IPInfo>(response);
                if (dejson.list != null)
                {
                    if (dejson.status.Equals("success"))
                    {
                        string country = dejson.countryCode;
                        Console.WriteLine("Country Code: "+country);
                    }else
                    {
                        Console.WriteLine("Could not query IP infos from API.");
                    }
                }

            }

            if (!Properties.Settings.Default.ColoredNicknames) {
                player.DisplayName = Regex.Replace(player.DisplayName, "~.~", "", RegexOptions.IgnoreCase);
            }
            if (player.DisplayName == "SERVER")
            {
                Program.ServerInstance.SendChatMessageToAll("SERVER", string.Format("Kicking {0} for impersonating.", player.DisplayName.ToString()));
                Program.ServerInstance.KickPlayer(player, "Change your nickname to a proper one."); return false;
            }
            if (Properties.Settings.Default.KickOnDefaultName) {
                if (player.DisplayName.StartsWith("RLD!") || player.DisplayName.StartsWith("Player") || player.DisplayName.StartsWith("nosTEAM"))
                {
                    //Program.ServerInstance.SendChatMessageToAll("SERVER", string.Format("Kicking {0} for default nickname.", player.DisplayName.ToString()));
                    Program.ServerInstance.KickPlayer(player, "Change your nickname to a proper one. (F9 -> Settings -> Nickname)"); return false;
                }
            }
            if (Properties.Settings.Default.SocialClubOnly) {
                Console.WriteLine(player.Name);
                if (player.Name.ToString() == "RLD!" || player.Name.ToString() == "nosTEAM" || player.Name.ToString() == "Player")
                {
                    Program.ServerInstance.SendChatMessageToAll("SERVER", string.Format("Kicking {0} for cracked game.", player.DisplayName.ToString()));
                    Program.ServerInstance.KickPlayer(player, "Buy the game and sign in through social club!"); return false; }
            }
            if (Properties.Settings.Default.KickOnNameDifference)
            {
                if (!player.DisplayName.Equals(player.Name))
                {
                    Program.ServerInstance.SendChatMessageToAll("SERVER", string.Format("Kicking {0} for nickname differs from account name.", player.DisplayName.ToString()));
                    Program.ServerInstance.KickPlayer(player, string.Format("Change your nickname to {0}", player.Name)); return false; }
            }
            if (Properties.Settings.Default.KickOnOutdatedScript == true)
            {
                Console.WriteLine(string.Format("[Script Version Check] Got: {0} | Expected: {1}", player.RemoteScriptVersion.ToString(), Properties.Settings.Default.ScriptVersion));
                if (!player.RemoteScriptVersion.ToString().Equals(Properties.Settings.Default.ScriptVersion))
                {
                    Program.ServerInstance.SendChatMessageToAll("SERVER", string.Format("Kicking {0} for outdated mod.", player.DisplayName.ToString()));
                    Program.ServerInstance.KickPlayer(player, string.Format("Update your GTACoop mod to version {0}", Properties.Settings.Default.ScriptVersion)); return false;
                }
            }
            if (Properties.Settings.Default.KickOnOutdatedGame)
            {
                Console.WriteLine(string.Format("[Game Version Check] Got: {0} | Expected: {1}", player.GameVersion.ToString(), Properties.Settings.Default.GameVersion.ToString()));
                if (!player.GameVersion.ToString().Equals(Properties.Settings.Default.GameVersion.ToString()))
                {
                    Program.ServerInstance.SendChatMessageToAll("SERVER", string.Format("Kicking {0} for outdated game.", player.DisplayName.ToString()));
                    Program.ServerInstance.KickPlayer(player, "Update your GTA V to the newest version!"); return false;
                }
            }
            if (player.IsBanned() || player.IsIPBanned())
            {
                Program.ServerInstance.SendChatMessageToAll("SERVER", string.Format("{0} is banned for {1}", player.DisplayName.ToString(), player.GetBan().Reason));
                Program.ServerInstance.KickPlayer(player, "You are banned: " + player.GetBan().Reason); return false;
            }
            if (Properties.Settings.Default.OnlyAsciiNickName)
            {
                if(Encoding.UTF8.GetByteCount(player.DisplayName) != player.DisplayName.Length)
                {
                    //Program.ServerInstance.SendChatMessageToAll("SERVER", string.Format("{0} was kicked for non-ascii chars in his nickname.", player.DisplayName.ToString()));
                    Program.ServerInstance.KickPlayer(player, "Remove all non-ascii characters from your nickname."); return false;
                }
            }
            if (Properties.Settings.Default.OnlyAsciiUserName)
            {
                if (Encoding.UTF8.GetByteCount(player.Name) != player.Name.Length)
                {
                    //Program.ServerInstance.SendChatMessageToAll("SERVER", string.Format("{0} was kicked for non-ascii chars in his username.", player.DisplayName.ToString()));
                    Program.ServerInstance.KickPlayer(player, "Remove all non-ascii characters from your Social Club username.");return false;
                }
            }
            if (Properties.Settings.Default.LimitNickNames)
            {
                if (player.DisplayName.Length < 3 || player.DisplayName.Length > 33)
                {
                    Program.ServerInstance.KickPlayer(player, "Your nickname has to be between 3 and 33 chars long."); return false;
                }
            }
            /*if (Properties.Settings.Default.AntiClones) // TODO: FixIt
            {
                for (var i = 0; i < Program.ServerInstance.Clients.Count; i++)
                {
                    if (player.DisplayName.Contains(Program.ServerInstance.Clients[i].DisplayName))
                    {
                        player.DisplayName = Program.ServerInstance.Clients[i].DisplayName;
                        Program.ServerInstance.SendChatMessageToAll("SERVER", string.Format("Kicking {0} for clone detected!", Program.ServerInstance.Clients[i].DisplayName.ToString()));
                        Program.ServerInstance.KickPlayer(Program.ServerInstance.Clients[i], "Clone detected!");
                    }
                }
            }*/

            //Program.ServerInstance.SendChatMessageToPlayer(player, "INFO", "Current Server Flags: ");

            Program.ServerInstance.SendChatMessageToPlayer(player, "SERVER", Properties.Settings.Default.MOTD);
            //Program.ServerInstance.SendChatMessageToPlayer(player, "SERVER", string.Format("Welcome to {0}", GTAServer.ServerSettings));
            //var settings = ReadSettings(Program.Location + "Settings.xml");

            if (player.GetAccount(false) == null)
            {
                Program.ServerInstance.SendChatMessageToPlayer(player, "SERVER", "You can register an account using /register [password]");
            }
            else
            {
                Program.ServerInstance.SendChatMessageToPlayer(player, "SERVER", "Please authenticate to your account using /login [password]");
            }

            Program.ServerInstance.SendNativeCallToPlayer(player, 0x29B487C359E19889, _weatherNames[ServerWeather]);

            Program.ServerInstance.SendNativeCallToPlayer(player, 0x47C3B5848C3E45D8, ServerTime.Hours, ServerTime.Minutes, ServerTime.Seconds);
            Program.ServerInstance.SendNativeCallToPlayer(player, 0x4055E40BD2DBEC1D, true);
            return true;
        }