Giveperm and revokeperm commands work correctly now when used by clients
This commit is contained in:
@@ -342,22 +342,76 @@ namespace Barotrauma
|
|||||||
if (perm.ToLower() == "all")
|
if (perm.ToLower() == "all")
|
||||||
{
|
{
|
||||||
permission = ClientPermissions.EndRound | ClientPermissions.Kick | ClientPermissions.Ban |
|
permission = ClientPermissions.EndRound | ClientPermissions.Kick | ClientPermissions.Ban |
|
||||||
ClientPermissions.SelectSub | ClientPermissions.SelectMode | ClientPermissions.ManageCampaign | ClientPermissions.ConsoleCommands;
|
ClientPermissions.SelectSub | ClientPermissions.SelectMode | ClientPermissions.ManageCampaign | ClientPermissions.ConsoleCommands;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Enum.TryParse(perm, out permission);
|
if (!Enum.TryParse(perm, true, out permission))
|
||||||
|
{
|
||||||
|
NewMessage(perm + " is not a valid permission!", Color.Red);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
client.GivePermission(permission);
|
client.GivePermission(permission);
|
||||||
GameMain.Server.UpdateClientPermissions(client);
|
GameMain.Server.UpdateClientPermissions(client);
|
||||||
NewMessage("Granted " + perm + " permissions to " + client.Name + ".", Color.White);
|
NewMessage("Granted " + perm + " permissions to " + client.Name + ".", Color.White);
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
(string[] args) =>
|
||||||
|
{
|
||||||
|
#if CLIENT
|
||||||
|
if (args.Length < 1) return;
|
||||||
|
|
||||||
|
int id;
|
||||||
|
if (!int.TryParse(args[0], out id))
|
||||||
|
{
|
||||||
|
ThrowError("\"" + id + "\" is not a valid client ID.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ShowQuestionPrompt("Permission to grant to client #" + id + "?", (perm) =>
|
||||||
|
{
|
||||||
|
GameMain.Client.SendConsoleCommand("giveperm " +id + " " + perm);
|
||||||
|
});
|
||||||
|
#endif
|
||||||
|
},
|
||||||
|
(Client senderClient, Vector2 cursorWorldPos, string[] args) =>
|
||||||
|
{
|
||||||
|
if (args.Length < 2) return;
|
||||||
|
|
||||||
|
int id;
|
||||||
|
int.TryParse(args[0], out id);
|
||||||
|
var client = GameMain.Server.ConnectedClients.Find(c => c.ID == id);
|
||||||
|
if (client == null)
|
||||||
|
{
|
||||||
|
GameMain.Server.SendChatMessage("Client id \"" + id + "\" not found.", senderClient);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
string perm = string.Join("", args.Skip(1));
|
||||||
|
|
||||||
|
ClientPermissions permission = ClientPermissions.None;
|
||||||
|
if (perm.ToLower() == "all")
|
||||||
|
{
|
||||||
|
permission = ClientPermissions.EndRound | ClientPermissions.Kick | ClientPermissions.Ban |
|
||||||
|
ClientPermissions.SelectSub | ClientPermissions.SelectMode | ClientPermissions.ManageCampaign | ClientPermissions.ConsoleCommands;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!Enum.TryParse(perm, true, out permission))
|
||||||
|
{
|
||||||
|
GameMain.Server.SendChatMessage(perm + " is not a valid permission!", senderClient);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
client.GivePermission(permission);
|
||||||
|
GameMain.Server.UpdateClientPermissions(client);
|
||||||
|
GameMain.Server.SendChatMessage("Granted " + perm + " permissions to " + client.Name + ".", senderClient);
|
||||||
|
NewMessage(senderClient.Name + " granted " + perm + " permissions to " + client.Name + ".", Color.White);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
commands.Add(new Command("revokeperm", "revokeperm [id]: Revokes administrative permissions to the player with the specified client ID.", (string[] args) =>
|
commands.Add(new Command("revokeperm", "revokeperm [id]: Revokes administrative permissions to the player with the specified client ID.", (string[] args) =>
|
||||||
{
|
{
|
||||||
//todo: allow client usage
|
|
||||||
|
|
||||||
if (GameMain.Server == null) return;
|
if (GameMain.Server == null) return;
|
||||||
if (args.Length < 1) return;
|
if (args.Length < 1) return;
|
||||||
|
|
||||||
@@ -375,16 +429,73 @@ namespace Barotrauma
|
|||||||
ClientPermissions permission = ClientPermissions.None;
|
ClientPermissions permission = ClientPermissions.None;
|
||||||
if (perm.ToLower() == "all")
|
if (perm.ToLower() == "all")
|
||||||
{
|
{
|
||||||
permission = ClientPermissions.EndRound | ClientPermissions.Kick | ClientPermissions.Ban | ClientPermissions.SelectSub | ClientPermissions.SelectMode | ClientPermissions.ManageCampaign;
|
permission = ClientPermissions.EndRound | ClientPermissions.Kick | ClientPermissions.Ban |
|
||||||
|
ClientPermissions.SelectSub | ClientPermissions.SelectMode | ClientPermissions.ManageCampaign | ClientPermissions.ConsoleCommands;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Enum.TryParse(perm, out permission);
|
if (!Enum.TryParse(perm, true, out permission))
|
||||||
|
{
|
||||||
|
NewMessage(perm + " is not a valid permission!", Color.Red);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
client.RemovePermission(permission);
|
client.RemovePermission(permission);
|
||||||
GameMain.Server.UpdateClientPermissions(client);
|
GameMain.Server.UpdateClientPermissions(client);
|
||||||
NewMessage("Revoked " + perm + " permissions from " + client.Name + ".", Color.White);
|
NewMessage("Revoked " + perm + " permissions from " + client.Name + ".", Color.White);
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
(string[] args) =>
|
||||||
|
{
|
||||||
|
#if CLIENT
|
||||||
|
if (args.Length < 1) return;
|
||||||
|
|
||||||
|
int id;
|
||||||
|
if (!int.TryParse(args[0], out id))
|
||||||
|
{
|
||||||
|
ThrowError("\"" + id + "\" is not a valid client ID.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ShowQuestionPrompt("Permission to revoke from client #" + id + "?", (perm) =>
|
||||||
|
{
|
||||||
|
GameMain.Client.SendConsoleCommand("revokeperm " + id + " " + perm);
|
||||||
|
});
|
||||||
|
#endif
|
||||||
|
},
|
||||||
|
(Client senderClient, Vector2 cursorWorldPos, string[] args) =>
|
||||||
|
{
|
||||||
|
if (args.Length < 2) return;
|
||||||
|
|
||||||
|
int id;
|
||||||
|
int.TryParse(args[0], out id);
|
||||||
|
var client = GameMain.Server.ConnectedClients.Find(c => c.ID == id);
|
||||||
|
if (client == null)
|
||||||
|
{
|
||||||
|
GameMain.Server.SendChatMessage("Client id \"" + id + "\" not found.", senderClient);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
string perm = string.Join("", args.Skip(1));
|
||||||
|
|
||||||
|
ClientPermissions permission = ClientPermissions.None;
|
||||||
|
if (perm.ToLower() == "all")
|
||||||
|
{
|
||||||
|
permission = ClientPermissions.EndRound | ClientPermissions.Kick | ClientPermissions.Ban |
|
||||||
|
ClientPermissions.SelectSub | ClientPermissions.SelectMode | ClientPermissions.ManageCampaign | ClientPermissions.ConsoleCommands;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!Enum.TryParse(perm, true, out permission))
|
||||||
|
{
|
||||||
|
GameMain.Server.SendChatMessage(perm + " is not a valid permission!", senderClient);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
client.RemovePermission(permission);
|
||||||
|
GameMain.Server.UpdateClientPermissions(client);
|
||||||
|
GameMain.Server.SendChatMessage("Revoked " + perm + " permissions from " + client.Name + ".", senderClient);
|
||||||
|
NewMessage(senderClient.Name + " revoked " + perm + " permissions from " + client.Name + ".", Color.White);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
commands.Add(new Command("kick", "kick [name]: Kick a player out of the server.", (string[] args) =>
|
commands.Add(new Command("kick", "kick [name]: Kick a player out of the server.", (string[] args) =>
|
||||||
|
|||||||
Reference in New Issue
Block a user