mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-16 22:58:34 +00:00
Implemented EQEmu::TextureProfile
This commit is contained in:
@@ -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
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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))
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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++) {
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user