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!"); } }
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; }
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!"); } }