예제 #1
0
        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);
        }
예제 #2
0
        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);
        }