From e54337a5734a54ad44ba9994494f090d2b331f60 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Mon, 22 Oct 2018 20:09:14 +0200 Subject: [PATCH] Extend death-system --- Client/Gui/deathscreen.js | 43 +++++++++++++++++++++++++++++++++++--- Server/Commands/Faction.cs | 29 ++++++++++++++++++++++++- Server/Events/Connect.cs | 14 ------------- Server/Events/Death.cs | 24 +++++++++++++++++++-- Server/Events/Login.cs | 21 +++++++++++++++++++ 5 files changed, 111 insertions(+), 20 deletions(-) diff --git a/Client/Gui/deathscreen.js b/Client/Gui/deathscreen.js index 99f30604..183836f1 100644 --- a/Client/Gui/deathscreen.js +++ b/Client/Gui/deathscreen.js @@ -7,6 +7,7 @@ var playerName; var playerId; var playerMoney; +var dutyMedics = 0; var isDeath = false; var deathTime; @@ -16,13 +17,19 @@ var fade; mp.game.gameplay.setFadeOutAfterDeath(false); -mp.events.add("startDeathTimer", () => { +mp.events.add("startDeathTimer", (isAdmin) => { if (isDeath === false) { isDeath = true; - mp.gui.chat.activate(false); + if (isAdmin) { + mp.gui.chat.activate(true); + } + else { + mp.gui.chat.activate(false); + } deathDate = new Date(); respawnTime = Math.floor(deathDate.getTime() / 1000 + 120); fade = 255 - 120; + mp.game.graphics.requestStreamedTextureDict("Mptattoos", true); } }); @@ -39,21 +46,51 @@ mp.events.add("respawnDeathPlayer", () => { mp.events.callRemote('RespawnPlayerAtHospital'); }); +mp.events.add("updateDutyMedics", (count) => { + if (count == true) + { + dutyMedics++; + } + else + { + dutyMedics--; + } +}); + + + mp.events.add("render", () => { currentDate = new Date(); if (isDeath === true) { + + var medicString; + if (dutyMedics > 0) { + medicString = "Derzeit sind ~g~" + dutyMedics + " Medics ~s~im Dienst ~c~und versuchen dich wiederzubeleben..."; + } else { + medicString = "Derzeit sind ~r~keine Medics ~s~im Dienst." + } + deathSeconds = respawnTime - Math.floor(currentDate.getTime() / 1000); var alpha = fade + (Math.floor((currentDate.getTime() / 1000) - (deathDate.getTime() / 1000))); if (deathSeconds >= 0) { - mp.game.graphics.drawText("~y~" + deathSeconds, [0.5, 0.5], + mp.game.graphics.drawSprite("Mptattoos", "clearout", 0.625, 0.52, 0.1, 0.1, 0, 255, 255, 255, 236); + mp.game.graphics.drawText("Respawn in: ~y~" + deathSeconds, [0.5, 0.5], { font: 7, color: [255, 255, 255, 255], scale: [0.8, 0.8], outline: true }) + mp.game.graphics.drawText(medicString, [0.5, 0.975], + { + font: 4, + color: [255, 255, 255, 255], + scale: [0.4, 0.4], + outline: true + }) mp.game.graphics.drawRect(0.5, 0.5, 1, 1, 0, 0, 0, alpha); + } else { mp.events.call("respawnDeathPlayer"); } diff --git a/Server/Commands/Faction.cs b/Server/Commands/Faction.cs index 06d407b8..28bb09e9 100644 --- a/Server/Commands/Faction.cs +++ b/Server/Commands/Faction.cs @@ -206,7 +206,7 @@ namespace reallife_gamemode.Server.Commands #endregion #region Sanitäter Commands - [Command("revive", "~m~Benutzung: ~s~/invite")] + [Command("revive", "~m~Benutzung: ~s~/revive")] public void CmdFactionMedicRevive(Client player) { if (player.GetUser()?.FactionId == null || player.GetUser().FactionId != 2) @@ -225,5 +225,32 @@ namespace reallife_gamemode.Server.Commands deadPlayer.Health = 50; } #endregion + #region Global Fraktions Commands + [Command("duty", "~m~Benutzung: ~s~/invite")] + public void CmdFactionDuty(Client player) + { + if (player.GetUser()?.FactionId == null) + { + ChatService.NotAuthorized(player); + return; + } + + if(player.GetData("duty") != true) + { + player.SetData("duty", true); + player.SendNotification("Du bist nun ~g~im Dienst."); + if(player.GetUser().FactionId == 2) + { + NAPI.ClientEvent.TriggerClientEventForAll("updateDutyMedics", true); + } + } + else + { + player.SetData("duty", false); + player.SendNotification("Du bist nun ~r~außer Dienst."); + NAPI.ClientEvent.TriggerClientEventForAll("updateDutyMedics", false); + } + } + #endregion } } diff --git a/Server/Events/Connect.cs b/Server/Events/Connect.cs index 7a46fc9a..95135938 100644 --- a/Server/Events/Connect.cs +++ b/Server/Events/Connect.cs @@ -48,20 +48,6 @@ namespace reallife_gamemode.Server.Events return; } - using (var loginUser = new DatabaseContext()) - { - var user = loginUser.Users.SingleOrDefault(b => b.Name == player.Name); - if(user.Dead == true) - { - player.TriggerEvent("startDeathTimer"); - player.SetData("isDead", true); - } - else - { - player.SetData("isDead", false); - } - } - player.SetData("isLoggedIn", false); player.Position = new Vector3(-1883.736, -781.4911, -10); player.FreezePosition = true; diff --git a/Server/Events/Death.cs b/Server/Events/Death.cs index 15139c9f..9e7af94c 100644 --- a/Server/Events/Death.cs +++ b/Server/Events/Death.cs @@ -23,7 +23,27 @@ namespace reallife_gamemode.Server.Events public void OnPlayerDeath(Client player, Client killer, uint reason) { player.SetData("isDead", true); - player.TriggerEvent("startDeathTimer"); + + if (player.GetUser().IsAdmin(AdminLevel.ADMIN) == true) + { + player.TriggerEvent("startDeathTimer", true); + } + else + { + player.TriggerEvent("startDeathTimer", false); + } + + //var dutyMedics = 0; + //var allPlayers = NAPI.Pools.GetAllPlayers(); + + //foreach (Client medic in allPlayers) + //{ + // if (medic.GetUser()?.FactionId == 2) + // { + // dutyMedics++; + // } + //} + //player.TriggerEvent("medicInfo", dutyMedics); //TODO: Zum Full Release entfernen NAPI.Chat.SendChatMessageToPlayer(player, "Du bist durch " + killer.Name + " gestorben: " + reason.ToString()); @@ -64,7 +84,7 @@ namespace reallife_gamemode.Server.Events } [RemoteEvent("RespawnPlayerAtHospital")] public void RespawnPlayerAtHospital(Client player) - { + { player.SetData("isDead", false); player.RemoveAllWeapons(); NAPI.Player.SpawnPlayer(player, new Vector3(-495.45, -336.33, 34.5)); diff --git a/Server/Events/Login.cs b/Server/Events/Login.cs index 64a5e8e0..bcb112b4 100644 --- a/Server/Events/Login.cs +++ b/Server/Events/Login.cs @@ -5,6 +5,7 @@ using System.Text; using GTANetworkAPI; using reallife_gamemode.Model; using reallife_gamemode.Server.Entities; +using reallife_gamemode.Server.Util; /** * @overview Life of German Reallife - Event Login (Login.cs) @@ -46,6 +47,26 @@ namespace reallife_gamemode.Server.Events player.SetData("isLoggedIn", true); player.SetData("spec", true); + player.SetData("duty", false); + + if (user.Dead == true) + { + if (user.IsAdmin(AdminLevel.ADMIN) == true) + { + player.TriggerEvent("startDeathTimer", true); + } + else + { + player.TriggerEvent("startDeathTimer", false); + } + + player.SetData("isDead", true); + } + else + { + player.SetData("isDead", false); + } + var userBankAccount = loginUser.UserBankAccounts.SingleOrDefault(u => u.UserId == user.Id); userBankAccount.Balance = userBankAccount.Balance; player.TriggerEvent("draw", player.Name, player.Handle.Value);