mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 17:51:28 +00:00
Fix OP_SpecialMesg encoding
This broke with newer GCCs. It also worked even though the code was just wrong before???
This commit is contained in:
parent
525813be02
commit
dfa90aaac5
@ -3202,14 +3202,18 @@ namespace RoF
|
|||||||
SpecialMesg_Struct *emu = (SpecialMesg_Struct *)in->pBuffer;
|
SpecialMesg_Struct *emu = (SpecialMesg_Struct *)in->pBuffer;
|
||||||
|
|
||||||
unsigned char *__emu_buffer = in->pBuffer;
|
unsigned char *__emu_buffer = in->pBuffer;
|
||||||
|
// break strlen optimizations!
|
||||||
|
char *message = emu->sayer;
|
||||||
|
auto sayer_length = std::char_traits<char>::length(message);
|
||||||
|
message += sayer_length + 1 + 12; // skip over sayer name, null term, and 3 floats
|
||||||
|
|
||||||
std::string old_message = &emu->message[strlen(emu->sayer)];
|
std::string old_message = message;
|
||||||
std::string new_message;
|
std::string new_message;
|
||||||
|
|
||||||
ServerToRoFSayLink(new_message, old_message);
|
ServerToRoFSayLink(new_message, old_message);
|
||||||
|
|
||||||
//in->size = 3 + 4 + 4 + strlen(emu->sayer) + 1 + 12 + new_message.length() + 1;
|
//in->size = 3 + 4 + 4 + strlen(emu->sayer) + 1 + 12 + new_message.length() + 1;
|
||||||
in->size = strlen(emu->sayer) + new_message.length() + 25;
|
in->size = sayer_length + new_message.length() + 25;
|
||||||
in->pBuffer = new unsigned char[in->size];
|
in->pBuffer = new unsigned char[in->size];
|
||||||
|
|
||||||
char *OutBuffer = (char *)in->pBuffer;
|
char *OutBuffer = (char *)in->pBuffer;
|
||||||
@ -3223,18 +3227,10 @@ namespace RoF
|
|||||||
|
|
||||||
VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sayer);
|
VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sayer);
|
||||||
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[0]);
|
// TODO: figure this shit out
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[1]);
|
VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[2]);
|
VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[3]);
|
VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[4]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[5]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[6]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[7]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[8]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[9]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[10]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[11]);
|
|
||||||
|
|
||||||
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message.c_str());
|
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message.c_str());
|
||||||
|
|
||||||
|
|||||||
@ -3269,14 +3269,18 @@ namespace RoF2
|
|||||||
SpecialMesg_Struct *emu = (SpecialMesg_Struct *)in->pBuffer;
|
SpecialMesg_Struct *emu = (SpecialMesg_Struct *)in->pBuffer;
|
||||||
|
|
||||||
unsigned char *__emu_buffer = in->pBuffer;
|
unsigned char *__emu_buffer = in->pBuffer;
|
||||||
|
// break strlen optimizations!
|
||||||
|
char *message = emu->sayer;
|
||||||
|
auto sayer_length = std::char_traits<char>::length(message);
|
||||||
|
message += sayer_length + 1 + 12; // skip over sayer name, null term, and 3 floats
|
||||||
|
|
||||||
std::string old_message = &emu->message[strlen(emu->sayer)];
|
std::string old_message = message;
|
||||||
std::string new_message;
|
std::string new_message;
|
||||||
|
|
||||||
ServerToRoF2SayLink(new_message, old_message);
|
ServerToRoF2SayLink(new_message, old_message);
|
||||||
|
|
||||||
//in->size = 3 + 4 + 4 + strlen(emu->sayer) + 1 + 12 + new_message.length() + 1;
|
//in->size = 3 + 4 + 4 + strlen(emu->sayer) + 1 + 12 + new_message.length() + 1;
|
||||||
in->size = strlen(emu->sayer) + new_message.length() + 25;
|
in->size = sayer_length + new_message.length() + 25;
|
||||||
in->pBuffer = new unsigned char[in->size];
|
in->pBuffer = new unsigned char[in->size];
|
||||||
|
|
||||||
char *OutBuffer = (char *)in->pBuffer;
|
char *OutBuffer = (char *)in->pBuffer;
|
||||||
@ -3290,18 +3294,10 @@ namespace RoF2
|
|||||||
|
|
||||||
VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sayer);
|
VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sayer);
|
||||||
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[0]);
|
// TODO: figure this shit out
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[1]);
|
VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[2]);
|
VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[3]);
|
VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[4]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[5]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[6]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[7]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[8]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[9]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[10]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[11]);
|
|
||||||
|
|
||||||
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message.c_str());
|
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message.c_str());
|
||||||
|
|
||||||
|
|||||||
@ -2072,14 +2072,18 @@ namespace SoD
|
|||||||
SpecialMesg_Struct *emu = (SpecialMesg_Struct *)in->pBuffer;
|
SpecialMesg_Struct *emu = (SpecialMesg_Struct *)in->pBuffer;
|
||||||
|
|
||||||
unsigned char *__emu_buffer = in->pBuffer;
|
unsigned char *__emu_buffer = in->pBuffer;
|
||||||
|
// break strlen optimizations!
|
||||||
|
char *message = emu->sayer;
|
||||||
|
auto sayer_length = std::char_traits<char>::length(message);
|
||||||
|
message += sayer_length + 1 + 12; // skip over sayer name, null term, and 3 floats
|
||||||
|
|
||||||
std::string old_message = &emu->message[strlen(emu->sayer)];
|
std::string old_message = message;
|
||||||
std::string new_message;
|
std::string new_message;
|
||||||
|
|
||||||
ServerToSoDSayLink(new_message, old_message);
|
ServerToSoDSayLink(new_message, old_message);
|
||||||
|
|
||||||
//in->size = 3 + 4 + 4 + strlen(emu->sayer) + 1 + 12 + new_message.length() + 1;
|
//in->size = 3 + 4 + 4 + strlen(emu->sayer) + 1 + 12 + new_message.length() + 1;
|
||||||
in->size = strlen(emu->sayer) + new_message.length() + 25;
|
in->size = sayer_length + new_message.length() + 25;
|
||||||
in->pBuffer = new unsigned char[in->size];
|
in->pBuffer = new unsigned char[in->size];
|
||||||
|
|
||||||
char *OutBuffer = (char *)in->pBuffer;
|
char *OutBuffer = (char *)in->pBuffer;
|
||||||
@ -2093,18 +2097,10 @@ namespace SoD
|
|||||||
|
|
||||||
VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sayer);
|
VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sayer);
|
||||||
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[0]);
|
// TODO: figure this shit out
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[1]);
|
VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[2]);
|
VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[3]);
|
VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[4]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[5]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[6]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[7]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[8]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[9]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[10]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[11]);
|
|
||||||
|
|
||||||
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message.c_str());
|
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message.c_str());
|
||||||
|
|
||||||
|
|||||||
@ -1723,14 +1723,18 @@ namespace SoF
|
|||||||
SpecialMesg_Struct *emu = (SpecialMesg_Struct *)in->pBuffer;
|
SpecialMesg_Struct *emu = (SpecialMesg_Struct *)in->pBuffer;
|
||||||
|
|
||||||
unsigned char *__emu_buffer = in->pBuffer;
|
unsigned char *__emu_buffer = in->pBuffer;
|
||||||
|
// break strlen optimizations!
|
||||||
|
char *message = emu->sayer;
|
||||||
|
auto sayer_length = std::char_traits<char>::length(message);
|
||||||
|
message += sayer_length + 1 + 12; // skip over sayer name, null term, and 3 floats
|
||||||
|
|
||||||
std::string old_message = &emu->message[strlen(emu->sayer)];
|
std::string old_message = message;
|
||||||
std::string new_message;
|
std::string new_message;
|
||||||
|
|
||||||
ServerToSoFSayLink(new_message, old_message);
|
ServerToSoFSayLink(new_message, old_message);
|
||||||
|
|
||||||
//in->size = 3 + 4 + 4 + strlen(emu->sayer) + 1 + 12 + new_message.length() + 1;
|
//in->size = 3 + 4 + 4 + strlen(emu->sayer) + 1 + 12 + new_message.length() + 1;
|
||||||
in->size = strlen(emu->sayer) + new_message.length() + 25;
|
in->size = sayer_length + new_message.length() + 25;
|
||||||
in->pBuffer = new unsigned char[in->size];
|
in->pBuffer = new unsigned char[in->size];
|
||||||
|
|
||||||
char *OutBuffer = (char *)in->pBuffer;
|
char *OutBuffer = (char *)in->pBuffer;
|
||||||
@ -1744,18 +1748,10 @@ namespace SoF
|
|||||||
|
|
||||||
VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sayer);
|
VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sayer);
|
||||||
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[0]);
|
// TODO: figure this shit out
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[1]);
|
VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[2]);
|
VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[3]);
|
VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[4]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[5]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[6]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[7]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[8]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[9]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[10]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[11]);
|
|
||||||
|
|
||||||
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message.c_str());
|
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message.c_str());
|
||||||
|
|
||||||
|
|||||||
@ -1423,14 +1423,18 @@ namespace Titanium
|
|||||||
SpecialMesg_Struct *emu = (SpecialMesg_Struct *)in->pBuffer;
|
SpecialMesg_Struct *emu = (SpecialMesg_Struct *)in->pBuffer;
|
||||||
|
|
||||||
unsigned char *__emu_buffer = in->pBuffer;
|
unsigned char *__emu_buffer = in->pBuffer;
|
||||||
|
// break strlen optimizations!
|
||||||
|
char *message = emu->sayer;
|
||||||
|
auto sayer_length = std::char_traits<char>::length(message);
|
||||||
|
message += sayer_length + 1 + 12; // skip over sayer name, null term, and 3 floats
|
||||||
|
|
||||||
std::string old_message = &emu->message[strlen(emu->sayer)];
|
std::string old_message = message;
|
||||||
std::string new_message;
|
std::string new_message;
|
||||||
|
|
||||||
ServerToTitaniumSayLink(new_message, old_message);
|
ServerToTitaniumSayLink(new_message, old_message);
|
||||||
|
|
||||||
//in->size = 3 + 4 + 4 + strlen(emu->sayer) + 1 + 12 + new_message.length() + 1;
|
//in->size = 3 + 4 + 4 + strlen(emu->sayer) + 1 + 12 + new_message.length() + 1;
|
||||||
in->size = strlen(emu->sayer) + new_message.length() + 25;
|
in->size = sayer_length + new_message.length() + 25;
|
||||||
in->pBuffer = new unsigned char[in->size];
|
in->pBuffer = new unsigned char[in->size];
|
||||||
|
|
||||||
char *OutBuffer = (char *)in->pBuffer;
|
char *OutBuffer = (char *)in->pBuffer;
|
||||||
@ -1444,18 +1448,10 @@ namespace Titanium
|
|||||||
|
|
||||||
VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sayer);
|
VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sayer);
|
||||||
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[0]);
|
// TODO: figure this shit out
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[1]);
|
VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[2]);
|
VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[3]);
|
VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[4]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[5]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[6]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[7]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[8]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[9]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[10]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[11]);
|
|
||||||
|
|
||||||
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message.c_str());
|
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message.c_str());
|
||||||
|
|
||||||
|
|||||||
@ -2372,14 +2372,18 @@ namespace UF
|
|||||||
SpecialMesg_Struct *emu = (SpecialMesg_Struct *)in->pBuffer;
|
SpecialMesg_Struct *emu = (SpecialMesg_Struct *)in->pBuffer;
|
||||||
|
|
||||||
unsigned char *__emu_buffer = in->pBuffer;
|
unsigned char *__emu_buffer = in->pBuffer;
|
||||||
|
// break strlen optimizations!
|
||||||
|
char *message = emu->sayer;
|
||||||
|
auto sayer_length = std::char_traits<char>::length(message);
|
||||||
|
message += sayer_length + 1 + 12; // skip over sayer name, null term, and 3 floats
|
||||||
|
|
||||||
std::string old_message = &emu->message[strlen(emu->sayer)];
|
std::string old_message = message;
|
||||||
std::string new_message;
|
std::string new_message;
|
||||||
|
|
||||||
ServerToUFSayLink(new_message, old_message);
|
ServerToUFSayLink(new_message, old_message);
|
||||||
|
|
||||||
//in->size = 3 + 4 + 4 + strlen(emu->sayer) + 1 + 12 + new_message.length() + 1;
|
//in->size = 3 + 4 + 4 + strlen(emu->sayer) + 1 + 12 + new_message.length() + 1;
|
||||||
in->size = strlen(emu->sayer) + new_message.length() + 25;
|
in->size = sayer_length + new_message.length() + 25;
|
||||||
in->pBuffer = new unsigned char[in->size];
|
in->pBuffer = new unsigned char[in->size];
|
||||||
|
|
||||||
char *OutBuffer = (char *)in->pBuffer;
|
char *OutBuffer = (char *)in->pBuffer;
|
||||||
@ -2393,18 +2397,10 @@ namespace UF
|
|||||||
|
|
||||||
VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sayer);
|
VARSTRUCT_ENCODE_STRING(OutBuffer, emu->sayer);
|
||||||
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[0]);
|
// TODO: figure this shit out
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[1]);
|
VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[2]);
|
VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[3]);
|
VARSTRUCT_ENCODE_TYPE(float, OutBuffer, 0.0f);
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[4]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[5]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[6]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[7]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[8]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[9]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[10]);
|
|
||||||
VARSTRUCT_ENCODE_TYPE(uint8, OutBuffer, emu->unknown12[11]);
|
|
||||||
|
|
||||||
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message.c_str());
|
VARSTRUCT_ENCODE_STRING(OutBuffer, new_message.c_str());
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user