diff --git a/.vs/reallife-gamemode/DesignTimeBuild/.dtbcache b/.vs/reallife-gamemode/DesignTimeBuild/.dtbcache new file mode 100644 index 00000000..df416155 Binary files /dev/null and b/.vs/reallife-gamemode/DesignTimeBuild/.dtbcache differ diff --git a/.vs/reallife-gamemode/v15/.suo b/.vs/reallife-gamemode/v15/.suo new file mode 100644 index 00000000..7cbb4264 Binary files /dev/null and b/.vs/reallife-gamemode/v15/.suo differ diff --git a/.vs/reallife-gamemode/v15/Server/sqlite3/db.lock b/.vs/reallife-gamemode/v15/Server/sqlite3/db.lock new file mode 100644 index 00000000..e69de29b diff --git a/.vs/reallife-gamemode/v15/Server/sqlite3/storage.ide b/.vs/reallife-gamemode/v15/Server/sqlite3/storage.ide new file mode 100644 index 00000000..791a3855 Binary files /dev/null and b/.vs/reallife-gamemode/v15/Server/sqlite3/storage.ide differ diff --git a/.vs/reallife-gamemode/v15/Server/sqlite3/storage.ide-shm b/.vs/reallife-gamemode/v15/Server/sqlite3/storage.ide-shm new file mode 100644 index 00000000..4e76a645 Binary files /dev/null and b/.vs/reallife-gamemode/v15/Server/sqlite3/storage.ide-shm differ diff --git a/.vs/reallife-gamemode/v15/Server/sqlite3/storage.ide-wal b/.vs/reallife-gamemode/v15/Server/sqlite3/storage.ide-wal new file mode 100644 index 00000000..23fbdf75 Binary files /dev/null and b/.vs/reallife-gamemode/v15/Server/sqlite3/storage.ide-wal differ diff --git a/Client/Gui/deathscreen.js b/Client/Gui/deathscreen.js index 183836f1..82dc413a 100644 --- a/Client/Gui/deathscreen.js +++ b/Client/Gui/deathscreen.js @@ -37,6 +37,7 @@ mp.events.add("onPlayerRevived", () => { isDeath = false; mp.gui.chat.activate(true); mp.game.gameplay.setFadeOutAfterDeath(false); + mp.game.graphics.setStreamedTextureDictAsNoLongerNeeded("Mptattoos"); }); mp.events.add("respawnDeathPlayer", () => { @@ -44,6 +45,7 @@ mp.events.add("respawnDeathPlayer", () => { mp.gui.chat.activate(true); mp.game.gameplay.setFadeOutAfterDeath(false); mp.events.callRemote('RespawnPlayerAtHospital'); + mp.game.graphics.setStreamedTextureDictAsNoLongerNeeded("Mptattoos"); }); mp.events.add("updateDutyMedics", (count) => { diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs index dcd78730..fde4954e 100644 --- a/Server/Commands/Admin.cs +++ b/Server/Commands/Admin.cs @@ -323,6 +323,29 @@ namespace reallife_gamemode.Server.Commands player.SendChatMessage("~b~Du hast das Leben von " + target.Name + " auf " + hp + " gesetzt."); } + [Command("arevive", "~m~Benutzung: ~s~/arevive [Spieler]")] + public void CmdAdminRevive(Client player, string name) + { + if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) + { + ChatService.NotAuthorized(player); + return; + } + + Client target = ClientService.GetClientByName(name); + if (target == null || !target.IsLoggedIn()) + { + ChatService.PlayerNotFound(player); + return; + } + + target.TriggerEvent("onPlayerRevived"); + target.SendNotification("Du wurdest von Admin ~y~" + player.Name + "~s~ wiederbelebt."); + target.SetData("isDead", false); + NAPI.Player.SpawnPlayer(target, target.Position); + target.Health = 100; + } + [Command("setarmor", "~m~Benutzung: ~s~/setarmor [Spieler] (Armor)")] public void CmdAdminSetArmor(Client player, string name, int armor = 100) { @@ -470,6 +493,37 @@ namespace reallife_gamemode.Server.Commands player.SendChatMessage("~b~Das Leben von " + peopleInRange.Count + " Spielern wurde auf " + hp + " gesetzt."); } + [Command("freekh", "~m~Benutzung: ~s~/freekh (Radius)")] + public void CmdAdminRangeSetHP(Client player, float radius=9999999) + { + if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) + { + ChatService.NotAuthorized(player); + return; + } + var peopleInRange = NAPI.Player.GetPlayersInRadiusOfPlayer(radius, player); + + foreach (var managedClient in peopleInRange) + { + if (!managedClient.IsLoggedIn()) return; + if (!managedClient.HasData("isDead") || managedClient.GetData("isDead") == false) continue; + if (radius == 9999999) + { + managedClient.SendChatMessage("~b~Admin " + player.Name + " hat alle Spieler wiederbelebt"); + } + else + { + managedClient.SendChatMessage("~b~Admin " + player.Name + " hat im Radius von " + radius + " alle Spieler wiederbelebt"); + } + managedClient.TriggerEvent("onPlayerRevived"); + managedClient.SendNotification("Du wurdest von Admin ~y~" + player.Name + "~s~ wiederbelebt."); + managedClient.SetData("isDead", false); + NAPI.Player.SpawnPlayer(managedClient, managedClient.Position); + managedClient.Health = 100; + } + player.SendChatMessage("~b~Du hast "+ peopleInRange.Count + " Spieler wiederbelebt"); + } + [Command("rsetarmor", "~m~Benutzung: ~s~/rsetarmor [Radius] (Armor)")] public void CmdAdminRangeSetArmor(Client player, float radius, int Armor = 100) { diff --git a/Server/Commands/Faction.cs b/Server/Commands/Faction.cs index 903187b6..1d5ac05c 100644 --- a/Server/Commands/Faction.cs +++ b/Server/Commands/Faction.cs @@ -214,12 +214,22 @@ namespace reallife_gamemode.Server.Commands ChatService.NotAuthorized(player); return; } + if (player.IsInVehicle) + { + player.SendChatMessage("~r~[FEHLER]~s~ Du kannst in einem Auto nicht wiederbeleben!"); + return; + } var nearPlayers = NAPI.Player.GetPlayersInRadiusOfPlayer(2, player); var deadPlayer = nearPlayers.Where(i => i.GetData("isDead") == true).FirstOrDefault(); + if (player == deadPlayer) + { + player.SendChatMessage("~r~[FEHLER]~s~ Du kannst dich nicht selbst wiederbeleben!"); + return; + } deadPlayer.TriggerEvent("onPlayerRevived"); - deadPlayer.SendNotification("Du wurdest von ~y~" + player.Name + "~s~ wiederbelebt."); + deadPlayer.SendNotification("Du wurdest von ~r~" + player.Name + "~s~ wiederbelebt."); deadPlayer.SetData("isDead", false); NAPI.Player.SpawnPlayer(deadPlayer, deadPlayer.Position); deadPlayer.Health = 50; diff --git a/Server/Events/Death.cs b/Server/Events/Death.cs index 9e7af94c..04faaefb 100644 --- a/Server/Events/Death.cs +++ b/Server/Events/Death.cs @@ -69,8 +69,11 @@ namespace reallife_gamemode.Server.Events killerPosY = killer.Position.Y; killerPosZ = killer.Position.Z; killerHeading = killer.Heading; - string message = "~y~[HINWEIS]: " + killer.Name + " hat " + player.Name + " getötet (" + NAPI.Player.GetPlayerCurrentWeapon(killer) + ")"; - ChatService.BroadcastAdmin(message, AdminLevel.ADMIN); + if(player != killer) + { + string message = "~y~[HINWEIS]: " + killer.Name + " hat " + player.Name + " getötet (" + NAPI.Player.GetPlayerCurrentWeapon(killer) + ")"; + ChatService.BroadcastAdmin(message, AdminLevel.ADMIN); + } } using (var userDeath = new DatabaseContext()) diff --git a/Server/Events/Login.cs b/Server/Events/Login.cs index bcb112b4..14528ad2 100644 --- a/Server/Events/Login.cs +++ b/Server/Events/Login.cs @@ -69,7 +69,19 @@ namespace reallife_gamemode.Server.Events var userBankAccount = loginUser.UserBankAccounts.SingleOrDefault(u => u.UserId == user.Id); userBankAccount.Balance = userBankAccount.Balance; - player.TriggerEvent("draw", player.Name, player.Handle.Value); + player.TriggerEvent("draw", player.Name, player.Handle.Value); + + if (user.Dead == true) + { + //player.TriggerEvent("startDeathTimer"); + //player.SetData("isDead", true); + //TODO: Deathlog entfernen + player.Health = 0; + } + else + { + player.SetData("isDead", false); + } } } }