Files
reallife-gamemode/ReallifeGamemode.Client/Gui/deathscreen.ts
2021-05-31 19:20:51 +02:00

115 lines
3.2 KiB
TypeScript

/**
* @overview Life of German Reallife - Gui Infobox infobox.js
* @author VegaZ
* @copyright (c) 2008 - 2018 Life of German
*/
export default function deathScreen() {
var dutyMedics = 0;
var isDead = false;
var deathSeconds;
var deathDate: Date;
const maxDeathTime = 120;
var respawnTime;
var fade;
mp.game.gameplay.setFadeOutAfterDeath(false);
function deactivateDeathScreen() {
isDead = false;
mp.gui.chat.activate(true);
mp.game.gameplay.setFadeOutAfterDeath(false);
}
mp.events.add("startDeathTimer", (isSupporter) => {
if (isDead) {
return;
}
isDead = true;
mp.gui.chat.activate(isSupporter);
mp.game.audio.playSoundFrontend(-1, "Bed", "WastedSounds", true);
deathDate = new Date();
respawnTime = Math.floor(deathDate.getTime() / 1000 + maxDeathTime);
fade = 255 - maxDeathTime;
mp.events.call("GetDutyMedics");
});
mp.events.add("onPlayerRevived", () => {
deactivateDeathScreen();
});
mp.events.add("respawnDeathPlayer", () => {
deactivateDeathScreen();
mp.events.callRemote('RespawnPlayerAtHospital');
});
mp.events.add("updateDutyMedics", (count) => {
dutyMedics = count;
});
mp.events.add("render", () => {
if (!isDead) {
return;
}
var medicString = "Derzeit befinden sich ~r~keine Einsatzkräfte ~s~im Dienst";
if (dutyMedics > 0) {
medicString = "Das L.S.E.D. wurde benachrichtigt\nDerzeit ";
if (dutyMedics === 1) {
medicString += "befindet sich ~g~" + dutyMedics + " Mitglied";
} else {
medicString += "befinden sich ~g~" + dutyMedics + " Mitglieder";
}
medicString += " ~s~im Dienst";
}
var currentDate = new Date();
deathSeconds = respawnTime - Math.floor(currentDate.getTime() / 1000);
if (deathSeconds <= 0) {
mp.events.call("respawnDeathPlayer");
return;
}
mp.game.graphics.set2dLayer(2);
mp.game.graphics.drawText("~HUD_COLOUR_RED~Du bist gestorben", [0.5, 0.425],
{
font: 7,
color: [255, 255, 255, 255],
scale: [0.8, 0.8],
outline: true,
centre: true
});
mp.game.graphics.drawText("Du wirst in " + deathSeconds + " Sekunden wiederbelebt", [0.5, 0.475],
{
font: 4,
color: [255, 255, 255, 255],
scale: [0.4, 0.4],
outline: true,
centre: true
});
mp.game.graphics.drawText(medicString, [0.5, 0.945],
{
font: 4,
color: [255, 255, 255, 255],
scale: [0.4, 0.4],
outline: true,
centre: true
});
var alpha = fade + Math.floor(currentDate.getTime() / 1000 - deathDate.getTime() / 1000);
mp.game.graphics.set2dLayer(1);
mp.game.graphics.drawRect(0.5, 0.5, 1, 1, 0, 0, 0, alpha);
});
}