Hacked clients can't change their character name

Also made spam filter's aggressiveness consistent
This commit is contained in:
juanjp600
2016-08-29 19:43:35 -03:00
parent 4c23145025
commit 6bb6f63dd7
+9 -4
View File
@@ -1485,7 +1485,7 @@ namespace Barotrauma.Networking
similarity += sender.ChatSpamSpeed * 0.05f; //the faster messages are being sent, the faster the filter will block similarity += sender.ChatSpamSpeed * 0.05f; //the faster messages are being sent, the faster the filter will block
for (int i = 0; i < sender.ChatMessages.Count; i++) for (int i = 0; i < sender.ChatMessages.Count; i++)
{ {
float closeFactor = 1.0f / (sender.ChatMessages.Count - i); float closeFactor = 1.0f / (20.0f - i);
int levenshteinDist = ToolBox.LevenshteinDistance(message.Text, sender.ChatMessages[i]); int levenshteinDist = ToolBox.LevenshteinDistance(message.Text, sender.ChatMessages[i]);
similarity += Math.Max((message.Text.Length - levenshteinDist) / message.Text.Length * closeFactor, 0.0f); similarity += Math.Max((message.Text.Length - levenshteinDist) / message.Text.Length * closeFactor, 0.0f);
@@ -1613,6 +1613,9 @@ namespace Barotrauma.Networking
private void ReadCharacterData(NetIncomingMessage message) private void ReadCharacterData(NetIncomingMessage message)
{ {
Client sender = connectedClients.Find(c => c.Connection == message.SenderConnection);
if (sender == null) return;
string name = ""; string name = "";
Gender gender = Gender.Male; Gender gender = Gender.Male;
int headSpriteId = 0; int headSpriteId = 0;
@@ -1630,6 +1633,11 @@ namespace Barotrauma.Networking
headSpriteId = 0; headSpriteId = 0;
} }
if (sender.characterInfo != null)
{
//clients can't change their character's name once it's been set
name = sender.characterInfo.Name;
}
List<JobPrefab> jobPreferences = new List<JobPrefab>(); List<JobPrefab> jobPreferences = new List<JobPrefab>();
int count = message.ReadByte(); int count = message.ReadByte();
@@ -1640,9 +1648,6 @@ namespace Barotrauma.Networking
if (jobPrefab != null) jobPreferences.Add(jobPrefab); if (jobPrefab != null) jobPreferences.Add(jobPrefab);
} }
Client sender = connectedClients.Find(c => c.Connection == message.SenderConnection);
if (sender == null) return;
sender.characterInfo = new CharacterInfo(Character.HumanConfigFile, name, gender); sender.characterInfo = new CharacterInfo(Character.HumanConfigFile, name, gender);
sender.characterInfo.HeadSpriteId = headSpriteId; sender.characterInfo.HeadSpriteId = headSpriteId;
sender.jobPreferences = jobPreferences; sender.jobPreferences = jobPreferences;