Implemented EQEmu::TextureProfile

This commit is contained in:
Uleat
2016-06-01 08:54:26 -04:00
parent ae3c98c692
commit cd8cd90a38
29 changed files with 467 additions and 462 deletions
+6 -34
View File
@@ -126,22 +126,9 @@ struct LDoNTrapTemplate
// All clients translate the character select information to some degree
struct EquipStruct
{
uint32 Material;
uint32 Unknown1;
uint32 EliteMaterial;
uint32 HeroForgeModel;
uint32 Material2; // Same as material?
};
struct CharSelectEquip
{
uint32 Material;
uint32 Unknown1;
uint32 EliteMaterial;
uint32 HeroForgeModel;
uint32 Material2;
EQEmu::Texture_Struct Textures;
EQEmu::Tint_Struct Color;
};
@@ -158,7 +145,7 @@ struct CharacterSelectEntry_Struct
uint16 Instance;
uint8 Gender;
uint8 Face;
CharSelectEquip Equip[9];
CharSelectEquip Equip[EQEmu::textures::TextureCount];
uint8 Unknown15; // Seen FF
uint8 Unknown19; // Seen FF
uint32 DrakkinTattoo;
@@ -267,22 +254,7 @@ struct Spawn_Struct {
/*0189*/ uint32 petOwnerId; // If this is a pet, the spawn id of owner
/*0193*/ uint8 guildrank; // 0=normal, 1=officer, 2=leader
/*0194*/ uint8 unknown0194[3];
/*0197*/ union
{
struct
{
/*0000*/ EquipStruct equip_helmet; // Equipment: Helmet visual
/*0000*/ EquipStruct equip_chest; // Equipment: Chest visual
/*0000*/ EquipStruct equip_arms; // Equipment: Arms visual
/*0000*/ EquipStruct equip_bracers; // Equipment: Wrist visual
/*0000*/ EquipStruct equip_hands; // Equipment: Hands visual
/*0000*/ EquipStruct equip_legs; // Equipment: Legs visual
/*0000*/ EquipStruct equip_feet; // Equipment: Boots visual
/*0000*/ EquipStruct equip_primary; // Equipment: Main visual
/*0000*/ EquipStruct equip_secondary; // Equipment: Off visual
} equip;
/*0000*/ EquipStruct equipment[EQEmu::textures::TextureCount];
};
/*0197*/ EQEmu::TextureProfile equipment;
/*0233*/ float runspeed; // Speed when running
/*0036*/ uint8 afk; // 0=no, 1=afk
/*0238*/ uint32 guildID; // Current guild
@@ -854,7 +826,7 @@ struct SuspendedMinion_Struct
/*002*/ uint32 HP;
/*006*/ uint32 Mana;
/*010*/ SpellBuff_Struct Buffs[BUFF_COUNT];
/*510*/ uint32 Items[EQEmu::textures::TextureCount];
/*510*/ EQEmu::TextureShortProfile Items;
/*546*/ char Name[64];
/*610*/
};
@@ -962,7 +934,7 @@ struct PlayerProfile_Struct
/*0304*/ uint8 ability_time_minutes;
/*0305*/ uint8 ability_time_hours; //place holder
/*0306*/ uint8 unknown0306[6]; // @bp Spacer/Flag?
/*0312*/ uint32 item_material[EQEmu::textures::TextureCount]; // Item texture/material of worn/held items
/*0312*/ EQEmu::TextureShortProfile item_material; // Item texture/material of worn/held items
/*0348*/ uint8 unknown0348[44];
/*0392*/ EQEmu::TintProfile item_tint;
/*0428*/ AA_Array aa_array[MAX_PP_AA_ARRAY];
@@ -2118,7 +2090,7 @@ struct Illusion_Struct { //size: 256 - SoF
/*092*/ uint32 drakkin_heritage; //
/*096*/ uint32 drakkin_tattoo; //
/*100*/ uint32 drakkin_details; //
/*104*/ uint32 armor_tint[EQEmu::textures::TextureCount]; //
/*104*/ EQEmu::TintProfile armor_tint; //
/*140*/ uint8 eyecolor1; // Field Not Identified in any Illusion Struct
/*141*/ uint8 eyecolor2; // Field Not Identified in any Illusion Struct
/*142*/ uint8 unknown138[114]; //
+1 -1
View File
@@ -40,7 +40,7 @@ struct ExtendedProfile_Struct {
uint16 old_pet_hp; /* Not Used */
uint16 old_pet_mana; /* Not Used */
SpellBuff_Struct pet_buffs[BUFF_COUNT]; /* Not Used */
uint32 pet_items[EQEmu::textures::TextureCount]; /* Not Used */
EQEmu::TextureShortProfile pet_items; /* Not Used */
char merc_name[64]; /* Used */
uint32 aa_effects; /* Used */
+15 -15
View File
@@ -2070,7 +2070,7 @@ namespace RoF
for (int r = 0; r < 9; r++)
{
outapp->WriteUInt32(emu->item_material[r]);
outapp->WriteUInt32(emu->item_material.Slot[r].Material);
outapp->WriteUInt32(0);
outapp->WriteUInt32(0);
outapp->WriteUInt32(0);
@@ -3047,11 +3047,11 @@ namespace RoF
eq_cse->Face = emu_cse->Face;
for (int equip_index = 0; equip_index < EQEmu::textures::TextureCount; equip_index++) {
eq_cse->Equip[equip_index].Material = emu_cse->Equip[equip_index].Material;
eq_cse->Equip[equip_index].Unknown1 = emu_cse->Equip[equip_index].Unknown1;
eq_cse->Equip[equip_index].EliteMaterial = emu_cse->Equip[equip_index].EliteMaterial;
eq_cse->Equip[equip_index].HeroForgeModel = emu_cse->Equip[equip_index].HeroForgeModel;
eq_cse->Equip[equip_index].Material2 = emu_cse->Equip[equip_index].Material2;
eq_cse->Equip[equip_index].Textures.Material = emu_cse->Equip[equip_index].Textures.Material;
eq_cse->Equip[equip_index].Textures.Unknown1 = emu_cse->Equip[equip_index].Textures.Unknown1;
eq_cse->Equip[equip_index].Textures.EliteMaterial = emu_cse->Equip[equip_index].Textures.EliteMaterial;
eq_cse->Equip[equip_index].Textures.HeroForgeModel = emu_cse->Equip[equip_index].Textures.HeroForgeModel;
eq_cse->Equip[equip_index].Textures.Material2 = emu_cse->Equip[equip_index].Textures.Material2;
eq_cse->Equip[equip_index].Color.Color = emu_cse->Equip[equip_index].Color.Color;
}
@@ -4090,17 +4090,17 @@ namespace RoF
}
}
structs::EquipStruct *Equipment = (structs::EquipStruct *)Buffer;
structs::Texture_Struct *Equipment = (structs::Texture_Struct *)Buffer;
for (k = 0; k < 9; k++) {
Equipment[k].Material = emu->equipment[k].Material;
Equipment[k].Unknown1 = emu->equipment[k].Unknown1;
Equipment[k].EliteMaterial = emu->equipment[k].EliteMaterial;
Equipment[k].HeroForgeModel = emu->equipment[k].HeroForgeModel;
Equipment[k].Material2 = emu->equipment[k].Material2;
Equipment[k].Material = emu->equipment.Slot[k].Material;
Equipment[k].Unknown1 = emu->equipment.Slot[k].Unknown1;
Equipment[k].EliteMaterial = emu->equipment.Slot[k].EliteMaterial;
Equipment[k].HeroForgeModel = emu->equipment.Slot[k].HeroForgeModel;
Equipment[k].Material2 = emu->equipment.Slot[k].Material2;
}
Buffer += (sizeof(structs::EquipStruct) * 9);
Buffer += (sizeof(structs::Texture_Struct) * 9);
}
else
{
@@ -4110,13 +4110,13 @@ namespace RoF
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment[EQEmu::textures::TexturePrimary].Material);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment.Primary.Material);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment[EQEmu::textures::TextureSecondary].Material);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment.Secondary.Material);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
+15 -15
View File
@@ -2154,7 +2154,7 @@ namespace RoF2
for (int r = 0; r < 9; r++)
{
outapp->WriteUInt32(emu->item_material[r]);
outapp->WriteUInt32(emu->item_material.Slot[r].Material);
outapp->WriteUInt32(0);
outapp->WriteUInt32(0);
outapp->WriteUInt32(0);
@@ -3140,11 +3140,11 @@ namespace RoF2
eq_cse->Face = emu_cse->Face;
for (int equip_index = 0; equip_index < EQEmu::textures::TextureCount; equip_index++) {
eq_cse->Equip[equip_index].Material = emu_cse->Equip[equip_index].Material;
eq_cse->Equip[equip_index].Unknown1 = emu_cse->Equip[equip_index].Unknown1;
eq_cse->Equip[equip_index].EliteMaterial = emu_cse->Equip[equip_index].EliteMaterial;
eq_cse->Equip[equip_index].HeroForgeModel = emu_cse->Equip[equip_index].HeroForgeModel;
eq_cse->Equip[equip_index].Material2 = emu_cse->Equip[equip_index].Material2;
eq_cse->Equip[equip_index].Textures.Material = emu_cse->Equip[equip_index].Textures.Material;
eq_cse->Equip[equip_index].Textures.Unknown1 = emu_cse->Equip[equip_index].Textures.Unknown1;
eq_cse->Equip[equip_index].Textures.EliteMaterial = emu_cse->Equip[equip_index].Textures.EliteMaterial;
eq_cse->Equip[equip_index].Textures.HeroForgeModel = emu_cse->Equip[equip_index].Textures.HeroForgeModel;
eq_cse->Equip[equip_index].Textures.Material2 = emu_cse->Equip[equip_index].Textures.Material2;
eq_cse->Equip[equip_index].Color.Color = emu_cse->Equip[equip_index].Color.Color;
}
@@ -4313,17 +4313,17 @@ namespace RoF2
}
}
structs::EquipStruct *Equipment = (structs::EquipStruct *)Buffer;
structs::Texture_Struct *Equipment = (structs::Texture_Struct *)Buffer;
for (k = 0; k < 9; k++) {
Equipment[k].Material = emu->equipment[k].Material;
Equipment[k].Unknown1 = emu->equipment[k].Unknown1;
Equipment[k].EliteMaterial = emu->equipment[k].EliteMaterial;
Equipment[k].HeroForgeModel = emu->equipment[k].HeroForgeModel;
Equipment[k].Material2 = emu->equipment[k].Material2;
Equipment[k].Material = emu->equipment.Slot[k].Material;
Equipment[k].Unknown1 = emu->equipment.Slot[k].Unknown1;
Equipment[k].EliteMaterial = emu->equipment.Slot[k].EliteMaterial;
Equipment[k].HeroForgeModel = emu->equipment.Slot[k].HeroForgeModel;
Equipment[k].Material2 = emu->equipment.Slot[k].Material2;
}
Buffer += (sizeof(structs::EquipStruct) * 9);
Buffer += (sizeof(structs::Texture_Struct) * 9);
}
else
{
@@ -4333,13 +4333,13 @@ namespace RoF2
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment[EQEmu::textures::TexturePrimary].Material);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment.Primary.Material);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment[EQEmu::textures::TextureSecondary].Material);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment.Secondary.Material);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
+68 -52
View File
@@ -176,7 +176,8 @@ struct Tint_Struct
};
};
struct TintProfile {
struct TintProfile
{
union {
struct {
Tint_Struct Head;
@@ -193,13 +194,43 @@ struct TintProfile {
};
};
struct CharSelectEquip
/*
* Visible equiptment.
* Size: 20 Octets
*/
struct Texture_Struct
{
uint32 Material;
uint32 Unknown1;
uint32 EliteMaterial;
uint32 HeroForgeModel;
uint32 Material2;
uint32 Material2; // Same as material?
};
// Needs more research regarding new slots
//struct TextureProfile
//{
// union {
// struct {
// Texture_Struct Head;
// Texture_Struct Chest;
// Texture_Struct Arms;
// Texture_Struct Wrist;
// Texture_Struct Hands;
// Texture_Struct Legs;
// Texture_Struct Feet;
// Texture_Struct Primary;
// Texture_Struct Secondary;
// };
// Texture_Struct Slot[EQEmu::textures::TextureCount];
// };
//
// TextureProfile();
//};
struct CharSelectEquip
{
Texture_Struct Textures;
Tint_Struct Color;
};
@@ -248,21 +279,6 @@ struct CharacterSelect_Struct
/*004*/ CharacterSelectEntry_Struct Entries[0];
};
/*
* Visible equiptment.
* Size: 20 Octets
*/
struct EquipStruct
{
/*00*/ uint32 Material;
/*04*/ uint32 Unknown1;
/*08*/ uint32 EliteMaterial;
/*12*/ uint32 HeroForgeModel;
/*16*/ uint32 Material2; // Same as material?
/*20*/
};
struct Membership_Entry_Struct
{
/*000*/ uint32 purchase_id; // Seen 1, then increments 90287 to 90300
@@ -471,17 +487,17 @@ struct Spawn_Struct
{
struct
{
/*0000*/ EquipStruct equip_helmet; // Equiptment: Helmet visual
/*0000*/ EquipStruct equip_chest; // Equiptment: Chest visual
/*0000*/ EquipStruct equip_arms; // Equiptment: Arms visual
/*0000*/ EquipStruct equip_bracers; // Equiptment: Wrist visual
/*0000*/ EquipStruct equip_hands; // Equiptment: Hands visual
/*0000*/ EquipStruct equip_legs; // Equiptment: Legs visual
/*0000*/ EquipStruct equip_feet; // Equiptment: Boots visual
/*0000*/ EquipStruct equip_primary; // Equiptment: Main visual
/*0000*/ EquipStruct equip_secondary; // Equiptment: Off visual
/*0000*/ Texture_Struct equip_helmet; // Equiptment: Helmet visual
/*0000*/ Texture_Struct equip_chest; // Equiptment: Chest visual
/*0000*/ Texture_Struct equip_arms; // Equiptment: Arms visual
/*0000*/ Texture_Struct equip_bracers; // Equiptment: Wrist visual
/*0000*/ Texture_Struct equip_hands; // Equiptment: Hands visual
/*0000*/ Texture_Struct equip_legs; // Equiptment: Legs visual
/*0000*/ Texture_Struct equip_feet; // Equiptment: Boots visual
/*0000*/ Texture_Struct equip_primary; // Equiptment: Main visual
/*0000*/ Texture_Struct equip_secondary; // Equiptment: Off visual
} equip;
/*0000*/ EquipStruct equipment[9];
/*0000*/ Texture_Struct equipment[9];
};
/*0000*/ //char title[0]; // only read if(hasTitleOrSuffix & 4)
@@ -1080,34 +1096,34 @@ union
{
struct
{
/*00184*/ EquipStruct equip_helmet; // Equipment: Helmet visual
/*00204*/ EquipStruct equip_chest; // Equipment: Chest visual
/*00224*/ EquipStruct equip_arms; // Equipment: Arms visual
/*00244*/ EquipStruct equip_bracers; // Equipment: Wrist visual
/*00264*/ EquipStruct equip_hands; // Equipment: Hands visual
/*00284*/ EquipStruct equip_legs; // Equipment: Legs visual
/*00304*/ EquipStruct equip_feet; // Equipment: Boots visual
/*00324*/ EquipStruct equip_primary; // Equipment: Main visual
/*00344*/ EquipStruct equip_secondary; // Equipment: Off visual
/*00184*/ Texture_Struct equip_helmet; // Equipment: Helmet visual
/*00204*/ Texture_Struct equip_chest; // Equipment: Chest visual
/*00224*/ Texture_Struct equip_arms; // Equipment: Arms visual
/*00244*/ Texture_Struct equip_bracers; // Equipment: Wrist visual
/*00264*/ Texture_Struct equip_hands; // Equipment: Hands visual
/*00284*/ Texture_Struct equip_legs; // Equipment: Legs visual
/*00304*/ Texture_Struct equip_feet; // Equipment: Boots visual
/*00324*/ Texture_Struct equip_primary; // Equipment: Main visual
/*00344*/ Texture_Struct equip_secondary; // Equipment: Off visual
// Below slots are just guesses, but all 0s anyway...
/*00364*/ EquipStruct equip_charm; // Equipment: Non-visual
/*00384*/ EquipStruct equip_ear1; // Equipment: Non-visual
/*00404*/ EquipStruct equip_ear2; // Equipment: Non-visual
/*00424*/ EquipStruct equip_face; // Equipment: Non-visual
/*00444*/ EquipStruct equip_neck; // Equipment: Non-visual
/*00464*/ EquipStruct equip_shoulder; // Equipment: Non-visual
/*00484*/ EquipStruct equip_bracer2; // Equipment: Non-visual
/*00504*/ EquipStruct equip_range; // Equipment: Non-visual
/*00524*/ EquipStruct equip_ring1; // Equipment: Non-visual
/*00544*/ EquipStruct equip_ring2; // Equipment: Non-visual
/*00564*/ EquipStruct equip_waist; // Equipment: Non-visual
/*00584*/ EquipStruct equip_powersource;// Equipment: Non-visual
/*00604*/ EquipStruct equip_ammo; // Equipment: Non-visual
/*00364*/ Texture_Struct equip_charm; // Equipment: Non-visual
/*00384*/ Texture_Struct equip_ear1; // Equipment: Non-visual
/*00404*/ Texture_Struct equip_ear2; // Equipment: Non-visual
/*00424*/ Texture_Struct equip_face; // Equipment: Non-visual
/*00444*/ Texture_Struct equip_neck; // Equipment: Non-visual
/*00464*/ Texture_Struct equip_shoulder; // Equipment: Non-visual
/*00484*/ Texture_Struct equip_bracer2; // Equipment: Non-visual
/*00504*/ Texture_Struct equip_range; // Equipment: Non-visual
/*00524*/ Texture_Struct equip_ring1; // Equipment: Non-visual
/*00544*/ Texture_Struct equip_ring2; // Equipment: Non-visual
/*00564*/ Texture_Struct equip_waist; // Equipment: Non-visual
/*00584*/ Texture_Struct equip_powersource;// Equipment: Non-visual
/*00604*/ Texture_Struct equip_ammo; // Equipment: Non-visual
} equip;
/*00184*/ EquipStruct equipment[22]; // Total Slots
/*00184*/ Texture_Struct equipment[22]; // Total Slots
};
/*00624*/ uint32 equip2_count; // Seen 9
/*00628*/ EquipStruct equipment2[EQEmu::textures::TextureCount]; // Appears to be Visible slots, but all 0s
/*00628*/ Texture_Struct equipment2[EQEmu::textures::TextureCount]; // Appears to be Visible slots, but all 0s
/*00808*/ uint32 tint_count; // Seen 9
/*00812*/ TintProfile item_tint; // RR GG BB 00
/*00848*/ uint32 tint_count2; // Seen 9
+68 -52
View File
@@ -176,7 +176,8 @@ struct Tint_Struct
};
};
struct TintProfile {
struct TintProfile
{
union {
struct {
Tint_Struct Head;
@@ -193,13 +194,43 @@ struct TintProfile {
};
};
struct CharSelectEquip
/*
* Visible equiptment.
* Size: 20 Octets
*/
struct Texture_Struct
{
uint32 Material;
uint32 Unknown1;
uint32 EliteMaterial;
uint32 HeroForgeModel;
uint32 Material2;
uint32 Material2; // Same as material?
};
// Needs more research regarding new slots
//struct TextureProfile
//{
// union {
// struct {
// Texture_Struct Head;
// Texture_Struct Chest;
// Texture_Struct Arms;
// Texture_Struct Wrist;
// Texture_Struct Hands;
// Texture_Struct Legs;
// Texture_Struct Feet;
// Texture_Struct Primary;
// Texture_Struct Secondary;
// };
// Texture_Struct Slot[EQEmu::textures::TextureCount];
// };
//
// TextureProfile();
//};
struct CharSelectEquip
{
Texture_Struct Textures;
Tint_Struct Color;
};
@@ -248,21 +279,6 @@ struct CharacterSelect_Struct
/*004*/ CharacterSelectEntry_Struct Entries[0];
};
/*
* Visible equiptment.
* Size: 20 Octets
*/
struct EquipStruct
{
/*00*/ uint32 Material;
/*04*/ uint32 Unknown1;
/*08*/ uint32 EliteMaterial;
/*12*/ uint32 HeroForgeModel;
/*16*/ uint32 Material2; // Same as material?
/*20*/
};
struct Membership_Entry_Struct
{
/*000*/ uint32 purchase_id; // Seen 1, then increments 90287 to 90300
@@ -465,17 +481,17 @@ struct Spawn_Struct
{
struct
{
/*0000*/ EquipStruct equip_helmet; // Equiptment: Helmet visual
/*0000*/ EquipStruct equip_chest; // Equiptment: Chest visual
/*0000*/ EquipStruct equip_arms; // Equiptment: Arms visual
/*0000*/ EquipStruct equip_bracers; // Equiptment: Wrist visual
/*0000*/ EquipStruct equip_hands; // Equiptment: Hands visual
/*0000*/ EquipStruct equip_legs; // Equiptment: Legs visual
/*0000*/ EquipStruct equip_feet; // Equiptment: Boots visual
/*0000*/ EquipStruct equip_primary; // Equiptment: Main visual
/*0000*/ EquipStruct equip_secondary; // Equiptment: Off visual
/*0000*/ Texture_Struct equip_helmet; // Equiptment: Helmet visual
/*0000*/ Texture_Struct equip_chest; // Equiptment: Chest visual
/*0000*/ Texture_Struct equip_arms; // Equiptment: Arms visual
/*0000*/ Texture_Struct equip_bracers; // Equiptment: Wrist visual
/*0000*/ Texture_Struct equip_hands; // Equiptment: Hands visual
/*0000*/ Texture_Struct equip_legs; // Equiptment: Legs visual
/*0000*/ Texture_Struct equip_feet; // Equiptment: Boots visual
/*0000*/ Texture_Struct equip_primary; // Equiptment: Main visual
/*0000*/ Texture_Struct equip_secondary; // Equiptment: Off visual
} equip;
/*0000*/ EquipStruct equipment[9];
/*0000*/ Texture_Struct equipment[9];
};
/*0000*/ //char title[0]; // only read if(hasTitleOrSuffix & 4)
@@ -1063,34 +1079,34 @@ union
{
struct
{
/*00184*/ EquipStruct equip_helmet; // Equiptment: Helmet visual
/*00204*/ EquipStruct equip_chest; // Equiptment: Chest visual
/*00224*/ EquipStruct equip_arms; // Equiptment: Arms visual
/*00244*/ EquipStruct equip_bracers; // Equiptment: Wrist visual
/*00264*/ EquipStruct equip_hands; // Equiptment: Hands visual
/*00284*/ EquipStruct equip_legs; // Equiptment: Legs visual
/*00304*/ EquipStruct equip_feet; // Equiptment: Boots visual
/*00324*/ EquipStruct equip_primary; // Equiptment: Main visual
/*00344*/ EquipStruct equip_secondary; // Equiptment: Off visual
/*00184*/ Texture_Struct equip_helmet; // Equiptment: Helmet visual
/*00204*/ Texture_Struct equip_chest; // Equiptment: Chest visual
/*00224*/ Texture_Struct equip_arms; // Equiptment: Arms visual
/*00244*/ Texture_Struct equip_bracers; // Equiptment: Wrist visual
/*00264*/ Texture_Struct equip_hands; // Equiptment: Hands visual
/*00284*/ Texture_Struct equip_legs; // Equiptment: Legs visual
/*00304*/ Texture_Struct equip_feet; // Equiptment: Boots visual
/*00324*/ Texture_Struct equip_primary; // Equiptment: Main visual
/*00344*/ Texture_Struct equip_secondary; // Equiptment: Off visual
// Below slots are just guesses, but all 0s anyway...
/*00364*/ EquipStruct equip_charm; // Equiptment: Non-visual
/*00384*/ EquipStruct equip_ear1; // Equiptment: Non-visual
/*00404*/ EquipStruct equip_ear2; // Equiptment: Non-visual
/*00424*/ EquipStruct equip_face; // Equiptment: Non-visual
/*00444*/ EquipStruct equip_neck; // Equiptment: Non-visual
/*00464*/ EquipStruct equip_shoulder; // Equiptment: Non-visual
/*00484*/ EquipStruct equip_bracer2; // Equiptment: Non-visual
/*00504*/ EquipStruct equip_range; // Equiptment: Non-visual
/*00524*/ EquipStruct equip_ring1; // Equiptment: Non-visual
/*00544*/ EquipStruct equip_ring2; // Equiptment: Non-visual
/*00564*/ EquipStruct equip_waist; // Equiptment: Non-visual
/*00584*/ EquipStruct equip_powersource; // Equiptment: Non-visual
/*00604*/ EquipStruct equip_ammo; // Equiptment: Non-visual
/*00364*/ Texture_Struct equip_charm; // Equiptment: Non-visual
/*00384*/ Texture_Struct equip_ear1; // Equiptment: Non-visual
/*00404*/ Texture_Struct equip_ear2; // Equiptment: Non-visual
/*00424*/ Texture_Struct equip_face; // Equiptment: Non-visual
/*00444*/ Texture_Struct equip_neck; // Equiptment: Non-visual
/*00464*/ Texture_Struct equip_shoulder; // Equiptment: Non-visual
/*00484*/ Texture_Struct equip_bracer2; // Equiptment: Non-visual
/*00504*/ Texture_Struct equip_range; // Equiptment: Non-visual
/*00524*/ Texture_Struct equip_ring1; // Equiptment: Non-visual
/*00544*/ Texture_Struct equip_ring2; // Equiptment: Non-visual
/*00564*/ Texture_Struct equip_waist; // Equiptment: Non-visual
/*00584*/ Texture_Struct equip_powersource; // Equiptment: Non-visual
/*00604*/ Texture_Struct equip_ammo; // Equiptment: Non-visual
} equip;
/*00184*/ EquipStruct equipment[22];
/*00184*/ Texture_Struct equipment[22];
};
/*00624*/ uint32 equip2_count; // Seen 9
/*00628*/ EquipStruct equipment2[9]; // Appears to be Visible slots, but all 0s
/*00628*/ Texture_Struct equipment2[9]; // Appears to be Visible slots, but all 0s
/*00808*/ uint32 tint_count; // Seen 9
/*00812*/ TintProfile item_tint; // RR GG BB 00
/*00848*/ uint32 tint_count2; // Seen 9
+14 -14
View File
@@ -1554,9 +1554,9 @@ namespace SoD
OUT(beard);
// OUT(unknown00178[10]);
for (r = 0; r < 9; r++) {
eq->equipment[r].Material = emu->item_material[r];
eq->equipment[r].Unknown1 = 0;
eq->equipment[r].EliteMaterial = 0;
eq->equipment.Slot[r].Material = emu->item_material.Slot[r].Material;
eq->equipment.Slot[r].Unknown1 = 0;
eq->equipment.Slot[r].EliteMaterial = 0;
//eq->colors[r].color = emu->colors[r].color;
}
for (r = 0; r < 7; r++) {
@@ -1994,9 +1994,9 @@ namespace SoD
eq_cse->Face = emu_cse->Face;
for (int equip_index = 0; equip_index < EQEmu::textures::TextureCount; equip_index++) {
eq_cse->Equip[equip_index].Material = emu_cse->Equip[equip_index].Material;
eq_cse->Equip[equip_index].Unknown1 = emu_cse->Equip[equip_index].Unknown1;
eq_cse->Equip[equip_index].EliteMaterial = emu_cse->Equip[equip_index].EliteMaterial;
eq_cse->Equip[equip_index].Textures.Material = emu_cse->Equip[equip_index].Textures.Material;
eq_cse->Equip[equip_index].Textures.Unknown1 = emu_cse->Equip[equip_index].Textures.Unknown1;
eq_cse->Equip[equip_index].Textures.EliteMaterial = emu_cse->Equip[equip_index].Textures.EliteMaterial;
eq_cse->Equip[equip_index].Color.Color = emu_cse->Equip[equip_index].Color.Color;
}
@@ -2563,7 +2563,7 @@ namespace SoD
float SpawnSize = emu->size;
if (!((emu->NPC == 0) || (emu->race <= 12) || (emu->race == 128) || (emu->race == 130) || (emu->race == 330) || (emu->race == 522)))
{
PacketSize -= (sizeof(structs::EquipStruct) * 9);
PacketSize -= (sizeof(structs::Texture_Struct) * 9);
if (emu->size == 0)
{
@@ -2773,11 +2773,11 @@ namespace SoD
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment[EQEmu::textures::TexturePrimary].Material);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment.Primary.Material);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment[EQEmu::textures::TextureSecondary].Material);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment.Secondary.Material);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
}
@@ -2785,15 +2785,15 @@ namespace SoD
if ((emu->NPC == 0) || (emu->race <= 12) || (emu->race == 128) || (emu->race == 130) || (emu->race == 330) || (emu->race == 522))
{
structs::EquipStruct *Equipment = (structs::EquipStruct *)Buffer;
structs::Texture_Struct *Equipment = (structs::Texture_Struct *)Buffer;
for (k = 0; k < 9; k++) {
Equipment[k].Material = emu->equipment[k].Material;
Equipment[k].Unknown1 = emu->equipment[k].Unknown1;
Equipment[k].EliteMaterial = emu->equipment[k].EliteMaterial;
Equipment[k].Material = emu->equipment.Slot[k].Material;
Equipment[k].Unknown1 = emu->equipment.Slot[k].Unknown1;
Equipment[k].EliteMaterial = emu->equipment.Slot[k].EliteMaterial;
}
Buffer += (sizeof(structs::EquipStruct) * 9);
Buffer += (sizeof(structs::Texture_Struct) * 9);
}
if (strlen(emu->title))
{
+35 -48
View File
@@ -135,7 +135,8 @@ struct Tint_Struct
};
};
struct TintProfile {
struct TintProfile
{
union {
struct {
Tint_Struct Head;
@@ -152,11 +153,40 @@ struct TintProfile {
};
};
struct CharSelectEquip
/*
* Visible equiptment.
* Size: 12 Octets
*/
struct Texture_Struct
{
uint32 Material;
uint32 Unknown1;
uint32 EliteMaterial;
};
struct TextureProfile
{
union {
struct {
Texture_Struct Head;
Texture_Struct Chest;
Texture_Struct Arms;
Texture_Struct Wrist;
Texture_Struct Hands;
Texture_Struct Legs;
Texture_Struct Feet;
Texture_Struct Primary;
Texture_Struct Secondary;
};
Texture_Struct Slot[EQEmu::textures::TextureCount];
};
TextureProfile();
};
struct CharSelectEquip
{
Texture_Struct Textures;
Tint_Struct Color;
};
@@ -169,7 +199,7 @@ struct CharacterSelectEntry_Struct
/*0000*/ uint8 Beard; //
/*0001*/ uint8 HairColor; //
/*0000*/ uint8 Face; //
/*0000*/ CharSelectEquip Equip[9];
/*0000*/ CharSelectEquip Equip[EQEmu::textures::TextureCount];
/*0000*/ uint32 PrimaryIDFile; //
/*0000*/ uint32 SecondaryIDFile; //
/*0000*/ uint8 Unknown15; // 0xff
@@ -202,19 +232,6 @@ struct CharacterSelect_Struct
/*0008*/ CharacterSelectEntry_Struct Entries[0];
};
/*
* Visible equiptment.
* Size: 12 Octets
*/
struct EquipStruct
{
/*00*/ uint32 Material;
/*04*/ uint32 Unknown1;
/*08*/ uint32 EliteMaterial;
/*12*/
};
/*
** Generic Spawn Struct
** Length: 897 Octets
@@ -334,22 +351,7 @@ struct Spawn_Struct
/*0000*/ TintProfile equipment_tint;
// skip these bytes if not a valid player race
/*0000*/ union
{
struct
{
/*0000*/ EquipStruct equip_helmet; // Equiptment: Helmet visual
/*0000*/ EquipStruct equip_chest; // Equiptment: Chest visual
/*0000*/ EquipStruct equip_arms; // Equiptment: Arms visual
/*0000*/ EquipStruct equip_bracers; // Equiptment: Wrist visual
/*0000*/ EquipStruct equip_hands; // Equiptment: Hands visual
/*0000*/ EquipStruct equip_legs; // Equiptment: Legs visual
/*0000*/ EquipStruct equip_feet; // Equiptment: Boots visual
/*0000*/ EquipStruct equip_primary; // Equiptment: Main visual
/*0000*/ EquipStruct equip_secondary; // Equiptment: Off visual
} equip;
/*0000*/ EquipStruct equipment[9];
};
/*0000*/ TextureProfile equipment;
/*0000*/ //char title[0]; // only read if(hasTitleOrSuffix & 4)
/*0000*/ //char suffix[0]; // only read if(hasTitleOrSuffix & 8)
@@ -905,22 +907,7 @@ struct PlayerProfile_Struct
/*00216*/ uint8 hairstyle; // Player hair style
/*00217*/ uint8 beard; // Player beard type
/*00218*/ uint8 unknown00178[14]; //[10]14 on Live? was 10
/*00232*/ union
{
struct
{
/*00228*/ EquipStruct equip_helmet; // Equiptment: Helmet visual
/*00240*/ EquipStruct equip_chest; // Equiptment: Chest visual
/*00252*/ EquipStruct equip_arms; // Equiptment: Arms visual
/*00264*/ EquipStruct equip_bracers; // Equiptment: Wrist visual
/*00276*/ EquipStruct equip_hands; // Equiptment: Hands visual
/*00288*/ EquipStruct equip_legs; // Equiptment: Legs visual
/*00300*/ EquipStruct equip_feet; // Equiptment: Boots visual
/*00312*/ EquipStruct equip_primary; // Equiptment: Main visual
/*00324*/ EquipStruct equip_secondary; // Equiptment: Off visual
} equip;
/*00228*/ EquipStruct equipment[9]; //Live Shows [108] for this part
};
/*00232*/ TextureProfile equipment;
/*00340*/ uint8 unknown00224[156]; // Live Shows [160]
/*00496*/ TintProfile item_tint; // RR GG BB 00
/*00532*/ AA_Array aa_array[MAX_PP_AA_ARRAY]; // [3600] AAs 12 bytes each
+9 -9
View File
@@ -1210,9 +1210,9 @@ namespace SoF
OUT(beard);
// OUT(unknown00178[10]);
for (r = 0; r < 9; r++) {
eq->equipment[r].Material = emu->item_material[r];
eq->equipment[r].Unknown1 = 0;
eq->equipment[r].EliteMaterial = 0;
eq->equipment.Slot[r].Material = emu->item_material.Slot[r].Material;
eq->equipment.Slot[r].Unknown1 = 0;
eq->equipment.Slot[r].EliteMaterial = 0;
//eq->colors[r].color = emu->colors[r].color;
}
for (r = 0; r < 7; r++) {
@@ -1650,9 +1650,9 @@ namespace SoF
eq_cse->Face = emu_cse->Face;
for (int equip_index = 0; equip_index < EQEmu::textures::TextureCount; equip_index++) {
eq_cse->Equip[equip_index].Material = emu_cse->Equip[equip_index].Material;
eq_cse->Equip[equip_index].Unknown1 = emu_cse->Equip[equip_index].Unknown1;
eq_cse->Equip[equip_index].EliteMaterial = emu_cse->Equip[equip_index].EliteMaterial;
eq_cse->Equip[equip_index].Textures.Material = emu_cse->Equip[equip_index].Textures.Material;
eq_cse->Equip[equip_index].Textures.Unknown1 = emu_cse->Equip[equip_index].Textures.Unknown1;
eq_cse->Equip[equip_index].Textures.EliteMaterial = emu_cse->Equip[equip_index].Textures.EliteMaterial;
eq_cse->Equip[equip_index].Color.Color = emu_cse->Equip[equip_index].Color.Color;
}
@@ -2081,9 +2081,9 @@ namespace SoF
eq->drakkin_heritage = emu->drakkin_heritage;
eq->gender = emu->gender;
for (k = 0; k < 9; k++) {
eq->equipment[k].Material = emu->equipment[k].Material;
eq->equipment[k].Unknown1 = emu->equipment[k].Unknown1;
eq->equipment[k].EliteMaterial = emu->equipment[k].EliteMaterial;
eq->equipment.Slot[k].Material = emu->equipment.Slot[k].Material;
eq->equipment.Slot[k].Unknown1 = emu->equipment.Slot[k].Unknown1;
eq->equipment.Slot[k].EliteMaterial = emu->equipment.Slot[k].EliteMaterial;
eq->equipment_tint.Slot[k].Color = emu->equipment_tint.Slot[k].Color;
}
eq->StandState = emu->StandState;
+35 -48
View File
@@ -135,7 +135,8 @@ struct Tint_Struct
};
};
struct TintProfile {
struct TintProfile
{
union {
struct {
Tint_Struct Head;
@@ -152,11 +153,40 @@ struct TintProfile {
};
};
struct CharSelectEquip
/*
* Visible equiptment.
* Size: 12 Octets
*/
struct Texture_Struct
{
uint32 Material;
uint32 Unknown1;
uint32 EliteMaterial;
};
struct TextureProfile
{
union {
struct {
Texture_Struct Head;
Texture_Struct Chest;
Texture_Struct Arms;
Texture_Struct Wrist;
Texture_Struct Hands;
Texture_Struct Legs;
Texture_Struct Feet;
Texture_Struct Primary;
Texture_Struct Secondary;
};
Texture_Struct Slot[EQEmu::textures::TextureCount];
};
TextureProfile();
};
struct CharSelectEquip
{
Texture_Struct Textures;
Tint_Struct Color;
};
@@ -169,7 +199,7 @@ struct CharacterSelectEntry_Struct
/*0000*/ uint8 Beard; //
/*0001*/ uint8 HairColor; //
/*0000*/ uint8 Face; //
/*0000*/ CharSelectEquip Equip[9];
/*0000*/ CharSelectEquip Equip[EQEmu::textures::TextureCount];
/*0000*/ uint32 PrimaryIDFile; //
/*0000*/ uint32 SecondaryIDFile; //
/*0000*/ uint8 Unknown15; // 0xff
@@ -200,19 +230,6 @@ struct CharacterSelect_Struct
/*0008*/ CharacterSelectEntry_Struct Entries[0];
};
/*
* Visible equiptment.
* Size: 12 Octets
*/
struct EquipStruct
{
/*00*/ uint32 Material;
/*04*/ uint32 Unknown1;
/*08*/ uint32 EliteMaterial;
/*12*/
};
/*
** Generic Spawn Struct
** Length: 897 Octets
@@ -239,22 +256,7 @@ struct Spawn_Struct {
/*0018*/ uint8 unknown0018[4]; //
/*0022*/ uint8 gender; // Gender (0=male, 1=female, 2=monster)
/*0023*/ uint8 unknown0023[4]; //
/*0027*/ union
{
struct
{
/*0027*/ EquipStruct equip_helmet; // Equiptment: Helmet visual
/*0039*/ EquipStruct equip_chest; // Equiptment: Chest visual
/*0051*/ EquipStruct equip_arms; // Equiptment: Arms visual
/*0063*/ EquipStruct equip_bracers; // Equiptment: Wrist visual
/*0075*/ EquipStruct equip_hands; // Equiptment: Hands visual
/*0087*/ EquipStruct equip_legs; // Equiptment: Legs visual
/*0099*/ EquipStruct equip_feet; // Equiptment: Boots visual
/*0111*/ EquipStruct equip_primary; // Equiptment: Main visual
/*0123*/ EquipStruct equip_secondary; // Equiptment: Off visual
} equip;
/*0027*/ EquipStruct equipment[9];
};
/*0027*/ TextureProfile equipment;
/*0135*/ uint8 StandState; // Seems to be required to be set to 0x64 for normal animation.
/*0136*/ uint8 unknown0136;
@@ -884,22 +886,7 @@ struct PlayerProfile_Struct //23576 Octets
/*00216*/ uint8 hairstyle; // Player hair style
/*00217*/ uint8 beard; // Player beard type
/*00218*/ uint8 unknown00178[10]; //[10]14 on Live?
/*00228*/ union
{
struct
{
/*00228*/ EquipStruct equip_helmet; // Equiptment: Helmet visual
/*00240*/ EquipStruct equip_chest; // Equiptment: Chest visual
/*00252*/ EquipStruct equip_arms; // Equiptment: Arms visual
/*00264*/ EquipStruct equip_bracers; // Equiptment: Wrist visual
/*00276*/ EquipStruct equip_hands; // Equiptment: Hands visual
/*00288*/ EquipStruct equip_legs; // Equiptment: Legs visual
/*00300*/ EquipStruct equip_feet; // Equiptment: Boots visual
/*00312*/ EquipStruct equip_primary; // Equiptment: Main visual
/*00324*/ EquipStruct equip_secondary; // Equiptment: Off visual
} equip;
/*00228*/ EquipStruct equipment[9]; //Live Shows [108] for this part
};
/*00228*/ TextureProfile equipment;
/*00336*/ uint8 unknown00224[156]; // Live Shows [160]
/*00496*/ TintProfile item_tint; // RR GG BB 00
/*00544*/ AA_Array aa_array[MAX_PP_AA_ARRAY]; // [3600] AAs 12 bytes each
+4 -4
View File
@@ -904,7 +904,7 @@ namespace Titanium
OUT(beard);
// OUT(unknown00178[10]);
for (r = 0; r < 9; r++) {
OUT(item_material[r]);
OUT(item_material.Slot[r].Material);
OUT(item_tint.Slot[r].Color);
}
// OUT(unknown00224[48]);
@@ -1231,7 +1231,7 @@ namespace Titanium
eq->HairStyle[char_index] = emu_cse->HairStyle;
for (int index = 0; index < EQEmu::textures::TextureCount; ++index) {
eq->Equip[char_index][index] = emu_cse->Equip[index].Material;
eq->Equip[char_index].Slot[index].Material = emu_cse->Equip[index].Textures.Material;
}
eq->SecondaryIDFile[char_index] = emu_cse->SecondaryIDFile;
@@ -1268,7 +1268,7 @@ namespace Titanium
eq->HairStyle[char_index] = 0;
for (int index = 0; index < EQEmu::textures::TextureCount; ++index) {
eq->Equip[char_index][index] = 0;
eq->Equip[char_index].Slot[index].Material = 0;
}
eq->SecondaryIDFile[char_index] = 0;
@@ -1600,7 +1600,7 @@ namespace Titanium
eq->guildrank = emu->guildrank;
// eq->unknown0194[3] = emu->unknown0194[3];
for (k = 0; k < 9; k++) {
eq->equipment[k] = emu->equipment[k].Material;
eq->equipment.Slot[k].Material = emu->equipment.Slot[k].Material;
eq->equipment_tint.Slot[k].Color = emu->equipment_tint.Slot[k].Color;
}
for (k = 0; k < 8; k++) {
+28 -18
View File
@@ -148,6 +148,31 @@ struct TintProfile {
};
};
struct Texture_Struct
{
uint32 Material;
};
struct TextureProfile
{
union {
struct {
Texture_Struct Head;
Texture_Struct Chest;
Texture_Struct Arms;
Texture_Struct Wrist;
Texture_Struct Hands;
Texture_Struct Legs;
Texture_Struct Feet;
Texture_Struct Primary;
Texture_Struct Secondary;
};
Texture_Struct Slot[EQEmu::textures::TextureCount];
};
TextureProfile();
};
/*
** Character Selection Struct
** Length: 1704 Bytes
@@ -159,7 +184,7 @@ struct CharacterSelect_Struct
/*0040*/ TintProfile CS_Colors[10]; // Characters Equipment Colors - packet requires length for 10 characters..but, client is limited to 8
/*0400*/ uint8 BeardColor[10]; // Characters beard Color
/*0410*/ uint8 HairStyle[10]; // Characters hair style
/*0420*/ uint32 Equip[10][9]; // 0=helm, 1=chest, 2=arm, 3=bracer, 4=hand, 5=leg, 6=boot, 7=melee1, 8=melee2 (Might not be)
/*0420*/ TextureProfile Equip[10]; // Characters texture array
/*0780*/ uint32 SecondaryIDFile[10]; // Characters secondary IDFile number
/*0820*/ uint8 Unknown820[10]; // 10x ff
/*0830*/ uint8 Unknown830[2]; // 2x 00
@@ -256,22 +281,7 @@ struct Spawn_Struct {
/*0189*/ uint32 petOwnerId; // If this is a pet, the spawn id of owner
/*0193*/ uint8 guildrank; // 0=normal, 1=officer, 2=leader
/*0194*/ uint8 unknown0194[3];
/*0197*/ union
{
struct
{
/*0197*/ uint32 equip_helmet; // Equipment: Helmet Visual
/*0201*/ uint32 equip_chest; // Equipment: Chest Visual
/*0205*/ uint32 equip_arms; // Equipment: Arms Visual
/*0209*/ uint32 equip_bracers; // Equipment: Bracers Visual
/*0213*/ uint32 equip_hands; // Equipment: Hands Visual
/*0217*/ uint32 equip_legs; // Equipment: Legs Visual
/*0221*/ uint32 equip_feet; // Equipment: Feet Visual
/*0225*/ uint32 equip_primary; // Equipment: Primary Visual
/*0229*/ uint32 equip_secondary; // Equipment: Secondary Visual
} equip;
/*0197*/ uint32 equipment[9]; // Array elements correspond to struct equipment above
};
/*0197*/ TextureProfile equipment;
/*0233*/ float runspeed; // Speed when running
/*0036*/ uint8 afk; // 0=no, 1=afk
/*0238*/ uint32 guildID; // Current guild
@@ -812,7 +822,7 @@ struct PlayerProfile_Struct
/*00176*/ uint8 hairstyle; // Player hair style
/*00177*/ uint8 beard; // Player beard type
/*00178*/ uint8 unknown00178[10];
/*00188*/ uint32 item_material[9]; // Item texture/material of worn items
/*00188*/ TextureProfile item_material; // Item texture/material of worn items
/*00224*/ uint8 unknown00224[44];
/*00268*/ TintProfile item_tint; // RR GG BB 00
/*00304*/ AA_Array aa_array[MAX_PP_AA_ARRAY]; // AAs
+17 -17
View File
@@ -1807,9 +1807,9 @@ namespace UF
OUT(beard);
// OUT(unknown00178[10]);
for (r = 0; r < 9; r++) {
eq->equipment[r].Material = emu->item_material[r];
eq->equipment[r].Unknown1 = 0;
eq->equipment[r].EliteMaterial = 0;
eq->equipment.Slot[r].Material = emu->item_material.Slot[r].Material;
eq->equipment.Slot[r].Unknown1 = 0;
eq->equipment.Slot[r].EliteMaterial = 0;
//eq->colors[r].color = emu->colors[r].color;
}
for (r = 0; r < 7; r++) {
@@ -2291,9 +2291,9 @@ namespace UF
eq_cse->Face = emu_cse->Face;
for (int equip_index = 0; equip_index < EQEmu::textures::TextureCount; equip_index++) {
eq_cse->Equip[equip_index].Material = emu_cse->Equip[equip_index].Material;
eq_cse->Equip[equip_index].Unknown1 = emu_cse->Equip[equip_index].Unknown1;
eq_cse->Equip[equip_index].EliteMaterial = emu_cse->Equip[equip_index].EliteMaterial;
eq_cse->Equip[equip_index].Textures.Material = emu_cse->Equip[equip_index].Textures.Material;
eq_cse->Equip[equip_index].Textures.Unknown1 = emu_cse->Equip[equip_index].Textures.Unknown1;
eq_cse->Equip[equip_index].Textures.EliteMaterial = emu_cse->Equip[equip_index].Textures.EliteMaterial;
eq_cse->Equip[equip_index].Color.Color = emu_cse->Equip[equip_index].Color.Color;
}
@@ -2858,7 +2858,7 @@ namespace UF
float SpawnSize = emu->size;
if (!((emu->NPC == 0) || (emu->race <= 12) || (emu->race == 128) || (emu->race == 130) || (emu->race == 330) || (emu->race == 522)))
{
PacketSize -= (sizeof(structs::EquipStruct) * 9);
PacketSize -= (sizeof(structs::Texture_Struct) * 9);
if (emu->size == 0)
{
@@ -3070,19 +3070,19 @@ namespace UF
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
if (emu->equipment[EQEmu::textures::TexturePrimary].Material > 99999) {
if (emu->equipment.Primary.Material > 99999) {
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 63);
} else {
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment[EQEmu::textures::TexturePrimary].Material);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment.Primary.Material);
}
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
if (emu->equipment[EQEmu::textures::TextureSecondary].Material > 99999) {
if (emu->equipment.Secondary.Material > 99999) {
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 63);
} else {
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment[EQEmu::textures::TextureSecondary].Material);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment.Secondary.Material);
}
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0);
@@ -3091,19 +3091,19 @@ namespace UF
if ((emu->NPC == 0) || (emu->race <= 12) || (emu->race == 128) || (emu->race == 130) || (emu->race == 330) || (emu->race == 522))
{
structs::EquipStruct *Equipment = (structs::EquipStruct *)Buffer;
structs::Texture_Struct *Equipment = (structs::Texture_Struct *)Buffer;
for (k = 0; k < 9; k++) {
if (emu->equipment[k].Material > 99999) {
if (emu->equipment.Slot[k].Material > 99999) {
Equipment[k].Material = 63;
} else {
Equipment[k].Material = emu->equipment[k].Material;
Equipment[k].Material = emu->equipment.Slot[k].Material;
}
Equipment[k].Unknown1 = emu->equipment[k].Unknown1;
Equipment[k].EliteMaterial = emu->equipment[k].EliteMaterial;
Equipment[k].Unknown1 = emu->equipment.Slot[k].Unknown1;
Equipment[k].EliteMaterial = emu->equipment.Slot[k].EliteMaterial;
}
Buffer += (sizeof(structs::EquipStruct) * 9);
Buffer += (sizeof(structs::Texture_Struct) * 9);
}
if (strlen(emu->title))
{
+35 -48
View File
@@ -135,7 +135,8 @@ struct Tint_Struct
};
};
struct TintProfile {
struct TintProfile
{
union {
struct {
Tint_Struct Head;
@@ -152,11 +153,40 @@ struct TintProfile {
};
};
struct CharSelectEquip
/*
* Visible equiptment.
* Size: 12 Octets
*/
struct Texture_Struct
{
uint32 Material;
uint32 Unknown1;
uint32 EliteMaterial;
};
struct TextureProfile
{
union {
struct {
Texture_Struct Head;
Texture_Struct Chest;
Texture_Struct Arms;
Texture_Struct Wrist;
Texture_Struct Hands;
Texture_Struct Legs;
Texture_Struct Feet;
Texture_Struct Primary;
Texture_Struct Secondary;
};
Texture_Struct Slot[EQEmu::textures::TextureCount];
};
TextureProfile();
};
struct CharSelectEquip
{
Texture_Struct Textures;
Tint_Struct Color;
};
@@ -169,7 +199,7 @@ struct CharacterSelectEntry_Struct
/*0000*/ uint8 Beard; //
/*0001*/ uint8 HairColor; //
/*0000*/ uint8 Face; //
/*0000*/ CharSelectEquip Equip[9];
/*0000*/ CharSelectEquip Equip[EQEmu::textures::TextureCount];
/*0000*/ uint32 PrimaryIDFile; //
/*0000*/ uint32 SecondaryIDFile; //
/*0000*/ uint8 Unknown15; // 0xff
@@ -202,19 +232,6 @@ struct CharacterSelect_Struct
/*0008*/ CharacterSelectEntry_Struct Entries[0];
};
/*
* Visible equiptment.
* Size: 12 Octets
*/
struct EquipStruct
{
/*00*/ uint32 Material;
/*04*/ uint32 Unknown1;
/*08*/ uint32 EliteMaterial;
/*12*/
};
/*
** Generic Spawn Struct
** Length: 897 Octets
@@ -334,22 +351,7 @@ struct Spawn_Struct
/*0000*/ TintProfile equipment_tint;
// skip these bytes if not a valid player race
/*0000*/ union
{
struct
{
/*0000*/ EquipStruct equip_helmet; // Equiptment: Helmet visual
/*0000*/ EquipStruct equip_chest; // Equiptment: Chest visual
/*0000*/ EquipStruct equip_arms; // Equiptment: Arms visual
/*0000*/ EquipStruct equip_bracers; // Equiptment: Wrist visual
/*0000*/ EquipStruct equip_hands; // Equiptment: Hands visual
/*0000*/ EquipStruct equip_legs; // Equiptment: Legs visual
/*0000*/ EquipStruct equip_feet; // Equiptment: Boots visual
/*0000*/ EquipStruct equip_primary; // Equiptment: Main visual
/*0000*/ EquipStruct equip_secondary; // Equiptment: Off visual
} equip;
/*0000*/ EquipStruct equipment[9];
};
/*0000*/ TextureProfile equipment;
/*0000*/ //char title[0]; // only read if(hasTitleOrSuffix & 4)
/*0000*/ //char suffix[0]; // only read if(hasTitleOrSuffix & 8)
@@ -954,22 +956,7 @@ struct PlayerProfile_Struct
/*00230*/ uint8 hairstyle; // Player hair style
/*00231*/ uint8 beard; // Player beard type
/*00232*/ uint8 unknown00232[4]; // was 14
/*00236*/ union
{
struct
{
/*00236*/ EquipStruct equip_helmet; // Equiptment: Helmet visual
/*00248*/ EquipStruct equip_chest; // Equiptment: Chest visual
/*00260*/ EquipStruct equip_arms; // Equiptment: Arms visual
/*00272*/ EquipStruct equip_bracers; // Equiptment: Wrist visual
/*00284*/ EquipStruct equip_hands; // Equiptment: Hands visual
/*00296*/ EquipStruct equip_legs; // Equiptment: Legs visual
/*00308*/ EquipStruct equip_feet; // Equiptment: Boots visual
/*00320*/ EquipStruct equip_primary; // Equiptment: Main visual
/*00332*/ EquipStruct equip_secondary; // Equiptment: Off visual
} equip;
/*00236*/ EquipStruct equipment[9]; //Underfoot Shows [108] for this part
};
/*00236*/ TextureProfile equipment;
/*00344*/ uint8 unknown00344[168]; // Underfoot Shows [160]
/*00512*/ TintProfile item_tint; // RR GG BB 00
/*00548*/ AA_Array aa_array[MAX_PP_AA_ARRAY]; // [3600] AAs 12 bytes each
+6 -1
View File
@@ -85,7 +85,12 @@
EQEmu::TextureProfile::TextureProfile()
{
memset(&Texture, 0, (sizeof(uint32) * textures::TextureCount));
memset(&Slot, 0, (sizeof(Texture_Struct) * textures::TextureCount));
}
EQEmu::TextureShortProfile::TextureShortProfile()
{
memset(&Slot, 0, (sizeof(uint32) * textures::TextureCount));
}
EQEmu::TintProfile::TintProfile()
+41 -10
View File
@@ -54,25 +54,56 @@ namespace EQEmu
} /*textures*/
struct Texture_Struct {
uint32 Material;
uint32 Unknown1;
uint32 EliteMaterial;
uint32 HeroForgeModel;
uint32 Material2; // Same as material?
};
struct TextureProfile {
union {
struct {
uint32 Head;
uint32 Chest;
uint32 Arms;
uint32 Wrist;
uint32 Hands;
uint32 Legs;
uint32 Feet;
uint32 Primary;
uint32 Secondary;
Texture_Struct Head;
Texture_Struct Chest;
Texture_Struct Arms;
Texture_Struct Wrist;
Texture_Struct Hands;
Texture_Struct Legs;
Texture_Struct Feet;
Texture_Struct Primary;
Texture_Struct Secondary;
};
uint32 Texture[textures::TextureCount];
Texture_Struct Slot[textures::TextureCount];
};
TextureProfile();
};
struct TextureShort_Struct {
uint32 Material;
};
struct TextureShortProfile {
union {
struct {
TextureShort_Struct Head;
TextureShort_Struct Chest;
TextureShort_Struct Arms;
TextureShort_Struct Wrist;
TextureShort_Struct Hands;
TextureShort_Struct Legs;
TextureShort_Struct Feet;
TextureShort_Struct Primary;
TextureShort_Struct Secondary;
};
TextureShort_Struct Slot[textures::TextureCount];
};
TextureShortProfile();
};
struct Tint_Struct {
union {
struct {