Server responses to clients using console commands ("granted permissions to client", error messages, etc) are displayed in the client's debug console instead of the chat box. Client command usage is included in server logs.
This commit is contained in:
@@ -44,6 +44,10 @@ namespace Barotrauma.Networking
|
||||
{
|
||||
new GUIMessageBox("", txt);
|
||||
}
|
||||
else if (type == ChatMessageType.Console)
|
||||
{
|
||||
DebugConsole.NewMessage(txt, MessageColor[(int)ChatMessageType.Console]);
|
||||
}
|
||||
else
|
||||
{
|
||||
GameMain.Client.AddChatMessage(txt, type, senderName, senderCharacter);
|
||||
|
||||
@@ -157,12 +157,12 @@ namespace Barotrauma
|
||||
}, null,
|
||||
(Client client, Vector2 cursorWorldPos, string[] args) =>
|
||||
{
|
||||
GameMain.Server.SendChatMessage("***************", client);
|
||||
GameMain.Server.SendConsoleMessage("***************", client);
|
||||
foreach (Client c in GameMain.Server.ConnectedClients)
|
||||
{
|
||||
GameMain.Server.SendChatMessage("- " + c.ID.ToString() + ": " + c.Name + ", " + c.Connection.RemoteEndPoint.Address.ToString(), client);
|
||||
GameMain.Server.SendConsoleMessage("- " + c.ID.ToString() + ": " + c.Name + ", " + c.Connection.RemoteEndPoint.Address.ToString(), client);
|
||||
}
|
||||
GameMain.Server.SendChatMessage("***************", client);
|
||||
GameMain.Server.SendConsoleMessage("***************", client);
|
||||
}));
|
||||
|
||||
|
||||
@@ -222,7 +222,7 @@ namespace Barotrauma
|
||||
{
|
||||
HumanAIController.DisableCrewAI = true;
|
||||
NewMessage("Crew AI disabled by \"" + client.Name + "\"", Color.White);
|
||||
GameMain.Server.SendChatMessage("Crew AI disabled", client);
|
||||
GameMain.Server.SendConsoleMessage("Crew AI disabled", client);
|
||||
}));
|
||||
|
||||
commands.Add(new Command("enablecrewai", "enablecrewai: Enable the AI of the NPCs in the crew.", (string[] args) =>
|
||||
@@ -235,7 +235,7 @@ namespace Barotrauma
|
||||
{
|
||||
HumanAIController.DisableCrewAI = false;
|
||||
NewMessage("Crew AI enabled by \"" + client.Name + "\"", Color.White);
|
||||
GameMain.Server.SendChatMessage("Crew AI enabled", client);
|
||||
GameMain.Server.SendConsoleMessage("Crew AI enabled", client);
|
||||
}));
|
||||
|
||||
commands.Add(new Command("autorestart", "autorestart [true/false]: Enable or disable round auto-restart.", (string[] args) =>
|
||||
@@ -384,7 +384,7 @@ namespace Barotrauma
|
||||
var client = GameMain.Server.ConnectedClients.Find(c => c.ID == id);
|
||||
if (client == null)
|
||||
{
|
||||
GameMain.Server.SendChatMessage("Client id \"" + id + "\" not found.", senderClient);
|
||||
GameMain.Server.SendConsoleMessage("Client id \"" + id + "\" not found.", senderClient);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -400,13 +400,13 @@ namespace Barotrauma
|
||||
{
|
||||
if (!Enum.TryParse(perm, true, out permission))
|
||||
{
|
||||
GameMain.Server.SendChatMessage(perm + " is not a valid permission!", senderClient);
|
||||
GameMain.Server.SendConsoleMessage(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);
|
||||
GameMain.Server.SendConsoleMessage("Granted " + perm + " permissions to " + client.Name + ".", senderClient);
|
||||
NewMessage(senderClient.Name + " granted " + perm + " permissions to " + client.Name + ".", Color.White);
|
||||
}));
|
||||
|
||||
@@ -472,7 +472,7 @@ namespace Barotrauma
|
||||
var client = GameMain.Server.ConnectedClients.Find(c => c.ID == id);
|
||||
if (client == null)
|
||||
{
|
||||
GameMain.Server.SendChatMessage("Client id \"" + id + "\" not found.", senderClient);
|
||||
GameMain.Server.SendConsoleMessage("Client id \"" + id + "\" not found.", senderClient);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -488,13 +488,13 @@ namespace Barotrauma
|
||||
{
|
||||
if (!Enum.TryParse(perm, true, out permission))
|
||||
{
|
||||
GameMain.Server.SendChatMessage(perm + " is not a valid permission!", senderClient);
|
||||
GameMain.Server.SendConsoleMessage(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);
|
||||
GameMain.Server.SendConsoleMessage("Revoked " + perm + " permissions from " + client.Name + ".", senderClient);
|
||||
NewMessage(senderClient.Name + " revoked " + perm + " permissions from " + client.Name + ".", Color.White);
|
||||
}));
|
||||
|
||||
@@ -682,7 +682,7 @@ namespace Barotrauma
|
||||
|
||||
Submarine.MainSub.GodMode = !Submarine.MainSub.GodMode;
|
||||
NewMessage((Submarine.MainSub.GodMode ? "Godmode turned on by \"" : "Godmode off by \"") + client.Name+"\"", Color.White);
|
||||
GameMain.Server.SendChatMessage(Submarine.MainSub.GodMode ? "Godmode on" : "Godmode off", client);
|
||||
GameMain.Server.SendConsoleMessage(Submarine.MainSub.GodMode ? "Godmode on" : "Godmode off", client);
|
||||
}));
|
||||
|
||||
commands.Add(new Command("lockx", "lockx: Lock horizontal movement of the main submarine.", (string[] args) =>
|
||||
@@ -953,7 +953,7 @@ namespace Barotrauma
|
||||
int separatorIndex = Array.IndexOf(args, ";");
|
||||
if (separatorIndex == -1 || args.Length < 3)
|
||||
{
|
||||
GameMain.Server.SendChatMessage("Invalid parameters. The command should be formatted as \"setclientcharacter [client] ; [character]\"", senderClient);
|
||||
GameMain.Server.SendConsoleMessage("Invalid parameters. The command should be formatted as \"setclientcharacter [client] ; [character]\"", senderClient);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -964,7 +964,7 @@ namespace Barotrauma
|
||||
var client = GameMain.Server.ConnectedClients.Find(c => c.Name == clientName);
|
||||
if (client == null)
|
||||
{
|
||||
GameMain.Server.SendChatMessage("Client \"" + clientName + "\" not found.", senderClient);
|
||||
GameMain.Server.SendConsoleMessage("Client \"" + clientName + "\" not found.", senderClient);
|
||||
}
|
||||
|
||||
var character = FindMatchingCharacter(argsRight, false);
|
||||
@@ -1076,7 +1076,7 @@ namespace Barotrauma
|
||||
var campaign = GameMain.GameSession?.GameMode as CampaignMode;
|
||||
if (campaign == null)
|
||||
{
|
||||
GameMain.Server.SendChatMessage("No campaign active!", senderClient);
|
||||
GameMain.Server.SendConsoleMessage("No campaign active!", senderClient);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1084,12 +1084,12 @@ namespace Barotrauma
|
||||
if (args.Length < 1 || !int.TryParse(args[0], out destinationIndex)) return;
|
||||
if (destinationIndex < 0 || destinationIndex >= campaign.Map.CurrentLocation.Connections.Count)
|
||||
{
|
||||
GameMain.Server.SendChatMessage("Index out of bounds!", senderClient);
|
||||
GameMain.Server.SendConsoleMessage("Index out of bounds!", senderClient);
|
||||
return;
|
||||
}
|
||||
Location location = campaign.Map.CurrentLocation.Connections[destinationIndex].OtherLocation(campaign.Map.CurrentLocation);
|
||||
campaign.Map.SelectLocation(location);
|
||||
GameMain.Server.SendChatMessage(location.Name + " selected.", senderClient);
|
||||
GameMain.Server.SendConsoleMessage(location.Name + " selected.", senderClient);
|
||||
}));
|
||||
|
||||
#if DEBUG
|
||||
@@ -1289,7 +1289,8 @@ namespace Barotrauma
|
||||
if (string.IsNullOrWhiteSpace(command)) return;
|
||||
if (!client.HasPermission(ClientPermissions.ConsoleCommands))
|
||||
{
|
||||
GameMain.Server.SendChatMessage("You are not permitted to use console commands!", client);
|
||||
GameMain.Server.SendConsoleMessage("You are not permitted to use console commands!", client);
|
||||
GameServer.Log(client.Name + " attempted to execute the console command \"" + command + "\" without a permission to use console commands.", ServerLog.MessageType.ConsoleUsage);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1297,22 +1298,24 @@ namespace Barotrauma
|
||||
Command matchingCommand = commands.Find(c => c.names.Contains(splitCommand[0].ToLowerInvariant()));
|
||||
if (matchingCommand != null && !client.PermittedConsoleCommands.Contains(matchingCommand))
|
||||
{
|
||||
GameMain.Server.SendChatMessage("You are not permitted to use the command\"" + matchingCommand.names[0] + "\"!", client);
|
||||
GameMain.Server.SendConsoleMessage("You are not permitted to use the command\"" + matchingCommand.names[0] + "\"!", client);
|
||||
GameServer.Log(client.Name + " attempted to execute the console command \"" + command + "\" without a permission to use the command.", ServerLog.MessageType.ConsoleUsage);
|
||||
return;
|
||||
}
|
||||
else if (matchingCommand == null)
|
||||
{
|
||||
GameMain.Server.SendChatMessage("Command \"" + splitCommand[0] + "\" not found.", client);
|
||||
GameMain.Server.SendConsoleMessage("Command \"" + splitCommand[0] + "\" not found.", client);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
matchingCommand.ServerExecuteOnClientRequest(client, cursorWorldPos, splitCommand.Skip(1).ToArray());
|
||||
GameServer.Log("Console command \"" + command + "\" executed by " + client.Name + ".", ServerLog.MessageType.ConsoleUsage);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
ThrowError("Executing the command \"" + matchingCommand.names[0]+"\" by request from \""+client.Name+"\" failed.", e);
|
||||
ThrowError("Executing the command \"" + matchingCommand.names[0] + "\" by request from \"" + client.Name + "\" failed.", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace Barotrauma.Networking
|
||||
{
|
||||
enum ChatMessageType
|
||||
{
|
||||
Default, Error, Dead, Server, Radio, Private, MessageBox
|
||||
Default, Error, Dead, Server, Radio, Private, Console, MessageBox
|
||||
}
|
||||
|
||||
partial class ChatMessage
|
||||
@@ -25,7 +25,8 @@ namespace Barotrauma.Networking
|
||||
new Color(63, 72, 204), //dead
|
||||
new Color(157, 225, 160), //server
|
||||
new Color(238, 208, 0), //radio
|
||||
new Color(228, 199, 27) //private
|
||||
new Color(228, 199, 27), //private
|
||||
new Color(255, 255, 255) //console
|
||||
};
|
||||
|
||||
public readonly string Text;
|
||||
|
||||
@@ -1634,6 +1634,12 @@ namespace Barotrauma.Networking
|
||||
SendChatMessage(msg, recipient);
|
||||
}
|
||||
|
||||
public void SendConsoleMessage(string txt, Client recipient)
|
||||
{
|
||||
ChatMessage msg = ChatMessage.Create("", txt, ChatMessageType.Console, null);
|
||||
SendChatMessage(msg, recipient);
|
||||
}
|
||||
|
||||
public void SendChatMessage(ChatMessage msg, Client recipient)
|
||||
{
|
||||
msg.NetStateID = recipient.ChatMsgQueue.Count > 0 ?
|
||||
|
||||
@@ -28,18 +28,20 @@ namespace Barotrauma.Networking
|
||||
Attack,
|
||||
Spawning,
|
||||
ServerMessage,
|
||||
ConsoleUsage,
|
||||
Error
|
||||
}
|
||||
|
||||
private readonly Color[] messageColor =
|
||||
{
|
||||
Color.LightBlue,
|
||||
new Color(255, 142, 0),
|
||||
new Color(238, 208, 0),
|
||||
new Color(204, 74, 78),
|
||||
new Color(163, 73, 164),
|
||||
new Color(157, 225, 160),
|
||||
Color.Red
|
||||
Color.LightBlue, //Chat
|
||||
new Color(255, 142, 0), //ItemInteraction
|
||||
new Color(238, 208, 0), //Inventory
|
||||
new Color(204, 74, 78), //Attack
|
||||
new Color(163, 73, 164), //Spawning
|
||||
new Color(157, 225, 160), //ServerMessage
|
||||
new Color(0, 162, 232), //ConsoleUsage
|
||||
Color.Red //Error
|
||||
};
|
||||
|
||||
private readonly string[] messageTypeName =
|
||||
@@ -50,6 +52,7 @@ namespace Barotrauma.Networking
|
||||
"Attack & death",
|
||||
"Spawning",
|
||||
"Server message",
|
||||
"Console usage",
|
||||
"Error"
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user