Fraktionsmitgliederliste eingebaut inkl. uninvite für Leader
This commit is contained in:
@@ -42,9 +42,10 @@ export default function (globalData: IGlobalData) {
|
|||||||
|
|
||||||
var groupRank = null;
|
var groupRank = null;
|
||||||
|
|
||||||
mp.events.add("SERVER:InteractionMenu_OpenMenu", (accountDataJson: string, factionleader: string, jobDataJson: string, faction: string, group: string, factionInvite: boolean, groupInvite: boolean, ticket_boolean: boolean, ticket_amount, house: boolean) => {
|
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 accountData: AccountData = JSON.parse(accountDataJson);
|
||||||
var jobData: JobData = JSON.parse(jobDataJson);
|
var jobData: JobData = JSON.parse(jobDataJson);
|
||||||
|
var memberList: FactionMember[] = JSON.parse(members)
|
||||||
//var ticket_amount = JSON.parse(ticket_amountJson);
|
//var ticket_amount = JSON.parse(ticket_amountJson);
|
||||||
|
|
||||||
var menu = getInteractionMenu();
|
var menu = getInteractionMenu();
|
||||||
@@ -70,12 +71,12 @@ export default function (globalData: IGlobalData) {
|
|||||||
if (faction && !factionleader) {
|
if (faction && !factionleader) {
|
||||||
factionItem.SetRightLabel(faction);
|
factionItem.SetRightLabel(faction);
|
||||||
menu.AddItem(factionItem);
|
menu.AddItem(factionItem);
|
||||||
menu.BindMenuToItem(getFactionMenu(faction, accountData.factionVehicles, accountData.stateFaction, menu), factionItem);
|
menu.BindMenuToItem(getFactionMenu(faction, accountData.factionVehicles, memberList, accountData.stateFaction, menu), factionItem);
|
||||||
}
|
}
|
||||||
if (faction && factionleader) {
|
if (faction && factionleader) {
|
||||||
factionleaderItem.SetRightLabel(factionleader);
|
factionleaderItem.SetRightLabel(factionleader);
|
||||||
menu.AddItem(factionleaderItem);
|
menu.AddItem(factionleaderItem);
|
||||||
menu.BindMenuToItem(getFactionLeaderMenu(faction, accountData.factionVehicles, accountData.stateFaction, menu), factionleaderItem);
|
menu.BindMenuToItem(getFactionLeaderMenu(faction, accountData.factionVehicles, memberList, accountData.stateFaction, menu), factionleaderItem);
|
||||||
}
|
}
|
||||||
menu.AddItem(jobItem);
|
menu.AddItem(jobItem);
|
||||||
menu.BindMenuToItem(getJobMenu(jobData, menu), jobItem);
|
menu.BindMenuToItem(getJobMenu(jobData, menu), jobItem);
|
||||||
@@ -304,7 +305,7 @@ export default function (globalData: IGlobalData) {
|
|||||||
return licenseMenu;
|
return licenseMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getFactionMenu(faction: string, vehData: VehicleData[], stateFaction: boolean, parentMenu: NativeUI.Menu): NativeUI.Menu {
|
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);
|
var factionMenu = new NativeUI.Menu("Fraktion", faction, new Point(0, screenRes.y / 3), null, null);
|
||||||
|
|
||||||
factionMenu.Visible = false;
|
factionMenu.Visible = false;
|
||||||
@@ -315,13 +316,63 @@ export default function (globalData: IGlobalData) {
|
|||||||
factionMenu.BindMenuToItem(getVehiclesMenuFaction(vehData, "CLIENT:InteractionMenu_FactionVehicleInteraction", !stateFaction, parentMenu), 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;
|
return factionMenu;
|
||||||
}
|
}
|
||||||
function getFactionLeaderMenu(faction: string, vehData: VehicleData[], stateFaction: boolean, parentMenu: NativeUI.Menu): NativeUI.Menu {
|
|
||||||
|
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);
|
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 einladen"));
|
||||||
factionMenu.AddItem(new UIMenuItem("Spieler rauswerfen"));
|
//factionMenu.AddItem(new UIMenuItem("Spieler rauswerfen"));
|
||||||
factionMenu.Visible = false;
|
factionMenu.Visible = false;
|
||||||
mp.gui.chat.show(false);
|
mp.gui.chat.show(false);
|
||||||
if (vehData.length > 0) {
|
if (vehData.length > 0) {
|
||||||
@@ -330,6 +381,10 @@ export default function (globalData: IGlobalData) {
|
|||||||
factionMenu.BindMenuToItem(getVehiclesMenu(vehData, "CLIENT:InteractionMenu_FactionVehicleInteraction", !stateFaction, parentMenu), 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) => {
|
factionMenu.ItemSelect.on((item, index) => {
|
||||||
if (index === 0) { // Inviten
|
if (index === 0) { // Inviten
|
||||||
globalData.InMenu = true;
|
globalData.InMenu = true;
|
||||||
@@ -340,7 +395,7 @@ export default function (globalData: IGlobalData) {
|
|||||||
factionMenu.Close();
|
factionMenu.Close();
|
||||||
globalData.InMenu = false;
|
globalData.InMenu = false;
|
||||||
});
|
});
|
||||||
} else if (index === 1) { // Uninviten
|
} /*else if (index === 1) { // Uninviten
|
||||||
globalData.InMenu == true;
|
globalData.InMenu == true;
|
||||||
var input = new InputHelper("Welchen Spieler möchtest du uninviten (Name / ID)?", globalData);
|
var input = new InputHelper("Welchen Spieler möchtest du uninviten (Name / ID)?", globalData);
|
||||||
input.show();
|
input.show();
|
||||||
@@ -349,7 +404,7 @@ export default function (globalData: IGlobalData) {
|
|||||||
factionMenu.Close();
|
factionMenu.Close();
|
||||||
globalData.InMenu = false;
|
globalData.InMenu = false;
|
||||||
});
|
});
|
||||||
}
|
}*/
|
||||||
});
|
});
|
||||||
|
|
||||||
return factionMenu;
|
return factionMenu;
|
||||||
|
|||||||
8
ReallifeGamemode.Client/global.d.ts
vendored
8
ReallifeGamemode.Client/global.d.ts
vendored
@@ -64,6 +64,14 @@ declare type FactionRanks = {
|
|||||||
ranks: FactionRank[]
|
ranks: FactionRank[]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
declare type FactionMember = {
|
||||||
|
username: string;
|
||||||
|
factionRank: number;
|
||||||
|
factionRankName: string;
|
||||||
|
isLeader: boolean;
|
||||||
|
isOnline: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
declare type FactionRank = {
|
declare type FactionRank = {
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -135,6 +135,7 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
Price = f.BuyPrice
|
Price = f.BuyPrice
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
Paycheck paycheck = null;
|
Paycheck paycheck = null;
|
||||||
if (Economy.Paychecks.ContainsKey(u.Id)) paycheck = Economy.Paychecks[u.Id];
|
if (Economy.Paychecks.ContainsKey(u.Id)) paycheck = Economy.Paychecks[u.Id];
|
||||||
|
|
||||||
@@ -169,6 +170,15 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
wage = u.Wage,
|
wage = u.Wage,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var memberList = dbContext.Users.Where(f => f.FactionId == u.FactionId && u.FactionId != 0).OrderByDescending(f => f.FactionRank.Order).ThenBy(f => f.Name).Select(m => new
|
||||||
|
{
|
||||||
|
username = m.Name,
|
||||||
|
factionRank = m.FactionRank.Order,
|
||||||
|
factionRankName = m.FactionRank.RankName,
|
||||||
|
isLeader = m.FactionLeader,
|
||||||
|
isOnline = m.Player.IsLoggedIn(),
|
||||||
|
});
|
||||||
|
|
||||||
string faction = u.Faction?.Name ?? "Zivilist";
|
string faction = u.Faction?.Name ?? "Zivilist";
|
||||||
string factionleader = u.FactionLeader ? u.Faction.Name : null;
|
string factionleader = u.FactionLeader ? u.Faction.Name : null;
|
||||||
string group = u.Group != null ? u.Group.Name : null;
|
string group = u.Group != null ? u.Group.Name : null;
|
||||||
@@ -193,8 +203,7 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
{
|
{
|
||||||
pay_amount = player.GetData<int>("pay_amount");
|
pay_amount = player.GetData<int>("pay_amount");
|
||||||
}
|
}
|
||||||
|
player.TriggerEvent("SERVER:InteractionMenu_OpenMenu", JsonConvert.SerializeObject(accountData), factionleader, JsonConvert.SerializeObject(memberList), JsonConvert.SerializeObject(jobData), faction, group, factionInvite, groupInvite, ticket_boolean, ticket_amount, pay_amount, house);
|
||||||
player.TriggerEvent("SERVER:InteractionMenu_OpenMenu", JsonConvert.SerializeObject(accountData), factionleader, JsonConvert.SerializeObject(jobData), faction, group, factionInvite, groupInvite, ticket_boolean, ticket_amount, pay_amount, house);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[RemoteEvent("keyPress:E")]
|
[RemoteEvent("keyPress:E")]
|
||||||
|
|||||||
@@ -215,16 +215,16 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
{
|
{
|
||||||
if (type != "Fraktion" && type != "Gruppe") return;
|
if (type != "Fraktion" && type != "Gruppe") return;
|
||||||
|
|
||||||
Player target = PlayerService.GetPlayerByNameOrId(name);
|
using var dbContext = new DatabaseContext();
|
||||||
if (target == null || !target.IsLoggedIn())
|
User targetUser = dbContext.Users.FirstOrDefault(u => u.Name == name);
|
||||||
|
|
||||||
|
if (targetUser == null)
|
||||||
{
|
{
|
||||||
ChatService.PlayerNotFound(player);
|
ChatService.PlayerNotFound(player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
using var dbContext = new DatabaseContext();
|
Player targetPlayer = PlayerService.GetPlayerByNameOrId(name);
|
||||||
|
|
||||||
User targetUser = target.GetUser(dbContext);
|
|
||||||
User playerUser = player.GetUser(dbContext);
|
User playerUser = player.GetUser(dbContext);
|
||||||
|
|
||||||
if (type == "Fraktion")
|
if (type == "Fraktion")
|
||||||
@@ -241,7 +241,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player.Handle == target.Handle)
|
if (player.Name == targetUser.Name)
|
||||||
{
|
{
|
||||||
ChatService.ErrorMessage(player, "Du kannst dich nicht selber uninviten");
|
ChatService.ErrorMessage(player, "Du kannst dich nicht selber uninviten");
|
||||||
return;
|
return;
|
||||||
@@ -253,15 +253,19 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
target.SetData("duty", false);
|
if (targetPlayer != null)
|
||||||
target.TriggerEvent("toggleDutyMode", false);
|
{
|
||||||
|
targetPlayer.SetData("duty", false);
|
||||||
|
targetPlayer.TriggerEvent("toggleDutyMode", false);
|
||||||
|
UpdateCharacterCloth.LoadCharacterDefaults(targetPlayer);
|
||||||
|
ChatService.SendMessage(targetPlayer, "!{02FCFF}Du wurdest von " + player.Name + " aus der Fraktion geworfen.");
|
||||||
|
targetUser.SetBlipAndNametagColor();
|
||||||
|
}
|
||||||
Medic.UpdateDutyMedics();
|
Medic.UpdateDutyMedics();
|
||||||
UpdateCharacterCloth.LoadCharacterDefaults(target);
|
targetUser.FactionRankId = null;
|
||||||
target.GetUser(dbContext).FactionRankId = null;
|
targetUser.FactionId = null;
|
||||||
target.GetUser(dbContext).FactionId = null;
|
ChatService.SendMessage(player, "!{02FCFF}Du hast " + targetUser.Name + " aus der Fraktion geworfen.");
|
||||||
ChatService.SendMessage(player, "!{02FCFF}Du hast " + target.Name + " aus der Fraktion geworfen.");
|
|
||||||
ChatService.SendMessage(target, "!{02FCFF}Du wurdest von " + player.Name + " aus der Fraktion geworfen.");
|
|
||||||
targetUser.SetBlipAndNametagColor();
|
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
else if (type == "Gruppe")
|
else if (type == "Gruppe")
|
||||||
@@ -278,7 +282,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player.Handle == target.Handle)
|
if (player.Handle == targetPlayer.Handle)
|
||||||
{
|
{
|
||||||
ChatService.ErrorMessage(player, "Du kannst dich nicht selber uninviten");
|
ChatService.ErrorMessage(player, "Du kannst dich nicht selber uninviten");
|
||||||
return;
|
return;
|
||||||
@@ -293,8 +297,8 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
targetUser.Group = null;
|
targetUser.Group = null;
|
||||||
targetUser.GroupRank = GroupRank.NONE;
|
targetUser.GroupRank = GroupRank.NONE;
|
||||||
|
|
||||||
ChatService.SendMessage(player, "!{02FCFF}Du hast " + target.Name + " aus der Gruppe geworfen.");
|
ChatService.SendMessage(player, "!{02FCFF}Du hast " + targetPlayer.Name + " aus der Gruppe geworfen.");
|
||||||
ChatService.SendMessage(target, "!{02FCFF}Du wurdest von " + player.Name + " aus der Gruppe geworfen.");
|
ChatService.SendMessage(targetPlayer, "!{02FCFF}Du wurdest von " + player.Name + " aus der Gruppe geworfen.");
|
||||||
|
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user