mirror of
https://github.com/EQEmu/Server.git
synced 2026-01-06 09:23:52 +00:00
WIP on door struct
This commit is contained in:
parent
b85344f779
commit
027d95bbb8
@ -489,42 +489,42 @@ namespace Larion
|
|||||||
FINISH_ENCODE();
|
FINISH_ENCODE();
|
||||||
}
|
}
|
||||||
|
|
||||||
//ENCODE(OP_SpawnAppearance)
|
ENCODE(OP_SpawnAppearance)
|
||||||
//{
|
{
|
||||||
// EQApplicationPacket* in = *p;
|
EQApplicationPacket* in = *p;
|
||||||
// *p = nullptr;
|
*p = nullptr;
|
||||||
//
|
|
||||||
// unsigned char* emu_buffer = in->pBuffer;
|
unsigned char* emu_buffer = in->pBuffer;
|
||||||
//
|
|
||||||
// SpawnAppearance_Struct* sas = (SpawnAppearance_Struct*)emu_buffer;
|
SpawnAppearance_Struct* sas = (SpawnAppearance_Struct*)emu_buffer;
|
||||||
//
|
|
||||||
// if (sas->type != AppearanceType::Size)
|
if (sas->type != AppearanceType::Size)
|
||||||
// {
|
{
|
||||||
// //larion struct is different than rof2's but the idea is the same
|
//larion struct is different than rof2's but the idea is the same
|
||||||
// auto outapp = new EQApplicationPacket(OP_SpawnAppearance, sizeof(structs::SpawnAppearance_Struct));
|
auto outapp = new EQApplicationPacket(OP_SpawnAppearance, sizeof(structs::SpawnAppearance_Struct));
|
||||||
// structs::SpawnAppearance_Struct *eq = (structs::SpawnAppearance_Struct*)outapp->pBuffer;
|
structs::SpawnAppearance_Struct *eq = (structs::SpawnAppearance_Struct*)outapp->pBuffer;
|
||||||
//
|
|
||||||
// eq->spawn_id = sas->spawn_id;
|
eq->spawn_id = sas->spawn_id;
|
||||||
// eq->type = sas->type;
|
eq->type = sas->type;
|
||||||
// eq->parameter = sas->parameter;
|
eq->parameter = sas->parameter;
|
||||||
//
|
|
||||||
// dest->FastQueuePacket(&outapp, ack_req);
|
dest->FastQueuePacket(&outapp, ack_req);
|
||||||
// delete in;
|
delete in;
|
||||||
// return;
|
return;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// auto outapp = new EQApplicationPacket(OP_ChangeSize, sizeof(ChangeSize_Struct));
|
auto outapp = new EQApplicationPacket(OP_ChangeSize, sizeof(ChangeSize_Struct));
|
||||||
//
|
|
||||||
// ChangeSize_Struct* css = (ChangeSize_Struct*)outapp->pBuffer;
|
ChangeSize_Struct* css = (ChangeSize_Struct*)outapp->pBuffer;
|
||||||
//
|
|
||||||
// css->EntityID = sas->spawn_id;
|
css->EntityID = sas->spawn_id;
|
||||||
// css->Size = (float)sas->parameter;
|
css->Size = (float)sas->parameter;
|
||||||
// css->Unknown08 = 0;
|
css->Unknown08 = 0;
|
||||||
// css->Unknown12 = 1.0f;
|
css->Unknown12 = 1.0f;
|
||||||
//
|
|
||||||
// dest->FastQueuePacket(&outapp, ack_req);
|
dest->FastQueuePacket(&outapp, ack_req);
|
||||||
// delete in;
|
delete in;
|
||||||
//}
|
}
|
||||||
|
|
||||||
ENCODE(OP_PlayerProfile) {
|
ENCODE(OP_PlayerProfile) {
|
||||||
EQApplicationPacket* in = *p;
|
EQApplicationPacket* in = *p;
|
||||||
@ -2257,18 +2257,37 @@ namespace Larion
|
|||||||
delete in;
|
delete in;
|
||||||
}
|
}
|
||||||
|
|
||||||
ENCODE(OP_SpawnAppearance)
|
|
||||||
{
|
|
||||||
EQApplicationPacket* in = *p;
|
|
||||||
*p = nullptr;
|
|
||||||
delete in;
|
|
||||||
}
|
|
||||||
|
|
||||||
ENCODE(OP_SpawnDoor)
|
ENCODE(OP_SpawnDoor)
|
||||||
{
|
{
|
||||||
EQApplicationPacket* in = *p;
|
SETUP_VAR_ENCODE(Door_Struct);
|
||||||
*p = nullptr;
|
int door_count = __packet->size / sizeof(Door_Struct);
|
||||||
delete in;
|
int total_length = door_count * sizeof(structs::Door_Struct);
|
||||||
|
ALLOC_VAR_ENCODE(structs::Door_Struct, total_length);
|
||||||
|
|
||||||
|
int r;
|
||||||
|
for (r = 0; r < door_count; r++) {
|
||||||
|
// strncpy(eq[r].name, emu[r].name, sizeof(eq[r].name));
|
||||||
|
// eq[r].xPos = emu[r].xPos;
|
||||||
|
// eq[r].yPos = emu[r].yPos;
|
||||||
|
// eq[r].zPos = emu[r].zPos;
|
||||||
|
// eq[r].heading = emu[r].heading;
|
||||||
|
// eq[r].incline = emu[r].incline;
|
||||||
|
// eq[r].size = emu[r].size;
|
||||||
|
// eq[r].doorId = emu[r].doorId;
|
||||||
|
// eq[r].opentype = emu[r].opentype;
|
||||||
|
// eq[r].state_at_spawn = emu[r].state_at_spawn;
|
||||||
|
// eq[r].invert_state = emu[r].invert_state;
|
||||||
|
// eq[r].door_param = emu[r].door_param;
|
||||||
|
// eq[r].unknown0080 = 0;
|
||||||
|
// eq[r].unknown0081 = 1; // Both must be 1 to allow clicking doors
|
||||||
|
// eq[r].unknown0082 = 0;
|
||||||
|
// eq[r].unknown0083 = 1; // Both must be 1 to allow clicking doors
|
||||||
|
// eq[r].unknown0084 = 0;
|
||||||
|
// eq[r].unknown0085 = 0;
|
||||||
|
// eq[r].unknown0086 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
FINISH_ENCODE();
|
||||||
}
|
}
|
||||||
|
|
||||||
ENCODE(OP_GroundSpawn)
|
ENCODE(OP_GroundSpawn)
|
||||||
|
|||||||
@ -6,13 +6,13 @@ E(OP_SendMembershipDetails)
|
|||||||
E(OP_SendMaxCharacters)
|
E(OP_SendMaxCharacters)
|
||||||
E(OP_SendCharInfo)
|
E(OP_SendCharInfo)
|
||||||
E(OP_ExpansionInfo)
|
E(OP_ExpansionInfo)
|
||||||
|
E(OP_SpawnAppearance)
|
||||||
//E(OP_SendAATable)
|
//E(OP_SendAATable)
|
||||||
E(OP_PlayerProfile)
|
E(OP_PlayerProfile)
|
||||||
E(OP_ZoneEntry)
|
E(OP_ZoneEntry)
|
||||||
E(OP_ZoneSpawns)
|
E(OP_ZoneSpawns)
|
||||||
E(OP_CharInventory)
|
E(OP_CharInventory)
|
||||||
E(OP_NewZone)
|
E(OP_NewZone)
|
||||||
E(OP_SpawnAppearance)
|
|
||||||
E(OP_SpawnDoor)
|
E(OP_SpawnDoor)
|
||||||
E(OP_GroundSpawn)
|
E(OP_GroundSpawn)
|
||||||
|
|
||||||
|
|||||||
@ -257,6 +257,46 @@ namespace Larion {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct Door_Struct
|
||||||
|
{
|
||||||
|
/*000*/ char name[32];
|
||||||
|
/*032*/ float DefaultY;
|
||||||
|
/*036*/ float DefaultX;
|
||||||
|
/*040*/ float DefaultZ;
|
||||||
|
/*044*/ float DefaultHeading;
|
||||||
|
/*048*/ uint32 DefaultDoorAngle; //rof2's incline
|
||||||
|
/*052*/ float Y; //most (all I've seen?) doors match the defaults here
|
||||||
|
/*056*/ float X;
|
||||||
|
/*060*/ float Z;
|
||||||
|
/*064*/ float Heading;
|
||||||
|
/*068*/ float DoorAngle; //not sure if this is actually a float; it might be a uint32 like DefaultDoorAngle
|
||||||
|
/*072*/ uint32 ScaleFactor; //rof2's size
|
||||||
|
/*076*/ uint32 Unknown76; //client doesn't seem to read this
|
||||||
|
/*080*/ uint8 Id; //doorid
|
||||||
|
/*081*/ uint8 Type; //opentype
|
||||||
|
/*082*/ uint8 State; //state_at_spawn
|
||||||
|
/*083*/ uint8 DefaultState; //invert_state
|
||||||
|
/*084*/ int32 SpellId; //door_param
|
||||||
|
/*088*/ uint32 AdventureDoorId;
|
||||||
|
/*092*/ uint32 DynDoorID;
|
||||||
|
/*096*/ uint32 RealEstateDoorID;
|
||||||
|
/*100*/ uint8 bHasScript;
|
||||||
|
/*101*/ uint8 bUsable; //1 if clickable
|
||||||
|
/*102*/ uint8 bRemainOpen;
|
||||||
|
/*103*/ uint8 bVisible; //1 is visible
|
||||||
|
/*104*/ uint8 bHeadingChanged;
|
||||||
|
/*105*/ uint8 padding1[3];
|
||||||
|
/*108*/ float TopSpeed1;
|
||||||
|
/*112*/ float TopSpeed2;
|
||||||
|
/*116*/ uint8 bNeedsTimeStampSet;
|
||||||
|
/*117*/ uint8 padding2[3];
|
||||||
|
/*120*/ float unknownFloat1;
|
||||||
|
/*124*/ float unknownFloat2;
|
||||||
|
/*128*/ uint8 unknownByte1;
|
||||||
|
/*129*/ uint8 padding3[3];
|
||||||
|
/*132*/
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
#pragma pack()
|
#pragma pack()
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user