Beispiel #1
0
        public async Task OnWeaponDamage(IAltPlayer player, IEntity target, uint weapon, ushort damage,
                                         Position shotOffset, BodyPart bodyPart)
        {
            await using (var asyncContext = AsyncContext.Create())
            {
                if (!player.TryToAsync(asyncContext, out var asyncPlayer))
                {
                    return;
                }
                if (!Misc.BlacklistedWeapons.Contains(weapon) || player is not {
                } damagePlayer)
                {
                    return;
                }
                if (!damagePlayer.TryToAsync(asyncContext, out var asyncDamagePlayer))
                {
                    return;
                }



                Alt.Server.LogColored($"~r~ Banned Player: {asyncDamagePlayer.Name} ({asyncDamagePlayer.Id}) for using illegal weapon!");
                //Misc.BannedPlayers.Add(<ulong, ulong>(damagePlayer.HardwareIdHash, damagePlayer.HardwareIdExHash));
                Misc.BannedPlayers.Add(new Tuple <ulong, ulong>(asyncDamagePlayer.HardwareIdHash, asyncDamagePlayer.HardwareIdExHash));
                string json = JsonSerializer.Serialize(Misc.BannedPlayers);
                File.WriteAllText(@"BannedPlayers.json", json);

                asyncPlayer.Kick("You're banned from this server!");
            }
        }
Beispiel #2
0
        public async Task OnPlayerConnect(IAltPlayer player, string reason)
        {
            await using (var asyncContext = AsyncContext.Create())
            {
                if (!player.TryToAsync(asyncContext, out var asyncPlayer))
                {
                    return;
                }

                if (Misc.BannedPlayers.Contains(new Tuple <ulong, ulong>(asyncPlayer.HardwareIdHash, asyncPlayer.HardwareIdExHash)))
                {
                    asyncPlayer.Kick("You're banned from this server!");
                    AltAsync.Log($"HWID: {asyncPlayer.HardwareIdHash}, SC: {asyncPlayer.SocialClubId}. Tried to join the server with a ban.");
                    return;
                }

                if (Misc.Operators.Contains(new Tuple <ulong, ulong>(asyncPlayer.HardwareIdHash, asyncPlayer.HardwareIdExHash)))
                {
                    asyncPlayer.IsAdmin = true;
                }

                // select random entry from SpawnPoints
                var randomSpawnPoint = Misc.SpawnPositions.ElementAt(_random.Next(0, Misc.SpawnPositions.Length));
                asyncPlayer.Spawn(randomSpawnPoint + new Position(_random.Next(0, 10), _random.Next(0, 10), 0));
                asyncPlayer.Model = (uint)PedModel.FreemodeMale01;
                asyncPlayer.SetDateTime(1, 1, 1, Misc.Hour, 1, 1);
                asyncPlayer.SetWeather(Misc.Weather);

                asyncPlayer.Emit("draw_dmzone", Misc.DMPos.X, Misc.DMPos.Y, Misc.DMRadius, 150);

                if (asyncPlayer.IsAdmin)
                {
                    asyncPlayer.Emit("set_chat_state", true);
                }
            }

            // create async context
            lock (StatsHandler.StatsData)
            {
                StatsHandler.StatsData.PlayerConnections++;
            }

            return;
        }
Beispiel #3
0
        public async Task OnPlayerDead(IAltPlayer player, IEntity killer, uint weapon)
        {
            var spawnPointPool = player.DmMode ? Misc.AirportSpawnPositions : Misc.SpawnPositions;

            await using (var asyncContext = AsyncContext.Create())
            {
                if (!player.TryToAsync(asyncContext, out var asyncPlayer))
                {
                    return;
                }
                if (killer is not IAltPlayer killerPlayer)
                {
                    return;
                }
                if (!killerPlayer.TryToAsync(asyncContext, out var asyncKillerPlayer))
                {
                    return;
                }

                var randomSpawnPoint = spawnPointPool.ElementAt(_random.Next(0, spawnPointPool.Length));
                asyncPlayer.Spawn(randomSpawnPoint + new Position(_random.Next(0, 10), _random.Next(0, 10), 0));

                lock (StatsHandler.StatsData)
                {
                    StatsHandler.StatsData.PlayerDeaths++;
                }

                if (!Misc.BlacklistedWeapons.Contains(weapon))
                {
                    return;
                }
                Alt.Server.LogColored($"~r~ Banned Player: {asyncKillerPlayer.Name} ({asyncKillerPlayer.Id}) for using illegal weapon!");
                Misc.BannedPlayers.Add(new Tuple <ulong, ulong>(asyncKillerPlayer.HardwareIdHash, asyncKillerPlayer.HardwareIdExHash));
                string json = JsonSerializer.Serialize(Misc.BannedPlayers);
                await File.WriteAllTextAsync(@"BannedPlayers.json", json);

                asyncKillerPlayer.Kick("You're banned from this server!");
            }
        }