mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 17:51:28 +00:00
Implemented EQEmu::TintProfile
This commit is contained in:
parent
767dfaef70
commit
ae3c98c692
@ -1,5 +1,8 @@
|
|||||||
EQEMu Changelog (Started on Sept 24, 2003 15:50)
|
EQEMu Changelog (Started on Sept 24, 2003 15:50)
|
||||||
-------------------------------------------------------
|
-------------------------------------------------------
|
||||||
|
== 06/01/2016 ==
|
||||||
|
Uleat: Implemented EQEmu::TintProfile
|
||||||
|
|
||||||
== 05/31/2016 ==
|
== 05/31/2016 ==
|
||||||
Uleat: Converted enumeration MaterialSlots to EQEmu::textures::TextureSlot
|
Uleat: Converted enumeration MaterialSlots to EQEmu::textures::TextureSlot
|
||||||
|
|
||||||
|
|||||||
@ -126,19 +126,6 @@ struct LDoNTrapTemplate
|
|||||||
|
|
||||||
// All clients translate the character select information to some degree
|
// All clients translate the character select information to some degree
|
||||||
|
|
||||||
struct Color_Struct
|
|
||||||
{
|
|
||||||
union {
|
|
||||||
struct {
|
|
||||||
uint8 Blue;
|
|
||||||
uint8 Green;
|
|
||||||
uint8 Red;
|
|
||||||
uint8 UseTint; // if there's a tint this is FF
|
|
||||||
} RGB;
|
|
||||||
uint32 Color;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
struct EquipStruct
|
struct EquipStruct
|
||||||
{
|
{
|
||||||
uint32 Material;
|
uint32 Material;
|
||||||
@ -155,7 +142,7 @@ struct CharSelectEquip
|
|||||||
uint32 EliteMaterial;
|
uint32 EliteMaterial;
|
||||||
uint32 HeroForgeModel;
|
uint32 HeroForgeModel;
|
||||||
uint32 Material2;
|
uint32 Material2;
|
||||||
Color_Struct Color;
|
EQEmu::Tint_Struct Color;
|
||||||
};
|
};
|
||||||
|
|
||||||
// RoF2-based hybrid struct
|
// RoF2-based hybrid struct
|
||||||
@ -326,22 +313,7 @@ union
|
|||||||
/*0340*/ uint32 spawnId; // Spawn Id
|
/*0340*/ uint32 spawnId; // Spawn Id
|
||||||
/*0344*/ uint8 unknown0344[3];
|
/*0344*/ uint8 unknown0344[3];
|
||||||
/*0347*/ uint8 IsMercenary;
|
/*0347*/ uint8 IsMercenary;
|
||||||
/*0348*/ union
|
/*0348*/ EQEmu::TintProfile equipment_tint;
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
/*0348*/ Color_Struct color_helmet; // Color of helmet item
|
|
||||||
/*0352*/ Color_Struct color_chest; // Color of chest item
|
|
||||||
/*0356*/ Color_Struct color_arms; // Color of arms item
|
|
||||||
/*0360*/ Color_Struct color_bracers; // Color of bracers item
|
|
||||||
/*0364*/ Color_Struct color_hands; // Color of hands item
|
|
||||||
/*0368*/ Color_Struct color_legs; // Color of legs item
|
|
||||||
/*0372*/ Color_Struct color_feet; // Color of feet item
|
|
||||||
/*0376*/ Color_Struct color_primary; // Color of primary item
|
|
||||||
/*0380*/ Color_Struct color_secondary; // Color of secondary item
|
|
||||||
} equipment_colors;
|
|
||||||
/*0348*/ Color_Struct colors[EQEmu::textures::TextureCount]; // Array elements correspond to struct equipment_colors above
|
|
||||||
};
|
|
||||||
/*0384*/ uint8 lfg; // 0=off, 1=lfg on
|
/*0384*/ uint8 lfg; // 0=off, 1=lfg on
|
||||||
/*0385*/
|
/*0385*/
|
||||||
|
|
||||||
@ -992,7 +964,7 @@ struct PlayerProfile_Struct
|
|||||||
/*0306*/ uint8 unknown0306[6]; // @bp Spacer/Flag?
|
/*0306*/ uint8 unknown0306[6]; // @bp Spacer/Flag?
|
||||||
/*0312*/ uint32 item_material[EQEmu::textures::TextureCount]; // Item texture/material of worn/held items
|
/*0312*/ uint32 item_material[EQEmu::textures::TextureCount]; // Item texture/material of worn/held items
|
||||||
/*0348*/ uint8 unknown0348[44];
|
/*0348*/ uint8 unknown0348[44];
|
||||||
/*0392*/ Color_Struct item_tint[EQEmu::textures::TextureCount];
|
/*0392*/ EQEmu::TintProfile item_tint;
|
||||||
/*0428*/ AA_Array aa_array[MAX_PP_AA_ARRAY];
|
/*0428*/ AA_Array aa_array[MAX_PP_AA_ARRAY];
|
||||||
/*2348*/ float unknown2384; //seen ~128, ~47
|
/*2348*/ float unknown2384; //seen ~128, ~47
|
||||||
/*2352*/ char servername[32]; // length probably not right
|
/*2352*/ char servername[32]; // length probably not right
|
||||||
@ -1227,7 +1199,7 @@ struct WearChange_Struct{
|
|||||||
/*010*/ uint32 elite_material; // 1 for Drakkin Elite Material
|
/*010*/ uint32 elite_material; // 1 for Drakkin Elite Material
|
||||||
/*014*/ uint32 hero_forge_model; // New to VoA
|
/*014*/ uint32 hero_forge_model; // New to VoA
|
||||||
/*018*/ uint32 unknown18; // New to RoF
|
/*018*/ uint32 unknown18; // New to RoF
|
||||||
/*022*/ Color_Struct color;
|
/*022*/ EQEmu::Tint_Struct color;
|
||||||
/*026*/ uint8 wear_slot_id;
|
/*026*/ uint8 wear_slot_id;
|
||||||
/*027*/
|
/*027*/
|
||||||
};
|
};
|
||||||
@ -3416,27 +3388,6 @@ struct PetitionBug_Struct{
|
|||||||
char text[1028];
|
char text[1028];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DyeStruct
|
|
||||||
{
|
|
||||||
union
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
struct Color_Struct head;
|
|
||||||
struct Color_Struct chest;
|
|
||||||
struct Color_Struct arms;
|
|
||||||
struct Color_Struct wrists;
|
|
||||||
struct Color_Struct hands;
|
|
||||||
struct Color_Struct legs;
|
|
||||||
struct Color_Struct feet;
|
|
||||||
struct Color_Struct primary; // you can't actually dye this
|
|
||||||
struct Color_Struct secondary; // or this
|
|
||||||
}
|
|
||||||
dyes;
|
|
||||||
struct Color_Struct dye[EQEmu::textures::TextureCount];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ApproveZone_Struct {
|
struct ApproveZone_Struct {
|
||||||
char name[64];
|
char name[64];
|
||||||
uint32 zoneid;
|
uint32 zoneid;
|
||||||
|
|||||||
@ -2103,7 +2103,7 @@ namespace RoF
|
|||||||
|
|
||||||
for (int r = 0; r < 7; r++)
|
for (int r = 0; r < 7; r++)
|
||||||
{
|
{
|
||||||
outapp->WriteUInt32(emu->item_tint[r].Color);
|
outapp->WriteUInt32(emu->item_tint.Slot[r].Color);
|
||||||
}
|
}
|
||||||
// Write zeroes for extra two tint values
|
// Write zeroes for extra two tint values
|
||||||
outapp->WriteUInt32(0);
|
outapp->WriteUInt32(0);
|
||||||
@ -2113,7 +2113,7 @@ namespace RoF
|
|||||||
|
|
||||||
for (int r = 0; r < 7; r++)
|
for (int r = 0; r < 7; r++)
|
||||||
{
|
{
|
||||||
outapp->WriteUInt32(emu->item_tint[r].Color);
|
outapp->WriteUInt32(emu->item_tint.Slot[r].Color);
|
||||||
}
|
}
|
||||||
// Write zeroes for extra two tint values
|
// Write zeroes for extra two tint values
|
||||||
outapp->WriteUInt32(0);
|
outapp->WriteUInt32(0);
|
||||||
@ -4086,7 +4086,7 @@ namespace RoF
|
|||||||
for (k = 0; k < 9; ++k)
|
for (k = 0; k < 9; ++k)
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->colors[k].Color);
|
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment_tint.Slot[k].Color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2187,7 +2187,7 @@ namespace RoF2
|
|||||||
|
|
||||||
for (int r = 0; r < 7; r++)
|
for (int r = 0; r < 7; r++)
|
||||||
{
|
{
|
||||||
outapp->WriteUInt32(emu->item_tint[r].Color);
|
outapp->WriteUInt32(emu->item_tint.Slot[r].Color);
|
||||||
}
|
}
|
||||||
// Write zeroes for extra two tint values
|
// Write zeroes for extra two tint values
|
||||||
outapp->WriteUInt32(0);
|
outapp->WriteUInt32(0);
|
||||||
@ -2197,7 +2197,7 @@ namespace RoF2
|
|||||||
|
|
||||||
for (int r = 0; r < 7; r++)
|
for (int r = 0; r < 7; r++)
|
||||||
{
|
{
|
||||||
outapp->WriteUInt32(emu->item_tint[r].Color);
|
outapp->WriteUInt32(emu->item_tint.Slot[r].Color);
|
||||||
}
|
}
|
||||||
// Write zeroes for extra two tint values
|
// Write zeroes for extra two tint values
|
||||||
outapp->WriteUInt32(0);
|
outapp->WriteUInt32(0);
|
||||||
@ -4309,7 +4309,7 @@ namespace RoF2
|
|||||||
for (k = 0; k < 9; ++k)
|
for (k = 0; k < 9; ++k)
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->colors[k].Color);
|
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment_tint.Slot[k].Color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -163,7 +163,7 @@ struct AdventureInfo {
|
|||||||
** Merth: Gave struct a name so gcc 2.96 would compile
|
** Merth: Gave struct a name so gcc 2.96 would compile
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
struct Color_Struct
|
struct Tint_Struct
|
||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
@ -171,11 +171,28 @@ struct Color_Struct
|
|||||||
uint8 Green;
|
uint8 Green;
|
||||||
uint8 Red;
|
uint8 Red;
|
||||||
uint8 UseTint; // if there's a tint this is FF
|
uint8 UseTint; // if there's a tint this is FF
|
||||||
} RGB;
|
};
|
||||||
uint32 Color;
|
uint32 Color;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct TintProfile {
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
Tint_Struct Head;
|
||||||
|
Tint_Struct Chest;
|
||||||
|
Tint_Struct Arms;
|
||||||
|
Tint_Struct Wrist;
|
||||||
|
Tint_Struct Hands;
|
||||||
|
Tint_Struct Legs;
|
||||||
|
Tint_Struct Feet;
|
||||||
|
Tint_Struct Primary;
|
||||||
|
Tint_Struct Secondary;
|
||||||
|
};
|
||||||
|
Tint_Struct Slot[EQEmu::textures::TextureCount];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
struct CharSelectEquip
|
struct CharSelectEquip
|
||||||
{
|
{
|
||||||
uint32 Material;
|
uint32 Material;
|
||||||
@ -183,7 +200,7 @@ struct CharSelectEquip
|
|||||||
uint32 EliteMaterial;
|
uint32 EliteMaterial;
|
||||||
uint32 HeroForgeModel;
|
uint32 HeroForgeModel;
|
||||||
uint32 Material2;
|
uint32 Material2;
|
||||||
Color_Struct Color;
|
Tint_Struct Color;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CharacterSelectEntry_Struct
|
struct CharacterSelectEntry_Struct
|
||||||
@ -447,22 +464,7 @@ struct Spawn_Struct
|
|||||||
/*0000*/ uint32 unknown18;
|
/*0000*/ uint32 unknown18;
|
||||||
/*0000*/ uint32 unknown19;
|
/*0000*/ uint32 unknown19;
|
||||||
Spawn_Struct_Position Position;
|
Spawn_Struct_Position Position;
|
||||||
/*0000*/ union
|
/*0000*/ TintProfile equipment_tint;
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
/*0000*/ Color_Struct color_helmet; // Color of helmet item
|
|
||||||
/*0000*/ Color_Struct color_chest; // Color of chest item
|
|
||||||
/*0000*/ Color_Struct color_arms; // Color of arms item
|
|
||||||
/*0000*/ Color_Struct color_bracers; // Color of bracers item
|
|
||||||
/*0000*/ Color_Struct color_hands; // Color of hands item
|
|
||||||
/*0000*/ Color_Struct color_legs; // Color of legs item
|
|
||||||
/*0000*/ Color_Struct color_feet; // Color of feet item
|
|
||||||
/*0000*/ Color_Struct color_primary; // Color of primary item
|
|
||||||
/*0000*/ Color_Struct color_secondary; // Color of secondary item
|
|
||||||
} equipment_colors;
|
|
||||||
/*0000*/ Color_Struct colors[9]; // Array elements correspond to struct equipment_colors above
|
|
||||||
};
|
|
||||||
|
|
||||||
// skip these bytes if not a valid player race
|
// skip these bytes if not a valid player race
|
||||||
/*0000*/ union
|
/*0000*/ union
|
||||||
@ -1107,9 +1109,9 @@ union
|
|||||||
/*00624*/ uint32 equip2_count; // Seen 9
|
/*00624*/ uint32 equip2_count; // Seen 9
|
||||||
/*00628*/ EquipStruct equipment2[EQEmu::textures::TextureCount]; // Appears to be Visible slots, but all 0s
|
/*00628*/ EquipStruct equipment2[EQEmu::textures::TextureCount]; // Appears to be Visible slots, but all 0s
|
||||||
/*00808*/ uint32 tint_count; // Seen 9
|
/*00808*/ uint32 tint_count; // Seen 9
|
||||||
/*00812*/ Color_Struct item_tint[EQEmu::textures::TextureCount]; // RR GG BB 00
|
/*00812*/ TintProfile item_tint; // RR GG BB 00
|
||||||
/*00848*/ uint32 tint_count2; // Seen 9
|
/*00848*/ uint32 tint_count2; // Seen 9
|
||||||
/*00852*/ Color_Struct item_tint2[EQEmu::textures::TextureCount]; // RR GG BB 00
|
/*00852*/ TintProfile item_tint2; // RR GG BB 00
|
||||||
/*00888*/ uint8 haircolor; // Player hair color
|
/*00888*/ uint8 haircolor; // Player hair color
|
||||||
/*00889*/ uint8 beardcolor; // Player beard color
|
/*00889*/ uint8 beardcolor; // Player beard color
|
||||||
/*00890*/ uint32 unknown_rof5; //
|
/*00890*/ uint32 unknown_rof5; //
|
||||||
@ -1385,7 +1387,7 @@ struct WearChange_Struct{
|
|||||||
/*010*/ uint32 elite_material; // 1 for Drakkin Elite Material
|
/*010*/ uint32 elite_material; // 1 for Drakkin Elite Material
|
||||||
/*014*/ uint32 hero_forge_model; // New to VoA
|
/*014*/ uint32 hero_forge_model; // New to VoA
|
||||||
/*018*/ uint32 unknown18; // New to RoF2
|
/*018*/ uint32 unknown18; // New to RoF2
|
||||||
/*022*/ Color_Struct color;
|
/*022*/ Tint_Struct color;
|
||||||
/*026*/ uint8 wear_slot_id;
|
/*026*/ uint8 wear_slot_id;
|
||||||
/*027*/
|
/*027*/
|
||||||
};
|
};
|
||||||
@ -3634,27 +3636,6 @@ struct PetitionBug_Struct{
|
|||||||
char text[1028];
|
char text[1028];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DyeStruct
|
|
||||||
{
|
|
||||||
union
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
struct Color_Struct head;
|
|
||||||
struct Color_Struct chest;
|
|
||||||
struct Color_Struct arms;
|
|
||||||
struct Color_Struct wrists;
|
|
||||||
struct Color_Struct hands;
|
|
||||||
struct Color_Struct legs;
|
|
||||||
struct Color_Struct feet;
|
|
||||||
struct Color_Struct primary; // you can't actually dye this
|
|
||||||
struct Color_Struct secondary; // or this
|
|
||||||
}
|
|
||||||
dyes;
|
|
||||||
struct Color_Struct dye[9];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ApproveZone_Struct {
|
struct ApproveZone_Struct {
|
||||||
char name[64];
|
char name[64];
|
||||||
uint32 zoneid;
|
uint32 zoneid;
|
||||||
|
|||||||
@ -163,7 +163,7 @@ struct AdventureInfo {
|
|||||||
** Merth: Gave struct a name so gcc 2.96 would compile
|
** Merth: Gave struct a name so gcc 2.96 would compile
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
struct Color_Struct
|
struct Tint_Struct
|
||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
@ -171,11 +171,28 @@ struct Color_Struct
|
|||||||
uint8 Green;
|
uint8 Green;
|
||||||
uint8 Red;
|
uint8 Red;
|
||||||
uint8 UseTint; // if there's a tint this is FF
|
uint8 UseTint; // if there's a tint this is FF
|
||||||
} RGB;
|
};
|
||||||
uint32 Color;
|
uint32 Color;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct TintProfile {
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
Tint_Struct Head;
|
||||||
|
Tint_Struct Chest;
|
||||||
|
Tint_Struct Arms;
|
||||||
|
Tint_Struct Wrist;
|
||||||
|
Tint_Struct Hands;
|
||||||
|
Tint_Struct Legs;
|
||||||
|
Tint_Struct Feet;
|
||||||
|
Tint_Struct Primary;
|
||||||
|
Tint_Struct Secondary;
|
||||||
|
};
|
||||||
|
Tint_Struct Slot[EQEmu::textures::TextureCount];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
struct CharSelectEquip
|
struct CharSelectEquip
|
||||||
{
|
{
|
||||||
uint32 Material;
|
uint32 Material;
|
||||||
@ -183,7 +200,7 @@ struct CharSelectEquip
|
|||||||
uint32 EliteMaterial;
|
uint32 EliteMaterial;
|
||||||
uint32 HeroForgeModel;
|
uint32 HeroForgeModel;
|
||||||
uint32 Material2;
|
uint32 Material2;
|
||||||
Color_Struct Color;
|
Tint_Struct Color;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CharacterSelectEntry_Struct
|
struct CharacterSelectEntry_Struct
|
||||||
@ -441,22 +458,7 @@ struct Spawn_Struct
|
|||||||
/*0000*/ uint32 unknown18;
|
/*0000*/ uint32 unknown18;
|
||||||
/*0000*/ uint32 unknown19;
|
/*0000*/ uint32 unknown19;
|
||||||
Spawn_Struct_Position Position;
|
Spawn_Struct_Position Position;
|
||||||
/*0000*/ union
|
/*0000*/ TintProfile equipment_tint;
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
/*0000*/ Color_Struct color_helmet; // Color of helmet item
|
|
||||||
/*0000*/ Color_Struct color_chest; // Color of chest item
|
|
||||||
/*0000*/ Color_Struct color_arms; // Color of arms item
|
|
||||||
/*0000*/ Color_Struct color_bracers; // Color of bracers item
|
|
||||||
/*0000*/ Color_Struct color_hands; // Color of hands item
|
|
||||||
/*0000*/ Color_Struct color_legs; // Color of legs item
|
|
||||||
/*0000*/ Color_Struct color_feet; // Color of feet item
|
|
||||||
/*0000*/ Color_Struct color_primary; // Color of primary item
|
|
||||||
/*0000*/ Color_Struct color_secondary; // Color of secondary item
|
|
||||||
} equipment_colors;
|
|
||||||
/*0000*/ Color_Struct colors[9]; // Array elements correspond to struct equipment_colors above
|
|
||||||
};
|
|
||||||
|
|
||||||
// skip these bytes if not a valid player race
|
// skip these bytes if not a valid player race
|
||||||
/*0000*/ union
|
/*0000*/ union
|
||||||
@ -1090,9 +1092,9 @@ union
|
|||||||
/*00624*/ uint32 equip2_count; // Seen 9
|
/*00624*/ uint32 equip2_count; // Seen 9
|
||||||
/*00628*/ EquipStruct equipment2[9]; // Appears to be Visible slots, but all 0s
|
/*00628*/ EquipStruct equipment2[9]; // Appears to be Visible slots, but all 0s
|
||||||
/*00808*/ uint32 tint_count; // Seen 9
|
/*00808*/ uint32 tint_count; // Seen 9
|
||||||
/*00812*/ Color_Struct item_tint[9]; // RR GG BB 00
|
/*00812*/ TintProfile item_tint; // RR GG BB 00
|
||||||
/*00848*/ uint32 tint_count2; // Seen 9
|
/*00848*/ uint32 tint_count2; // Seen 9
|
||||||
/*00852*/ Color_Struct item_tint2[9]; // RR GG BB 00
|
/*00852*/ TintProfile item_tint2; // RR GG BB 00
|
||||||
/*00888*/ uint8 haircolor; // Player hair color
|
/*00888*/ uint8 haircolor; // Player hair color
|
||||||
/*00889*/ uint8 beardcolor; // Player beard color
|
/*00889*/ uint8 beardcolor; // Player beard color
|
||||||
/*00890*/ uint32 unknown_rof5; //
|
/*00890*/ uint32 unknown_rof5; //
|
||||||
@ -1415,7 +1417,7 @@ struct WearChange_Struct{
|
|||||||
/*010*/ uint32 elite_material; // 1 for Drakkin Elite Material
|
/*010*/ uint32 elite_material; // 1 for Drakkin Elite Material
|
||||||
/*014*/ uint32 hero_forge_model; // New to VoA
|
/*014*/ uint32 hero_forge_model; // New to VoA
|
||||||
/*018*/ uint32 unknown18; // New to RoF
|
/*018*/ uint32 unknown18; // New to RoF
|
||||||
/*022*/ Color_Struct color;
|
/*022*/ Tint_Struct color;
|
||||||
/*026*/ uint8 wear_slot_id;
|
/*026*/ uint8 wear_slot_id;
|
||||||
/*027*/
|
/*027*/
|
||||||
};
|
};
|
||||||
@ -3634,27 +3636,6 @@ struct PetitionBug_Struct{
|
|||||||
char text[1028];
|
char text[1028];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DyeStruct
|
|
||||||
{
|
|
||||||
union
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
struct Color_Struct head;
|
|
||||||
struct Color_Struct chest;
|
|
||||||
struct Color_Struct arms;
|
|
||||||
struct Color_Struct wrists;
|
|
||||||
struct Color_Struct hands;
|
|
||||||
struct Color_Struct legs;
|
|
||||||
struct Color_Struct feet;
|
|
||||||
struct Color_Struct primary; // you can't actually dye this
|
|
||||||
struct Color_Struct secondary; // or this
|
|
||||||
}
|
|
||||||
dyes;
|
|
||||||
struct Color_Struct dye[9];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ApproveZone_Struct {
|
struct ApproveZone_Struct {
|
||||||
char name[64];
|
char name[64];
|
||||||
uint32 zoneid;
|
uint32 zoneid;
|
||||||
|
|||||||
@ -1560,7 +1560,7 @@ namespace SoD
|
|||||||
//eq->colors[r].color = emu->colors[r].color;
|
//eq->colors[r].color = emu->colors[r].color;
|
||||||
}
|
}
|
||||||
for (r = 0; r < 7; r++) {
|
for (r = 0; r < 7; r++) {
|
||||||
OUT(item_tint[r].Color);
|
OUT(item_tint.Slot[r].Color);
|
||||||
}
|
}
|
||||||
// OUT(unknown00224[48]);
|
// OUT(unknown00224[48]);
|
||||||
//NOTE: new client supports 300 AAs, our internal rep/PP
|
//NOTE: new client supports 300 AAs, our internal rep/PP
|
||||||
@ -2763,7 +2763,7 @@ namespace SoD
|
|||||||
for (k = 0; k < 9; ++k)
|
for (k = 0; k < 9; ++k)
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->colors[k].Color);
|
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment_tint.Slot[k].Color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -122,7 +122,7 @@ struct AdventureInfo {
|
|||||||
** Merth: Gave struct a name so gcc 2.96 would compile
|
** Merth: Gave struct a name so gcc 2.96 would compile
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
struct Color_Struct
|
struct Tint_Struct
|
||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
@ -130,17 +130,34 @@ struct Color_Struct
|
|||||||
uint8 Green;
|
uint8 Green;
|
||||||
uint8 Red;
|
uint8 Red;
|
||||||
uint8 UseTint; // if there's a tint this is FF
|
uint8 UseTint; // if there's a tint this is FF
|
||||||
} RGB;
|
};
|
||||||
uint32 Color;
|
uint32 Color;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct TintProfile {
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
Tint_Struct Head;
|
||||||
|
Tint_Struct Chest;
|
||||||
|
Tint_Struct Arms;
|
||||||
|
Tint_Struct Wrist;
|
||||||
|
Tint_Struct Hands;
|
||||||
|
Tint_Struct Legs;
|
||||||
|
Tint_Struct Feet;
|
||||||
|
Tint_Struct Primary;
|
||||||
|
Tint_Struct Secondary;
|
||||||
|
};
|
||||||
|
Tint_Struct Slot[EQEmu::textures::TextureCount];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
struct CharSelectEquip
|
struct CharSelectEquip
|
||||||
{
|
{
|
||||||
uint32 Material;
|
uint32 Material;
|
||||||
uint32 Unknown1;
|
uint32 Unknown1;
|
||||||
uint32 EliteMaterial;
|
uint32 EliteMaterial;
|
||||||
Color_Struct Color;
|
Tint_Struct Color;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CharacterSelectEntry_Struct
|
struct CharacterSelectEntry_Struct
|
||||||
@ -314,22 +331,7 @@ struct Spawn_Struct
|
|||||||
/*0000*/ uint32 unknown18;
|
/*0000*/ uint32 unknown18;
|
||||||
/*0000*/ uint32 unknown19;
|
/*0000*/ uint32 unknown19;
|
||||||
Spawn_Struct_Position Position;
|
Spawn_Struct_Position Position;
|
||||||
/*0000*/ union
|
/*0000*/ TintProfile equipment_tint;
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
/*0000*/ Color_Struct color_helmet; // Color of helmet item
|
|
||||||
/*0000*/ Color_Struct color_chest; // Color of chest item
|
|
||||||
/*0000*/ Color_Struct color_arms; // Color of arms item
|
|
||||||
/*0000*/ Color_Struct color_bracers; // Color of bracers item
|
|
||||||
/*0000*/ Color_Struct color_hands; // Color of hands item
|
|
||||||
/*0000*/ Color_Struct color_legs; // Color of legs item
|
|
||||||
/*0000*/ Color_Struct color_feet; // Color of feet item
|
|
||||||
/*0000*/ Color_Struct color_primary; // Color of primary item
|
|
||||||
/*0000*/ Color_Struct color_secondary; // Color of secondary item
|
|
||||||
} equipment_colors;
|
|
||||||
/*0000*/ Color_Struct colors[9]; // Array elements correspond to struct equipment_colors above
|
|
||||||
};
|
|
||||||
|
|
||||||
// skip these bytes if not a valid player race
|
// skip these bytes if not a valid player race
|
||||||
/*0000*/ union
|
/*0000*/ union
|
||||||
@ -920,7 +922,7 @@ struct PlayerProfile_Struct
|
|||||||
/*00228*/ EquipStruct equipment[9]; //Live Shows [108] for this part
|
/*00228*/ EquipStruct equipment[9]; //Live Shows [108] for this part
|
||||||
};
|
};
|
||||||
/*00340*/ uint8 unknown00224[156]; // Live Shows [160]
|
/*00340*/ uint8 unknown00224[156]; // Live Shows [160]
|
||||||
/*00496*/ Color_Struct item_tint[9]; // RR GG BB 00
|
/*00496*/ TintProfile item_tint; // RR GG BB 00
|
||||||
/*00532*/ AA_Array aa_array[MAX_PP_AA_ARRAY]; // [3600] AAs 12 bytes each
|
/*00532*/ AA_Array aa_array[MAX_PP_AA_ARRAY]; // [3600] AAs 12 bytes each
|
||||||
/*04132*/ uint32 points; // Unspent Practice points - RELOCATED???
|
/*04132*/ uint32 points; // Unspent Practice points - RELOCATED???
|
||||||
/*04136*/ uint32 mana; // Current mana
|
/*04136*/ uint32 mana; // Current mana
|
||||||
@ -1177,7 +1179,7 @@ struct WearChange_Struct{
|
|||||||
/*002*/ uint32 material;
|
/*002*/ uint32 material;
|
||||||
/*006*/ uint32 unknown06;
|
/*006*/ uint32 unknown06;
|
||||||
/*010*/ uint32 elite_material; // 1 for Drakkin Elite Material
|
/*010*/ uint32 elite_material; // 1 for Drakkin Elite Material
|
||||||
/*014*/ Color_Struct color;
|
/*014*/ Tint_Struct color;
|
||||||
/*018*/ uint8 wear_slot_id;
|
/*018*/ uint8 wear_slot_id;
|
||||||
/*019*/
|
/*019*/
|
||||||
};
|
};
|
||||||
@ -3091,27 +3093,6 @@ struct PetitionBug_Struct{
|
|||||||
char text[1028];
|
char text[1028];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DyeStruct
|
|
||||||
{
|
|
||||||
union
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
struct Color_Struct head;
|
|
||||||
struct Color_Struct chest;
|
|
||||||
struct Color_Struct arms;
|
|
||||||
struct Color_Struct wrists;
|
|
||||||
struct Color_Struct hands;
|
|
||||||
struct Color_Struct legs;
|
|
||||||
struct Color_Struct feet;
|
|
||||||
struct Color_Struct primary; // you can't actually dye this
|
|
||||||
struct Color_Struct secondary; // or this
|
|
||||||
}
|
|
||||||
dyes;
|
|
||||||
struct Color_Struct dye[9];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ApproveZone_Struct {
|
struct ApproveZone_Struct {
|
||||||
char name[64];
|
char name[64];
|
||||||
uint32 zoneid;
|
uint32 zoneid;
|
||||||
|
|||||||
@ -1216,7 +1216,7 @@ namespace SoF
|
|||||||
//eq->colors[r].color = emu->colors[r].color;
|
//eq->colors[r].color = emu->colors[r].color;
|
||||||
}
|
}
|
||||||
for (r = 0; r < 7; r++) {
|
for (r = 0; r < 7; r++) {
|
||||||
OUT(item_tint[r].Color);
|
OUT(item_tint.Slot[r].Color);
|
||||||
}
|
}
|
||||||
// OUT(unknown00224[48]);
|
// OUT(unknown00224[48]);
|
||||||
//NOTE: new client supports 300 AAs, our internal rep/PP
|
//NOTE: new client supports 300 AAs, our internal rep/PP
|
||||||
@ -2084,7 +2084,7 @@ namespace SoF
|
|||||||
eq->equipment[k].Material = emu->equipment[k].Material;
|
eq->equipment[k].Material = emu->equipment[k].Material;
|
||||||
eq->equipment[k].Unknown1 = emu->equipment[k].Unknown1;
|
eq->equipment[k].Unknown1 = emu->equipment[k].Unknown1;
|
||||||
eq->equipment[k].EliteMaterial = emu->equipment[k].EliteMaterial;
|
eq->equipment[k].EliteMaterial = emu->equipment[k].EliteMaterial;
|
||||||
eq->colors[k].Color = emu->colors[k].Color;
|
eq->equipment_tint.Slot[k].Color = emu->equipment_tint.Slot[k].Color;
|
||||||
}
|
}
|
||||||
eq->StandState = emu->StandState;
|
eq->StandState = emu->StandState;
|
||||||
eq->guildID = emu->guildID;
|
eq->guildID = emu->guildID;
|
||||||
@ -2147,7 +2147,7 @@ namespace SoF
|
|||||||
eq->petOwnerId = emu->petOwnerId;
|
eq->petOwnerId = emu->petOwnerId;
|
||||||
eq->pvp = 0; // 0 = non-pvp colored name, 1 = red pvp name
|
eq->pvp = 0; // 0 = non-pvp colored name, 1 = red pvp name
|
||||||
for (k = 0; k < 9; k++) {
|
for (k = 0; k < 9; k++) {
|
||||||
eq->colors[k].Color = emu->colors[k].Color;
|
eq->equipment_tint.Slot[k].Color = emu->equipment_tint.Slot[k].Color;
|
||||||
}
|
}
|
||||||
eq->anon = emu->anon;
|
eq->anon = emu->anon;
|
||||||
eq->face = emu->face;
|
eq->face = emu->face;
|
||||||
|
|||||||
@ -122,7 +122,7 @@ struct AdventureInfo {
|
|||||||
** Merth: Gave struct a name so gcc 2.96 would compile
|
** Merth: Gave struct a name so gcc 2.96 would compile
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
struct Color_Struct
|
struct Tint_Struct
|
||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
@ -130,17 +130,34 @@ struct Color_Struct
|
|||||||
uint8 Green;
|
uint8 Green;
|
||||||
uint8 Red;
|
uint8 Red;
|
||||||
uint8 UseTint; // if there's a tint this is FF
|
uint8 UseTint; // if there's a tint this is FF
|
||||||
} RGB;
|
};
|
||||||
uint32 Color;
|
uint32 Color;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct TintProfile {
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
Tint_Struct Head;
|
||||||
|
Tint_Struct Chest;
|
||||||
|
Tint_Struct Arms;
|
||||||
|
Tint_Struct Wrist;
|
||||||
|
Tint_Struct Hands;
|
||||||
|
Tint_Struct Legs;
|
||||||
|
Tint_Struct Feet;
|
||||||
|
Tint_Struct Primary;
|
||||||
|
Tint_Struct Secondary;
|
||||||
|
};
|
||||||
|
Tint_Struct Slot[EQEmu::textures::TextureCount];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
struct CharSelectEquip
|
struct CharSelectEquip
|
||||||
{
|
{
|
||||||
uint32 Material;
|
uint32 Material;
|
||||||
uint32 Unknown1;
|
uint32 Unknown1;
|
||||||
uint32 EliteMaterial;
|
uint32 EliteMaterial;
|
||||||
Color_Struct Color;
|
Tint_Struct Color;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CharacterSelectEntry_Struct
|
struct CharacterSelectEntry_Struct
|
||||||
@ -314,22 +331,7 @@ union
|
|||||||
/*0775*/ char name[64]; // Player's Name
|
/*0775*/ char name[64]; // Player's Name
|
||||||
/*0839*/ uint32 petOwnerId; // If this is a pet, the spawn id of owner
|
/*0839*/ uint32 petOwnerId; // If this is a pet, the spawn id of owner
|
||||||
/*0843*/ uint8 pvp; // 0 = normal name color, 2 = PVP name color
|
/*0843*/ uint8 pvp; // 0 = normal name color, 2 = PVP name color
|
||||||
/*0844*/ union
|
/*0844*/ TintProfile equipment_tint;
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
/*0844*/ Color_Struct color_helmet; // Color of helmet item
|
|
||||||
/*0848*/ Color_Struct color_chest; // Color of chest item
|
|
||||||
/*0852*/ Color_Struct color_arms; // Color of arms item
|
|
||||||
/*0856*/ Color_Struct color_bracers; // Color of bracers item
|
|
||||||
/*0860*/ Color_Struct color_hands; // Color of hands item
|
|
||||||
/*0864*/ Color_Struct color_legs; // Color of legs item
|
|
||||||
/*0868*/ Color_Struct color_feet; // Color of feet item
|
|
||||||
/*0872*/ Color_Struct color_primary; // Color of primary item
|
|
||||||
/*0876*/ Color_Struct color_secondary; // Color of secondary item
|
|
||||||
} equipment_colors;
|
|
||||||
/*0844*/ Color_Struct colors[9]; // Array elements correspond to struct equipment_colors above
|
|
||||||
};
|
|
||||||
/*0880*/ uint8 anon; // 0=normal, 1=anon, 2=roleplay
|
/*0880*/ uint8 anon; // 0=normal, 1=anon, 2=roleplay
|
||||||
/*0881*/ uint8 face;
|
/*0881*/ uint8 face;
|
||||||
/*0882*/ uint8 drakkin_details; // Face Details (Spikes) on Drakkin 0 - 7
|
/*0882*/ uint8 drakkin_details; // Face Details (Spikes) on Drakkin 0 - 7
|
||||||
@ -899,7 +901,7 @@ struct PlayerProfile_Struct //23576 Octets
|
|||||||
/*00228*/ EquipStruct equipment[9]; //Live Shows [108] for this part
|
/*00228*/ EquipStruct equipment[9]; //Live Shows [108] for this part
|
||||||
};
|
};
|
||||||
/*00336*/ uint8 unknown00224[156]; // Live Shows [160]
|
/*00336*/ uint8 unknown00224[156]; // Live Shows [160]
|
||||||
/*00496*/ Color_Struct item_tint[9]; // RR GG BB 00
|
/*00496*/ TintProfile item_tint; // RR GG BB 00
|
||||||
/*00544*/ AA_Array aa_array[MAX_PP_AA_ARRAY]; // [3600] AAs 12 bytes each
|
/*00544*/ AA_Array aa_array[MAX_PP_AA_ARRAY]; // [3600] AAs 12 bytes each
|
||||||
/*04132*/ uint32 points; // Unspent Practice points - RELOCATED???
|
/*04132*/ uint32 points; // Unspent Practice points - RELOCATED???
|
||||||
/*04136*/ uint32 mana; // Current mana
|
/*04136*/ uint32 mana; // Current mana
|
||||||
@ -1155,7 +1157,7 @@ struct WearChange_Struct{
|
|||||||
/*002*/ uint32 material;
|
/*002*/ uint32 material;
|
||||||
/*006*/ uint32 unknown06;
|
/*006*/ uint32 unknown06;
|
||||||
/*010*/ uint32 elite_material; // 1 for Drakkin Elite Material
|
/*010*/ uint32 elite_material; // 1 for Drakkin Elite Material
|
||||||
/*014*/ Color_Struct color;
|
/*014*/ Tint_Struct color;
|
||||||
/*018*/ uint8 wear_slot_id;
|
/*018*/ uint8 wear_slot_id;
|
||||||
/*019*/
|
/*019*/
|
||||||
};
|
};
|
||||||
@ -2954,27 +2956,6 @@ struct PetitionBug_Struct{
|
|||||||
char text[1028];
|
char text[1028];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DyeStruct
|
|
||||||
{
|
|
||||||
union
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
struct Color_Struct head;
|
|
||||||
struct Color_Struct chest;
|
|
||||||
struct Color_Struct arms;
|
|
||||||
struct Color_Struct wrists;
|
|
||||||
struct Color_Struct hands;
|
|
||||||
struct Color_Struct legs;
|
|
||||||
struct Color_Struct feet;
|
|
||||||
struct Color_Struct primary; // you can't actually dye this
|
|
||||||
struct Color_Struct secondary; // or this
|
|
||||||
}
|
|
||||||
dyes;
|
|
||||||
struct Color_Struct dye[9];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ApproveZone_Struct {
|
struct ApproveZone_Struct {
|
||||||
char name[64];
|
char name[64];
|
||||||
uint32 zoneid;
|
uint32 zoneid;
|
||||||
|
|||||||
@ -905,7 +905,7 @@ namespace Titanium
|
|||||||
// OUT(unknown00178[10]);
|
// OUT(unknown00178[10]);
|
||||||
for (r = 0; r < 9; r++) {
|
for (r = 0; r < 9; r++) {
|
||||||
OUT(item_material[r]);
|
OUT(item_material[r]);
|
||||||
OUT(item_tint[r].Color);
|
OUT(item_tint.Slot[r].Color);
|
||||||
}
|
}
|
||||||
// OUT(unknown00224[48]);
|
// OUT(unknown00224[48]);
|
||||||
for (r = 0; r < structs::MAX_PP_AA_ARRAY; r++) {
|
for (r = 0; r < structs::MAX_PP_AA_ARRAY; r++) {
|
||||||
@ -1224,7 +1224,7 @@ namespace Titanium
|
|||||||
eq->Race[char_index] = 1;
|
eq->Race[char_index] = 1;
|
||||||
|
|
||||||
for (int index = 0; index < EQEmu::textures::TextureCount; ++index) {
|
for (int index = 0; index < EQEmu::textures::TextureCount; ++index) {
|
||||||
eq->CS_Colors[char_index][index].Color = emu_cse->Equip[index].Color.Color;
|
eq->CS_Colors[char_index].Slot[index].Color = emu_cse->Equip[index].Color.Color;
|
||||||
}
|
}
|
||||||
|
|
||||||
eq->BeardColor[char_index] = emu_cse->BeardColor;
|
eq->BeardColor[char_index] = emu_cse->BeardColor;
|
||||||
@ -1261,7 +1261,7 @@ namespace Titanium
|
|||||||
eq->Race[char_index] = 0;
|
eq->Race[char_index] = 0;
|
||||||
|
|
||||||
for (int index = 0; index < EQEmu::textures::TextureCount; ++index) {
|
for (int index = 0; index < EQEmu::textures::TextureCount; ++index) {
|
||||||
eq->CS_Colors[char_index][index].Color = 0;
|
eq->CS_Colors[char_index].Slot[index].Color = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
eq->BeardColor[char_index] = 0;
|
eq->BeardColor[char_index] = 0;
|
||||||
@ -1601,7 +1601,7 @@ namespace Titanium
|
|||||||
// eq->unknown0194[3] = emu->unknown0194[3];
|
// eq->unknown0194[3] = emu->unknown0194[3];
|
||||||
for (k = 0; k < 9; k++) {
|
for (k = 0; k < 9; k++) {
|
||||||
eq->equipment[k] = emu->equipment[k].Material;
|
eq->equipment[k] = emu->equipment[k].Material;
|
||||||
eq->colors[k].Color = emu->colors[k].Color;
|
eq->equipment_tint.Slot[k].Color = emu->equipment_tint.Slot[k].Color;
|
||||||
}
|
}
|
||||||
for (k = 0; k < 8; k++) {
|
for (k = 0; k < 8; k++) {
|
||||||
eq->set_to_0xFF[k] = 0xFF;
|
eq->set_to_0xFF[k] = 0xFF;
|
||||||
|
|||||||
@ -118,7 +118,7 @@ struct AdventureInfo {
|
|||||||
** Merth: Gave struct a name so gcc 2.96 would compile
|
** Merth: Gave struct a name so gcc 2.96 would compile
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
struct Color_Struct
|
struct Tint_Struct
|
||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
@ -126,11 +126,28 @@ struct Color_Struct
|
|||||||
uint8 Green;
|
uint8 Green;
|
||||||
uint8 Red;
|
uint8 Red;
|
||||||
uint8 UseTint; // if there's a tint this is FF
|
uint8 UseTint; // if there's a tint this is FF
|
||||||
} RGB;
|
};
|
||||||
uint32 Color;
|
uint32 Color;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct TintProfile {
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
Tint_Struct Head;
|
||||||
|
Tint_Struct Chest;
|
||||||
|
Tint_Struct Arms;
|
||||||
|
Tint_Struct Wrist;
|
||||||
|
Tint_Struct Hands;
|
||||||
|
Tint_Struct Legs;
|
||||||
|
Tint_Struct Feet;
|
||||||
|
Tint_Struct Primary;
|
||||||
|
Tint_Struct Secondary;
|
||||||
|
};
|
||||||
|
Tint_Struct Slot[EQEmu::textures::TextureCount];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Character Selection Struct
|
** Character Selection Struct
|
||||||
** Length: 1704 Bytes
|
** Length: 1704 Bytes
|
||||||
@ -139,7 +156,7 @@ struct Color_Struct
|
|||||||
struct CharacterSelect_Struct
|
struct CharacterSelect_Struct
|
||||||
{
|
{
|
||||||
/*0000*/ uint32 Race[10]; // Characters Race
|
/*0000*/ uint32 Race[10]; // Characters Race
|
||||||
/*0040*/ Color_Struct CS_Colors[10][9]; // Characters Equipment Colors
|
/*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
|
/*0400*/ uint8 BeardColor[10]; // Characters beard Color
|
||||||
/*0410*/ uint8 HairStyle[10]; // Characters hair style
|
/*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*/ 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)
|
||||||
@ -284,22 +301,7 @@ union
|
|||||||
};
|
};
|
||||||
/*0340*/ uint32 spawnId; // Spawn Id
|
/*0340*/ uint32 spawnId; // Spawn Id
|
||||||
/*0344*/ uint8 unknown0344[4];
|
/*0344*/ uint8 unknown0344[4];
|
||||||
/*0348*/ union
|
/*0348*/ TintProfile equipment_tint;
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
/*0348*/ Color_Struct color_helmet; // Color of helmet item
|
|
||||||
/*0352*/ Color_Struct color_chest; // Color of chest item
|
|
||||||
/*0356*/ Color_Struct color_arms; // Color of arms item
|
|
||||||
/*0360*/ Color_Struct color_bracers; // Color of bracers item
|
|
||||||
/*0364*/ Color_Struct color_hands; // Color of hands item
|
|
||||||
/*0368*/ Color_Struct color_legs; // Color of legs item
|
|
||||||
/*0372*/ Color_Struct color_feet; // Color of feet item
|
|
||||||
/*0376*/ Color_Struct color_primary; // Color of primary item
|
|
||||||
/*0380*/ Color_Struct color_secondary; // Color of secondary item
|
|
||||||
} equipment_colors;
|
|
||||||
/*0348*/ Color_Struct colors[9]; // Array elements correspond to struct equipment_colors above
|
|
||||||
};
|
|
||||||
/*0384*/ uint8 lfg; // 0=off, 1=lfg on
|
/*0384*/ uint8 lfg; // 0=off, 1=lfg on
|
||||||
/*0385*/
|
/*0385*/
|
||||||
|
|
||||||
@ -812,7 +814,7 @@ struct PlayerProfile_Struct
|
|||||||
/*00178*/ uint8 unknown00178[10];
|
/*00178*/ uint8 unknown00178[10];
|
||||||
/*00188*/ uint32 item_material[9]; // Item texture/material of worn items
|
/*00188*/ uint32 item_material[9]; // Item texture/material of worn items
|
||||||
/*00224*/ uint8 unknown00224[44];
|
/*00224*/ uint8 unknown00224[44];
|
||||||
/*00268*/ Color_Struct item_tint[9]; // RR GG BB 00
|
/*00268*/ TintProfile item_tint; // RR GG BB 00
|
||||||
/*00304*/ AA_Array aa_array[MAX_PP_AA_ARRAY]; // AAs
|
/*00304*/ AA_Array aa_array[MAX_PP_AA_ARRAY]; // AAs
|
||||||
/*02224*/ uint32 points; // Unspent Practice points
|
/*02224*/ uint32 points; // Unspent Practice points
|
||||||
/*02228*/ uint32 mana; // Current mana
|
/*02228*/ uint32 mana; // Current mana
|
||||||
@ -1035,7 +1037,7 @@ struct SpecialMesg_Struct
|
|||||||
struct WearChange_Struct{
|
struct WearChange_Struct{
|
||||||
/*000*/ uint16 spawn_id;
|
/*000*/ uint16 spawn_id;
|
||||||
/*002*/ uint16 material;
|
/*002*/ uint16 material;
|
||||||
/*004*/ Color_Struct color;
|
/*004*/ Tint_Struct color;
|
||||||
/*009*/ uint8 wear_slot_id;
|
/*009*/ uint8 wear_slot_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2591,27 +2593,6 @@ struct PetitionBug_Struct{
|
|||||||
char text[1028];
|
char text[1028];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DyeStruct
|
|
||||||
{
|
|
||||||
union
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
struct Color_Struct head;
|
|
||||||
struct Color_Struct chest;
|
|
||||||
struct Color_Struct arms;
|
|
||||||
struct Color_Struct wrists;
|
|
||||||
struct Color_Struct hands;
|
|
||||||
struct Color_Struct legs;
|
|
||||||
struct Color_Struct feet;
|
|
||||||
struct Color_Struct primary; // you can't actually dye this
|
|
||||||
struct Color_Struct secondary; // or this
|
|
||||||
}
|
|
||||||
dyes;
|
|
||||||
struct Color_Struct dye[9];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ApproveZone_Struct {
|
struct ApproveZone_Struct {
|
||||||
char name[64];
|
char name[64];
|
||||||
uint32 zoneid;
|
uint32 zoneid;
|
||||||
|
|||||||
@ -1813,7 +1813,7 @@ namespace UF
|
|||||||
//eq->colors[r].color = emu->colors[r].color;
|
//eq->colors[r].color = emu->colors[r].color;
|
||||||
}
|
}
|
||||||
for (r = 0; r < 7; r++) {
|
for (r = 0; r < 7; r++) {
|
||||||
OUT(item_tint[r].Color);
|
OUT(item_tint.Slot[r].Color);
|
||||||
}
|
}
|
||||||
// OUT(unknown00224[48]);
|
// OUT(unknown00224[48]);
|
||||||
//NOTE: new client supports 300 AAs, our internal rep/PP
|
//NOTE: new client supports 300 AAs, our internal rep/PP
|
||||||
@ -3060,7 +3060,7 @@ namespace UF
|
|||||||
for (k = 0; k < 9; ++k)
|
for (k = 0; k < 9; ++k)
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->colors[k].Color);
|
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->equipment_tint.Slot[k].Color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -122,25 +122,42 @@ struct AdventureInfo {
|
|||||||
** Merth: Gave struct a name so gcc 2.96 would compile
|
** Merth: Gave struct a name so gcc 2.96 would compile
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
struct Color_Struct
|
struct Tint_Struct
|
||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
uint8 blue;
|
uint8 Blue;
|
||||||
uint8 Green;
|
uint8 Green;
|
||||||
uint8 Red;
|
uint8 Red;
|
||||||
uint8 UseTint; // if there's a tint this is FF
|
uint8 UseTint; // if there's a tint this is FF
|
||||||
} RGB;
|
};
|
||||||
uint32 Color;
|
uint32 Color;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct TintProfile {
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
Tint_Struct Head;
|
||||||
|
Tint_Struct Chest;
|
||||||
|
Tint_Struct Arms;
|
||||||
|
Tint_Struct Wrist;
|
||||||
|
Tint_Struct Hands;
|
||||||
|
Tint_Struct Legs;
|
||||||
|
Tint_Struct Feet;
|
||||||
|
Tint_Struct Primary;
|
||||||
|
Tint_Struct Secondary;
|
||||||
|
};
|
||||||
|
Tint_Struct Slot[EQEmu::textures::TextureCount];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
struct CharSelectEquip
|
struct CharSelectEquip
|
||||||
{
|
{
|
||||||
uint32 Material;
|
uint32 Material;
|
||||||
uint32 Unknown1;
|
uint32 Unknown1;
|
||||||
uint32 EliteMaterial;
|
uint32 EliteMaterial;
|
||||||
Color_Struct Color;
|
Tint_Struct Color;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CharacterSelectEntry_Struct
|
struct CharacterSelectEntry_Struct
|
||||||
@ -314,22 +331,7 @@ struct Spawn_Struct
|
|||||||
/*0000*/ uint32 unknown18;
|
/*0000*/ uint32 unknown18;
|
||||||
/*0000*/ uint32 unknown19;
|
/*0000*/ uint32 unknown19;
|
||||||
Spawn_Struct_Position Position;
|
Spawn_Struct_Position Position;
|
||||||
/*0000*/ union
|
/*0000*/ TintProfile equipment_tint;
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
/*0000*/ Color_Struct color_helmet; // Color of helmet item
|
|
||||||
/*0000*/ Color_Struct color_chest; // Color of chest item
|
|
||||||
/*0000*/ Color_Struct color_arms; // Color of arms item
|
|
||||||
/*0000*/ Color_Struct color_bracers; // Color of bracers item
|
|
||||||
/*0000*/ Color_Struct color_hands; // Color of hands item
|
|
||||||
/*0000*/ Color_Struct color_legs; // Color of legs item
|
|
||||||
/*0000*/ Color_Struct color_feet; // Color of feet item
|
|
||||||
/*0000*/ Color_Struct color_primary; // Color of primary item
|
|
||||||
/*0000*/ Color_Struct color_secondary; // Color of secondary item
|
|
||||||
} equipment_colors;
|
|
||||||
/*0000*/ Color_Struct colors[9]; // Array elements correspond to struct equipment_colors above
|
|
||||||
};
|
|
||||||
|
|
||||||
// skip these bytes if not a valid player race
|
// skip these bytes if not a valid player race
|
||||||
/*0000*/ union
|
/*0000*/ union
|
||||||
@ -969,7 +971,7 @@ struct PlayerProfile_Struct
|
|||||||
/*00236*/ EquipStruct equipment[9]; //Underfoot Shows [108] for this part
|
/*00236*/ EquipStruct equipment[9]; //Underfoot Shows [108] for this part
|
||||||
};
|
};
|
||||||
/*00344*/ uint8 unknown00344[168]; // Underfoot Shows [160]
|
/*00344*/ uint8 unknown00344[168]; // Underfoot Shows [160]
|
||||||
/*00512*/ Color_Struct item_tint[9]; // RR GG BB 00
|
/*00512*/ TintProfile item_tint; // RR GG BB 00
|
||||||
/*00548*/ AA_Array aa_array[MAX_PP_AA_ARRAY]; // [3600] AAs 12 bytes each
|
/*00548*/ AA_Array aa_array[MAX_PP_AA_ARRAY]; // [3600] AAs 12 bytes each
|
||||||
/*04148*/ uint32 points; // Unspent Practice points - RELOCATED???
|
/*04148*/ uint32 points; // Unspent Practice points - RELOCATED???
|
||||||
/*04152*/ uint32 mana; // Current mana
|
/*04152*/ uint32 mana; // Current mana
|
||||||
@ -1232,7 +1234,7 @@ struct WearChange_Struct{
|
|||||||
/*002*/ uint32 material;
|
/*002*/ uint32 material;
|
||||||
/*006*/ uint32 unknown06;
|
/*006*/ uint32 unknown06;
|
||||||
/*010*/ uint32 elite_material; // 1 for Drakkin Elite Material
|
/*010*/ uint32 elite_material; // 1 for Drakkin Elite Material
|
||||||
/*014*/ Color_Struct color;
|
/*014*/ Tint_Struct color;
|
||||||
/*018*/ uint8 wear_slot_id;
|
/*018*/ uint8 wear_slot_id;
|
||||||
/*019*/
|
/*019*/
|
||||||
};
|
};
|
||||||
@ -3162,27 +3164,6 @@ struct PetitionBug_Struct{
|
|||||||
char text[1028];
|
char text[1028];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DyeStruct
|
|
||||||
{
|
|
||||||
union
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
struct Color_Struct head;
|
|
||||||
struct Color_Struct chest;
|
|
||||||
struct Color_Struct arms;
|
|
||||||
struct Color_Struct wrists;
|
|
||||||
struct Color_Struct hands;
|
|
||||||
struct Color_Struct legs;
|
|
||||||
struct Color_Struct feet;
|
|
||||||
struct Color_Struct primary; // you can't actually dye this
|
|
||||||
struct Color_Struct secondary; // or this
|
|
||||||
}
|
|
||||||
dyes;
|
|
||||||
struct Color_Struct dye[9];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ApproveZone_Struct {
|
struct ApproveZone_Struct {
|
||||||
char name[64];
|
char name[64];
|
||||||
uint32 zoneid;
|
uint32 zoneid;
|
||||||
|
|||||||
@ -83,27 +83,12 @@
|
|||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
struct EQEmu::TextureProfile
|
|
||||||
{
|
|
||||||
union {
|
|
||||||
struct {
|
|
||||||
uint32 Head;
|
|
||||||
uint32 Chest;
|
|
||||||
uint32 Arms;
|
|
||||||
uint32 Wrist;
|
|
||||||
uint32 Hands;
|
|
||||||
uint32 Legs;
|
|
||||||
uint32 Feet;
|
|
||||||
uint32 Primary;
|
|
||||||
uint32 Secondary;
|
|
||||||
};
|
|
||||||
uint32 Texture[textures::TextureCount];
|
|
||||||
};
|
|
||||||
|
|
||||||
TextureProfile();
|
|
||||||
};
|
|
||||||
|
|
||||||
EQEmu::TextureProfile::TextureProfile()
|
EQEmu::TextureProfile::TextureProfile()
|
||||||
{
|
{
|
||||||
memset(&Texture, 0, (sizeof(uint32) * textures::TextureCount));
|
memset(&Texture, 0, (sizeof(uint32) * textures::TextureCount));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EQEmu::TintProfile::TintProfile()
|
||||||
|
{
|
||||||
|
memset(&Slot, 0, (sizeof(uint32) * textures::TextureCount));
|
||||||
|
}
|
||||||
|
|||||||
@ -54,7 +54,57 @@ namespace EQEmu
|
|||||||
|
|
||||||
} /*textures*/
|
} /*textures*/
|
||||||
|
|
||||||
struct TextureProfile;
|
struct TextureProfile {
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
uint32 Head;
|
||||||
|
uint32 Chest;
|
||||||
|
uint32 Arms;
|
||||||
|
uint32 Wrist;
|
||||||
|
uint32 Hands;
|
||||||
|
uint32 Legs;
|
||||||
|
uint32 Feet;
|
||||||
|
uint32 Primary;
|
||||||
|
uint32 Secondary;
|
||||||
|
};
|
||||||
|
uint32 Texture[textures::TextureCount];
|
||||||
|
};
|
||||||
|
|
||||||
|
TextureProfile();
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Tint_Struct {
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
uint8 Blue;
|
||||||
|
uint8 Green;
|
||||||
|
uint8 Red;
|
||||||
|
uint8 UseTint; // if there's a tint this is FF
|
||||||
|
};
|
||||||
|
uint32 Color;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Tint_Struct();
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TintProfile {
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
Tint_Struct Head;
|
||||||
|
Tint_Struct Chest;
|
||||||
|
Tint_Struct Arms;
|
||||||
|
Tint_Struct Wrist;
|
||||||
|
Tint_Struct Hands;
|
||||||
|
Tint_Struct Legs;
|
||||||
|
Tint_Struct Feet;
|
||||||
|
Tint_Struct Primary;
|
||||||
|
Tint_Struct Secondary;
|
||||||
|
};
|
||||||
|
Tint_Struct Slot[textures::TextureCount];
|
||||||
|
};
|
||||||
|
|
||||||
|
TintProfile();
|
||||||
|
};
|
||||||
|
|
||||||
} /*EQEmu*/
|
} /*EQEmu*/
|
||||||
|
|
||||||
|
|||||||
@ -235,10 +235,10 @@ void WorldDatabase::GetCharSelectInfo(uint32 accountID, EQApplicationPacket **ou
|
|||||||
auto results_b = database.QueryDatabase(cquery); uint8 slot = 0;
|
auto results_b = database.QueryDatabase(cquery); uint8 slot = 0;
|
||||||
for (auto row_b = results_b.begin(); row_b != results_b.end(); ++row_b) {
|
for (auto row_b = results_b.begin(); row_b != results_b.end(); ++row_b) {
|
||||||
slot = atoi(row_b[0]);
|
slot = atoi(row_b[0]);
|
||||||
pp.item_tint[slot].RGB.Red = atoi(row_b[1]);
|
pp.item_tint.Slot[slot].Red = atoi(row_b[1]);
|
||||||
pp.item_tint[slot].RGB.Green = atoi(row_b[2]);
|
pp.item_tint.Slot[slot].Green = atoi(row_b[2]);
|
||||||
pp.item_tint[slot].RGB.Blue = atoi(row_b[3]);
|
pp.item_tint.Slot[slot].Blue = atoi(row_b[3]);
|
||||||
pp.item_tint[slot].RGB.UseTint = atoi(row_b[4]);
|
pp.item_tint.Slot[slot].UseTint = atoi(row_b[4]);
|
||||||
}
|
}
|
||||||
/* Character Material Data End */
|
/* Character Material Data End */
|
||||||
|
|
||||||
@ -279,8 +279,8 @@ void WorldDatabase::GetCharSelectInfo(uint32 accountID, EQApplicationPacket **ou
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
uint32 color = 0;
|
uint32 color = 0;
|
||||||
if (pp.item_tint[matslot].RGB.UseTint) {
|
if (pp.item_tint.Slot[matslot].UseTint) {
|
||||||
color = pp.item_tint[matslot].Color;
|
color = pp.item_tint.Slot[matslot].Color;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
color = inst->GetColor();
|
color = inst->GetColor();
|
||||||
|
|||||||
10
zone/bot.cpp
10
zone/bot.cpp
@ -2965,12 +2965,12 @@ void Bot::FillSpawnStruct(NewSpawn_Struct* ns, Mob* ForWho) {
|
|||||||
ns->spawn.equipment[i].EliteMaterial = item->EliteMaterial;
|
ns->spawn.equipment[i].EliteMaterial = item->EliteMaterial;
|
||||||
ns->spawn.equipment[i].HeroForgeModel = item->HerosForgeModel;
|
ns->spawn.equipment[i].HeroForgeModel = item->HerosForgeModel;
|
||||||
if (armor_tint[i])
|
if (armor_tint[i])
|
||||||
ns->spawn.colors[i].Color = armor_tint[i];
|
ns->spawn.equipment_tint.Slot[i].Color = armor_tint[i];
|
||||||
else
|
else
|
||||||
ns->spawn.colors[i].Color = item->Color;
|
ns->spawn.equipment_tint.Slot[i].Color = item->Color;
|
||||||
} else {
|
} else {
|
||||||
if (armor_tint[i])
|
if (armor_tint[i])
|
||||||
ns->spawn.colors[i].Color = armor_tint[i];
|
ns->spawn.equipment_tint.Slot[i].Color = armor_tint[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2982,7 +2982,7 @@ void Bot::FillSpawnStruct(NewSpawn_Struct* ns, Mob* ForWho) {
|
|||||||
if(strlen(item->IDFile) > 2)
|
if(strlen(item->IDFile) > 2)
|
||||||
ns->spawn.equipment[EQEmu::textures::TexturePrimary].Material = atoi(&item->IDFile[2]);
|
ns->spawn.equipment[EQEmu::textures::TexturePrimary].Material = atoi(&item->IDFile[2]);
|
||||||
|
|
||||||
ns->spawn.colors[EQEmu::textures::TexturePrimary].Color = GetEquipmentColor(EQEmu::textures::TexturePrimary);
|
ns->spawn.equipment_tint.Primary.Color = GetEquipmentColor(EQEmu::textures::TexturePrimary);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2993,7 +2993,7 @@ void Bot::FillSpawnStruct(NewSpawn_Struct* ns, Mob* ForWho) {
|
|||||||
if(strlen(item->IDFile) > 2)
|
if(strlen(item->IDFile) > 2)
|
||||||
ns->spawn.equipment[EQEmu::textures::TextureSecondary].Material = atoi(&item->IDFile[2]);
|
ns->spawn.equipment[EQEmu::textures::TextureSecondary].Material = atoi(&item->IDFile[2]);
|
||||||
|
|
||||||
ns->spawn.colors[EQEmu::textures::TextureSecondary].Color = GetEquipmentColor(EQEmu::textures::TextureSecondary);
|
ns->spawn.equipment_tint.Secondary.Color = GetEquipmentColor(EQEmu::textures::TextureSecondary);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3062,19 +3062,19 @@ void Client::Tell_StringID(uint32 string_id, const char *who, const char *messag
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Client::SetTint(int16 in_slot, uint32 color) {
|
void Client::SetTint(int16 in_slot, uint32 color) {
|
||||||
Color_Struct new_color;
|
EQEmu::Tint_Struct new_color;
|
||||||
new_color.Color = color;
|
new_color.Color = color;
|
||||||
SetTint(in_slot, new_color);
|
SetTint(in_slot, new_color);
|
||||||
database.SaveCharacterMaterialColor(this->CharacterID(), in_slot, color);
|
database.SaveCharacterMaterialColor(this->CharacterID(), in_slot, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Still need to reconcile bracer01 versus bracer02
|
// Still need to reconcile bracer01 versus bracer02
|
||||||
void Client::SetTint(int16 in_slot, Color_Struct& color) {
|
void Client::SetTint(int16 in_slot, EQEmu::Tint_Struct& color) {
|
||||||
|
|
||||||
uint8 matslot = Inventory::CalcMaterialFromSlot(in_slot);
|
uint8 matslot = Inventory::CalcMaterialFromSlot(in_slot);
|
||||||
if (matslot != EQEmu::textures::TextureInvalid)
|
if (matslot != EQEmu::textures::TextureInvalid)
|
||||||
{
|
{
|
||||||
m_pp.item_tint[matslot].Color = color.Color;
|
m_pp.item_tint.Slot[matslot].Color = color.Color;
|
||||||
database.SaveCharacterMaterialColor(this->CharacterID(), in_slot, color.Color);
|
database.SaveCharacterMaterialColor(this->CharacterID(), in_slot, color.Color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -253,7 +253,7 @@ public:
|
|||||||
void SendBuyerPacket(Client* Buyer);
|
void SendBuyerPacket(Client* Buyer);
|
||||||
GetItems_Struct* GetTraderItems();
|
GetItems_Struct* GetTraderItems();
|
||||||
void SendBazaarWelcome();
|
void SendBazaarWelcome();
|
||||||
void DyeArmor(DyeStruct* dye);
|
void DyeArmor(EQEmu::TintProfile* dye);
|
||||||
uint8 SlotConvert(uint8 slot,bool bracer=false);
|
uint8 SlotConvert(uint8 slot,bool bracer=false);
|
||||||
void Message_StringID(uint32 type, uint32 string_id, uint32 distance = 0);
|
void Message_StringID(uint32 type, uint32 string_id, uint32 distance = 0);
|
||||||
void Message_StringID(uint32 type, uint32 string_id, const char* message,const char* message2=0,const char* message3=0,const char* message4=0,const char* message5=0,const char* message6=0,const char* message7=0,const char* message8=0,const char* message9=0, uint32 distance = 0);
|
void Message_StringID(uint32 type, uint32 string_id, const char* message,const char* message2=0,const char* message3=0,const char* message4=0,const char* message5=0,const char* message6=0,const char* message7=0,const char* message8=0,const char* message9=0, uint32 distance = 0);
|
||||||
@ -802,7 +802,7 @@ public:
|
|||||||
uint32 NukeItem(uint32 itemnum, uint8 where_to_check =
|
uint32 NukeItem(uint32 itemnum, uint8 where_to_check =
|
||||||
(invWhereWorn | invWherePersonal | invWhereBank | invWhereSharedBank | invWhereTrading | invWhereCursor));
|
(invWhereWorn | invWherePersonal | invWhereBank | invWhereSharedBank | invWhereTrading | invWhereCursor));
|
||||||
void SetTint(int16 slot_id, uint32 color);
|
void SetTint(int16 slot_id, uint32 color);
|
||||||
void SetTint(int16 slot_id, Color_Struct& color);
|
void SetTint(int16 slot_id, EQEmu::Tint_Struct& color);
|
||||||
void SetMaterial(int16 slot_id, uint32 item_id);
|
void SetMaterial(int16 slot_id, uint32 item_id);
|
||||||
void Undye();
|
void Undye();
|
||||||
int32 GetItemIDAt(int16 slot_id);
|
int32 GetItemIDAt(int16 slot_id);
|
||||||
|
|||||||
@ -1315,9 +1315,9 @@ void Client::Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app)
|
|||||||
/* Set item material tint */
|
/* Set item material tint */
|
||||||
for (int i = EQEmu::textures::TextureBegin; i <= EQEmu::textures::LastTexture; i++)
|
for (int i = EQEmu::textures::TextureBegin; i <= EQEmu::textures::LastTexture; i++)
|
||||||
{
|
{
|
||||||
if (m_pp.item_tint[i].RGB.UseTint == 1 || m_pp.item_tint[i].RGB.UseTint == 255)
|
if (m_pp.item_tint.Slot[i].UseTint == 1 || m_pp.item_tint.Slot[i].UseTint == 255)
|
||||||
{
|
{
|
||||||
m_pp.item_tint[i].RGB.UseTint = 0xFF;
|
m_pp.item_tint.Slot[i].UseTint = 0xFF;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5379,10 +5379,10 @@ void Client::Handle_OP_DumpName(const EQApplicationPacket *app)
|
|||||||
|
|
||||||
void Client::Handle_OP_Dye(const EQApplicationPacket *app)
|
void Client::Handle_OP_Dye(const EQApplicationPacket *app)
|
||||||
{
|
{
|
||||||
if (app->size != sizeof(DyeStruct))
|
if (app->size != sizeof(EQEmu::TintProfile))
|
||||||
printf("Wrong size of DyeStruct, Got: %i, Expected: %zu\n", app->size, sizeof(DyeStruct));
|
printf("Wrong size of DyeStruct, Got: %i, Expected: %zu\n", app->size, sizeof(EQEmu::TintProfile));
|
||||||
else{
|
else{
|
||||||
DyeStruct* dye = (DyeStruct*)app->pBuffer;
|
EQEmu::TintProfile* dye = (EQEmu::TintProfile*)app->pBuffer;
|
||||||
DyeArmor(dye);
|
DyeArmor(dye);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -7128,7 +7128,7 @@ void Client::Undye() {
|
|||||||
database.SaveInventory(CharacterID(), inst, slot2);
|
database.SaveInventory(CharacterID(), inst, slot2);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_pp.item_tint[cur_slot].Color = 0;
|
m_pp.item_tint.Slot[cur_slot].Color = 0;
|
||||||
SendWearChange(cur_slot);
|
SendWearChange(cur_slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -116,15 +116,15 @@ Corpse* Corpse::LoadCharacterCorpseEntity(uint32 in_dbid, uint32 in_charid, std:
|
|||||||
pc->Lock();
|
pc->Lock();
|
||||||
|
|
||||||
/* Load Item Tints */
|
/* Load Item Tints */
|
||||||
pc->item_tint[0].Color = pcs->item_tint[0].Color;
|
pc->item_tint.Head.Color = pcs->item_tint.Head.Color;
|
||||||
pc->item_tint[1].Color = pcs->item_tint[1].Color;
|
pc->item_tint.Chest.Color = pcs->item_tint.Chest.Color;
|
||||||
pc->item_tint[2].Color = pcs->item_tint[2].Color;
|
pc->item_tint.Arms.Color = pcs->item_tint.Arms.Color;
|
||||||
pc->item_tint[3].Color = pcs->item_tint[3].Color;
|
pc->item_tint.Wrist.Color = pcs->item_tint.Wrist.Color;
|
||||||
pc->item_tint[4].Color = pcs->item_tint[4].Color;
|
pc->item_tint.Hands.Color = pcs->item_tint.Hands.Color;
|
||||||
pc->item_tint[5].Color = pcs->item_tint[5].Color;
|
pc->item_tint.Legs.Color = pcs->item_tint.Legs.Color;
|
||||||
pc->item_tint[6].Color = pcs->item_tint[6].Color;
|
pc->item_tint.Feet.Color = pcs->item_tint.Feet.Color;
|
||||||
pc->item_tint[7].Color = pcs->item_tint[7].Color;
|
pc->item_tint.Primary.Color = pcs->item_tint.Primary.Color;
|
||||||
pc->item_tint[8].Color = pcs->item_tint[8].Color;
|
pc->item_tint.Secondary.Color = pcs->item_tint.Secondary.Color;
|
||||||
|
|
||||||
/* Load Physical Appearance */
|
/* Load Physical Appearance */
|
||||||
pc->haircolor = pcs->haircolor;
|
pc->haircolor = pcs->haircolor;
|
||||||
@ -162,7 +162,7 @@ Corpse::Corpse(NPC* in_npc, ItemList* in_itemlist, uint32 in_npctypeid, const NP
|
|||||||
{
|
{
|
||||||
corpse_graveyard_timer.Disable();
|
corpse_graveyard_timer.Disable();
|
||||||
|
|
||||||
memset(item_tint, 0, sizeof(item_tint));
|
//memset(item_tint, 0, sizeof(item_tint));
|
||||||
|
|
||||||
is_corpse_changed = false;
|
is_corpse_changed = false;
|
||||||
is_player_corpse = false;
|
is_player_corpse = false;
|
||||||
@ -277,7 +277,7 @@ Corpse::Corpse(Client* client, int32 in_rezexp) : Mob (
|
|||||||
corpse_graveyard_timer.Disable();
|
corpse_graveyard_timer.Disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(item_tint, 0, sizeof(item_tint));
|
//memset(item_tint, 0, sizeof(item_tint));
|
||||||
|
|
||||||
for (i = 0; i < MAX_LOOTERS; i++){
|
for (i = 0; i < MAX_LOOTERS; i++){
|
||||||
allowed_looters[i] = 0;
|
allowed_looters[i] = 0;
|
||||||
@ -321,7 +321,7 @@ Corpse::Corpse(Client* client, int32 in_rezexp) : Mob (
|
|||||||
}
|
}
|
||||||
|
|
||||||
// get their tints
|
// get their tints
|
||||||
memcpy(item_tint, &client->GetPP().item_tint, sizeof(item_tint));
|
memcpy(&item_tint.Slot, &client->GetPP().item_tint, sizeof(item_tint));
|
||||||
|
|
||||||
// TODO soulbound items need not be added to corpse, but they need
|
// TODO soulbound items need not be added to corpse, but they need
|
||||||
// to go into the regular slots on the player, out of bags
|
// to go into the regular slots on the player, out of bags
|
||||||
@ -502,7 +502,7 @@ in_helmtexture,
|
|||||||
if (!zone->HasGraveyard() || wasAtGraveyard)
|
if (!zone->HasGraveyard() || wasAtGraveyard)
|
||||||
corpse_graveyard_timer.Disable();
|
corpse_graveyard_timer.Disable();
|
||||||
|
|
||||||
memset(item_tint, 0, sizeof(item_tint));
|
//memset(item_tint, 0, sizeof(item_tint));
|
||||||
|
|
||||||
is_corpse_changed = false;
|
is_corpse_changed = false;
|
||||||
is_player_corpse = true;
|
is_player_corpse = true;
|
||||||
@ -591,7 +591,7 @@ bool Corpse::Save() {
|
|||||||
dbpc->helmtexture = this->helmtexture;
|
dbpc->helmtexture = this->helmtexture;
|
||||||
dbpc->exp = rez_experience;
|
dbpc->exp = rez_experience;
|
||||||
|
|
||||||
memcpy(dbpc->item_tint, item_tint, sizeof(dbpc->item_tint));
|
memcpy(&dbpc->item_tint.Slot, &item_tint.Slot, sizeof(dbpc->item_tint));
|
||||||
dbpc->haircolor = haircolor;
|
dbpc->haircolor = haircolor;
|
||||||
dbpc->beardcolor = beardcolor;
|
dbpc->beardcolor = beardcolor;
|
||||||
dbpc->eyecolor2 = eyecolor1;
|
dbpc->eyecolor2 = eyecolor1;
|
||||||
@ -1420,9 +1420,7 @@ uint32 Corpse::GetEquipmentColor(uint8 material_slot) const {
|
|||||||
|
|
||||||
item = database.GetItem(GetEquipment(material_slot));
|
item = database.GetItem(GetEquipment(material_slot));
|
||||||
if(item != NO_ITEM) {
|
if(item != NO_ITEM) {
|
||||||
return item_tint[material_slot].RGB.UseTint ?
|
return (item_tint.Slot[material_slot].UseTint ? item_tint.Slot[material_slot].Color : item->Color);
|
||||||
item_tint[material_slot].Color :
|
|
||||||
item->Color;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@ -154,7 +154,7 @@ private:
|
|||||||
Timer corpse_delay_timer;
|
Timer corpse_delay_timer;
|
||||||
Timer corpse_graveyard_timer;
|
Timer corpse_graveyard_timer;
|
||||||
Timer loot_cooldown_timer; /* Delay between loot actions on the corpse entity */
|
Timer loot_cooldown_timer; /* Delay between loot actions on the corpse entity */
|
||||||
Color_Struct item_tint[9];
|
EQEmu::TintProfile item_tint;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -2019,28 +2019,28 @@ void Client::QSSwapItemAuditor(MoveItem_Struct* move_in, bool postaction_call) {
|
|||||||
safe_delete(qspack);
|
safe_delete(qspack);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::DyeArmor(DyeStruct* dye){
|
void Client::DyeArmor(EQEmu::TintProfile* dye){
|
||||||
int16 slot=0;
|
int16 slot=0;
|
||||||
for (int i = EQEmu::textures::TextureBegin; i <= EQEmu::textures::LastTintableTexture; i++) {
|
for (int i = EQEmu::textures::TextureBegin; i <= EQEmu::textures::LastTintableTexture; i++) {
|
||||||
if ((m_pp.item_tint[i].Color & 0x00FFFFFF) != (dye->dye[i].Color & 0x00FFFFFF)) {
|
if ((m_pp.item_tint.Slot[i].Color & 0x00FFFFFF) != (dye->Slot[i].Color & 0x00FFFFFF)) {
|
||||||
slot = m_inv.HasItem(32557, 1, invWherePersonal);
|
slot = m_inv.HasItem(32557, 1, invWherePersonal);
|
||||||
if (slot != INVALID_INDEX){
|
if (slot != INVALID_INDEX){
|
||||||
DeleteItemInInventory(slot,1,true);
|
DeleteItemInInventory(slot,1,true);
|
||||||
uint8 slot2=SlotConvert(i);
|
uint8 slot2=SlotConvert(i);
|
||||||
ItemInst* inst = this->m_inv.GetItem(slot2);
|
ItemInst* inst = this->m_inv.GetItem(slot2);
|
||||||
if(inst){
|
if(inst){
|
||||||
uint32 armor_color = ((uint32)dye->dye[i].RGB.Red << 16) | ((uint32)dye->dye[i].RGB.Green << 8) | ((uint32)dye->dye[i].RGB.Blue);
|
uint32 armor_color = ((uint32)dye->Slot[i].Red << 16) | ((uint32)dye->Slot[i].Green << 8) | ((uint32)dye->Slot[i].Blue);
|
||||||
inst->SetColor(armor_color);
|
inst->SetColor(armor_color);
|
||||||
database.SaveCharacterMaterialColor(this->CharacterID(), i, armor_color);
|
database.SaveCharacterMaterialColor(this->CharacterID(), i, armor_color);
|
||||||
database.SaveInventory(CharacterID(),inst,slot2);
|
database.SaveInventory(CharacterID(),inst,slot2);
|
||||||
if(dye->dye[i].RGB.UseTint)
|
if(dye->Slot[i].UseTint)
|
||||||
m_pp.item_tint[i].RGB.UseTint = 0xFF;
|
m_pp.item_tint.Slot[i].UseTint = 0xFF;
|
||||||
else
|
else
|
||||||
m_pp.item_tint[i].RGB.UseTint=0x00;
|
m_pp.item_tint.Slot[i].UseTint=0x00;
|
||||||
}
|
}
|
||||||
m_pp.item_tint[i].RGB.Blue=dye->dye[i].RGB.Blue;
|
m_pp.item_tint.Slot[i].Blue=dye->Slot[i].Blue;
|
||||||
m_pp.item_tint[i].RGB.Red=dye->dye[i].RGB.Red;
|
m_pp.item_tint.Slot[i].Red=dye->Slot[i].Red;
|
||||||
m_pp.item_tint[i].RGB.Green=dye->dye[i].RGB.Green;
|
m_pp.item_tint.Slot[i].Green=dye->Slot[i].Green;
|
||||||
SendWearChange(i);
|
SendWearChange(i);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
@ -2636,7 +2636,7 @@ uint32 Client::GetEquipmentColor(uint8 material_slot) const
|
|||||||
|
|
||||||
const EQEmu::ItemBase *item = database.GetItem(GetEquipment(material_slot));
|
const EQEmu::ItemBase *item = database.GetItem(GetEquipment(material_slot));
|
||||||
if(item != nullptr)
|
if(item != nullptr)
|
||||||
return ((m_pp.item_tint[material_slot].RGB.UseTint) ? m_pp.item_tint[material_slot].Color : item->Color);
|
return ((m_pp.item_tint.Slot[material_slot].UseTint) ? m_pp.item_tint.Slot[material_slot].Color : item->Color);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1162,7 +1162,7 @@ void Mob::FillSpawnStruct(NewSpawn_Struct* ns, Mob* ForWho)
|
|||||||
ns->spawn.equipment[i].Material = GetEquipmentMaterial(i);
|
ns->spawn.equipment[i].Material = GetEquipmentMaterial(i);
|
||||||
ns->spawn.equipment[i].EliteMaterial = IsEliteMaterialItem(i);
|
ns->spawn.equipment[i].EliteMaterial = IsEliteMaterialItem(i);
|
||||||
ns->spawn.equipment[i].HeroForgeModel = GetHerosForgeModel(i);
|
ns->spawn.equipment[i].HeroForgeModel = GetHerosForgeModel(i);
|
||||||
ns->spawn.colors[i].Color = GetEquipmentColor(i);
|
ns->spawn.equipment_tint.Slot[i].Color = GetEquipmentColor(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1170,10 +1170,10 @@ bool ZoneDatabase::LoadCharacterMaterialColor(uint32 character_id, PlayerProfile
|
|||||||
for (auto row = results.begin(); row != results.end(); ++row) {
|
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||||
r = 0;
|
r = 0;
|
||||||
i = atoi(row[r]); /* Slot */ r++;
|
i = atoi(row[r]); /* Slot */ r++;
|
||||||
pp->item_tint[i].RGB.Blue = atoi(row[r]); r++;
|
pp->item_tint.Slot[i].Blue = atoi(row[r]); r++;
|
||||||
pp->item_tint[i].RGB.Green = atoi(row[r]); r++;
|
pp->item_tint.Slot[i].Green = atoi(row[r]); r++;
|
||||||
pp->item_tint[i].RGB.Red = atoi(row[r]); r++;
|
pp->item_tint.Slot[i].Red = atoi(row[r]); r++;
|
||||||
pp->item_tint[i].RGB.UseTint = atoi(row[r]);
|
pp->item_tint.Slot[i].UseTint = atoi(row[r]);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -3627,9 +3627,9 @@ uint32 ZoneDatabase::UpdateCharacterCorpse(uint32 db_id, uint32 char_id, const c
|
|||||||
dbpc->plat, dbpc->haircolor, dbpc->beardcolor, dbpc->eyecolor1,
|
dbpc->plat, dbpc->haircolor, dbpc->beardcolor, dbpc->eyecolor1,
|
||||||
dbpc->eyecolor2, dbpc->hairstyle, dbpc->face, dbpc->beard,
|
dbpc->eyecolor2, dbpc->hairstyle, dbpc->face, dbpc->beard,
|
||||||
dbpc->drakkin_heritage, dbpc->drakkin_tattoo, dbpc->drakkin_details,
|
dbpc->drakkin_heritage, dbpc->drakkin_tattoo, dbpc->drakkin_details,
|
||||||
dbpc->item_tint[0].Color, dbpc->item_tint[1].Color, dbpc->item_tint[2].Color,
|
dbpc->item_tint.Head.Color, dbpc->item_tint.Chest.Color, dbpc->item_tint.Arms.Color,
|
||||||
dbpc->item_tint[3].Color, dbpc->item_tint[4].Color, dbpc->item_tint[5].Color,
|
dbpc->item_tint.Wrist.Color, dbpc->item_tint.Hands.Color, dbpc->item_tint.Legs.Color,
|
||||||
dbpc->item_tint[6].Color, dbpc->item_tint[7].Color, dbpc->item_tint[8].Color,
|
dbpc->item_tint.Feet.Color, dbpc->item_tint.Primary.Color, dbpc->item_tint.Secondary.Color,
|
||||||
db_id);
|
db_id);
|
||||||
auto results = QueryDatabase(query);
|
auto results = QueryDatabase(query);
|
||||||
|
|
||||||
@ -3720,15 +3720,15 @@ uint32 ZoneDatabase::SaveCharacterCorpse(uint32 charid, const char* charname, ui
|
|||||||
dbpc->drakkin_heritage,
|
dbpc->drakkin_heritage,
|
||||||
dbpc->drakkin_tattoo,
|
dbpc->drakkin_tattoo,
|
||||||
dbpc->drakkin_details,
|
dbpc->drakkin_details,
|
||||||
dbpc->item_tint[0].Color,
|
dbpc->item_tint.Head.Color,
|
||||||
dbpc->item_tint[1].Color,
|
dbpc->item_tint.Chest.Color,
|
||||||
dbpc->item_tint[2].Color,
|
dbpc->item_tint.Arms.Color,
|
||||||
dbpc->item_tint[3].Color,
|
dbpc->item_tint.Wrist.Color,
|
||||||
dbpc->item_tint[4].Color,
|
dbpc->item_tint.Hands.Color,
|
||||||
dbpc->item_tint[5].Color,
|
dbpc->item_tint.Legs.Color,
|
||||||
dbpc->item_tint[6].Color,
|
dbpc->item_tint.Feet.Color,
|
||||||
dbpc->item_tint[7].Color,
|
dbpc->item_tint.Primary.Color,
|
||||||
dbpc->item_tint[8].Color
|
dbpc->item_tint.Secondary.Color
|
||||||
);
|
);
|
||||||
auto results = QueryDatabase(query);
|
auto results = QueryDatabase(query);
|
||||||
uint32 last_insert_id = results.LastInsertedID();
|
uint32 last_insert_id = results.LastInsertedID();
|
||||||
@ -3900,15 +3900,15 @@ bool ZoneDatabase::LoadCharacterCorpseData(uint32 corpse_id, PlayerCorpse_Struct
|
|||||||
pcs->drakkin_heritage = atoul(row[i++]); // drakkin_heritage,
|
pcs->drakkin_heritage = atoul(row[i++]); // drakkin_heritage,
|
||||||
pcs->drakkin_tattoo = atoul(row[i++]); // drakkin_tattoo,
|
pcs->drakkin_tattoo = atoul(row[i++]); // drakkin_tattoo,
|
||||||
pcs->drakkin_details = atoul(row[i++]); // drakkin_details,
|
pcs->drakkin_details = atoul(row[i++]); // drakkin_details,
|
||||||
pcs->item_tint[0].Color = atoul(row[i++]); // wc_1,
|
pcs->item_tint.Head.Color = atoul(row[i++]); // wc_1,
|
||||||
pcs->item_tint[1].Color = atoul(row[i++]); // wc_2,
|
pcs->item_tint.Chest.Color = atoul(row[i++]); // wc_2,
|
||||||
pcs->item_tint[2].Color = atoul(row[i++]); // wc_3,
|
pcs->item_tint.Arms.Color = atoul(row[i++]); // wc_3,
|
||||||
pcs->item_tint[3].Color = atoul(row[i++]); // wc_4,
|
pcs->item_tint.Wrist.Color = atoul(row[i++]); // wc_4,
|
||||||
pcs->item_tint[4].Color = atoul(row[i++]); // wc_5,
|
pcs->item_tint.Hands.Color = atoul(row[i++]); // wc_5,
|
||||||
pcs->item_tint[5].Color = atoul(row[i++]); // wc_6,
|
pcs->item_tint.Legs.Color = atoul(row[i++]); // wc_6,
|
||||||
pcs->item_tint[6].Color = atoul(row[i++]); // wc_7,
|
pcs->item_tint.Feet.Color = atoul(row[i++]); // wc_7,
|
||||||
pcs->item_tint[7].Color = atoul(row[i++]); // wc_8,
|
pcs->item_tint.Primary.Color = atoul(row[i++]); // wc_8,
|
||||||
pcs->item_tint[8].Color = atoul(row[i++]); // wc_9
|
pcs->item_tint.Secondary.Color = atoul(row[i++]); // wc_9
|
||||||
}
|
}
|
||||||
query = StringFormat(
|
query = StringFormat(
|
||||||
"SELECT \n"
|
"SELECT \n"
|
||||||
|
|||||||
@ -169,7 +169,7 @@ struct PlayerCorpse_Struct {
|
|||||||
uint32 silver;
|
uint32 silver;
|
||||||
uint32 gold;
|
uint32 gold;
|
||||||
uint32 plat;
|
uint32 plat;
|
||||||
Color_Struct item_tint[9];
|
EQEmu::TintProfile item_tint;
|
||||||
uint8 haircolor;
|
uint8 haircolor;
|
||||||
uint8 beardcolor;
|
uint8 beardcolor;
|
||||||
uint8 eyecolor1;
|
uint8 eyecolor1;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user