Finished migration to TypeScript, temporary disabled char creator

This commit is contained in:
hydrant
2019-03-11 22:17:49 +01:00
parent 715cf3c1e6
commit 8ce3fd6f52
71 changed files with 4800 additions and 4627 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,102 +0,0 @@
/**
* @overview Life of German Reallife - Gui Infobox infobox.js
* @author VegaZ
* @copyright (c) 2008 - 2018 Life of German
*/
var playerName;
var playerId;
var playerMoney;
var dutyMedics = 0;
var isDeath = false;
var deathTime;
var respawnTime;
var deathSeconds;
var fade;
mp.game.gameplay.setFadeOutAfterDeath(false);
mp.events.add("startDeathTimer", (isAdmin) => {
if (isDeath === false) {
isDeath = true;
if (isAdmin) {
mp.gui.chat.activate(true);
}
else {
mp.gui.chat.activate(false);
}
mp.game.audio.playSoundFrontend(-1, "Bed", "WastedSounds", true);
deathDate = new Date();
respawnTime = Math.floor(deathDate.getTime() / 1000 + 120);
fade = 255 - 120;
mp.game.graphics.requestStreamedTextureDict("Mptattoos", true);
}
});
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", () => {
isDeath = false;
mp.gui.chat.activate(true);
mp.game.gameplay.setFadeOutAfterDeath(false);
mp.events.callRemote('RespawnPlayerAtHospital');
mp.game.graphics.setStreamedTextureDictAsNoLongerNeeded("Mptattoos");
});
mp.events.add("updateDutyMedics", (count) => {
dutyMedics = count;
});
mp.events.add("render", () => {
currentDate = new Date();
if (isDeath === true) {
var medicString;
if (dutyMedics > 0) {
medicString = "Derzeit ";
if (dutyMedics === 1) {
medicString += "ist ~g~" + dutyMedics + " Medic";
} else {
medicString = "sind ~g~" + dutyMedics + " Medics";
}
medicString += " ~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.set2dLayer(2);
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.set2dLayer(1);
mp.game.graphics.drawRect(0.5, 0.5, 1, 1, 0, 0, 0, alpha);
} else {
mp.events.call("respawnDeathPlayer");
}
}
});

View File

@@ -0,0 +1,108 @@
/**
* @overview Life of German Reallife - Gui Infobox infobox.js
* @author VegaZ
* @copyright (c) 2008 - 2018 Life of German
*/
export default function deathScreen() {
var playerName;
var playerId;
var playerMoney;
var dutyMedics = 0;
var isDeath = false;
var deathTime;
var respawnTime;
var deathSeconds;
var fade;
var deathDate: Date;
mp.game.gameplay.setFadeOutAfterDeath(false);
mp.events.add("startDeathTimer", (isAdmin) => {
if (isDeath === false) {
isDeath = true;
if (isAdmin) {
mp.gui.chat.activate(true);
}
else {
mp.gui.chat.activate(false);
}
mp.game.audio.playSoundFrontend(-1, "Bed", "WastedSounds", true);
deathDate = new Date();
respawnTime = Math.floor(deathDate.getTime() / 1000 + 120);
fade = 255 - 120;
mp.game.graphics.requestStreamedTextureDict("Mptattoos", true);
}
});
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", () => {
isDeath = false;
mp.gui.chat.activate(true);
mp.game.gameplay.setFadeOutAfterDeath(false);
mp.events.callRemote('RespawnPlayerAtHospital');
mp.game.graphics.setStreamedTextureDictAsNoLongerNeeded("Mptattoos");
});
mp.events.add("updateDutyMedics", (count) => {
dutyMedics = count;
});
mp.events.add("render", () => {
var currentDate = new Date();
if (isDeath === true) {
var medicString;
if (dutyMedics > 0) {
medicString = "Derzeit ";
if (dutyMedics === 1) {
medicString += "ist ~g~" + dutyMedics + " Medic";
} else {
medicString = "sind ~g~" + dutyMedics + " Medics";
}
medicString += " ~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.set2dLayer(2);
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,
centre: false
});
mp.game.graphics.drawText(medicString, [0.5, 0.975],
{
font: 4,
color: [255, 255, 255, 255],
scale: [0.4, 0.4],
outline: true,
centre: false
});
mp.game.graphics.set2dLayer(1);
mp.game.graphics.drawRect(0.5, 0.5, 1, 1, 0, 0, 0, alpha);
} else {
mp.events.call("respawnDeathPlayer");
}
}
});
}

View File

@@ -1,31 +0,0 @@
var keyBound = false;
var interiorId = -1;
var enterExit = undefined;
mp.events.add('InteriorManager_ClearHelpText', () => {
mp.game.ui.clearHelp(true);
enterExit = undefined;
if (keyBound) {
mp.keys.unbind(0x45, false, keyPressHandler);
keyBound = false;
}
});
mp.events.add('InteriorManager_ShowHelpText', (interior, intId, entEx) => {
mp.game.ui.setTextComponentFormat('STRING');
mp.game.ui.addTextComponentSubstringPlayerName('Drücke ~INPUT_CONTEXT~, um ~b~' + interior + ' ~s~zu ' + (entEx === 0 ? 'betreten' : 'verlassen'));
mp.game.ui.displayHelpTextFromStringLabel(0, true, true, -1);
interiorId = intId;
enterExit = entEx;
mp.keys.bind(0x45, false, keyPressHandler);
keyBound = true;
});
function keyPressHandler() {
if (globalData.InChat) return;
mp.events.callRemote('InteriorManager_UseTeleport', interiorId, enterExit);
}

View File

@@ -0,0 +1,34 @@
export default function interiors(globalData: GlobalData) {
var keyBound = false;
var interiorId = -1;
var enterExit = undefined;
mp.events.add('InteriorManager_ClearHelpText', () => {
mp.game.ui.clearHelp(true);
enterExit = undefined;
if (keyBound) {
mp.keys.unbind(0x45, false, keyPressHandler);
keyBound = false;
}
});
mp.events.add('InteriorManager_ShowHelpText', (interior, intId, entEx) => {
mp.game.ui.setTextComponentFormat('STRING');
mp.game.ui.addTextComponentSubstringPlayerName('Drücke ~INPUT_CONTEXT~, um ~b~' + interior + ' ~s~zu ' + (entEx === 0 ? 'betreten' : 'verlassen'));
mp.game.ui.displayHelpTextFromStringLabel(0, true, true, -1);
interiorId = intId;
enterExit = entEx;
mp.keys.bind(0x45, false, keyPressHandler);
keyBound = true;
});
function keyPressHandler() {
if (globalData.InChat) return;
mp.events.callRemote('InteriorManager_UseTeleport', interiorId, enterExit);
}
}

View File

@@ -1,57 +0,0 @@
const maxDistance = 25 * 25;
const width = 0.03;
const height = 0.0065;
const border = 0.001;
const color = [255, 255, 255, 255];
mp.nametags.enabled = false;
mp.events.add('render', (nametags) => {
const graphics = mp.game.graphics;
const screenRes = graphics.getScreenResolution(0, 0);
nametags.forEach(nametag => {
let [player, x, y, distance] = nametag;
if (distance <= maxDistance) {
let scale = distance / maxDistance;
if (scale < 0.6) scale = 0.6;
var health = player.getHealth();
health = health < 100 ? 0 : (health - 100) / 100;
var armour = player.getArmour() / 100;
y -= scale * (0.005 * (screenRes.y / 1080));
mp.game.graphics.drawText(player.name + " (" + player.remoteId + ")", [x, y],
{
font: 4,
color: [255, 255, 255, 255],
scale: [0.4, 0.4],
outline: true
});
if (mp.game.player.isFreeAimingAtEntity(player.handle)) {
let y2 = y + 0.042;
if (armour > 0) {
graphics.drawRect(x, y2, width + border * 2, 0.0085, 0, 0, 0, 200);
graphics.drawRect(x, y2, width, height, 150, 150, 150, 255);
graphics.drawRect(x - width / 2 * (1 - health), y2, width * health, height, 255, 255, 255, 200);
x2 = x + width / 2 + border / 2;
graphics.drawRect(x, y2 + height, width + border * 2, height + border * 2, 0, 0, 0, 200);
graphics.drawRect(x, y2 + height, width, height, 41, 66, 78, 255);
graphics.drawRect(x - width / 2 * (1 - armour), y2 + height, width * armour, height, 48, 108, 135, 200);
}
else {
graphics.drawRect(x, y2, width + border * 2, height + border * 2, 0, 0, 0, 200);
graphics.drawRect(x, y2, width, height, 150, 150, 150, 255);
graphics.drawRect(x - width / 2 * (1 - health), y2, width * health, height, 255, 255, 255, 200);
}
}
}
});
});

View File

@@ -0,0 +1,61 @@
const maxDistance = 25 * 25;
const width = 0.03;
const height = 0.0065;
const border = 0.001;
const color = [255, 255, 255, 255];
export default function customNametags() {
mp.nametags.enabled = false;
mp.events.add('render', (nametags) => {
const graphics = mp.game.graphics;
const screenRes = graphics.getScreenResolution(0, 0);
nametags.forEach(nametag => {
let [player, x, y, distance] = nametag;
if (distance <= maxDistance) {
let scale = distance / maxDistance;
if (scale < 0.6) scale = 0.6;
var health = player.getHealth();
health = health < 100 ? 0 : (health - 100) / 100;
var armour = player.getArmour() / 100;
y -= scale * (0.005 * (screenRes.y / 1080));
mp.game.graphics.drawText(player.name + " (" + player.remoteId + ")", [x, y],
{
font: 4,
color: [255, 255, 255, 255],
scale: [0.4, 0.4],
outline: true,
centre: false
});
if (mp.game.player.isPlayerFreeAimingAtEntity(player.handle)) {
let y2 = y + 0.042;
if (armour > 0) {
graphics.drawRect(x, y2, width + border * 2, 0.0085, 0, 0, 0, 200);
graphics.drawRect(x, y2, width, height, 150, 150, 150, 255);
graphics.drawRect(x - width / 2 * (1 - health), y2, width * health, height, 255, 255, 255, 200);
var x2 = x + width / 2 + border / 2;
graphics.drawRect(x, y2 + height, width + border * 2, height + border * 2, 0, 0, 0, 200);
graphics.drawRect(x, y2 + height, width, height, 41, 66, 78, 255);
graphics.drawRect(x - width / 2 * (1 - armour), y2 + height, width * armour, height, 48, 108, 135, 200);
}
else {
graphics.drawRect(x, y2, width + border * 2, height + border * 2, 0, 0, 0, 200);
graphics.drawRect(x, y2, width, height, 150, 150, 150, 255);
graphics.drawRect(x - width / 2 * (1 - health), y2, width * health, height, 255, 255, 255, 200);
}
}
}
});
});
}

View File

@@ -1,35 +0,0 @@
/**
* @overview Life of German Reallife - Gui Playerlist playerlist.js
* @author VegaZ
* @copyright (c) 2008 - 2018 Life of German
*/
var playerlistBrowser
var pList;
mp.events.add("showPlayerlist", () => {
if (!playerlistBrowser) {
playerlistBrowser = mp.browsers.new('package://Gui/playerlist.html');
mp.gui.chat.activate(false);
mp.gui.cursor.show(true, true);
}
});
mp.events.add("fetchPlayerList", (playersJson) => {
pList = JSON.parse(playersJson);
pList.forEach((player) => {
mp.gui.chat.push(player.Id + ", " + player.Name + ", " + player.Ping);
});
});
//function getTable() {
// var table = "";
// pList.forEach((player) => {
// var tableRow = "<tr><td>" + player.Id + "</td><td>" + player.Name + "</td><td>" + player.Ping + "</td>";
// table = table + tableRow;
// })
// return document.write(table);
//}

View File

@@ -0,0 +1,37 @@
/**
* @overview Life of German Reallife - Gui Playerlist playerlist.js
* @author VegaZ
* @copyright (c) 2008 - 2018 Life of German
*/
export default function playerList() {
var playerlistBrowser
var pList;
mp.events.add("showPlayerlist", () => {
if (!playerlistBrowser) {
playerlistBrowser = mp.browsers.new('package://Gui/playerlist.html');
mp.gui.chat.activate(false);
mp.gui.cursor.show(true, true);
}
});
mp.events.add("fetchPlayerList", (playersJson) => {
pList = JSON.parse(playersJson);
pList.forEach((player) => {
mp.gui.chat.push(player.Id + ", " + player.Name + ", " + player.Ping);
});
});
}
//function getTable() {
// var table = "";
// pList.forEach((player) => {
// var tableRow = "<tr><td>" + player.Id + "</td><td>" + player.Name + "</td><td>" + player.Ping + "</td>";
// table = table + tableRow;
// })
// return document.write(table);
//}

View File

@@ -1,103 +0,0 @@
let menuBrowser = null;
const NativeUI = require('../../nativeui');
const Menu = NativeUI.Menu;
const UIMenuItem = NativeUI.UIMenuItem;
const UIMenuListItem = NativeUI.UIMenuListItem;
const UIMenuCheckboxItem = NativeUI.UIMenuCheckboxItem;
const UIMenuSliderItem = NativeUI.UIMenuSliderItem;
const BadgeStyle = NativeUI.BadgeStyle;
const Point = NativeUI.Point;
const ItemsCollection = NativeUI.ItemsCollection;
const Color = NativeUI.Color;
const ListItem = NativeUI.ListItem;
mp.events.add('ToggleVehicleMenu', () => {
if (menuBrowser !== null) {
menuBrowser.destroy();
menuBrowser = null;
mp.gui.chat.show(true);
mp.gui.cursor.show(false, false);
mp.game.graphics.stopScreenEffect("FocusIn");
mp.game.graphics.startScreenEffect("FocusOut", 0, false);
return;
}
mp.game.graphics.stopScreenEffect("FocusOut");
mp.game.graphics.startScreenEffect("FocusIn", 0, false);
menuBrowser = mp.browsers.new("package://assets/html/vehiclemenu/index.html");
mp.gui.chat.show(false);
mp.gui.cursor.show(true, true);
});
mp.events.add('doAction', (action) => {
mp.events.call('ToggleVehicleMenu');
switch (action) {
case 8: // Motor
mp.events.callRemote("VehicleMenu_ToggleEngine");
break;
case 5: // Auf -/ Abschließen
mp.events.callRemote("VehicleMenu_LockCar");
break;
case 3: // Türen
showDoorsMenu();
break;
}
});
function showDoorsMenu() {
mp.gui.chat.show(false);
var doorMenu = new Menu("Türen", "Türen verwalten", new Point(50, 50));
doorMenu.AddItem(new UIMenuListItem("Tür", "Welche Tür darf's sein?", new ItemsCollection([
" Fahrertür",
" Beifahrertür",
"Hinten links",
"Hinten rechts",
"Motorhaube",
"Kofferraum"
])));
doorMenu.AddItem(new UIMenuItem("Alle öffnen", "Öffnet alle Türen"));
doorMenu.AddItem(new UIMenuItem("Alle schließen", "Schließt alle Türen"));
doorMenu.ItemSelect.on((item, index) => {
if (index === 0) {
var doorId = -1;
switch (item.SelectedItem.DisplayText) {
case " Fahrertür":
doorId = 0;
break;
case " Beifahrertür":
doorId = 1;
break;
case "Hinten links":
doorId = 2;
break;
case "Hinten rechts":
doorId = 3;
break;
case "Motorhaube":
doorId = 4;
break;
case "Kofferraum":
doorId = 5;
break;
}
if (doorId !== -1) {
mp.events.callRemote("VehicleMenu_ToggleSingleDoor", doorId);
}
} else if (index === 1) {
mp.events.callRemote("VehicleMenu_OpenAllDoors");
} else if (index === 2) {
mp.events.callRemote("VehicleMenu_CloseAllDoors");
}
});
doorMenu.MenuClose.on(() => {
mp.gui.chat.show(true);
});
doorMenu.Open();
}

View File

@@ -0,0 +1,103 @@
import * as NativeUI from 'NativeUI';
const Menu = NativeUI.Menu;
const UIMenuItem = NativeUI.UIMenuItem;
const UIMenuListItem = NativeUI.UIMenuListItem;
const Point = NativeUI.Point;
const ItemsCollection = NativeUI.ItemsCollection;
export default function vehicleMenu() {
let menuBrowser = null;
mp.events.add('ToggleVehicleMenu', () => {
if (menuBrowser !== null) {
menuBrowser.destroy();
menuBrowser = null;
mp.gui.chat.show(true);
mp.gui.cursor.show(false, false);
mp.game.graphics.stopScreenEffect("FocusIn");
mp.game.graphics.startScreenEffect("FocusOut", 0, false);
return;
}
mp.game.graphics.stopScreenEffect("FocusOut");
mp.game.graphics.startScreenEffect("FocusIn", 0, false);
menuBrowser = mp.browsers.new("package://assets/html/vehiclemenu/index.html");
mp.gui.chat.show(false);
mp.gui.cursor.show(true, true);
});
mp.events.add('doAction', (action) => {
mp.events.call('ToggleVehicleMenu');
switch (action) {
case 8: // Motor
mp.events.callRemote("VehicleMenu_ToggleEngine");
break;
case 5: // Auf -/ Abschließen
mp.events.callRemote("VehicleMenu_LockCar");
break;
case 3: // Türen
showDoorsMenu();
break;
}
});
function showDoorsMenu() {
mp.gui.chat.show(false);
var doorMenu = new Menu("Türen", "Türen verwalten", new Point(50, 50), null, null);
doorMenu.AddItem(new UIMenuListItem("Tür", "Welche Tür darf's sein?", new ItemsCollection([
" Fahrertür",
" Beifahrertür",
"Hinten links",
"Hinten rechts",
"Motorhaube",
"Kofferraum"
])));
doorMenu.AddItem(new UIMenuItem("Alle öffnen", "Öffnet alle Türen"));
doorMenu.AddItem(new UIMenuItem("Alle schließen", "Schließt alle Türen"));
doorMenu.ItemSelect.on((item, index) => {
if (index === 0) {
var doorId = -1;
switch (item.SelectedItem.DisplayText) {
case " Fahrertür":
doorId = 0;
break;
case " Beifahrertür":
doorId = 1;
break;
case "Hinten links":
doorId = 2;
break;
case "Hinten rechts":
doorId = 3;
break;
case "Motorhaube":
doorId = 4;
break;
case "Kofferraum":
doorId = 5;
break;
}
if (doorId !== -1) {
mp.events.callRemote("VehicleMenu_ToggleSingleDoor", doorId);
}
} else if (index === 1) {
mp.events.callRemote("VehicleMenu_OpenAllDoors");
} else if (index === 2) {
mp.events.callRemote("VehicleMenu_CloseAllDoors");
}
});
doorMenu.MenuClose.on(() => {
mp.gui.chat.show(true);
});
doorMenu.Open();
}
}