public async void OnServerBanTrigger([FromSource] Player source, string player_id, string reason) { if (source != null) { return; } GeminisPlayer geminisPlayer = this.GetPlayerFromId(player_id); MySqlConnection conn = database.CreateConnection(); MySqlCommand command = conn.CreateCommand(); command.CommandText = "INSERT INTO geminis_bans (name, steam, license, discord, fivem, ip, reason, applied) VALUES (@name, @steam, @license, @discord, @fivem, @ip, @reason, @applied);"; command.Parameters.AddWithValue("@name", geminisPlayer.Name); command.Parameters.AddWithValue("@steam", geminisPlayer.GetShortIdentifier("steam", "")); command.Parameters.AddWithValue("@license", geminisPlayer.GetShortIdentifier("license", "")); command.Parameters.AddWithValue("@discord", geminisPlayer.GetShortIdentifier("discord", "")); command.Parameters.AddWithValue("@fivem", geminisPlayer.GetShortIdentifier("fivem", "")); command.Parameters.AddWithValue("@ip", geminisPlayer.Endpoint); command.Parameters.AddWithValue("@reason", reason); command.Parameters.AddWithValue("@applied", utils.GetTimestamp()); command.Prepare(); command.ExecuteNonQuery(); conn.Close(); output.Print(Output.ERROR, utils.Format(locale.ban_trigger, geminisPlayer.Name, reason)); geminisPlayer.Drop(reason); }
public async void OnPlayerConnecting([FromSource] Player source, string name, dynamic kick, dynamic deferreals) { GeminisPlayer geminisPlayer = new GeminisPlayer(source); output.Print(Output.INFO, utils.Format(locale.player_connecting, name, geminisPlayer.Endpoint)); deferreals.defer(); await BaseScript.Delay(0); deferreals.update(utils.Format(locale.defer_loading, name)); if (config.use_steam) { if (geminisPlayer.GetIdentifier("steam") == null) { deferreals.done(locale.steam_not_found); output.Print(Output.WARNING, utils.Format(locale.player_not_using_steam, name, geminisPlayer.GetIdentifier("license"))); return; } } if (cache.TryGetValue(geminisPlayer.GetShortIdentifier("license"), out _)) { Tuple <string, string> ban = cache[geminisPlayer.GetShortIdentifier("license")]; deferreals.done(utils.Format(locale.ban_message, ban.Item1, ban.Item2)); output.Print(Output.WARNING, utils.Format(locale.player_banned, name, ban.Item2)); return; } MySqlConnection conn = database.CreateConnection(); MySqlCommand command = conn.CreateCommand(); command.CommandText = "SELECT reason, applied FROM geminis_bans WHERE license = @license OR steam = @steam OR discord = @discord OR fivem = @fivem OR ip = @ip;"; command.Parameters.AddWithValue("@license", geminisPlayer.GetShortIdentifier("license")); command.Parameters.AddWithValue("@steam", geminisPlayer.GetShortIdentifier("steam")); command.Parameters.AddWithValue("@discord", geminisPlayer.GetShortIdentifier("discord")); command.Parameters.AddWithValue("@fivem", geminisPlayer.GetShortIdentifier("fivem")); command.Parameters.AddWithValue("@ip", geminisPlayer.Endpoint); MySqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { string reason = reader.GetString(0); int timestamp = reader.GetInt32(1); DateTime date = utils.GetDateTimeFromTimestamp(timestamp); string str_date = $"{date.Day}/{date.Month}/{date.Year} - {date.Hour}:{date.Minute}"; deferreals.done(utils.Format(locale.ban_message, reason, str_date)); cache.Add(geminisPlayer.GetShortIdentifier("license"), new Tuple <string, string>(reason, str_date)); output.Print(Output.WARNING, utils.Format(locale.player_banned, name, reason)); return; } } deferreals.done(); BaseScript.TriggerEvent("geminis:on_player_connect", geminisPlayer); }