diff --git a/ReallifeGamemode.Client/Player/report.ts b/ReallifeGamemode.Client/Player/report.ts new file mode 100644 index 00000000..666a3064 --- /dev/null +++ b/ReallifeGamemode.Client/Player/report.ts @@ -0,0 +1,122 @@ +import * as NativeUI from 'NativeUI'; +import jailList from './criminalrelease'; +import InputHelper from '../inputhelper'; + +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); + +let deleteItem = new UIMenuItem("Entfernen", "Entfernt das Ticket aus der Liste"); +deleteItem.BackColor = new Color(42, 46, 49); +let saveItem = new UIMenuItem("Annehmen", "Starte direkten Chat mit dem User"); +saveItem.BackColor = new Color(13, 71, 161); +saveItem.HighlightedBackColor = new Color(25, 118, 210); + +let sendItem = new UIMenuItem("Absenden", "Sende Report an alle Admins"); +sendItem.BackColor = new Color(13, 71, 161); +sendItem.HighlightedBackColor = new Color(25, 118, 210); + +let cancelItem = new UIMenuItem("Abbrechen", ""); +cancelItem.BackColor = new Color(213, 0, 0); +cancelItem.HighlightedBackColor = new Color(229, 57, 53); + +export default function reportList(globalData: GlobalData) { + + var reportMenu: NativeUI.Menu; + + var users; + var reportTexts; + + var user = ""; + var reportText = ""; + + var reportlistBrowser: BrowserMp = null; + + //Weapon Menu + + mp.events.add('showReportMenu', (userTickets) => { + + var reportlistBrowser: BrowserMp = null; + var rList; + + mp.gui.chat.push("AHA:" + userTickets); + + if (!globalData.InMenu) { + if (reportlistBrowser === null) { + + reportlistBrowser = mp.browsers.new('package://assets/html/Playerlist/Reportlist.html'); + mp.gui.chat.activate(false); + mp.gui.cursor.show(true, true); + rList = JSON.parse(userTickets); + rList.forEach((player) => { + //reportlistBrowser.execute(`ad_row('${JSON.stringify(player.Id)}','${JSON.stringify(player.Name)}',0,0,'${JSON.stringify(player.Ping)}');`); + reportlistBrowser.execute(`ad_row('A','B',0,0,'C');`); + }); + + } else { + reportlistBrowser.destroy() + reportlistBrowser = null; + mp.gui.cursor.show(false, false); + mp.gui.chat.activate(true); + + } + } + }); + + mp.events.add('showReportType', () => { + if (!globalData.InMenu) { + + var type; + + globalData.InMenu = true; + + var types = ["Quick Report", "Ticket Report"]; + + reportMenu = new Menu("QuickReport/Ticket", "", new Point(50, 50), null, null); + var typesItem = new UIMenuListItem("Typ", "", new ItemsCollection(types)); + reportMenu.AddItem(typesItem); + + reportMenu.AddItem(sendItem); + reportMenu.AddItem(cancelItem); + reportMenu.Visible = true; + + reportMenu.ItemSelect.on((item) => { + if (item.Text === "Absenden") { + + var ticketContentBox = new InputHelper("Worin besteht dein Anliegen?", globalData); + ticketContentBox.show(); + ticketContentBox.getValue(data => { + + var type = typesItem.SelectedItem.DisplayText; + + var content = JSON.stringify(data); + + //mp.gui.chat.push(content); + //mp.gui.chat.push(type); + + mp.events.callRemote("requestReport", type, content); + mp.events.call("SERVER:CloseReportMenu"); + reportMenu.Close(); + }); + + + globalData.InMenu = false; + } else if (item.Text === "Abbrechen") { + reportMenu.Close(); + globalData.InMenu = false; + } + }); + + reportMenu.MenuClose.on(() => { + globalData.InMenu = false; + }); + } + }); +} \ No newline at end of file diff --git a/ReallifeGamemode.Client/Player/reportmenu.ts b/ReallifeGamemode.Client/Player/reportmenu.ts index f06cba4f..d8963d80 100644 --- a/ReallifeGamemode.Client/Player/reportmenu.ts +++ b/ReallifeGamemode.Client/Player/reportmenu.ts @@ -40,7 +40,7 @@ export default function reportList(globalData: GlobalData) { //Weapon Menu - mp.events.add('showReportMenu', (userTickets, TicketsArr) => { + mp.events.add('showReportMenuOld', (userTickets, TicketsArr) => { if (!globalData.InMenu) { globalData.InMenu = true; diff --git a/ReallifeGamemode.Client/ReallifeGamemode.Client.csproj b/ReallifeGamemode.Client/ReallifeGamemode.Client.csproj index e9b302cb..d98e9154 100644 --- a/ReallifeGamemode.Client/ReallifeGamemode.Client.csproj +++ b/ReallifeGamemode.Client/ReallifeGamemode.Client.csproj @@ -26,6 +26,7 @@ + diff --git a/ReallifeGamemode.Client/index.ts b/ReallifeGamemode.Client/index.ts index a88cf8da..cd881d3f 100644 --- a/ReallifeGamemode.Client/index.ts +++ b/ReallifeGamemode.Client/index.ts @@ -160,7 +160,7 @@ smoothThrottle(); import vehicleIndicators from './vehiclesync/vehicleindicators'; vehicleIndicators(); -import reportList from './Player/reportmenu'; +import reportListOld from './Player/reportmenu'; reportList(globalData); import checkpointHandle from './util/checkpoint'; diff --git a/ReallifeGamemode.Client/util/drivingschool.ts b/ReallifeGamemode.Client/util/drivingschool.ts index 0ab4c6ab..861966dc 100644 --- a/ReallifeGamemode.Client/util/drivingschool.ts +++ b/ReallifeGamemode.Client/util/drivingschool.ts @@ -117,7 +117,7 @@ export default function drivingSchoolHandle(globalData: GlobalData) { function timerPlayerInVehicle() { if (timerSet) { - mp.events.callRemote('timerCheckVehiclex + mp.events.callRemote('timerCheckVehiclex'); } }; diff --git a/ReallifeGamemode.Server/Report/Report.cs b/ReallifeGamemode.Server/Report/Report.cs index 5dc3e4b4..4b9a913d 100644 --- a/ReallifeGamemode.Server/Report/Report.cs +++ b/ReallifeGamemode.Server/Report/Report.cs @@ -12,6 +12,7 @@ using System.Collections.Generic; using Newtonsoft.Json; using ReallifeGamemode.Database; using ReallifeGamemode.Services; +using Newtonsoft.Json; namespace ReallifeGamemode.Server.Report { @@ -57,7 +58,14 @@ namespace ReallifeGamemode.Server.Report } } //ChatService.SendMessage(client, JsonConvert.SerializeObject(listPlayers)); + + if (listPlayers.Count == 0 || listTicketnames.Count == 0) + { + client.SendChatMessage("Irgendwas ist schief gelaufen"); + return; + } client.TriggerEvent("showReportMenu", JsonConvert.SerializeObject(listPlayers), JsonConvert.SerializeObject(listTicketnames)); + } @@ -68,12 +76,19 @@ namespace ReallifeGamemode.Server.Report if (player == null) return; + ChatService.SendMessage(player, "!{#008fff}[REPORT]!{#FFFFFF} Admin " + admin.Name + " hat dein Ticket angenommen! (Benutze /rc zum Schreiben)"); ChatService.BroadcastDutyAdmin("!{#008fff}[REPORT]!{#FFFFFF} " + admin.Name + " hat das Ticket von " + player.Name + " angenommen"); for (int a = 0; a < listReports.Count; a++) { ReportManage temp = listReports[a]; + + if (temp.getAdmin().Equals(admin.Name){ + admin.SendChatMessage("Du hast bereits ein Ticket angenommen"); + return; + } + if (temp.getUser().Equals(player.Name)) { listReports[a].assign(admin.Name); @@ -185,6 +200,7 @@ namespace ReallifeGamemode.Server.Report ChatService.SendMessage(user, "!{#addc8d}Momentan sind " + GlobalHelper.DutyAdmins.Count + " Admins verfügbar"); ChatService.BroadcastDutyAdmin("!{#008fff}[TICKET]!{#FFFFFF} Eingehendes Ticket von~w~ " + user.Name + " (" + user.Handle.Value + ")~w~: " + text + " (Benutze /showtickets)"); ReportManage ticket = new ReportManage(user.Name, text); + ChatService.Broadcast("ADDTICKET:" + user.Name + ", " + text); listReports.Add(ticket); } if (type == "Quick Report") @@ -207,6 +223,7 @@ namespace ReallifeGamemode.Server.Report ChatService.SendMessage(player, "!{#addc8d} " + user.Name + " hat dein Ticket gelöscht!"); ChatService.BroadcastDutyAdmin("!{#008fff}[TICKET]!{#FFFFFF} " + user.Name + " hat das Ticket von " + player.Name + " gelöscht"); listReports.Remove(temp); + break; } }