*Added MakeLeader / LeaveGroup / DeleteGroup to groups
This commit is contained in:
@@ -358,28 +358,60 @@ export default function (globalData: IGlobalData) {
|
|||||||
var groupMenu = new NativeUI.Menu("Gruppe", group, new Point(0, screenRes.y / 3), null, null);
|
var groupMenu = new NativeUI.Menu("Gruppe", group, new Point(0, screenRes.y / 3), null, null);
|
||||||
groupMenu.AddItem(new UIMenuItem("Spieler einladen"));
|
groupMenu.AddItem(new UIMenuItem("Spieler einladen"));
|
||||||
groupMenu.AddItem(new UIMenuItem("Spieler rauswerfen"));
|
groupMenu.AddItem(new UIMenuItem("Spieler rauswerfen"));
|
||||||
|
groupMenu.AddItem(new UIMenuItem("Mitglieder anzeigen"));
|
||||||
|
groupMenu.AddItem(new UIMenuItem("Leiter bestimmen"));
|
||||||
|
groupMenu.AddItem(new UIMenuItem("Gruppe verlassen"));
|
||||||
|
groupMenu.AddItem(new UIMenuItem("Gruppe löschen"));
|
||||||
groupMenu.Visible = false;
|
groupMenu.Visible = false;
|
||||||
mp.gui.chat.show(false);
|
mp.gui.chat.show(false);
|
||||||
groupMenu.ItemSelect.on((item, index) => {
|
groupMenu.ItemSelect.on((item, index) => {
|
||||||
if (index === 0) { // Inviten
|
switch (index) {
|
||||||
globalData.InInput = true;
|
case 0: //Spieler inviten
|
||||||
var input = new InputHelper("Welchen Spieler möchtest du inviten (Name / ID)?", globalData);
|
globalData.InInput = true;
|
||||||
input.show();
|
var input = new InputHelper("Welchen Spieler möchtest du inviten (Name / ID)?", globalData);
|
||||||
input.getValue(name => {
|
input.show();
|
||||||
mp.events.callRemote("CLIENT:InteractionMenu_Invite", "Gruppe", name);
|
input.getValue(name => {
|
||||||
parentMenu.Close();
|
mp.events.callRemote("CLIENT:InteractionMenu_Invite", "Gruppe", name);
|
||||||
globalData.InInput = false;
|
parentMenu.Close();
|
||||||
});
|
globalData.InInput = false;
|
||||||
} else if (index === 1) { // Uninviten
|
});
|
||||||
globalData.InInput == true;
|
break;
|
||||||
var input = new InputHelper("Welchen Spieler möchtest du uninviten (Name / ID)?", globalData);
|
|
||||||
input.show();
|
case 1: //Spieler uninviten
|
||||||
input.getValue(name => {
|
globalData.InInput == true;
|
||||||
mp.events.callRemote("CLIENT:InteractionMenu_Uninvite", "Gruppe", name);
|
var input = new InputHelper("Welchen Spieler möchtest du uninviten (Name / ID)?", globalData);
|
||||||
parentMenu.Close();
|
input.show();
|
||||||
globalData.InInput = false;
|
input.getValue(name => {
|
||||||
});
|
mp.events.callRemote("CLIENT:InteractionMenu_Uninvite", "Gruppe", name);
|
||||||
|
parentMenu.Close();
|
||||||
|
globalData.InInput = false;
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2: //Gruppenmitglieder anzeigen
|
||||||
|
mp.events.callRemote("CLIENT:InteractionMenu_MemberList", "Gruppe");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3: //Neuen (zusätzlichen) Gruppenleiter bestimmen
|
||||||
|
globalData.InInput = true;
|
||||||
|
var input = new InputHelper("Welchen Spieler möchtest du zum Leiter ernennen (Name) ? ", globalData);
|
||||||
|
input.show();
|
||||||
|
input.getValue(name => {
|
||||||
|
mp.events.callRemote("CLIENT:InteractionMenu_MakeLeader", "Gruppe", name);
|
||||||
|
parentMenu.Close();
|
||||||
|
globalData.InInput = false;
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4: //Gruppe verlassen (bestimmt zufällig neuen Leiter)
|
||||||
|
mp.events.callRemote("CLIENT:InteractionMenu_LeaveGroup", "Gruppe");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5: //Gruppe löschen (als Leiter)
|
||||||
|
mp.events.callRemote("CLIENT:InteractionMenu_DeleteGroup", "Gruppe");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return groupMenu;
|
return groupMenu;
|
||||||
|
|||||||
@@ -297,7 +297,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
|
|
||||||
if (targetUser?.Group.Id != playerUser?.Group.Id)
|
if (targetUser?.Group.Id != playerUser?.Group.Id)
|
||||||
{
|
{
|
||||||
ChatService.ErrorMessage(player, "Dieser Spieler ist nicht in deiner Fraktion");
|
ChatService.ErrorMessage(player, "Dieser Spieler ist nicht in deiner Gruppe");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -326,7 +326,118 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[RemoteEvent("CLIENT:InteractionMenu_CallService_Taxi")]
|
[RemoteEvent("CLIENT:InteractionMenu_MemberList")]
|
||||||
|
public void InteractionMenuGroupMemberList(Player player, string type, string name)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[RemoteEvent("CLIENT:InteractionMenu_MakeLeader")]
|
||||||
|
public void InteractionMenuGroupMakeLeader(Player player, string type, string name)
|
||||||
|
{
|
||||||
|
if (type == "Gruppe")
|
||||||
|
{
|
||||||
|
using (var dbContext = new DatabaseContext())
|
||||||
|
{
|
||||||
|
User targetUser = dbContext.Users.FirstOrDefault(u => u.Name == name);
|
||||||
|
User playerUser = player.GetUser();
|
||||||
|
|
||||||
|
if (playerUser?.Group == null || playerUser.GroupRank < GroupRank.OWNER)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (targetUser?.Group.Id != playerUser?.Group.Id)
|
||||||
|
{
|
||||||
|
ChatService.ErrorMessage(player, "Dieser Spieler ist nicht in deiner Gruppe");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (player.Name == name)
|
||||||
|
{
|
||||||
|
ChatService.ErrorMessage(player, "Du bist schon Leader! Was willst du noch?");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ChatService.BroadcastGroup("~y~" + targetUser.Name + " ~s~ist jetzt neuer Gruppen-Manager.", playerUser.Group);
|
||||||
|
ChatService.SendMessage(targetUser.Player, "~y~Du bist jetzt Manager deiner Gruppe.");
|
||||||
|
targetUser.GroupRank = GroupRank.MANAGER;
|
||||||
|
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[RemoteEvent("CLIENT:InteractionMenu_LeaveGroup")]
|
||||||
|
public void InteractionMenuGroupLeageGroup(Player player, string type)
|
||||||
|
{
|
||||||
|
if (type == "Gruppe")
|
||||||
|
{
|
||||||
|
using (var dbContext = new DatabaseContext())
|
||||||
|
{
|
||||||
|
User playerUser = player.GetUser();
|
||||||
|
|
||||||
|
if (playerUser?.Group == null)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(dbContext.Users.Count(c => c.Group == playerUser.Group) == 1)
|
||||||
|
{
|
||||||
|
InteractionMenuGroupDeleteGroup(player,"Gruppe");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(playerUser.GroupRank == GroupRank.OWNER)
|
||||||
|
{
|
||||||
|
var memberList = dbContext.Users.ToList().Where(u => u.Group == playerUser.Group && u.GroupRank < GroupRank.OWNER);
|
||||||
|
var newOwner = dbContext.Users.GroupBy(x => x.GroupRank).Select(g => g.OrderByDescending(x => x.GroupRank).FirstOrDefault());
|
||||||
|
|
||||||
|
newOwner.FirstOrDefault().GroupRank = GroupRank.OWNER;
|
||||||
|
ChatService.BroadcastGroup("~y~" + player.Name + "~s~ wurde zum neuen Owner ernannt.", playerUser.Group);
|
||||||
|
}
|
||||||
|
ChatService.BroadcastGroup("~y~" + player.Name + "~s~ hat die Gruppe verlassen.",playerUser.Group);
|
||||||
|
playerUser.Group = null;
|
||||||
|
playerUser.GroupRank = GroupRank.NONE;
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[RemoteEvent("CLIENT:InteractionMenu_DeleteGroup")]
|
||||||
|
public void InteractionMenuGroupDeleteGroup(Player player, string type)
|
||||||
|
{
|
||||||
|
if (type == "Gruppe")
|
||||||
|
{
|
||||||
|
using (var dbContext = new DatabaseContext())
|
||||||
|
{
|
||||||
|
User playerUser = player.GetUser();
|
||||||
|
|
||||||
|
if (playerUser?.Group == null || playerUser.GroupRank < GroupRank.OWNER)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var memberList = dbContext.Users.ToList().Where(u => u.Group == playerUser.Group);
|
||||||
|
var deletedGroup = dbContext.Groups.FirstOrDefault(g => g.Id == playerUser.Group.Id);
|
||||||
|
foreach (var user in memberList)
|
||||||
|
{
|
||||||
|
var groupName = dbContext.Groups.FirstOrDefault(g => g.Id == playerUser.Group.Id);
|
||||||
|
user.Group = null;
|
||||||
|
user.GroupRank = GroupRank.NONE;
|
||||||
|
ChatService.SendMessage(user.Player, "Die Gruppe ~y~" + groupName + "~s~ wurde aufgelöst");
|
||||||
|
}
|
||||||
|
|
||||||
|
dbContext.Remove(deletedGroup);
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[RemoteEvent("CLIENT:InteractionMenu_CallService_Taxi")]
|
||||||
public void CallServiceTaxi(Player player, string street, string zone)
|
public void CallServiceTaxi(Player player, string street, string zone)
|
||||||
{
|
{
|
||||||
var taxiJob = JobManager.GetJob<TaxiDriverJob>();
|
var taxiJob = JobManager.GetJob<TaxiDriverJob>();
|
||||||
|
|||||||
Reference in New Issue
Block a user