685 lines
28 KiB
TypeScript
685 lines
28 KiB
TypeScript
import * as NativeUI from '../libs/NativeUI';
|
|
import InputHelper from '../inputhelper';
|
|
import moneyFormat from '../moneyformat';
|
|
|
|
const Menu = NativeUI.Menu;
|
|
const UIMenuItem = NativeUI.UIMenuItem;
|
|
const UIMenuListItem = NativeUI.UIMenuListItem;
|
|
const UIMenuCheckboxItem = NativeUI.UIMenuCheckboxItem;
|
|
const BadgeStyle = NativeUI.BadgeStyle;
|
|
const Point = NativeUI.Point;
|
|
const ItemsCollection = NativeUI.ItemsCollection;
|
|
const Color = NativeUI.Color;
|
|
let screenRes = mp.game.graphics.getScreenResolution(0, 0);
|
|
import { getStreetName, getZoneName } from '../streetnames';
|
|
|
|
export default function (globalData: IGlobalData) {
|
|
var menuClose = false;
|
|
|
|
var accountItem = new UIMenuItem("Account", "Account Informationen");
|
|
|
|
var serviceItem = new UIMenuItem("Service rufen", "Rufe einen Dienstleister an");
|
|
|
|
var factionItem = new UIMenuItem("Fraktion", "Fraktionsfahrzeuge finden");
|
|
|
|
var factionleaderItem = new UIMenuItem("Fraktion", "Fraktion verwalten");
|
|
|
|
var groupItem = new UIMenuItem("Gruppe", "Verwalte deine Gruppe");
|
|
|
|
var jobItem = new UIMenuItem("Job", "Infos zu deinem Job");
|
|
|
|
var paycheckItem = new UIMenuItem("Gehaltsscheck", "Schaue dir deinen Verdienst der letzten Stunde an");
|
|
|
|
var licenseItem = new UIMenuItem("Lizenzen", "Lizenzen Informationen");
|
|
|
|
var vehiclesItem = new UIMenuItem("Fahrzeuge", "Fahrzeuge verwalten");
|
|
|
|
var HouseItem = new UIMenuItem("Haus", "Finde dein Haus");
|
|
|
|
var ticketItem = new UIMenuItem("Strafticket", "Strafticket annehmen/ablehnen");
|
|
|
|
var payName: string;
|
|
|
|
var groupRank = null;
|
|
|
|
mp.events.add("SERVER:InteractionMenu_OpenMenu", (accountDataJson: string, factionleader: string, members: string, jobDataJson: string, faction: string, group: string, factionInvite: boolean, groupInvite: boolean, ticket_boolean: boolean, ticket_amount, house: boolean) => {
|
|
var accountData: AccountData = JSON.parse(accountDataJson);
|
|
var jobData: JobData = JSON.parse(jobDataJson);
|
|
var memberList: FactionMember[] = JSON.parse(members)
|
|
//var ticket_amount = JSON.parse(ticket_amountJson);
|
|
|
|
var menu = getInteractionMenu();
|
|
|
|
var serviceMenu = getServicesMenu(menu);
|
|
menu.AddItem(serviceItem);
|
|
menu.BindMenuToItem(serviceMenu, serviceItem);
|
|
|
|
menu.AddItem(accountItem);
|
|
menu.BindMenuToItem(getAccountMenu(accountData), accountItem);
|
|
|
|
menu.AddItem(licenseItem);
|
|
menu.BindMenuToItem(getLicenseMenu(accountData, accountData.licenses, menu), licenseItem);
|
|
|
|
groupRank = accountData.groupRank;
|
|
|
|
var vehicles = accountData.vehicles;
|
|
if (vehicles.length > 0) {
|
|
menu.AddItem(vehiclesItem);
|
|
menu.BindMenuToItem(getVehiclesMenu(vehicles, "CLIENT:InteractionMenu_PlayerVehicleInteraction", true, menu), vehiclesItem);
|
|
}
|
|
|
|
if (faction && !factionleader && faction != "Zivilist") {
|
|
factionItem.SetRightLabel(faction);
|
|
menu.AddItem(factionItem);
|
|
menu.BindMenuToItem(getFactionMenu(faction, accountData.factionVehicles, memberList, accountData.stateFaction, menu), factionItem);
|
|
}
|
|
if (faction && factionleader) {
|
|
factionleaderItem.SetRightLabel(factionleader);
|
|
menu.AddItem(factionleaderItem);
|
|
menu.BindMenuToItem(getFactionLeaderMenu(faction, accountData.factionVehicles, memberList, accountData.stateFaction, menu), factionleaderItem);
|
|
}
|
|
menu.AddItem(jobItem);
|
|
menu.BindMenuToItem(getJobMenu(jobData, menu), jobItem);
|
|
|
|
if (group) {
|
|
groupItem.SetRightLabel(group);
|
|
menu.AddItem(groupItem);
|
|
menu.BindMenuToItem(getGroupMenu(group, menu), groupItem);
|
|
}
|
|
menu.AddItem(HouseItem);
|
|
|
|
if (accountData.paycheck) {
|
|
var p = accountData.paycheck;
|
|
var paycheckMenu = new Menu("Gehaltsscheck", "Dein Verdienst der letzten Stunde", new Point(0, screenRes.y / 3), null, null);
|
|
paycheckMenu.Visible = false;
|
|
|
|
var item: NativeUI.UIMenuItem = new UIMenuItem("Lohn");
|
|
item.SetRightLabel("~g~+ $" + moneyFormat(p.wage));
|
|
paycheckMenu.AddItem(item);
|
|
|
|
item = new UIMenuItem("Sonstige Einkünfte");
|
|
item.SetRightLabel("~g~+ $" + moneyFormat(Number(p.otheramount.toFixed(2))));
|
|
paycheckMenu.AddItem(item);
|
|
|
|
item = new UIMenuItem("Finanzhilfe");
|
|
item.SetRightLabel("~g~+ $" + moneyFormat(Number(p.financialHelp.toFixed(2))));
|
|
paycheckMenu.AddItem(item);
|
|
|
|
if (p.factionMoney) {
|
|
item = new UIMenuItem("Fraktionsgeld");
|
|
item.SetRightLabel("~g~+ $" + moneyFormat(Number(p.factionMoney.toFixed(2))));
|
|
paycheckMenu.AddItem(item);
|
|
}
|
|
|
|
item = new UIMenuItem("Fahrzeugsteuer");
|
|
item.SetRightLabel("~r~- $" + moneyFormat(Number(p.vehicleTaxation.toFixed(2))));
|
|
paycheckMenu.AddItem(item);
|
|
|
|
item = new UIMenuItem("Grundsteuer");
|
|
item.SetRightLabel("~r~- $" + moneyFormat(Number(p.propertyTaxation.toFixed(2))));
|
|
paycheckMenu.AddItem(item);
|
|
|
|
item = new UIMenuItem("Mietkosten");
|
|
item.SetRightLabel("~r~- $" + moneyFormat(Number(p.rentalFees.toFixed(2))));
|
|
paycheckMenu.AddItem(item);
|
|
|
|
item = new UIMenuItem("Krankenkasse");
|
|
item.SetRightLabel("~r~- $" + moneyFormat(Number(p.healthInsurance.toFixed(2))));
|
|
paycheckMenu.AddItem(item);
|
|
|
|
item = new UIMenuItem("Rundfunkbeitrag");
|
|
item.SetRightLabel("~r~- $" + moneyFormat(Number(p.gez.toFixed(2))));
|
|
paycheckMenu.AddItem(item);
|
|
|
|
item = new UIMenuItem("Einkommensteuer");
|
|
|
|
item.SetRightLabel(moneyFormat(Number((p.financialInterest * 100).toFixed(3))) + "%");
|
|
paycheckMenu.AddItem(item);
|
|
|
|
item = new UIMenuItem("Gesamt");
|
|
if (p.amount >= 0) {
|
|
item.SetRightLabel("~g~+ $" + moneyFormat(Number(p.amount.toFixed(2))));
|
|
} else {
|
|
item.SetRightLabel("~r~- $" + moneyFormat(Number(p.amount.toFixed(2))));
|
|
}
|
|
item.BackColor = new Color(0, 0, 0);
|
|
item.HighlightedBackColor = new Color(0, 0, 0);
|
|
item.HighlightedForeColor = new Color(255, 255, 255);
|
|
paycheckMenu.AddItem(item)
|
|
|
|
menu.AddItem(paycheckItem);
|
|
menu.BindMenuToItem(paycheckMenu, paycheckItem);
|
|
}
|
|
|
|
var payItem = new UIMenuItem("Geld geben");
|
|
menu.AddItem(payItem);
|
|
|
|
var nextPaydayItem = new UIMenuItem("Nächster PayDay");
|
|
nextPaydayItem.SetRightLabel(`${accountData.nextPayday} Minuten`);
|
|
menu.AddItem(nextPaydayItem);
|
|
|
|
if (ticket_boolean == true) {
|
|
menu.AddItem(ticketItem);
|
|
menu.BindMenuToItem(getTicketMenu(ticket_amount, menu), ticketItem);
|
|
}
|
|
|
|
var items: Array<string> = new Array<string>();
|
|
if (factionInvite) items.push("Fraktion");
|
|
if (groupInvite) items.push("Gruppe");
|
|
var acceptItem: NativeUI.UIMenuListItem;
|
|
|
|
if (items.length !== 0) {
|
|
acceptItem = new UIMenuListItem("Einladung annehmen", "", new ItemsCollection(items));
|
|
menu.AddItem(acceptItem);
|
|
}
|
|
|
|
menu.Open();
|
|
globalData.InMenu = true;
|
|
mp.gui.chat.show(false);
|
|
menu.ItemSelect.on((item: NativeUI.UIMenuItem, index: number) => {
|
|
if (item === acceptItem) {
|
|
mp.events.callRemote("CLIENT:InteractionMenu_AcceptInvite", acceptItem.SelectedValue);
|
|
menu.Close(true);
|
|
globalData.InMenu = false;
|
|
} else if (item === payItem) {
|
|
mp.gui.chat.activate(true);
|
|
mp.gui.cursor.show(true, true);
|
|
var input = new InputHelper("Welchem Spieler möchtest du Geld geben?", globalData);
|
|
input.show();
|
|
input.getValue(name => {
|
|
mp.events.call("CLIENT:InteractionMenu_Pay_Name", name);
|
|
mp.gui.cursor.show(false, false);
|
|
menu.Close(true);
|
|
globalData.InMenu = false;
|
|
});
|
|
} else if (item == HouseItem) {
|
|
mp.events.callRemote("CLIENT:InteractionMenu_FindHouse");
|
|
mp.gui.cursor.show(false, false);
|
|
menu.Close(true);
|
|
globalData.InMenu = false;
|
|
}
|
|
});
|
|
|
|
menu.MenuClose.on(() => {
|
|
globalData.InMenu = false;
|
|
mp.gui.chat.show(true);
|
|
})
|
|
});
|
|
|
|
function getInteractionMenu(): NativeUI.Menu {
|
|
return new Menu("Hauptmenü", "Interaktionen | " + mp.players.local.name, new Point(0, screenRes.y / 3), null, null);
|
|
}
|
|
|
|
function getAccountMenu(data: AccountData): NativeUI.Menu {
|
|
var accountMenu = new NativeUI.Menu("Account", mp.players.local.name, new Point(0, screenRes.y / 3), null, null);
|
|
|
|
var menuItem = new UIMenuItem("Fraktion");
|
|
menuItem.SetRightLabel(data.faction);
|
|
accountMenu.AddItem(menuItem);
|
|
|
|
if (data.faction != "Zivilist") {
|
|
menuItem = new UIMenuItem("Fraktionsrang");
|
|
menuItem.SetRightLabel(data.factionRank);
|
|
accountMenu.AddItem(menuItem);
|
|
}
|
|
|
|
if (data.group != null) {
|
|
menuItem = new UIMenuItem("Gruppe");
|
|
menuItem.SetRightLabel(data.group);
|
|
accountMenu.AddItem(menuItem);
|
|
menuItem = new UIMenuItem("Gruppenrang");
|
|
menuItem.SetRightLabel(data.groupRank);
|
|
accountMenu.AddItem(menuItem);
|
|
}
|
|
|
|
menuItem = new UIMenuItem("Registrierungsdatum");
|
|
menuItem.SetRightLabel(data.regDate);
|
|
accountMenu.AddItem(menuItem);
|
|
|
|
menuItem = new UIMenuItem("Spielzeit");
|
|
menuItem.SetRightLabel(data.playTime + "h");
|
|
accountMenu.AddItem(menuItem);
|
|
|
|
menuItem = new UIMenuItem("Verwarnungen");
|
|
menuItem.SetRightLabel("~r~" + data.userWarn);
|
|
accountMenu.AddItem(menuItem);
|
|
|
|
menuItem = new UIMenuItem("Adminrang");
|
|
menuItem.SetRightLabel(data.adminLevel);
|
|
accountMenu.AddItem(menuItem);
|
|
|
|
accountMenu.Visible = false;
|
|
return accountMenu;
|
|
}
|
|
|
|
function getLicenseMenu(accdata: AccountData, data: Licenses, parentMenu: NativeUI.Menu,): NativeUI.Menu {
|
|
var licenseMenu = new NativeUI.Menu("Lizenzen", mp.players.local.name, new Point(0, screenRes.y / 3), null, null);
|
|
|
|
var menuItem = new UIMenuItem("Auto Führerschein");
|
|
if (data.drivingLicenseCar == false) {
|
|
menuItem.SetRightLabel("~r~nicht erhalten");
|
|
} else if (data.drivingLicenseCar == true) {
|
|
menuItem.SetRightLabel("~g~erhalten");
|
|
}
|
|
licenseMenu.AddItem(menuItem);
|
|
|
|
menuItem = new UIMenuItem("Motorrad Führerschein");
|
|
if (data.drivingLicenseBike == false) {
|
|
menuItem.SetRightLabel("~r~nicht erhalten");
|
|
} else if (data.drivingLicenseBike == true) {
|
|
menuItem.SetRightLabel("~g~erhalten");
|
|
}
|
|
licenseMenu.AddItem(menuItem);
|
|
|
|
menuItem = new UIMenuItem("Flugschein Flugzeug");
|
|
if (data.flightLicensePlane == false) {
|
|
menuItem.SetRightLabel("~r~nicht erhalten");
|
|
} else if (data.flightLicensePlane == true) {
|
|
menuItem.SetRightLabel("~g~erhalten");
|
|
}
|
|
licenseMenu.AddItem(menuItem);
|
|
|
|
menuItem = new UIMenuItem("Waffenschein");
|
|
if (data.weaponLicense == false) {
|
|
menuItem.SetRightLabel("~r~nicht erhalten");
|
|
} else if (data.weaponLicense == true) {
|
|
menuItem.SetRightLabel("~g~erhalten");
|
|
}
|
|
licenseMenu.AddItem(menuItem);
|
|
|
|
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);
|
|
|
|
var showItem = new UIMenuItem("Lizenzen an Spieler zeigen");
|
|
licenseMenu.AddItem(showItem);
|
|
|
|
licenseMenu.Visible = false;
|
|
|
|
licenseMenu.ItemSelect.on((item, index) => {
|
|
if (item === showItem) {
|
|
globalData.InMenu = true;
|
|
var input = new InputHelper("Welchen Spieler möchtest du deine Lizenzen zeigen?", globalData);
|
|
input.show();
|
|
input.getValue(name => {
|
|
mp.events.callRemote("CLIENT:InteractionMenu_Show", "License", name);
|
|
parentMenu.Close(true);
|
|
globalData.InMenu = false;
|
|
});
|
|
}
|
|
});
|
|
|
|
return licenseMenu;
|
|
}
|
|
|
|
function getFactionMenu(faction: string, vehData: VehicleData[], memberList: FactionMember[], stateFaction: boolean, parentMenu: NativeUI.Menu): NativeUI.Menu {
|
|
var factionMenu = new NativeUI.Menu("Fraktion", faction, new Point(0, screenRes.y / 3), null, null);
|
|
|
|
factionMenu.Visible = false;
|
|
|
|
if (vehData.length > 0) {
|
|
var factionVehicleItem = new UIMenuItem("Fahrzeuge finden", "Finden");
|
|
factionMenu.AddItem(factionVehicleItem);
|
|
factionMenu.BindMenuToItem(getVehiclesMenuFaction(vehData, "CLIENT:InteractionMenu_FactionVehicleInteraction", !stateFaction, parentMenu), factionVehicleItem);
|
|
}
|
|
|
|
var memberListItem = new UIMenuItem("Mitgliederliste", "Mitgliederliste");
|
|
factionMenu.AddItem(memberListItem);
|
|
factionMenu.BindMenuToItem(getMembersMenuFaction(faction, memberList, false, parentMenu), memberListItem);
|
|
|
|
return factionMenu;
|
|
}
|
|
|
|
function getMembersMenuFaction(faction: string, memberList: FactionMember[], leader: boolean, parentMenu: NativeUI.Menu): NativeUI.Menu {
|
|
var memberListMenu = new NativeUI.Menu(faction, "Mitglieder", new Point(0, screenRes.y / 3), null, null);
|
|
memberListMenu.Visible = false;
|
|
memberList.forEach(member => {
|
|
var memberItem: NativeUI.UIMenuItem;
|
|
if (member.isOnline) {
|
|
memberItem = new UIMenuItem("~g~ " + member.username, "");
|
|
} else {
|
|
if (leader) memberItem = new UIMenuItem("~r~ " + member.username, "");
|
|
}
|
|
if (memberItem) {
|
|
if (member.isLeader) memberItem.SetLeftBadge(BadgeStyle.Star);
|
|
memberItem.SetRightLabel(member.factionRankName);
|
|
memberListMenu.AddItem(memberItem);
|
|
if (leader) memberListMenu.BindMenuToItem(manageFactionMember(member.username, member.factionRankName, parentMenu), memberItem);
|
|
}
|
|
});
|
|
|
|
return memberListMenu;
|
|
}
|
|
|
|
function manageFactionMember(username: string, factionrank: string, parentMenu: NativeUI.Menu): NativeUI.Menu {
|
|
var manageFactionMemberMenu = new NativeUI.Menu(username, factionrank + " " + username, new Point(0, screenRes.y / 3), null, null);
|
|
|
|
manageFactionMemberMenu.Visible = false;
|
|
|
|
var uninviteItem = new UIMenuItem("Spieler rauswerfen", "");
|
|
manageFactionMemberMenu.AddItem(uninviteItem);
|
|
|
|
manageFactionMemberMenu.ItemSelect.on((item) => {
|
|
switch (item) {
|
|
case uninviteItem:
|
|
manageFactionMemberMenu.Visible = false;
|
|
mp.gui.chat.activate(true);
|
|
globalData.InMenu = false;
|
|
mp.events.callRemote("CLIENT:InteractionMenu_Uninvite", "Fraktion", username);
|
|
manageFactionMemberMenu.Close(true);
|
|
}
|
|
});
|
|
|
|
return manageFactionMemberMenu;
|
|
}
|
|
|
|
function getFactionLeaderMenu(faction: string, vehData: VehicleData[], memberList: FactionMember[], stateFaction: boolean, parentMenu: NativeUI.Menu): NativeUI.Menu {
|
|
var factionMenu = new NativeUI.Menu("Fraktion", faction, new Point(0, screenRes.y / 3), null, null);
|
|
|
|
factionMenu.AddItem(new UIMenuItem("Spieler einladen"));
|
|
//factionMenu.AddItem(new UIMenuItem("Spieler rauswerfen"));
|
|
factionMenu.Visible = false;
|
|
mp.gui.chat.show(false);
|
|
if (vehData.length > 0) {
|
|
var factionVehicleItem = new UIMenuItem("Fahrzeuge", "Fraktionsfahrzeuge finden/verkaufen");
|
|
factionMenu.AddItem(factionVehicleItem);
|
|
factionMenu.BindMenuToItem(getVehiclesMenu(vehData, "CLIENT:InteractionMenu_FactionVehicleInteraction", !stateFaction, parentMenu), factionVehicleItem);
|
|
}
|
|
|
|
var memberListItem = new UIMenuItem("Mitgliederliste", "Mitgliederliste");
|
|
factionMenu.AddItem(memberListItem);
|
|
factionMenu.BindMenuToItem(getMembersMenuFaction(faction, memberList, true, parentMenu), memberListItem);
|
|
|
|
factionMenu.ItemSelect.on((item, index) => {
|
|
if (index === 0) { // Inviten
|
|
globalData.InMenu = true;
|
|
var input = new InputHelper("Welchen Spieler möchtest du inviten?", globalData);
|
|
input.show();
|
|
input.getValue(name => {
|
|
mp.events.callRemote("CLIENT:InteractionMenu_Invite", "Fraktion", name);
|
|
factionMenu.Close();
|
|
globalData.InMenu = false;
|
|
});
|
|
} /*else if (index === 1) { // Uninviten
|
|
globalData.InMenu == true;
|
|
var input = new InputHelper("Welchen Spieler möchtest du uninviten?", globalData);
|
|
input.show();
|
|
input.getValue(name => {
|
|
mp.events.callRemote("CLIENT:InteractionMenu_Uninvite", "Fraktion", name);
|
|
factionMenu.Close();
|
|
globalData.InMenu = false;
|
|
});
|
|
}*/
|
|
});
|
|
|
|
return factionMenu;
|
|
}
|
|
|
|
function getJobMenu(jobdata: JobData, parentMenu: NativeUI.Menu): NativeUI.Menu {
|
|
var jobMenu = new NativeUI.Menu("Job", "Job Infos / Skillpunkte", new Point(0, screenRes.y / 3), null, null);
|
|
|
|
var pilotLevel;
|
|
var busLevel;
|
|
|
|
if (jobdata.pilotskill >= 300) {
|
|
pilotLevel = "Fortgeschrittener";
|
|
} else {
|
|
pilotLevel = "Anfänger";
|
|
}
|
|
|
|
if (jobdata.busskill >= 800) {
|
|
busLevel = "Profi";
|
|
} else if (jobdata.busskill >= 300) {
|
|
busLevel = "Fortgeschrittener";
|
|
} else {
|
|
busLevel = "Anfänger";
|
|
}
|
|
|
|
var actJobItem = new UIMenuItem("Aktueller Job:");
|
|
actJobItem.SetRightLabel(jobdata.job)
|
|
jobMenu.AddItem(actJobItem);
|
|
|
|
var pilotSkillItem = new UIMenuItem("Pilot Skill (" + pilotLevel + ")");
|
|
switch (pilotLevel) {
|
|
case "Anfänger":
|
|
pilotSkillItem.SetRightLabel(jobdata.pilotskill + "/300")
|
|
break;
|
|
case "Fortgeschrittener":
|
|
pilotSkillItem.SetRightLabel("MAX")
|
|
break;
|
|
}
|
|
jobMenu.AddItem(pilotSkillItem);
|
|
|
|
var busSkillItem = new UIMenuItem("Bus Skill (" + busLevel + ")");
|
|
switch (busLevel) {
|
|
case "Anfänger":
|
|
busSkillItem.SetRightLabel(jobdata.busskill + "/300")
|
|
break;
|
|
case "Fortgeschrittener":
|
|
busSkillItem.SetRightLabel(jobdata.busskill + "/800")
|
|
break;
|
|
case "Profi":
|
|
busSkillItem.SetRightLabel("MAX")
|
|
break;
|
|
}
|
|
jobMenu.AddItem(busSkillItem);
|
|
|
|
var wageItem = new UIMenuItem("Verdienst");
|
|
if (jobdata.wage > 0) {
|
|
wageItem.SetRightLabel("~g~$" + jobdata.wage.toString())
|
|
} else {
|
|
wageItem.SetRightLabel("$" + jobdata.wage.toString())
|
|
}
|
|
jobMenu.AddItem(wageItem);
|
|
|
|
if (jobdata.isActive) {
|
|
var quitJobItem = new UIMenuItem("Job beenden", "Beendet den Job und bringt dich zurück zur Base")
|
|
jobMenu.AddItem(quitJobItem);
|
|
quitJobItem.HighlightedBackColor = new Color(213, 0, 0);
|
|
quitJobItem.BackColor = new Color(229, 57, 53);
|
|
|
|
jobMenu.ItemSelect.on((item, index) => {
|
|
if (item == quitJobItem) {
|
|
mp.events.callRemote("CLIENT:Job_StopJob");
|
|
jobMenu.Close(true);
|
|
mp.gui.chat.activate(true);
|
|
globalData.InMenu = false;
|
|
}
|
|
});
|
|
}
|
|
|
|
jobMenu.Visible = false;
|
|
mp.gui.chat.show(false);
|
|
return jobMenu;
|
|
}
|
|
|
|
function getGroupMenu(group: string, parentMenu: NativeUI.Menu): NativeUI.Menu {
|
|
var groupMenu = new NativeUI.Menu("Gruppe", group, new Point(0, screenRes.y / 3), null, null);
|
|
if (groupRank == "Manager" || groupRank == "Besitzer") groupMenu.AddItem(new UIMenuItem("Spieler einladen"));
|
|
if (groupRank == "Manager" || groupRank == "Besitzer") groupMenu.AddItem(new UIMenuItem("Spieler rauswerfen"));
|
|
//groupMenu.AddItem(new UIMenuItem("Mitglieder anzeigen"));
|
|
if (groupRank == "Besitzer") groupMenu.AddItem(new UIMenuItem("Leiter bestimmen"));
|
|
groupMenu.AddItem(new UIMenuItem("Gruppe verlassen"));
|
|
if (groupRank == "Besitzer") groupMenu.AddItem(new UIMenuItem("~r~Gruppe löschen"));
|
|
groupMenu.Visible = false;
|
|
mp.gui.chat.show(false);
|
|
groupMenu.ItemSelect.on((item, index) => {
|
|
switch (index) {
|
|
case 0: //Spieler inviten
|
|
globalData.InMenu = true;
|
|
var input = new InputHelper("Welchen Spieler möchtest du inviten?", globalData);
|
|
input.show();
|
|
input.getValue(name => {
|
|
mp.events.callRemote("CLIENT:InteractionMenu_Invite", "Gruppe", name);
|
|
parentMenu.Close();
|
|
globalData.InMenu = false;
|
|
});
|
|
break;
|
|
|
|
case 1: //Spieler uninviten
|
|
globalData.InMenu == true;
|
|
var input = new InputHelper("Welchen Spieler möchtest du uninviten?", globalData);
|
|
input.show();
|
|
input.getValue(name => {
|
|
mp.events.callRemote("CLIENT:InteractionMenu_Uninvite", "Gruppe", name);
|
|
parentMenu.Close();
|
|
globalData.InMenu = false;
|
|
});
|
|
break;
|
|
|
|
case 2: //Gruppenmitglieder anzeigen
|
|
mp.events.callRemote("CLIENT:InteractionMenu_MemberList", "Gruppe");
|
|
break;
|
|
|
|
case 3: //Neuen (zusätzlichen) Gruppenleiter bestimmen
|
|
globalData.InMenu = true;
|
|
var input = new InputHelper("Welchen Spieler soll Manager werden (Name)? ", globalData);
|
|
input.show();
|
|
input.getValue(name => {
|
|
mp.events.callRemote("CLIENT:InteractionMenu_MakeLeader", "Gruppe", name);
|
|
parentMenu.Close();
|
|
globalData.InMenu = false;
|
|
});
|
|
break;
|
|
|
|
case 4: //Gruppe verlassen (bestimmt zufällig neuen Leiter)
|
|
groupMenu.Close();
|
|
mp.gui.chat.show(true);
|
|
globalData.InMenu = false;
|
|
mp.events.callRemote("CLIENT:InteractionMenu_LeaveGroup", "Gruppe");
|
|
break;
|
|
|
|
case 5: //Gruppe löschen (als Leiter)
|
|
groupMenu.Close();
|
|
mp.gui.chat.show(true);
|
|
globalData.InMenu = false;
|
|
mp.events.callRemote("CLIENT:InteractionMenu_DeleteGroup", "Gruppe");
|
|
break;
|
|
}
|
|
});
|
|
return groupMenu;
|
|
}
|
|
|
|
function getServicesMenu(parentMenu: NativeUI.Menu): NativeUI.Menu {
|
|
var servicesMenu = new Menu("Services", "Rufe einen Service", new Point(0, screenRes.y / 3), null, null);
|
|
servicesMenu.AddItem(new UIMenuItem("Taxi rufen", "Rufe ein Taxi zu deiner Position"));
|
|
var saniItem = new UIMenuItem("Sanitäter rufen", "Rufe einen Sanitäter zu deiner Position.");
|
|
servicesMenu.AddItem(saniItem);
|
|
servicesMenu.Visible = false;
|
|
|
|
servicesMenu.ItemSelect.on((item, index) => {
|
|
if (index === 0) { // Taxi
|
|
mp.events.callRemote("CLIENT:InteractionMenu_CallService_Taxi", getStreetName(), getZoneName());
|
|
}
|
|
else if (index === 1) { // Sanitäter
|
|
mp.events.callRemote("CLIENT:InteractionMenu_CallService_Sani");
|
|
}
|
|
parentMenu.Close(true);
|
|
});
|
|
|
|
return servicesMenu;
|
|
}
|
|
|
|
function getVehiclesMenu(vehicles: VehicleData[], eventName: string, allowSell: boolean, parentMenu: NativeUI.Menu): NativeUI.Menu {
|
|
var desc = "Finden";
|
|
if (allowSell) {
|
|
desc += " oder Verkaufen";
|
|
}
|
|
|
|
var menu = new Menu("Fahrzeuge", desc, new Point(0, screenRes.y / 3), null, null);
|
|
|
|
var items: string[] = ["Finden", "Verkaufen"];
|
|
|
|
var collection = new ItemsCollection(items);
|
|
|
|
vehicles.forEach(veh => {
|
|
var name: string = mp.game.ui.getLabelText(mp.game.vehicle.getDisplayNameFromVehicleModel(veh.Model));
|
|
|
|
var item = new UIMenuListItem(`${veh.Id.toString().padEnd(5)} | ${name}`, "", collection, null, { id: veh.Id });
|
|
|
|
menu.AddItem(item);
|
|
});
|
|
|
|
menu.ItemSelect.on((item: NativeUI.UIMenuListItem, index: number) => {
|
|
var id = item.Data.id;
|
|
var selection = item.SelectedValue;
|
|
|
|
mp.events.callRemote(eventName, id, selection);
|
|
|
|
parentMenu.Close(true);
|
|
});
|
|
|
|
return menu;
|
|
}
|
|
function getVehiclesMenuFaction(vehicles: VehicleData[], eventName: string, allowSell: boolean, parentMenu: NativeUI.Menu): NativeUI.Menu {
|
|
var desc = "Finden";
|
|
|
|
var menu = new Menu("Fahrzeuge", desc, new Point(0, screenRes.y / 3), null, null);
|
|
|
|
var items: string[] = ["Finden"];
|
|
|
|
var collection = new ItemsCollection(items);
|
|
|
|
vehicles.forEach(veh => {
|
|
var name: string = mp.game.ui.getLabelText(mp.game.vehicle.getDisplayNameFromVehicleModel(veh.Model));
|
|
|
|
var item = new UIMenuListItem(`${veh.Id.toString().padEnd(5)} | ${name}`, "", collection, null, { id: veh.Id });
|
|
|
|
menu.AddItem(item);
|
|
});
|
|
|
|
menu.ItemSelect.on((item: NativeUI.UIMenuListItem, index: number) => {
|
|
var id = item.Data.id;
|
|
var selection = item.SelectedValue;
|
|
|
|
mp.events.callRemote(eventName, id, selection);
|
|
|
|
parentMenu.Close(true);
|
|
});
|
|
|
|
return menu;
|
|
}
|
|
|
|
function getTicketMenu(ticket_amount: number, parentMenu: NativeUI.Menu): NativeUI.Menu {
|
|
var ticketMenu = new NativeUI.Menu("Ticket", `Ticket in Höhe von ${ticket_amount}$`, new Point(0, screenRes.y / 3), null, null);
|
|
ticketMenu.AddItem(new UIMenuItem("Ticket annehmen"));
|
|
ticketMenu.AddItem(new UIMenuItem("Ticket ablehnen"));
|
|
ticketMenu.Visible = false;
|
|
|
|
ticketMenu.ItemSelect.on((item, index) => {
|
|
if (index === 0) // Ticket annehmen
|
|
{
|
|
mp.events.callRemote("CLIENT:InteractionMenu_Ticket", "Angenommen", ticket_amount);
|
|
parentMenu.Close(true);
|
|
}
|
|
else if (index === 1) // Ticket ablehnen
|
|
{
|
|
mp.events.callRemote("CLIENT:InteractionMenu_Ticket", "Abgelehnt", ticket_amount);
|
|
parentMenu.Close(true);
|
|
}
|
|
});
|
|
|
|
return ticketMenu;
|
|
}
|
|
|
|
mp.events.add("CLIENT:InteractionMenu_Pay_Name", (name) => {
|
|
payName = name;
|
|
globalData.InMenu = true;
|
|
var input = new InputHelper("Wie viel?", globalData);
|
|
mp.gui.cursor.show(true, true);
|
|
input.show();
|
|
input.getValue(amount => {
|
|
mp.events.callRemote("CLIENT:InteractionMenu_Pay", JSON.stringify(payName), amount);
|
|
mp.gui.cursor.show(false, false);
|
|
globalData.InMenu = false;
|
|
});
|
|
});
|
|
} |