Update OP_LogServer

Fix the source group matching in common lib
Added a couple packet structure documentations I had looked at.
This commit is contained in:
KimLS
2026-04-06 20:51:52 -07:00
parent c7eea72997
commit 30c9c6317f
4 changed files with 86 additions and 51 deletions
+27 -27
View File
@@ -854,86 +854,86 @@ namespace TOB
ENCODE(OP_LogServer) {
SETUP_VAR_ENCODE(LogServer_Struct);
ALLOC_LEN_ENCODE(1840);
ALLOC_LEN_ENCODE(1932);
//pvp
if (emu->enable_pvp) {
*(char*)&__packet->pBuffer[0x04] = 1;
*(char*)&__packet->pBuffer[0x06] = 1;
}
if (emu->enable_FV) {
//FV sets these both to 1
//one appears to enable the no drop flag the other just marks the server as special?
*(char*)&__packet->pBuffer[0x08] = 1;
*(char*)&__packet->pBuffer[0x0a] = 1;
*(char*)&__packet->pBuffer[0x0c] = 1;
}
//This has something to do with heirloom and prestige items but im not sure what it does
//Seems to sit at 0
*(char*)&__packet->pBuffer[0x71d] = 0;
*(char*)&__packet->pBuffer[0x75f] = 0;
//not sure what this does, something to do with server select
*(char*)&__packet->pBuffer[0x09] = 0;
//this appears to have some effect on the tradeskill system; disabling made by tags perhaps?
*(char*)&__packet->pBuffer[0x0b] = 0;
//this appears to have some effect on the tradeskill system; disabling made by tags perhaps?
*(char*)&__packet->pBuffer[0x0d] = 0;
//not sure, setting it to the value ive seen
*(char*)&__packet->pBuffer[0x0c] = 1;
*(char*)&__packet->pBuffer[0x0e] = 1;
//Something to do with languages
*(char*)&__packet->pBuffer[0x0d] = 1;
*(char*)&__packet->pBuffer[0x0f] = 1;
//These seem to affect if server has betabuff enabled
*(char*)&__packet->pBuffer[0x5c0] = 0;
*(char*)&__packet->pBuffer[0x5c1] = 0;
*(char*)&__packet->pBuffer[0x602] = 0;
*(char*)&__packet->pBuffer[0x603] = 0;
//This is set on test so it's probably indicating this is a test server
*(char*)&__packet->pBuffer[0x5c2] = 0;
*(char*)&__packet->pBuffer[0x604] = 0;
//not sure, but it's grouped with the beta and test stuff
*(char*)&__packet->pBuffer[0x5c3] = 0;
*(char*)&__packet->pBuffer[0x605] = 0;
//world short name
strncpy((char*)&__packet->pBuffer[0x15], emu->worldshortname, 32);
strncpy((char*)&__packet->pBuffer[0x17], emu->worldshortname, 32);
//not sure, affects some player calculation but didn't care to look more
*(char*)&__packet->pBuffer[0x5c2] = 0;
*(char*)&__packet->pBuffer[0x5ee] = 0;
//Looks right
if (emu->enablemail) {
*(char*)&__packet->pBuffer[0x5b5] = 1;
*(char*)&__packet->pBuffer[0x5f7] = 1;
}
//Looks right
if (emu->enablevoicemacros) {
*(char*)&__packet->pBuffer[0x5b4] = 1;
*(char*)&__packet->pBuffer[0x5f6] = 1;
}
//Not sure, sending what we've seen
*(char*)&__packet->pBuffer[0x5b6] = 0;
*(char*)&__packet->pBuffer[0x5f8] = 0;
//Not sure sending what we've seen
*(char*)&__packet->pBuffer[0x5b8] = 1;
*(char*)&__packet->pBuffer[0x5fa] = 1;
//Not sure sending what we've seen
*(int32_t*)&__packet->pBuffer[0x5fc] = -1;
*(int32_t*)&__packet->pBuffer[0x63e] = -1;
//Test sets this to 1, everyone else seems to set it to 0
*(int32_t*)&__packet->pBuffer[0x600] = 0;
*(int32_t*)&__packet->pBuffer[0x642] = 0;
//Disassembly puts it next to code dealing with commands, ive not seen anyone send anything but 0
*(char*)&__packet->pBuffer[0x705] = 0;
*(char*)&__packet->pBuffer[0x747] = 0;
//Something about item restrictions, seems to always be set to 1
*(char*)&__packet->pBuffer[0x710] = 1;
*(char*)&__packet->pBuffer[0x752] = 1;
//This and 0x724 are often multiplied together in guild favor calcs, live and test send 1.0f
*(float*)&__packet->pBuffer[0x720] = 1.0f;
*(float*)&__packet->pBuffer[0x724] = 1.0f;
*(float*)&__packet->pBuffer[0x762] = 1.0f;
*(float*)&__packet->pBuffer[0x766] = 1.0f;
//This and 0x72c are often multiplied together in non-guild favor calcs, live and test send 1.0f
*(float*)&__packet->pBuffer[0x728] = 1.0f;
*(float*)&__packet->pBuffer[0x72c] = 1.0f;
*(float*)&__packet->pBuffer[0x76a] = 1.0f;
*(float*)&__packet->pBuffer[0x76e] = 1.0f;
FINISH_ENCODE();
}