Fix login

This commit is contained in:
Hondacrx
2024-11-16 23:05:45 -05:00
parent 76b0d747d3
commit 406aa5e445
26 changed files with 151 additions and 76 deletions
+47
View File
@@ -82,6 +82,11 @@ namespace Game.Networking
public ConnectionType GetConnection() { return connectionType; }
public bool IsValidOpcode()
{
return _worldPacket.IsValidOpcode();
}
byte[] buffer;
ConnectionType connectionType;
protected WorldPacket _worldPacket;
@@ -209,6 +214,48 @@ namespace Game.Networking
public DateTime GetReceivedTime() { return m_receivedTime; }
public void SetReceiveTime(DateTime receivedTime) { m_receivedTime = receivedTime; }
public bool IsValidOpcode()
{
int opcodeArrayIndex = GetOpcodeArrayIndex(opcode);
return opcodeArrayIndex >= 0 && opcodeArrayIndex < 1699;
}
int GetOpcodeArrayIndex(uint opcode)
{
int idInGroup = (int)(opcode & 0xFFFF);
switch (opcode >> 16)
{
case 0x2A: return idInGroup < 26 ? idInGroup + 0 : -1;
case 0x2C: return idInGroup < 47 ? idInGroup + 26 : -1;
case 0x2D: return idInGroup < 3 ? idInGroup + 73 : -1;
case 0x2E: return idInGroup < 33 ? idInGroup + 76 : -1;
case 0x30: return idInGroup < 739 ? idInGroup + 109 : -1;
case 0x31: return idInGroup < 298 ? idInGroup + 848 : -1;
case 0x32: return idInGroup < 12 ? idInGroup + 1146 : -1;
case 0x33: return idInGroup < 130 ? idInGroup + 1158 : -1;
case 0x35: return idInGroup < 396 ? idInGroup + 1288 : -1;
case 0x36: return idInGroup < 15 ? idInGroup + 1684 : -1;
case 0x37: return idInGroup < 831 ? idInGroup + 0 : -1;
case 0x38: return idInGroup < 10 ? idInGroup + 831 : -1;
case 0x3B: return idInGroup < 18 ? idInGroup + 841 : -1;
case 0x3C: return idInGroup < 33 ? idInGroup + 859 : -1;
case 0x3D: return idInGroup < 49 ? idInGroup + 892 : -1;
case 0x3E: return idInGroup < 11 ? idInGroup + 941 : -1;
case 0x3F: return idInGroup < 12 ? idInGroup + 952 : -1;
case 0x41: return idInGroup < 82 ? idInGroup + 964 : -1;
case 0x43: return idInGroup < 67 ? idInGroup + 1046 : -1;
case 0x45: return idInGroup < 32 ? idInGroup + 1113 : -1;
case 0x47: return idInGroup < 1 ? idInGroup + 1145 : -1;
case 0x48: return idInGroup < 118 ? idInGroup + 1146 : -1;
case 0x4A: return idInGroup < 46 ? idInGroup + 1264 : -1;
case 0x4B: return idInGroup < 41 ? idInGroup + 1310 : -1;
case 0x4D: return idInGroup < 85 ? idInGroup + 1351 : -1;
case 0x4E: return idInGroup < 8 ? idInGroup + 1436 : -1;
case 0x50: return idInGroup < 1 ? idInGroup + 1444 : -1;
default: return -1;
}
}
uint opcode;
DateTime m_receivedTime; // only set for a specific set of opcodes, for performance reasons.
}