Hacked clients can't send chat messages from other characters anymore
Also added sendername as userdata in chat messages, for now it's not used for anything but we'll probably find something where this is useful
This commit is contained in:
@@ -117,8 +117,11 @@ namespace Barotrauma.Networking
|
|||||||
public void WriteNetworkMessage(NetOutgoingMessage msg)
|
public void WriteNetworkMessage(NetOutgoingMessage msg)
|
||||||
{
|
{
|
||||||
msg.WriteRangedInteger(0, Enum.GetValues(typeof(ChatMessageType)).Length, (byte)Type);
|
msg.WriteRangedInteger(0, Enum.GetValues(typeof(ChatMessageType)).Length, (byte)Type);
|
||||||
msg.Write(Sender == null ? (ushort)0 : Sender.ID);
|
if (GameMain.Server != null)
|
||||||
msg.Write(SenderName);
|
{
|
||||||
|
msg.Write(Sender == null ? (ushort)0 : Sender.ID);
|
||||||
|
msg.Write(SenderName);
|
||||||
|
}
|
||||||
|
|
||||||
msg.Write(Text);
|
msg.Write(Text);
|
||||||
}
|
}
|
||||||
@@ -126,11 +129,33 @@ namespace Barotrauma.Networking
|
|||||||
public static ChatMessage ReadNetworkMessage(NetBuffer msg)
|
public static ChatMessage ReadNetworkMessage(NetBuffer msg)
|
||||||
{
|
{
|
||||||
ChatMessageType type = (ChatMessageType)msg.ReadRangedInteger(0, Enum.GetValues(typeof(ChatMessageType)).Length);
|
ChatMessageType type = (ChatMessageType)msg.ReadRangedInteger(0, Enum.GetValues(typeof(ChatMessageType)).Length);
|
||||||
ushort senderId = msg.ReadUInt16();
|
string senderName="";
|
||||||
string senderName = msg.ReadString();
|
Character character = null;
|
||||||
|
if (GameMain.Server == null)
|
||||||
|
{
|
||||||
|
ushort senderId = msg.ReadUInt16();
|
||||||
|
character = Entity.FindEntityByID(senderId) as Character;
|
||||||
|
senderName = msg.ReadString();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NetIncomingMessage inc = msg as NetIncomingMessage;
|
||||||
|
if (inc == null) return null;
|
||||||
|
Client sender = GameMain.Server.ConnectedClients.Find(x => x.Connection == inc.SenderConnection);
|
||||||
|
if (sender == null) return null;
|
||||||
|
character = sender.Character;
|
||||||
|
if (character != null)
|
||||||
|
{
|
||||||
|
senderName = character.Name;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
senderName = sender.name;
|
||||||
|
}
|
||||||
|
}
|
||||||
string text = msg.ReadString();
|
string text = msg.ReadString();
|
||||||
|
|
||||||
return new ChatMessage(senderName, text, type, Entity.FindEntityByID(senderId) as Character);
|
return new ChatMessage(senderName, text, type, character);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1443,6 +1443,7 @@ namespace Barotrauma.Networking
|
|||||||
{
|
{
|
||||||
Client sender = connectedClients.Find(x => x.Connection == inc.SenderConnection);
|
Client sender = connectedClients.Find(x => x.Connection == inc.SenderConnection);
|
||||||
ChatMessage message = ChatMessage.ReadNetworkMessage(inc);
|
ChatMessage message = ChatMessage.ReadNetworkMessage(inc);
|
||||||
|
if (message == null) return;
|
||||||
|
|
||||||
List<Client> recipients = new List<Client>();
|
List<Client> recipients = new List<Client>();
|
||||||
|
|
||||||
|
|||||||
@@ -309,6 +309,7 @@ namespace Barotrauma.Networking
|
|||||||
((chatBox.CountChildren % 2) == 0) ? Color.Transparent : Color.Black * 0.1f, message.Color,
|
((chatBox.CountChildren % 2) == 0) ? Color.Transparent : Color.Black * 0.1f, message.Color,
|
||||||
Alignment.Left, null, null, true);
|
Alignment.Left, null, null, true);
|
||||||
msg.Font = GUI.SmallFont;
|
msg.Font = GUI.SmallFont;
|
||||||
|
msg.UserData = message.SenderName;
|
||||||
|
|
||||||
msg.Padding = new Vector4(20.0f, 0, 0, 0);
|
msg.Padding = new Vector4(20.0f, 0, 0, 0);
|
||||||
|
|
||||||
|
|||||||
@@ -989,6 +989,7 @@ namespace Barotrauma
|
|||||||
((chatBox.CountChildren % 2) == 0) ? Color.Transparent : Color.Black*0.1f, message.Color,
|
((chatBox.CountChildren % 2) == 0) ? Color.Transparent : Color.Black*0.1f, message.Color,
|
||||||
Alignment.Left, GUI.Style, null, true);
|
Alignment.Left, GUI.Style, null, true);
|
||||||
msg.Font = GUI.SmallFont;
|
msg.Font = GUI.SmallFont;
|
||||||
|
msg.UserData = message.SenderName;
|
||||||
msg.CanBeFocused = false;
|
msg.CanBeFocused = false;
|
||||||
|
|
||||||
msg.Padding = new Vector4(20, 0, 0, 0);
|
msg.Padding = new Vector4(20, 0, 0, 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user