mirror of
https://github.com/EQEmu/Server.git
synced 2026-04-19 21:02:41 +00:00
Verified and corrected packets through character select
This commit is contained in:
parent
865f619e21
commit
b5cc8dfab1
@ -3532,6 +3532,20 @@ namespace TOB
|
|||||||
FINISH_DIRECT_DECODE();
|
FINISH_DIRECT_DECODE();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DECODE(OP_ApproveName)
|
||||||
|
{
|
||||||
|
DECODE_LENGTH_EXACT(structs::NameApproval_Struct);
|
||||||
|
SETUP_DIRECT_DECODE(NameApproval_Struct, structs::NameApproval_Struct);
|
||||||
|
|
||||||
|
IN_str(name);
|
||||||
|
IN(race_id);
|
||||||
|
IN(class_id);
|
||||||
|
|
||||||
|
// TODO: expand the approval logic to include the rest of the TOB struct values (and remove the direct translation here)
|
||||||
|
|
||||||
|
FINISH_DIRECT_DECODE();
|
||||||
|
}
|
||||||
|
|
||||||
DECODE(OP_AugmentInfo)
|
DECODE(OP_AugmentInfo)
|
||||||
{
|
{
|
||||||
DECODE_LENGTH_EXACT(structs::AugmentInfo_Struct);
|
DECODE_LENGTH_EXACT(structs::AugmentInfo_Struct);
|
||||||
@ -3630,6 +3644,39 @@ namespace TOB
|
|||||||
delete[] __eq_buffer;
|
delete[] __eq_buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DECODE(OP_CharacterCreate) {
|
||||||
|
DECODE_LENGTH_EXACT(structs::CharCreate_Struct);
|
||||||
|
SETUP_DIRECT_DECODE(CharCreate_Struct, structs::CharCreate_Struct);
|
||||||
|
|
||||||
|
IN(gender);
|
||||||
|
IN(race);
|
||||||
|
IN(class_);
|
||||||
|
IN(deity);
|
||||||
|
IN(start_zone);
|
||||||
|
IN(haircolor);
|
||||||
|
IN(beard);
|
||||||
|
IN(beardcolor);
|
||||||
|
IN(hairstyle);
|
||||||
|
IN(face);
|
||||||
|
IN(eyecolor1);
|
||||||
|
IN(eyecolor2);
|
||||||
|
IN(drakkin_heritage);
|
||||||
|
IN(drakkin_tattoo);
|
||||||
|
IN(drakkin_details);
|
||||||
|
IN(STR);
|
||||||
|
IN(STA);
|
||||||
|
IN(AGI);
|
||||||
|
IN(DEX);
|
||||||
|
IN(WIS);
|
||||||
|
IN(INT);
|
||||||
|
IN(CHA);
|
||||||
|
IN(tutorial);
|
||||||
|
|
||||||
|
// TODO: can handle the heroic type here as well (new member)
|
||||||
|
|
||||||
|
FINISH_DIRECT_DECODE();
|
||||||
|
}
|
||||||
|
|
||||||
DECODE(OP_ClickDoor)
|
DECODE(OP_ClickDoor)
|
||||||
{
|
{
|
||||||
DECODE_LENGTH_EXACT(structs::ClickDoor_Struct);
|
DECODE_LENGTH_EXACT(structs::ClickDoor_Struct);
|
||||||
|
|||||||
@ -66,11 +66,13 @@ E(OP_ZoneSpawns)
|
|||||||
//list of packets we need to decode on the way in:
|
//list of packets we need to decode on the way in:
|
||||||
D(OP_Animation)
|
D(OP_Animation)
|
||||||
D(OP_ApplyPoison)
|
D(OP_ApplyPoison)
|
||||||
|
D(OP_ApproveName)
|
||||||
D(OP_AugmentInfo)
|
D(OP_AugmentInfo)
|
||||||
D(OP_AugmentItem)
|
D(OP_AugmentItem)
|
||||||
D(OP_BlockedBuffs)
|
D(OP_BlockedBuffs)
|
||||||
D(OP_CastSpell)
|
D(OP_CastSpell)
|
||||||
D(OP_ChannelMessage)
|
D(OP_ChannelMessage)
|
||||||
|
D(OP_CharacterCreate)
|
||||||
D(OP_ClientUpdate)
|
D(OP_ClientUpdate)
|
||||||
D(OP_ClickDoor)
|
D(OP_ClickDoor)
|
||||||
D(OP_Consider)
|
D(OP_Consider)
|
||||||
|
|||||||
@ -186,6 +186,50 @@ namespace TOB {
|
|||||||
/*000*/ uint32 CharCount; //number of chars in this packet
|
/*000*/ uint32 CharCount; //number of chars in this packet
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Character Creation struct
|
||||||
|
** Length: 168 Bytes
|
||||||
|
** OpCode: 0x1859
|
||||||
|
*/
|
||||||
|
struct CharCreate_Struct
|
||||||
|
{
|
||||||
|
/*00*/ uint8 padding[72];
|
||||||
|
/*48*/ uint32 gender;
|
||||||
|
/*4c*/ uint32 race;
|
||||||
|
/*50*/ uint32 class_;
|
||||||
|
/*54*/ uint32 deity;
|
||||||
|
/*58*/ uint32 start_zone; // this is the zone ID of the start zone
|
||||||
|
/*5c*/ uint32 haircolor;
|
||||||
|
/*60*/ uint32 beard;
|
||||||
|
/*64*/ uint32 beardcolor;
|
||||||
|
/*68*/ uint32 hairstyle;
|
||||||
|
/*6c*/ uint32 face;
|
||||||
|
/*70*/ uint32 eyecolor1;
|
||||||
|
/*74*/ uint32 eyecolor2;
|
||||||
|
/*78*/ uint32 drakkin_heritage;
|
||||||
|
/*7c*/ uint32 drakkin_tattoo;
|
||||||
|
/*80*/ uint32 drakkin_details;
|
||||||
|
/*84*/ uint32 STR;
|
||||||
|
/*88*/ uint32 STA;
|
||||||
|
/*8c*/ uint32 AGI;
|
||||||
|
/*90*/ uint32 DEX;
|
||||||
|
/*94*/ uint32 WIS;
|
||||||
|
/*98*/ uint32 INT;
|
||||||
|
/*9c*/ uint32 CHA;
|
||||||
|
/*a0*/ uint32 tutorial;
|
||||||
|
/*a4*/ uint32 heroic_type;
|
||||||
|
/*a8*/
|
||||||
|
};
|
||||||
|
|
||||||
|
struct NameApproval_Struct {
|
||||||
|
char name[64];
|
||||||
|
uint32 race_id;
|
||||||
|
uint32 class_id;
|
||||||
|
uint32 deity_id;
|
||||||
|
uint32 heroic_type; // seen 0, client can also send 1-4
|
||||||
|
uint32 unknown; // always 0?
|
||||||
|
};
|
||||||
|
|
||||||
enum TOBAppearance : uint32
|
enum TOBAppearance : uint32
|
||||||
{
|
{
|
||||||
None,
|
None,
|
||||||
|
|||||||
@ -44,7 +44,7 @@ Below is a status list for the 450 opcodes we currently use on the server for th
|
|||||||
| `OP_Animation` | 🟡 Unverified | | |
|
| `OP_Animation` | 🟡 Unverified | | |
|
||||||
| `OP_AnnoyingZoneUnknown` | 🔴 Not-Set | | |
|
| `OP_AnnoyingZoneUnknown` | 🔴 Not-Set | | |
|
||||||
| `OP_ApplyPoison` | 🟡 Unverified | | |
|
| `OP_ApplyPoison` | 🟡 Unverified | | |
|
||||||
| `OP_ApproveName` | 🟡 Unverified | | |
|
| `OP_ApproveName` | 🟡 Unverified | This takes multiple parameters from the client, and it can take multiple integer values from the server | |
|
||||||
| `OP_ApproveWorld` | 🔴 Not-Set | | |
|
| `OP_ApproveWorld` | 🔴 Not-Set | | |
|
||||||
| `OP_ApproveZone` | 🔴 Not-Set | | |
|
| `OP_ApproveZone` | 🔴 Not-Set | | |
|
||||||
| `OP_Assist` | 🟡 Unverified | | |
|
| `OP_Assist` | 🟡 Unverified | | |
|
||||||
@ -83,8 +83,8 @@ Below is a status list for the 450 opcodes we currently use on the server for th
|
|||||||
| `OP_ChangeSize` | 🟡 Unverified | | |
|
| `OP_ChangeSize` | 🟡 Unverified | | |
|
||||||
| `OP_ChannelMessage` | 🟡 Unverified | | |
|
| `OP_ChannelMessage` | 🟡 Unverified | | |
|
||||||
| `OP_ChangePetName` | 🔴 Not-Set | | |
|
| `OP_ChangePetName` | 🔴 Not-Set | | |
|
||||||
| `OP_CharacterCreate` | 🟡 Unverified | Wasn't sure on the status of this | |
|
| `OP_CharacterCreate` | 🟢 Verified | Sends heroic type, can be used for something? | |
|
||||||
| `OP_CharacterCreateRequest` | 🟡 Unverified | Wasn't sure on status of this | |
|
| `OP_CharacterCreateRequest` | 🟢 Verified | | |
|
||||||
| `OP_CharInventory` | 🟡 Unverified | | |
|
| `OP_CharInventory` | 🟡 Unverified | | |
|
||||||
| `OP_Charm` | 🟡 Unverified | | |
|
| `OP_Charm` | 🟡 Unverified | | |
|
||||||
| `OP_ChatMessage` | 🔴 Not-Set | | |
|
| `OP_ChatMessage` | 🔴 Not-Set | | |
|
||||||
@ -125,7 +125,7 @@ Below is a status list for the 450 opcodes we currently use on the server for th
|
|||||||
| `OP_Damage` | 🟡 Unverified | | |
|
| `OP_Damage` | 🟡 Unverified | | |
|
||||||
| `OP_Death` | 🟡 Unverified | | |
|
| `OP_Death` | 🟡 Unverified | | |
|
||||||
| `OP_DelegateAbility` | 🔴 Not-Set | | |
|
| `OP_DelegateAbility` | 🔴 Not-Set | | |
|
||||||
| `OP_DeleteCharacter` | 🟡 Unverified | | |
|
| `OP_DeleteCharacter` | 🟢 Verified | | |
|
||||||
| `OP_DeleteCharge` | 🟡 Unverified | | |
|
| `OP_DeleteCharge` | 🟡 Unverified | | |
|
||||||
| `OP_DeleteItem` | 🟡 Unverified | | |
|
| `OP_DeleteItem` | 🟡 Unverified | | |
|
||||||
| `OP_DeletePetition` | 🔴 Not-Set | | |
|
| `OP_DeletePetition` | 🔴 Not-Set | | |
|
||||||
@ -182,7 +182,7 @@ Below is a status list for the 450 opcodes we currently use on the server for th
|
|||||||
| `OP_FinishWindow2` | 🟡 Unverified | | |
|
| `OP_FinishWindow2` | 🟡 Unverified | | |
|
||||||
| `OP_Fishing` | 🟡 Unverified | | |
|
| `OP_Fishing` | 🟡 Unverified | | |
|
||||||
| `OP_Fling` | 🟡 Unverified | | |
|
| `OP_Fling` | 🟡 Unverified | | |
|
||||||
| `OP_FloatListThing` | 🟡 Unverified | | |
|
| `OP_FloatListThing` | 🟢 Verified | Movement History. Sent from client, but emu doesn't use it so setting it as varified. Reference is 0x1402FFAD0 | |
|
||||||
| `OP_Forage` | 🟡 Unverified | | |
|
| `OP_Forage` | 🟡 Unverified | | |
|
||||||
| `OP_ForceFindPerson` | 🔴 Not-Set | | |
|
| `OP_ForceFindPerson` | 🔴 Not-Set | | |
|
||||||
| `OP_FormattedMessage` | 🟡 Unverified | | |
|
| `OP_FormattedMessage` | 🟡 Unverified | | |
|
||||||
@ -376,7 +376,7 @@ Below is a status list for the 450 opcodes we currently use on the server for th
|
|||||||
| `OP_MobUpdate` | 🔴 Not-Set | | |
|
| `OP_MobUpdate` | 🔴 Not-Set | | |
|
||||||
| `OP_MoneyOnCorpse` | 🟡 Unverified | | |
|
| `OP_MoneyOnCorpse` | 🟡 Unverified | | |
|
||||||
| `OP_MoneyUpdate` | 🟡 Unverified | | |
|
| `OP_MoneyUpdate` | 🟡 Unverified | | |
|
||||||
| `OP_MOTD` | 🟡 Unverified | | |
|
| `OP_MOTD` | 🟢 Verified | | |
|
||||||
| `OP_MoveCoin` | 🟡 Unverified | | |
|
| `OP_MoveCoin` | 🟡 Unverified | | |
|
||||||
| `OP_MoveDoor` | 🟡 Unverified | | |
|
| `OP_MoveDoor` | 🟡 Unverified | | |
|
||||||
| `OP_MoveItem` | 🟡 Unverified | | |
|
| `OP_MoveItem` | 🟡 Unverified | | |
|
||||||
@ -441,7 +441,7 @@ Below is a status list for the 450 opcodes we currently use on the server for th
|
|||||||
| `OP_RaidInvite` | 🔴 Not-Set | | |
|
| `OP_RaidInvite` | 🔴 Not-Set | | |
|
||||||
| `OP_RaidJoin` | 🔴 Not-Set | | |
|
| `OP_RaidJoin` | 🔴 Not-Set | | |
|
||||||
| `OP_RaidUpdate` | 🔴 Not-Set | | |
|
| `OP_RaidUpdate` | 🔴 Not-Set | | |
|
||||||
| `OP_RandomNameGenerator` | 🟡 Unverified | | |
|
| `OP_RandomNameGenerator` | 🟢 Verified | The client no longer sends this packet (random name generation is done entirely in the client). The client will still accept this packet to set name (emu doesn't do this, but it's always been supported) | |
|
||||||
| `OP_RandomReply` | 🟡 Unverified | | |
|
| `OP_RandomReply` | 🟡 Unverified | | |
|
||||||
| `OP_RandomReq` | 🟡 Unverified | | |
|
| `OP_RandomReq` | 🟡 Unverified | | |
|
||||||
| `OP_ReadBook` | 🟡 Unverified | | |
|
| `OP_ReadBook` | 🟡 Unverified | | |
|
||||||
@ -486,7 +486,7 @@ Below is a status list for the 450 opcodes we currently use on the server for th
|
|||||||
| `OP_SendLoginInfo` | 🟢 Verified | | |
|
| `OP_SendLoginInfo` | 🟢 Verified | | |
|
||||||
| `OP_SendMaxCharacters` | 🟢 Verified | | |
|
| `OP_SendMaxCharacters` | 🟢 Verified | | |
|
||||||
| `OP_SendMembership` | 🟢 Verified | | |
|
| `OP_SendMembership` | 🟢 Verified | | |
|
||||||
| `OP_SendMembershipDetails` | 🟢 Unverified | The struct is correct, will need reversing for actual option keys/values | |
|
| `OP_SendMembershipDetails` | 🟢 Verified | The struct is correct, will need reversing for actual option keys/values | |
|
||||||
| `OP_SendSystemStats` | 🔴 Not-Set | | |
|
| `OP_SendSystemStats` | 🔴 Not-Set | | |
|
||||||
| `OP_SendTitleList` | 🔴 Not-Set | | |
|
| `OP_SendTitleList` | 🔴 Not-Set | | |
|
||||||
| `OP_SendTributes` | 🔴 Not-Set | | |
|
| `OP_SendTributes` | 🔴 Not-Set | | |
|
||||||
@ -497,7 +497,7 @@ Below is a status list for the 450 opcodes we currently use on the server for th
|
|||||||
| `OP_ServerListResponse` | 🔴 Not-Set | | |
|
| `OP_ServerListResponse` | 🔴 Not-Set | | |
|
||||||
| `OP_SessionReady` | 🔴 Not-Set | | |
|
| `OP_SessionReady` | 🔴 Not-Set | | |
|
||||||
| `OP_SetChatServer` | 🔴 Not-Set | | |
|
| `OP_SetChatServer` | 🔴 Not-Set | | |
|
||||||
| `OP_SetChatServer2` | 🟡 Unverified | | |
|
| `OP_SetChatServer2` | 🟢 Verified | | |
|
||||||
| `OP_SetFace` | 🔴 Not-Set | | |
|
| `OP_SetFace` | 🔴 Not-Set | | |
|
||||||
| `OP_SetGroupTarget` | 🔴 Not-Set | | |
|
| `OP_SetGroupTarget` | 🔴 Not-Set | | |
|
||||||
| `OP_SetGuildMOTD` | 🔴 Not-Set | | |
|
| `OP_SetGuildMOTD` | 🔴 Not-Set | | |
|
||||||
@ -612,10 +612,10 @@ Below is a status list for the 450 opcodes we currently use on the server for th
|
|||||||
| `OP_World_Client_CRC2` | 🟢 Verified | | |
|
| `OP_World_Client_CRC2` | 🟢 Verified | | |
|
||||||
| `OP_World_Client_CRC3` | 🟢 Verified | | |
|
| `OP_World_Client_CRC3` | 🟢 Verified | | |
|
||||||
| `OP_WorldClientReady` | 🟡 Unverified | | |
|
| `OP_WorldClientReady` | 🟡 Unverified | | |
|
||||||
| `OP_WorldComplete` | 🟡 Unverified | | |
|
| `OP_WorldComplete` | 🟢 Verified | | |
|
||||||
| `OP_WorldLogout` | 🔴 Not-Set | | |
|
| `OP_WorldLogout` | 🔴 Not-Set | | |
|
||||||
| `OP_WorldObjectsSent` | 🟡 Unverified | | |
|
| `OP_WorldObjectsSent` | 🟡 Unverified | | |
|
||||||
| `OP_WorldUnknown001` | 🟡 Unverified | | |
|
| `OP_WorldUnknown001` | 🟢 Verified | SetServerTime. emu doesn't currently use it so setting it to verified, but the reference is 0x140292550 | |
|
||||||
| `OP_XTargetAutoAddHaters` | 🔴 Not-Set | | |
|
| `OP_XTargetAutoAddHaters` | 🔴 Not-Set | | |
|
||||||
| `OP_XTargetOpen` | 🔴 Not-Set | | |
|
| `OP_XTargetOpen` | 🔴 Not-Set | | |
|
||||||
| `OP_XTargetOpenResponse` | 🔴 Not-Set | | |
|
| `OP_XTargetOpenResponse` | 🔴 Not-Set | | |
|
||||||
|
|||||||
@ -34,15 +34,15 @@ OP_SendMembershipDetails=0x2373
|
|||||||
OP_CharacterCreateRequest=0x6b67
|
OP_CharacterCreateRequest=0x6b67
|
||||||
OP_CharacterCreate=0x1859
|
OP_CharacterCreate=0x1859
|
||||||
OP_DeleteCharacter=0x71ca
|
OP_DeleteCharacter=0x71ca
|
||||||
OP_RandomNameGenerator=0x7f4a
|
OP_RandomNameGenerator=0x7f4a # TOB client no longer sends this, and the S->C packet isn't used by emu
|
||||||
OP_ApproveName=0x5306
|
OP_ApproveName=0x5306
|
||||||
OP_MOTD=0x1eef
|
OP_MOTD=0x1eef
|
||||||
OP_SetChatServer=0x0000
|
OP_SetChatServer=0x0000
|
||||||
OP_SetChatServer2=0x34c1
|
OP_SetChatServer2=0x34c1
|
||||||
OP_ZoneServerInfo=0x2323
|
OP_ZoneServerInfo=0x2323
|
||||||
OP_WorldComplete=0x1223
|
OP_WorldComplete=0x1223
|
||||||
OP_WorldUnknown001=0x7723
|
OP_WorldUnknown001=0x7723 # SetServerTime, S->C
|
||||||
OP_FloatListThing=0x504f
|
OP_FloatListThing=0x504f # Movement History, C->S
|
||||||
|
|
||||||
# Reasons for Disconnect:
|
# Reasons for Disconnect:
|
||||||
OP_ZoneUnavail=0x29a6
|
OP_ZoneUnavail=0x29a6
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user