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;
}