simplify invinte / add uninvite

This commit is contained in:
hydrant
2019-05-09 19:19:14 +02:00
parent e110f6e1f5
commit 3b7316567f
3 changed files with 138 additions and 82 deletions

View File

@@ -26,7 +26,6 @@ namespace ReallifeGamemode.Server.Managers
[RemoteEvent("CLIENT:InteractionMenu_AcceptInvite")]
public void InteractionMenuAcceptInvite(Client player, string type)
{
if (type != "Fraktion" && type != "Gruppe") return;
if (type == "Fraktion") // Fraktions Invite annehmen
@@ -102,14 +101,10 @@ namespace ReallifeGamemode.Server.Managers
}
}
[RemoteEvent("CLIENT:InteractionMenu_InviteFaction")]
public void InteractionMenuInviteFaction(Client player, string nameOrId)
[RemoteEvent("CLIENT:InteractionMenu_Invite")]
public void InteractionMenuInviteFaction(Client player, string type, string nameOrId)
{
if (player.GetUser()?.FactionId == null || player.GetUser().FactionLeader == false)
{
ChatService.NotAuthorized(player);
return;
}
if (type != "Fraktion" && type != "Gruppe") return;
Client target = ClientService.GetClientByNameOrId(nameOrId);
if (target == null || !target.IsLoggedIn())
@@ -118,46 +113,142 @@ namespace ReallifeGamemode.Server.Managers
return;
}
if (target.GetUser()?.FactionId != null)
User targetUser = target.GetUser();
User playerUser = player.GetUser();
if (type == "Fraktion")
{
ChatService.Error(player, "Dieser Spieler ist schon in einer Fraktion");
return;
if (playerUser?.FactionId == null || playerUser?.FactionLeader == false)
{
ChatService.NotAuthorized(player);
return;
}
if (targetUser?.FactionId != null)
{
ChatService.Error(player, "Dieser Spieler ist schon in einer Fraktion");
return;
}
target.SetData("accept_faction_invite", player.Handle);
player.SendChatMessage("!{02FCFF}Du hast dem Spieler " + target.Name + " eine Einladung in deine Fraktion gesendet.");
target.SendChatMessage("!{02FCFF}Du hast von " + player.Name + " eine Einladung in die Fraktion \"" + playerUser.Faction.Name + "\" erhalten.");
target.SendChatMessage("!{02FCFF}Benutze das Interaktionsmenü, um die Einladung anzunehmen");
}
else if (type == "Gruppe")
{
if (playerUser?.Group == null || playerUser.GroupRank < GroupRank.MANAGER)
{
ChatService.NotAuthorized(player);
return;
}
target.SetData("accept_faction_invite", player.Handle);
if (targetUser?.Group != null)
{
ChatService.Error(player, "Dieser Spieler ist schon in einer Gruppe");
return;
}
player.SendChatMessage("!{02FCFF}Du hast dem Spieler " + target.Name + " eine Einladung in deine Fraktion gesendet.");
target.SendChatMessage("!{02FCFF}Du hast von " + player.Name + " eine Einladung in die Fraktion \"" + player.GetUser().Faction.Name + "\" erhalten.");
target.SendChatMessage("!{02FCFF}Benutze das Interaktionsmenü, um die Einladung anzunehmen");
target.SetData("accept_group_invite", player.Handle);
player.SendChatMessage("!{02FCFF}Du hast dem Spieler " + target.Name + " eine Einladung in deine Gruppe gesendet.");
target.SendChatMessage("!{02FCFF}Du hast von " + player.Name + " eine Einladung in die Gruppe \"" + playerUser.Group.Name + "\" erhalten.");
target.SendChatMessage("!{02FCFF}Benutze das Interaktionsmenü, um die Einladung anzunehmen");
}
}
[RemoteEvent("CLIENT:InteractionMenu_InviteGroup")]
public void InteractionMenuInviteGroup(Client player, string nameOrId)
[RemoteEvent("CLIENT:InteractionMenu_Uninvite")]
public void InteractionMenuInviteGroup(Client player, string type, string name)
{
if (player.GetUser()?.Group == null || player.GetUser().GroupRank < GroupRank.MANAGER)
{
ChatService.NotAuthorized(player);
return;
}
if (type != "Fraktion" && type != "Gruppe") return;
Client target = ClientService.GetClientByNameOrId(nameOrId);
Client target = ClientService.GetClientByNameOrId(name);
if (target == null || !target.IsLoggedIn())
{
ChatService.PlayerNotFound(player);
return;
}
if (target.GetUser()?.Group != null)
User targetUser = target.GetUser();
User playerUser = player.GetUser();
if (type == "Fraktion")
{
ChatService.Error(player, "Dieser Spieler ist schon in einer Gruppe");
return;
if (playerUser?.FactionId == null || playerUser.FactionLeader == false)
{
ChatService.NotAuthorized(player);
return;
}
if (targetUser?.FactionId != playerUser?.FactionId)
{
ChatService.Error(player, "Dieser Spieler ist nicht in deiner Fraktion");
return;
}
if (player.Handle == target.Handle)
{
ChatService.Error(player, "Du kannst dich nicht selber uninviten");
return;
}
if (targetUser?.FactionLeader ?? false)
{
ChatService.Error(player, "Du kannst keinen Leader uninviten");
return;
}
using (var dbContext = new DatabaseContext())
{
target.GetUser(dbContext).FactionRankId = null;
target.GetUser(dbContext).FactionId = null;
player.SendChatMessage("!{02FCFF}Du hast " + target.Name + " aus der Fraktion geworfen.");
target.SendChatMessage("!{02FCFF}Du wurdest von " + player.Name + " aus der Fraktion geworfen.");
dbContext.SaveChanges();
}
}
else if (type == "Gruppe")
{
if (playerUser?.Group == null || playerUser.GroupRank < GroupRank.MANAGER)
{
ChatService.NotAuthorized(player);
return;
}
target.SetData("accept_group_invite", player.Handle);
if (targetUser?.Group.Id != playerUser?.Group.Id)
{
ChatService.Error(player, "Dieser Spieler ist nicht in deiner Fraktion");
return;
}
player.SendChatMessage("!{02FCFF}Du hast dem Spieler " + target.Name + " eine Einladung in deine Gruppe gesendet.");
target.SendChatMessage("!{02FCFF}Du hast von " + player.Name + " eine Einladung in die Gruppe \"" + player.GetUser().Group.Name + "\" erhalten.");
target.SendChatMessage("!{02FCFF}Benutze das Interaktionsmenü, um die Einladung anzunehmen");
if (player.Handle == target.Handle)
{
ChatService.Error(player, "Du kannst dich nicht selber uninviten");
return;
}
if (targetUser?.GroupRank >= GroupRank.MANAGER && playerUser?.GroupRank != GroupRank.OWNER)
{
ChatService.Error(player, "Du kannst keinen Leader uninviten");
return;
}
using (var dbContext = new DatabaseContext())
{
target.GetUser(dbContext).FactionRankId = null;
target.GetUser(dbContext).FactionId = null;
player.SendChatMessage("!{02FCFF}Du hast " + target.Name + " aus der Gruppe geworfen.");
target.SendChatMessage("!{02FCFF}Du wurdest von " + player.Name + " aus der Gruppe geworfen.");
dbContext.SaveChanges();
}
}
}
#endregion
#region Spielerinteraktionen PFEILTASTE-LINKS
@@ -185,7 +276,7 @@ namespace ReallifeGamemode.Server.Managers
Client tradeRequester = ClientService.GetClientByNameOrId(tradeRequesterName);
if (tradeSelection == "accept")
{
if(player.GetUser().Handmoney < tradePrize)
if (player.GetUser().Handmoney < tradePrize)
{
tradeRequester.TriggerEvent("unlockTradeItems");
tradeRequester.SendNotification("~y~" + player.Name + " ~r~hat nicht genügend Bargeld! ~s~Handel abgebrochen.");
@@ -212,7 +303,7 @@ namespace ReallifeGamemode.Server.Managers
dbContext.SaveChanges();
}
}
}
}
else
{