Add PunkteSystem

This commit is contained in:
Mac_Slash
2020-04-08 16:42:28 +02:00
parent 176f098b4f
commit 9cd5fa3f40
11 changed files with 418 additions and 257 deletions

View File

@@ -1,4 +1,5 @@
import * as NativeUI from '../libs/NativeUI'; import * as NativeUI from '../libs/NativeUI';
import InputHelper from '../inputhelper';
const Menu = NativeUI.Menu; const Menu = NativeUI.Menu;
const UIMenuItem = NativeUI.UIMenuItem; const UIMenuItem = NativeUI.UIMenuItem;
const UIMenuListItem = NativeUI.UIMenuListItem; const UIMenuListItem = NativeUI.UIMenuListItem;
@@ -25,50 +26,49 @@ export default function factionInteraction(globalData: IGlobalData) {
var rangeLeft; var rangeLeft;
var sortText; var sortText;
var ticketName: string;
var pointsName: string;
var factionInteractionMenu; var factionInteractionMenu;
var reviveTaskMenu; var reviveTaskMenuMedic;
mp.events.add("updateFactionBlips", (type, taskList) => { /*mp.events.add("updateFactionBlips", (type, taskList) => {
}); });*/
mp.events.add("showFactionInteractionLSPD", (userFactionId, isDuty, userFactionName, isFactionLeader) => {
//LSPD
let ticketTaskMenuLSPD;
let pointsTaskMenuLSPD;
if (userFactionId == 1) {
if (isDuty) {
mp.gui.chat.activate(false);
globalData.InMenu = true;
mp.events.add("showFactionInteraction", (userFactionId, isDuty, userFactionName, isFactionLeader, reviveTaskCount, healTaskCount, fireTaskCount) => { factionInteractionMenu = new Menu("Fraktionsinteraktion", userFactionName, new Point(0, screenRes.y / 2), null, null);
mp.gui.chat.activate(false);
globalData.InMenu = true;
var rP = ((reviveTaskCount === "0") ? "~r~" : "~g~"); if (isFactionLeader) {
var hP = ((healTaskCount === "0") ? "~r~" : "~g~"); let leaderMenu = new UIMenuItem("Leadermen\u00fc", "Verwaltung der Fraktion");
var fP = ((fireTaskCount === "0") ? "~r~" : "~g~"); leaderMenu.SetRightBadge(BadgeStyle.Star);
factionInteractionMenu.AddItem(leaderMenu);
}
factionInteractionMenu = new Menu("Fraktionsinteraktion", userFactionName, new Point(0, screenRes.y / 2), null, null);
if (isFactionLeader) {
let leaderMenu = new UIMenuItem("Leadermen\u00fc", "Verwaltung der Fraktion");
leaderMenu.SetRightBadge(BadgeStyle.Star);
factionInteractionMenu.AddItem(leaderMenu);
}
let reviveTaskMenu;
let healTaskMenu;
let fireTaskMenu;
if (isDuty) {
switch (userFactionId) {
case 2:
reviveTaskMenu = new UIMenuItem("Reviveauftr\u00e4ge");
reviveTaskMenu.SetRightLabel(rP + reviveTaskCount)
factionInteractionMenu.AddItem(reviveTaskMenu);
healTaskMenu = new UIMenuItem("Healauftr\u00e4ge"); ticketTaskMenuLSPD = new UIMenuItem("Ticket ausstellen", "Einem Spieler ein Strafticket ausstellen.");
healTaskMenu.SetRightLabel(hP + healTaskCount) factionInteractionMenu.AddItem(ticketTaskMenuLSPD);
factionInteractionMenu.AddItem(healTaskMenu);
fireTaskMenu = new UIMenuItem("Feuerauftr\u00e4ge"); pointsTaskMenuLSPD = new UIMenuItem("Strafpunkte verteilen", "Einem Spieler Strafpunkte verteilen.");
fireTaskMenu.SetRightLabel(fP + fireTaskCount) factionInteractionMenu.AddItem(pointsTaskMenuLSPD);
factionInteractionMenu.AddItem(fireTaskMenu);
break; /*TaskMenuLSPD = new UIMenuItem("");
TaskMenuLSPD.SetRightLabel("");
factionInteractionMenu.AddItem(TaskMenuLSPD);*/ //weiteres
} }
} }
let cancelItem = new UIMenuItem("Schlie\u00dfen", "Schlie\u00dft die Fraktionsinteraktion"); let cancelItem = new UIMenuItem("Schlie\u00dfen", "Schlie\u00dft die Fraktionsinteraktion.");
cancelItem.BackColor = new Color(213, 0, 0); cancelItem.BackColor = new Color(213, 0, 0);
cancelItem.HighlightedBackColor = new Color(229, 57, 53); cancelItem.HighlightedBackColor = new Color(229, 57, 53);
factionInteractionMenu.AddItem(cancelItem); factionInteractionMenu.AddItem(cancelItem);
@@ -82,11 +82,29 @@ export default function factionInteraction(globalData: IGlobalData) {
mp.gui.chat.activate(true); mp.gui.chat.activate(true);
globalData.InMenu = false; globalData.InMenu = false;
break; break;
case reviveTaskMenu:
mp.events.callRemote("loadMedicTasks", 0) case ticketTaskMenuLSPD:
factionInteractionMenu.Visible = false; factionInteractionMenu.Visible = false;
mp.gui.chat.activate(true); mp.gui.chat.activate(true);
mp.gui.cursor.show(true, true);
globalData.InMenu = false; globalData.InMenu = false;
var input = new InputHelper("Welchem Spieler möchtest du ein Ticket geben (Name / ID)?", globalData);
input.show();
input.getValue(name => {
mp.events.call("CLIENT:InteractionMenu_LSPD_Ticket", name);
mp.gui.cursor.show(false, false);
});
break;
case pointsTaskMenuLSPD:
factionInteractionMenu.Visible = false;
mp.gui.chat.activate(true);
mp.gui.cursor.show(true, true);
globalData.InMenu = false;
var input = new InputHelper("Welchem Spieler möchtest du Strafpunkte geben (Name / ID)?", globalData);
input.show();
input.getValue(name => {
mp.events.call("CLIENT:InteractionMenu_LSPD_Points", name);
});
break; break;
} }
}); });
@@ -96,164 +114,273 @@ export default function factionInteraction(globalData: IGlobalData) {
globalData.InMenu = false; globalData.InMenu = false;
}); });
}); });
mp.events.add("CLIENT:InteractionMenu_LSPD_Ticket", (name) => {
ticketName = name;
var input = new InputHelper("Wie hoch soll der Ticketbetrag sein ?", globalData);
mp.gui.cursor.show(true, true);
input.show();
input.getValue(amount => {
mp.events.call("CLIENT:InteractionMenu_LSPD_Ticket2", amount);
mp.gui.cursor.show(false, false);
});
});
mp.events.add("CLIENT:InteractionMenu_LSPD_Ticket2", (ticketPrice) => {
var input = new InputHelper("Um welches Vergehen handelt es sich ?", globalData);
mp.gui.cursor.show(true, true);
input.show();
input.getValue(ticketReason => {
mp.events.callRemote("CLIENT:InteractionMenu_LSPD_Ticket3", JSON.stringify(ticketName), JSON.stringify(ticketPrice), JSON.stringify(ticketReason));
mp.gui.cursor.show(false, false);
});
});
mp.events.add("showMedicTasks", (type, taskList) => { mp.events.add("CLIENT:InteractionMenu_LSPD_Points", (name) => {
tasks = JSON.parse(taskList); pointsName = name;
if (sorting === 0) { var input = new InputHelper("Wieviele Punkte werden vergeben ?", globalData);
initTasks = tasks; mp.gui.cursor.show(true, true);
} input.show();
input.getValue(amount => {
mp.events.call("CLIENT:InteractionMenu_LSPD_Points2", amount);
mp.gui.cursor.show(false, false);
});
});
mp.events.call("sortFactionTasks", false); mp.events.add("CLIENT:InteractionMenu_LSPD_Points2", (pointsAmount) => {
var input = new InputHelper("Um welches Vergehen handelt es sich ?", globalData);
mp.gui.cursor.show(true, true);
input.show();
input.getValue(pointsReason => {
mp.events.callRemote("CLIENT:InteractionMenu_LSPD_Points3", JSON.stringify(pointsName), JSON.stringify(pointsAmount), JSON.stringify(pointsReason));
mp.gui.cursor.show(false, false);
});
});
mp.gui.chat.activate(false); mp.events.add("showFactionInteractionMedic", (userFactionId, isDuty, userFactionName, isFactionLeader, reviveTaskCountMedic, healTaskCountMedic, fireTaskCountMedic) => {
globalData.InMenu = true; mp.gui.chat.activate(false);
switch (type) { globalData.InMenu = true;
case 0:
reviveTaskMenu = new Menu("Revives", "\u00c4lteste zu erst", new Point(0, screenRes.y / 2), null, null);
let aTask;
for (var i = 0; i < tasks.length; i++) {
if (tasks[i].MedicName === "none") {
aTask = new UIMenuItem("~g~" + tasks[i].Victim);
} else {
aTask = new UIMenuItem("~r~" + tasks[i].Victim);
}
aTask.SetRightLabel(mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, tasks[i].Position.x, tasks[i].Position.y, tasks[i].Position.z, true).toFixed(2).toString() + " ~g~m"); //Medic
reviveTaskMenu.AddItem(aTask); var rPM = ((reviveTaskCountMedic === "0") ? "~r~" : "~g~");
var hPM = ((healTaskCountMedic === "0") ? "~r~" : "~g~");
var fPM = ((fireTaskCountMedic === "0") ? "~r~" : "~g~");
factionInteractionMenu = new Menu("Fraktionsinteraktion", userFactionName, new Point(0, screenRes.y / 2), null, null);
if (isFactionLeader) {
let leaderMenu = new UIMenuItem("Leadermen\u00fc", "Verwaltung der Fraktion");
leaderMenu.SetRightBadge(BadgeStyle.Star);
factionInteractionMenu.AddItem(leaderMenu);
} }
let backItem = new UIMenuItem("Zur\u00fcck", "Zur\u00fcck zur Fraktionsinteraktion"); //Medic
backItem.BackColor = new Color(213, 0, 0); let reviveTaskMenuMedic;
backItem.HighlightedBackColor = new Color(229, 57, 53); let healTaskMenuMedic;
reviveTaskMenu.AddItem(backItem); let fireTaskMenuMedic;
reviveTaskMenu.ItemSelect.on((item, index) => { if (userFactionId == 2) {
if (item === backItem) { if (isDuty) {
reviveTaskMenu.Visible = false; reviveTaskMenuMedic = new UIMenuItem("Reviveauftr\u00e4ge");
factionInteractionMenu.Visible = true; reviveTaskMenuMedic.SetRightLabel(rPM + reviveTaskCountMedic)
} else { factionInteractionMenu.AddItem(reviveTaskMenuMedic);
if (tasks[index].MedicName === "none") {
mp.game.graphics.requestStreamedTextureDict("medicimages", true); healTaskMenuMedic = new UIMenuItem("Healauftr\u00e4ge");
mp.events.callRemote("updateMedicTask", 0, index, player.name); healTaskMenuMedic.SetRightLabel(hPM + healTaskCountMedic)
mp.game.ui.setNewWaypoint(tasks[index].Position.x, tasks[index].Position.y); factionInteractionMenu.AddItem(healTaskMenuMedic);
activeCheckpoint = mp.markers.new(1, new mp.Vector3(tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z - 2), 3.0, {
color: [255, 0, 0, 150], fireTaskMenuMedic = new UIMenuItem("Feuerauftr\u00e4ge");
visible: true, fireTaskMenuMedic.SetRightLabel(fPM + fireTaskCountMedic);
dimension: 0 factionInteractionMenu.AddItem(fireTaskMenuMedic);
});
reviveTaskMenu.Visible = false; }
}
let cancelItem = new UIMenuItem("Schlie\u00dfen", "Schlie\u00dft die Fraktionsinteraktion.");
cancelItem.BackColor = new Color(213, 0, 0);
cancelItem.HighlightedBackColor = new Color(229, 57, 53);
factionInteractionMenu.AddItem(cancelItem);
factionInteractionMenu.Visible = true;
factionInteractionMenu.ItemSelect.on((item) => {
switch (item) {
case cancelItem:
factionInteractionMenu.Visible = false;
mp.gui.chat.activate(true); mp.gui.chat.activate(true);
globalData.InMenu = false; globalData.InMenu = false;
ambulanceImagePos = 0.325 break;
taskStart = player.position; case reviveTaskMenuMedic:
taskFinish = tasks[index].Position; mp.events.callRemote("loadMedicTasks", 0)
taskRange = mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z, true); factionInteractionMenu.Visible = false;
activeTask = true; mp.gui.chat.activate(true);
} globalData.InMenu = false;
break;
} }
}); });
reviveTaskMenu.MenuClose.on(() => { factionInteractionMenu.MenuClose.on(() => {
reviveTaskMenu.Visible = false; mp.gui.chat.activate(true);
factionInteractionMenu.Visible = true; globalData.InMenu = false;
}); });
break; });
case 1:
break;
case 2:
break;
}
});
mp.events.add("sortFactionTasks", (sortByKey) => {
if (firstSorting) { mp.events.add("showMedicTasks", (type, taskList) => {
sortText = "Nach Uhrzeit"; tasks = JSON.parse(taskList);
firstSorting = false; if (sorting === 0) {
//mp.gui.chat.push("Init Sort"); initTasks = tasks;
return;
} else {
if (sortByKey) {
if (sorting < 1) {
sorting++;
} else {
sorting = 0;
} }
switch (sorting) { mp.events.call("sortFactionTasks", false);
case 0: //Standartsortierung
reviveTaskMenu.Close(); mp.gui.chat.activate(false);
factionInteractionMenu.Close(); globalData.InMenu = true;
sortText = "Nach Uhrzeit"; switch (type) {
mp.events.call("showMedicTasks", 0, JSON.stringify(initTasks)); case 0:
break; reviveTaskMenuMedic = new Menu("Revives", "\u00c4lteste zu erst", new Point(0, screenRes.y / 2), null, null);
let aTask;
for (var i = 0; i < tasks.length; i++) {
if (tasks[i].MedicName === "none") {
aTask = new UIMenuItem("~g~" + tasks[i].Victim);
} else {
aTask = new UIMenuItem("~r~" + tasks[i].Victim);
}
case 1: //Sortierung nach Metern (aufsteigend) aTask.SetRightLabel(mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, tasks[i].Position.x, tasks[i].Position.y, tasks[i].Position.z, true).toFixed(2).toString() + " ~g~m");
for (var d = 0; d < tasks.length; d++) { reviveTaskMenuMedic.AddItem(aTask);
for (var e = 0; e < tasks.length - 1; e++) { }
if (getDistance1(e) > getDistance2(e + 1)) {
var tempTask = tasks[e]; let backItem = new UIMenuItem("Zur\u00fcck", "Zur\u00fcck zur Fraktionsinteraktion.");
tasks[e] = tasks[e + 1]; backItem.BackColor = new Color(213, 0, 0);
tasks[e + 1] = tempTask; backItem.HighlightedBackColor = new Color(229, 57, 53);
mp.gui.chat.push("SWITCH"); reviveTaskMenuMedic.AddItem(backItem);
reviveTaskMenuMedic.ItemSelect.on((item, index) => {
if (item === backItem) {
reviveTaskMenuMedic.Visible = false;
factionInteractionMenu.Visible = true;
} else {
if (tasks[index].MedicName === "none") {
mp.game.graphics.requestStreamedTextureDict("medicimages", true);
mp.events.callRemote("updateMedicTask", 0, index, player.name);
mp.game.ui.setNewWaypoint(tasks[index].Position.x, tasks[index].Position.y);
activeCheckpoint = mp.markers.new(1, new mp.Vector3(tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z - 2), 3.0, {
color: [255, 0, 0, 150],
visible: true,
dimension: 0
});
reviveTaskMenuMedic.Visible = false;
mp.gui.chat.activate(true);
globalData.InMenu = false;
ambulanceImagePos = 0.325
taskStart = player.position;
taskFinish = tasks[index].Position;
taskRange = mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z, true);
activeTask = true;
} }
} }
} });
reviveTaskMenu.Close();
factionInteractionMenu.Close(); reviveTaskMenuMedic.MenuClose.on(() => {
sortText = "Entfernung aufsteigend"; reviveTaskMenuMedic.Visible = false;
mp.events.call("showMedicTasks", 0, JSON.stringify(tasks)); factionInteractionMenu.Visible = true;
});
break;
case 1:
break;
case 2:
break; break;
//case 2: //Sortierung nach Metern (absteigend)
// mp.gui.chat.push("Sorting 2");
// sortText = "Entfernung absteigend";
// break;
//case 3: //Sortierung nach Zeit (aufsteigend)
// mp.gui.chat.push("Sorting 3");
// sortText = "Restzeit aufsteigend";
// break;
//case 4: //Sortierung nach Zeit (absteigend)
// mp.gui.chat.push("Sorting 4");
// sortText = "Restzeit absteigend";
// break;
} }
} });
}
});
function getDistance1(index) { mp.events.add("sortFactionTasks", (sortByKey) => {
return mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, newTasks[index].Position.x, newTasks[index].Position.y, newTasks[index].Position.z, true).toFixed(2); if (firstSorting) {
} sortText = "Nach Uhrzeit";
function getDistance2(index) { firstSorting = false;
return mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, newTasks[index].Position.x, newTasks[index].Position.y, newTasks[index].Position.z, true).toFixed(2); //mp.gui.chat.push("Init Sort");
} return;
mp.events.add('render', () => {
if (activeTask) {
rangeLeft = mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, taskFinish.x, taskFinish.y, taskFinish.z, true).toFixed(2);
if (rangeLeft > 1.9) {
ambulanceImagePos = 0.655 - (mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, taskFinish.x, taskFinish.y, taskFinish.z, true) / taskRange * 0.35);
mp.game.graphics.drawRect(0.5, 0.945, 0.35, 0.025, 150, 0, 0, 200);
mp.game.graphics.drawText(rangeLeft.toString() + "m", [0.5, 0.93], {
font: 0,
color: [255, 255, 255, 255],
scale: [0.35, 0.35],
outline: true,
centre: true
});
if (taskRange < rangeLeft) ambulanceImagePos = 0.3;
mp.game.graphics.drawSprite("medicimages", "finish", 0.655, 0.898, 0.04, 0.07, 0, 255, 255, 255, 255);
if (player.isInAnyVehicle(false)) {
mp.game.graphics.drawSprite("medicimages", "ambulance", ambulanceImagePos + 0.01, 0.915, 0.04, 0.07, 0, 255, 255, 255, 255);
} else { } else {
mp.game.graphics.drawSprite("medicimages", "running", ambulanceImagePos + 0.02, 0.915, 0.02, 0.035, 0, 255, 0, 0, 255); if (sortByKey) {
if (sorting < 1) {
sorting++;
} else {
sorting = 0;
}
switch (sorting) {
case 0: //Standartsortierung
reviveTaskMenuMedic.Close();
factionInteractionMenu.Close();
sortText = "Nach Uhrzeit";
mp.events.call("showMedicTasks", 0, JSON.stringify(initTasks));
break;
case 1: //Sortierung nach Metern (aufsteigend)
for (var d = 0; d < tasks.length; d++) {
for (var e = 0; e < tasks.length - 1; e++) {
if (getDistance1(e) > getDistance2(e + 1)) {
var tempTask = tasks[e];
tasks[e] = tasks[e + 1];
tasks[e + 1] = tempTask;
mp.gui.chat.push("SWITCH");
}
}
}
reviveTaskMenuMedic.Close();
factionInteractionMenu.Close();
sortText = "Entfernung aufsteigend";
mp.events.call("showMedicTasks", 0, JSON.stringify(tasks));
break;
//case 2: //Sortierung nach Metern (absteigend)
// mp.gui.chat.push("Sorting 2");
// sortText = "Entfernung absteigend";
// break;
//case 3: //Sortierung nach Zeit (aufsteigend)
// mp.gui.chat.push("Sorting 3");
// sortText = "Restzeit aufsteigend";
// break;
//case 4: //Sortierung nach Zeit (absteigend)
// mp.gui.chat.push("Sorting 4");
// sortText = "Restzeit absteigend";
// break;
}
}
} }
} else { });
activeTask = false;
activeCheckpoint.destroy(); function getDistance1(index) {
return mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, newTasks[index].Position.x, newTasks[index].Position.y, newTasks[index].Position.z, true).toFixed(2);
} }
} function getDistance2(index) {
}); return mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, newTasks[index].Position.x, newTasks[index].Position.y, newTasks[index].Position.z, true).toFixed(2);
} }
mp.events.add('render', () => {
if (activeTask) {
rangeLeft = mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, taskFinish.x, taskFinish.y, taskFinish.z, true).toFixed(2);
if (rangeLeft > 1.9) {
ambulanceImagePos = 0.655 - (mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, taskFinish.x, taskFinish.y, taskFinish.z, true) / taskRange * 0.35);
mp.game.graphics.drawRect(0.5, 0.945, 0.35, 0.025, 150, 0, 0, 200);
mp.game.graphics.drawText(rangeLeft.toString() + "m", [0.5, 0.93], {
font: 0,
color: [255, 255, 255, 255],
scale: [0.35, 0.35],
outline: true,
centre: true
});
if (taskRange < rangeLeft) ambulanceImagePos = 0.3;
mp.game.graphics.drawSprite("medicimages", "finish", 0.655, 0.898, 0.04, 0.07, 0, 255, 255, 255, 255);
if (player.isInAnyVehicle(false)) {
mp.game.graphics.drawSprite("medicimages", "ambulance", ambulanceImagePos + 0.01, 0.915, 0.04, 0.07, 0, 255, 255, 255, 255);
} else {
mp.game.graphics.drawSprite("medicimages", "running", ambulanceImagePos + 0.02, 0.915, 0.02, 0.035, 0, 255, 0, 0, 255);
}
} else {
activeTask = false;
activeCheckpoint.destroy();
}
}
});
}

View File

@@ -31,6 +31,8 @@ export default function (globalData: IGlobalData) {
var vehiclesItem = new UIMenuItem("Fahrzeuge", "Zeige deine Fahrzeuge an"); var vehiclesItem = new UIMenuItem("Fahrzeuge", "Zeige deine Fahrzeuge an");
var ticketItem = new UIMenuItem("Ticket annehmen", "Strafticket annehmen");
mp.events.add("SERVER:InteractionMenu_OpenMenu", (accountDataJson: string, faction: string, group: string, factionInvite: boolean, groupInvite: boolean) => { mp.events.add("SERVER:InteractionMenu_OpenMenu", (accountDataJson: string, faction: string, group: string, factionInvite: boolean, groupInvite: boolean) => {
var accountData: AccountData = JSON.parse(accountDataJson); var accountData: AccountData = JSON.parse(accountDataJson);
@@ -44,7 +46,7 @@ export default function (globalData: IGlobalData) {
menu.BindMenuToItem(getAccountMenu(accountData), accountItem); menu.BindMenuToItem(getAccountMenu(accountData), accountItem);
menu.AddItem(licenseItem); menu.AddItem(licenseItem);
menu.BindMenuToItem(getLicenseMenu(accountData.licenses, menu), licenseItem); menu.BindMenuToItem(getLicenseMenu(accountData, accountData.licenses, menu), licenseItem);
var vehicles = accountData.vehicles; var vehicles = accountData.vehicles;
if (vehicles.length > 0) { if (vehicles.length > 0) {
@@ -165,7 +167,7 @@ export default function (globalData: IGlobalData) {
return accountMenu; return accountMenu;
} }
function getLicenseMenu(data: Licenses, parentMenu: NativeUI.Menu): NativeUI.Menu { function getLicenseMenu(accdata: AccountData, data: Licenses, parentMenu: NativeUI.Menu, ): NativeUI.Menu {
var licenseMenu = new NativeUI.Menu("Lizenzen", mp.players.local.name, new Point(50, 50), null, null); var licenseMenu = new NativeUI.Menu("Lizenzen", mp.players.local.name, new Point(50, 50), null, null);
var menuItem = new UIMenuItem("Auto Führerschein"); var menuItem = new UIMenuItem("Auto Führerschein");
@@ -198,6 +200,17 @@ export default function (globalData: IGlobalData) {
} else if (data.weaponLicense == true) { } else if (data.weaponLicense == true) {
menuItem.SetRightLabel("~g~erhalten"); menuItem.SetRightLabel("~g~erhalten");
} }
menuItem = new UIMenuItem("Strafpunkte");
if (accdata.points == 0) {
menuItem.SetRightLabel("~g~" + accdata.points);
}
else if (accdata.points >= 1 && accdata.points <= 5) {
menuItem.SetRightLabel("~y~" + accdata.points);
}
if (accdata.points > 5) {
menuItem.SetRightLabel("~r~" + accdata.points);
}
licenseMenu.AddItem(menuItem); licenseMenu.AddItem(menuItem);
licenseMenu.AddItem(new UIMenuItem("Lizenzen an Spieler zeigen")); licenseMenu.AddItem(new UIMenuItem("Lizenzen an Spieler zeigen"));

View File

@@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework> <TargetFramework>netcoreapp3.1</TargetFramework>
<ApplicationIcon /> <ApplicationIcon />
<StartupObject /> <StartupObject />
<Configurations>Debug;Release;ServerBuild</Configurations> <Configurations>Debug;Release;ServerBuild</Configurations>

View File

@@ -9,6 +9,7 @@
declare type AccountData = { declare type AccountData = {
regDate: string; regDate: string;
points: number;
adminLevel: string; adminLevel: string;
faction: string; faction: string;
factionRank: string; factionRank: string;

View File

@@ -344,9 +344,9 @@
"dev": true "dev": true
}, },
"acorn": { "acorn": {
"version": "6.2.1", "version": "6.4.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.1.tgz", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz",
"integrity": "sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q==", "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==",
"dev": true "dev": true
}, },
"ajv": { "ajv": {
@@ -607,6 +607,16 @@
"integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
"dev": true "dev": true
}, },
"bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
"dev": true,
"optional": true,
"requires": {
"file-uri-to-path": "1.0.0"
}
},
"bluebird": { "bluebird": {
"version": "3.5.5", "version": "3.5.5",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz",
@@ -765,9 +775,9 @@
"dev": true "dev": true
}, },
"cacache": { "cacache": {
"version": "12.0.3", "version": "12.0.4",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
"integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"bluebird": "^3.5.5", "bluebird": "^3.5.5",
@@ -822,9 +832,9 @@
} }
}, },
"chokidar": { "chokidar": {
"version": "2.1.6", "version": "2.1.8",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
"integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
"dev": true, "dev": true,
"requires": { "requires": {
"anymatch": "^2.0.0", "anymatch": "^2.0.0",
@@ -1026,9 +1036,9 @@
}, },
"dependencies": { "dependencies": {
"cacache": { "cacache": {
"version": "12.0.3", "version": "12.0.4",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
"integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"bluebird": "^3.5.5", "bluebird": "^3.5.5",
@@ -1555,6 +1565,13 @@
"integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
"dev": true "dev": true
}, },
"file-uri-to-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
"dev": true,
"optional": true
},
"fill-range": { "fill-range": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
@@ -1664,14 +1681,15 @@
"dev": true "dev": true
}, },
"fsevents": { "fsevents": {
"version": "1.2.9", "version": "1.2.12",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz",
"integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
"bindings": "^1.5.0",
"nan": "^2.12.1", "nan": "^2.12.1",
"node-pre-gyp": "^0.12.0" "node-pre-gyp": "*"
}, },
"dependencies": { "dependencies": {
"abbrev": { "abbrev": {
@@ -1719,7 +1737,7 @@
} }
}, },
"chownr": { "chownr": {
"version": "1.1.1", "version": "1.1.4",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true "optional": true
@@ -1749,7 +1767,7 @@
"optional": true "optional": true
}, },
"debug": { "debug": {
"version": "4.1.1", "version": "3.2.6",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true, "optional": true,
@@ -1776,12 +1794,12 @@
"optional": true "optional": true
}, },
"fs-minipass": { "fs-minipass": {
"version": "1.2.5", "version": "1.2.7",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
"minipass": "^2.2.1" "minipass": "^2.6.0"
} }
}, },
"fs.realpath": { "fs.realpath": {
@@ -1807,7 +1825,7 @@
} }
}, },
"glob": { "glob": {
"version": "7.1.3", "version": "7.1.6",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true, "optional": true,
@@ -1836,7 +1854,7 @@
} }
}, },
"ignore-walk": { "ignore-walk": {
"version": "3.0.1", "version": "3.0.3",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true, "optional": true,
@@ -1855,7 +1873,7 @@
} }
}, },
"inherits": { "inherits": {
"version": "2.0.3", "version": "2.0.4",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true "optional": true
@@ -1891,13 +1909,13 @@
} }
}, },
"minimist": { "minimist": {
"version": "0.0.8", "version": "1.2.5",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"minipass": { "minipass": {
"version": "2.3.5", "version": "2.9.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true, "optional": true,
@@ -1907,42 +1925,42 @@
} }
}, },
"minizlib": { "minizlib": {
"version": "1.2.1", "version": "1.3.3",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
"minipass": "^2.2.1" "minipass": "^2.9.0"
} }
}, },
"mkdirp": { "mkdirp": {
"version": "0.5.1", "version": "0.5.3",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
"minimist": "0.0.8" "minimist": "^1.2.5"
} }
}, },
"ms": { "ms": {
"version": "2.1.1", "version": "2.1.2",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"needle": { "needle": {
"version": "2.3.0", "version": "2.3.3",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
"debug": "^4.1.0", "debug": "^3.2.6",
"iconv-lite": "^0.4.4", "iconv-lite": "^0.4.4",
"sax": "^1.2.4" "sax": "^1.2.4"
} }
}, },
"node-pre-gyp": { "node-pre-gyp": {
"version": "0.12.0", "version": "0.14.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true, "optional": true,
@@ -1956,11 +1974,11 @@
"rc": "^1.2.7", "rc": "^1.2.7",
"rimraf": "^2.6.1", "rimraf": "^2.6.1",
"semver": "^5.3.0", "semver": "^5.3.0",
"tar": "^4" "tar": "^4.4.2"
} }
}, },
"nopt": { "nopt": {
"version": "4.0.1", "version": "4.0.3",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true, "optional": true,
@@ -1970,19 +1988,29 @@
} }
}, },
"npm-bundled": { "npm-bundled": {
"version": "1.0.6", "version": "1.1.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"npm-normalize-package-bin": "^1.0.1"
}
},
"npm-normalize-package-bin": {
"version": "1.0.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"npm-packlist": { "npm-packlist": {
"version": "1.4.1", "version": "1.4.8",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
"ignore-walk": "^3.0.1", "ignore-walk": "^3.0.1",
"npm-bundled": "^1.0.1" "npm-bundled": "^1.0.1",
"npm-normalize-package-bin": "^1.0.1"
} }
}, },
"npmlog": { "npmlog": {
@@ -2047,7 +2075,7 @@
"optional": true "optional": true
}, },
"process-nextick-args": { "process-nextick-args": {
"version": "2.0.0", "version": "2.0.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true "optional": true
@@ -2062,18 +2090,10 @@
"ini": "~1.3.0", "ini": "~1.3.0",
"minimist": "^1.2.0", "minimist": "^1.2.0",
"strip-json-comments": "~2.0.1" "strip-json-comments": "~2.0.1"
},
"dependencies": {
"minimist": {
"version": "1.2.0",
"bundled": true,
"dev": true,
"optional": true
}
} }
}, },
"readable-stream": { "readable-stream": {
"version": "2.3.6", "version": "2.3.7",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true, "optional": true,
@@ -2088,7 +2108,7 @@
} }
}, },
"rimraf": { "rimraf": {
"version": "2.6.3", "version": "2.7.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true, "optional": true,
@@ -2115,7 +2135,7 @@
"optional": true "optional": true
}, },
"semver": { "semver": {
"version": "5.7.0", "version": "5.7.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true "optional": true
@@ -2168,18 +2188,18 @@
"optional": true "optional": true
}, },
"tar": { "tar": {
"version": "4.4.8", "version": "4.4.13",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
"chownr": "^1.1.1", "chownr": "^1.1.1",
"fs-minipass": "^1.2.5", "fs-minipass": "^1.2.5",
"minipass": "^2.3.4", "minipass": "^2.8.6",
"minizlib": "^1.1.1", "minizlib": "^1.2.1",
"mkdirp": "^0.5.0", "mkdirp": "^0.5.0",
"safe-buffer": "^5.1.2", "safe-buffer": "^5.1.2",
"yallist": "^3.0.2" "yallist": "^3.0.3"
} }
}, },
"util-deprecate": { "util-deprecate": {
@@ -2204,7 +2224,7 @@
"optional": true "optional": true
}, },
"yallist": { "yallist": {
"version": "3.0.3", "version": "3.1.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true "optional": true
@@ -2694,9 +2714,9 @@
} }
}, },
"kind-of": { "kind-of": {
"version": "6.0.2", "version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
"integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true "dev": true
}, },
"lcid": { "lcid": {
@@ -2892,9 +2912,9 @@
} }
}, },
"minimist": { "minimist": {
"version": "1.2.0", "version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true "dev": true
}, },
"mississippi": { "mississippi": {
@@ -2937,20 +2957,12 @@
} }
}, },
"mkdirp": { "mkdirp": {
"version": "0.5.1", "version": "0.5.5",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"minimist": "0.0.8" "minimist": "^1.2.5"
},
"dependencies": {
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true
}
} }
}, },
"move-concurrently": { "move-concurrently": {
@@ -4025,9 +4037,9 @@
}, },
"dependencies": { "dependencies": {
"cacache": { "cacache": {
"version": "12.0.3", "version": "12.0.4",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
"integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"bluebird": "^3.5.5", "bluebird": "^3.5.5",
@@ -4323,9 +4335,9 @@
} }
}, },
"upath": { "upath": {
"version": "1.1.2", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
"integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
"dev": true "dev": true
}, },
"uri-js": { "uri-js": {
@@ -4409,12 +4421,12 @@
"dev": true "dev": true
}, },
"watchpack": { "watchpack": {
"version": "1.6.0", "version": "1.6.1",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz",
"integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==",
"dev": true, "dev": true,
"requires": { "requires": {
"chokidar": "^2.0.2", "chokidar": "^2.1.8",
"graceful-fs": "^4.1.2", "graceful-fs": "^4.1.2",
"neo-async": "^2.5.0" "neo-async": "^2.5.0"
} }

View File

@@ -99,6 +99,7 @@ namespace ReallifeGamemode.Database.Entities
public bool WeaponLicense { get; set; } = false; public bool WeaponLicense { get; set; } = false;
public bool IsAdmin(AdminLevel level) => AdminLevel >= level; public bool IsAdmin(AdminLevel level) => AdminLevel >= level;
public int Points { get; set; }
[NotMapped] [NotMapped]
public Player Player public Player Player

Binary file not shown.

View File

@@ -1,4 +1,4 @@
using GTANetworkAPI; using GTANetworkAPI;
using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models; using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Extensions;

View File

@@ -98,9 +98,13 @@ namespace ReallifeGamemode.Server.Events
User user = player.GetUser(); User user = player.GetUser();
switch (user.FactionId) switch (user.FactionId)
{ {
//LSFD //LSPD
case 1:
player.TriggerEvent("showFactionInteractionLSPD", user.FactionId, user.GetData<bool>("duty"), user.Faction.Name, user.FactionLeader);
break;
//Medic
case 2: case 2:
player.TriggerEvent("showFactionInteraction", user.FactionId, user.GetData<bool>("duty"), user.Faction.Name, user.FactionLeader, Medic.ReviveTasks.Count.ToString(), Medic.HealTasks.Count.ToString(), Medic.FireTasks.Count.ToString()); player.TriggerEvent("showFactionInteractionMedic", user.FactionId, user.GetData<bool>("duty"), user.Faction.Name, user.FactionLeader, Medic.ReviveTasks.Count.ToString(), Medic.HealTasks.Count.ToString(), Medic.FireTasks.Count.ToString());
break; break;
} }
} }
@@ -127,6 +131,7 @@ namespace ReallifeGamemode.Server.Events
{ {
regDate = u.RegistrationDate.ToShortDateString(), regDate = u.RegistrationDate.ToShortDateString(),
adminLevel = u.AdminLevel.GetName(), adminLevel = u.AdminLevel.GetName(),
points = u.Points,
faction = u.Faction?.Name ?? "Zivilist", faction = u.Faction?.Name ?? "Zivilist",
factionRank = u.GetFactionRank().RankName, factionRank = u.GetFactionRank().RankName,
group = u.Group?.Name ?? "Keine", group = u.Group?.Name ?? "Keine",

View File

@@ -378,6 +378,7 @@ namespace ReallifeGamemode.Server.Managers
string reason = (string)JsonConvert.DeserializeObject(jsonReason); string reason = (string)JsonConvert.DeserializeObject(jsonReason);
Player target = PlayerService.GetPlayerByNameOrId(nameOrId); Player target = PlayerService.GetPlayerByNameOrId(nameOrId);
string playername = NAPI.Player.GetPlayerName(player); string playername = NAPI.Player.GetPlayerName(player);
string targetname = NAPI.Player.GetPlayerName(target); string targetname = NAPI.Player.GetPlayerName(target);
player.SendNotification($"~w~Du hast ~y~{targetname} ~w~ein Ticket in Höhe von ~b~{amount}$ ~w~gestellt. Grund: ~g~{reason}~w~."); player.SendNotification($"~w~Du hast ~y~{targetname} ~w~ein Ticket in Höhe von ~b~{amount}$ ~w~gestellt. Grund: ~g~{reason}~w~.");
target.SendNotification($"~b~{player.GetUser().FactionRank.RankName} | {playername} ~w~hat dir ein Ticket in Höhe von ~y~{amount}$ ~w~gestellt.", true); target.SendNotification($"~b~{player.GetUser().FactionRank.RankName} | {playername} ~w~hat dir ein Ticket in Höhe von ~y~{amount}$ ~w~gestellt.", true);

View File

@@ -25,6 +25,7 @@
<PackageReference Include="System.Runtime" Version="4.3.1" /> <PackageReference Include="System.Runtime" Version="4.3.1" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="Factions\LSPD\" />
<Folder Include="Properties\" /> <Folder Include="Properties\" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>