Add LSPD Ticketsystem

This commit is contained in:
Mac_Slash
2020-04-11 13:55:39 +02:00
parent f0e4a7c170
commit 23d27c28e3
3 changed files with 93 additions and 5 deletions

View File

@@ -33,7 +33,7 @@ export default function (globalData: IGlobalData) {
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, ticket_boolean: boolean, ticket_amount: number) => {
var accountData: AccountData = JSON.parse(accountDataJson);
var menu = getInteractionMenu();
@@ -103,6 +103,12 @@ export default function (globalData: IGlobalData) {
menu.BindMenuToItem(paycheckMenu, paycheckItem);
}
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");
@@ -327,5 +333,26 @@ export default function (globalData: IGlobalData) {
return menu;
}
function getTicketMenu(ticket_amount: number, parentMenu: NativeUI.Menu): NativeUI.Menu {
var factionMenu = new NativeUI.Menu("Ticket", `Ticket in Höhe von ${ticket_amount}`, new Point(50, 50), null, null);
factionMenu.AddItem(new UIMenuItem("Ticket annehmen"));
factionMenu.AddItem(new UIMenuItem("Ticket ablehnen"));
factionMenu.Visible = false;
factionMenu.ItemSelect.on((item, index) => {
if (index === 0) // Ticket annehmen
{
parentMenu.Close();
mp.events.callRemote("CLIENT:InteractionMenu_Ticket", "Angenommen", ticket_amount);
}
else if (index === 1) // Ticket ablehnen
{
parentMenu.Close();
mp.events.callRemote("CLIENT:InteractionMenu_Ticket", "Abgelehnt", ticket_amount);
}
});
return factionMenu;
}
}

View File

@@ -146,8 +146,10 @@ namespace ReallifeGamemode.Server.Events
string group = u.Group != null && u.GroupRank >= GroupRank.MANAGER ? u.Group.Name : null;
bool factionInvite = player.HasData("accept_faction_invite");
bool groupInvite = player.HasData("accept_group_invite");
bool ticket_boolean = player.HasData("ticket_boolean");
int ticket_amount = NAPI.Data.GetEntityData(player, "ticket_amount");
player.TriggerEvent("SERVER:InteractionMenu_OpenMenu", JsonConvert.SerializeObject(accountData), faction, group, factionInvite, groupInvite);
player.TriggerEvent("SERVER:InteractionMenu_OpenMenu", JsonConvert.SerializeObject(accountData), faction, group, factionInvite, groupInvite, ticket_boolean, ticket_amount);
}
[RemoteEvent("keyPress:E")]

View File

@@ -384,8 +384,12 @@ namespace ReallifeGamemode.Server.Managers
target.SendNotification($"~b~{player.GetUser().FactionRank.RankName} | {playername} ~w~hat dir ein Ticket in Höhe von ~y~{amount}$ ~w~gestellt.", true);
target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Strafticket im Interaktionsmenü annehmen.", true);
//target.SendChatMessage("Du kannst mit '/accept ticket' das Strafticket annehmen.");
target.SetData("ticket_boolean", true);
//target.SetData("ticket_amount", amount);
//target.SetSharedData("ticket_amount", amount);
NAPI.Data.SetEntityData(target, "ticket_amount", amount);
NAPI.Data.SetEntityData(target, "ticket_player", player);
}
[RemoteEvent("CLIENT:InteractionMenu_LSPD_Points3")]
public void InteractionMenu_LSPD_Points3(Player player, string jsonNameOrId, string jsoAmount, string jsonReason)
@@ -396,10 +400,19 @@ namespace ReallifeGamemode.Server.Managers
Player target = PlayerService.GetPlayerByNameOrId(nameOrId);
string playername = NAPI.Player.GetPlayerName(player);
string targetname = NAPI.Player.GetPlayerName(target);
if (target.GetUser().DriverLicenseVehicle == false && target.GetUser().DriverLicenseBike == false)
if (target == null || !target.IsLoggedIn())
{
ChatService.PlayerNotFound(player);
return;
}
else if (target.GetUser().DriverLicenseVehicle == false && target.GetUser().DriverLicenseBike == false)
{
player.SendNotification("~r~Spieler hat weder Auto- noch Motorradführerschein!");
}
else if(target == player)
{
player.SendNotification("~r~Du kannst dir selbst keine Punkte setzen!");
}
else
{
if (amount > -9 && amount < 9)
@@ -424,7 +437,18 @@ namespace ReallifeGamemode.Server.Managers
else if (target.GetUser().Points >= 8)
{
target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Du hast nun ~r~8/8 ~x~Strafpunkten.", true);
target.SendNotification($"~w~Dir wird ~r~Auo- ~w~und ~r~Motorradführerschein ~w~entzogen.", true);
target.SendNotification($"~w~Dir wird ~r~Auto- ~w~und ~r~Motorradführerschein ~w~entzogen.", true);
foreach (var copPlayer in NAPI.Pools.GetAllPlayers())
{
User copUser = copPlayer.GetUser();
if (copUser.FactionId == 1 || copUser.FactionId == 3)
{
if (copUser.GetData<bool>("duty") == true)
{
ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: " + targetname + " besitzt nun keinen Führerschein mehr.");
}
}
}
using (var dbContext = new DatabaseContext())
{
User target2 = target.GetUser(dbContext);
@@ -446,6 +470,41 @@ namespace ReallifeGamemode.Server.Managers
}
}
}
[RemoteEvent("CLIENT:InteractionMenu_Ticket")]
public void InteractionMenuTicket(Player target, string type, int ticket_amount)
{
Player player = NAPI.Data.GetEntityData(target, "ticket_player");
string playername = NAPI.Player.GetPlayerName(player);
string targetname = NAPI.Player.GetPlayerName(target);
/*if (type != "Fraktion" && type != "Gruppe") return;
Player target = PlayerService.GetPlayerByNameOrId(nameOrId);
if (target == null || !target.IsLoggedIn())
{
ChatService.PlayerNotFound(player);
return;
}*/
//User targetUser = target.GetUser();
//User playerUser = player.GetUser();
if (type == "Angenommen")
{
target.SendNotification($"~g~Du hast das Ticket über ~b~{ticket_amount}$ ~g~angenommen und bezahlt.", true);
player.SendNotification($"~y~{targetname} ~g~hat das Ticket über ~b~{ticket_amount}$ ~g~angenommen und bezahlt.", true);
target.ResetData("ticket_boolean");
NAPI.Data.ResetEntityData(target, "ticket_amount");
NAPI.Data.ResetEntityData(target, "ticket_player");
}
else if (type == "Abgelehnt")
{
target.SendNotification($"~r~Du hast das Ticket über ~b~{ticket_amount}$ ~r~abgelehnt.", true);
player.SendNotification($"~y~{targetname} ~r~hat das Ticket über ~b~{ticket_amount}$ ~r~abgelehnt.", true);
target.ResetData("ticket_boolean");
NAPI.Data.ResetEntityData(target, "ticket_amount");
NAPI.Data.ResetEntityData(target, "ticket_player");
}
}
#endregion
#region Spielerinteraktionen PFEILTASTE-LINKS
[RemoteEvent("openTradeInventory")]