1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-27 06:47:45 +00:00

added equip models for examine (todo: main/sub/accessories)

- added stub for item crafter name request
This commit is contained in:
Tahir Akhlaq 2018-09-11 17:46:04 +01:00
parent e487a9ae24
commit 8d6ec91757
4 changed files with 44 additions and 6 deletions

View file

@ -250,7 +250,7 @@ enum ClientTriggerType
ClearWaymarks = 0x13A, ClearWaymarks = 0x13A,
CameraMode = 0x13B, // param12, 1 = camera mode enable, 0 = disable CameraMode = 0x13B, // param12, 1 = camera mode enable, 0 = disable
CharaNameReq = 0x13D, // requests character name by content id
HuntingLogDetails = 0x194, HuntingLogDetails = 0x194,
Timers = 0x1AB, Timers = 0x1AB,

View file

@ -136,7 +136,8 @@ enum ServerZoneIpcType :
PlayerStateFlags = 0x0184, // updated 4.3 PlayerStateFlags = 0x0184, // updated 4.3
PlayerClassInfo = 0x0185, // updated 4.3 PlayerClassInfo = 0x0185, // updated 4.3
ModelEquip = 0x0186, // updated 4.3 ModelEquip = 0x0186, // updated 4.3
Examine = 0x0187, // update 4.1 Examine = 0x0187, // updated 4.3
CharaNameReq = 0x0189, // updated 4.3
UpdateClassInfo = 0x018A, // updated 4.3 UpdateClassInfo = 0x018A, // updated 4.3
ItemInfo = 0x0190, // updated 4.3 ItemInfo = 0x0190, // updated 4.3

View file

@ -988,14 +988,17 @@ struct FFXIVIpcExamine :
char level; char level;
uint16_t padding; uint16_t padding;
uint16_t titleId; uint16_t titleId;
//char grandCompany;
//char grandCompanyRank;
char unknown[56]; char unknown[56];
struct ItemData struct ItemData
{ {
uint32_t catalogId; uint32_t catalogId;
uint32_t appearanceCatalogId; uint32_t appearanceCatalogId;
uint64_t unknown2; uint64_t crafterId;
uint32_t unknown3; uint8_t quality;
uint8_t unknown[3];
struct Materia struct Materia
{ {
uint16_t materiaId; uint16_t materiaId;
@ -1007,8 +1010,15 @@ struct FFXIVIpcExamine :
char unk3[16]; char unk3[16];
char look[26]; char look[26];
char padding3[5]; char padding3[5];
//uint32_t models[10]; uint32_t models[10];
char unknown4[270]; char unknown4[200];
};
struct FFXIVIpcCharaNameReq :
FFXIVIpcBasePacket< CharaNameReq >
{
uint64_t contentId;
char name[32];
}; };
/** /**

View file

@ -60,16 +60,27 @@ void examineHandler( Core::Entity::Player& player, uint32_t targetId )
packet->data().unkFlag1 = 4; packet->data().unkFlag1 = 4;
packet->data().unkFlag2 = 1; packet->data().unkFlag2 = 1;
packet->data().titleId = pPlayer->getTitle(); packet->data().titleId = pPlayer->getTitle();
//packet->data().grandCompany = 1; //packet->data().grandCompany = 1;
//packet->data().grandCompanyRank = 2; //packet->data().grandCompanyRank = 2;
memcpy( packet->data().look, pPlayer->getLookArray(), sizeof( packet->data().look ) ); memcpy( packet->data().look, pPlayer->getLookArray(), sizeof( packet->data().look ) );
packet->data().models[ 0 ] = pPlayer->getModelForSlot( Common::GearSetSlot::Head );
packet->data().models[ 1 ] = pPlayer->getModelForSlot( Common::GearSetSlot::Body );
packet->data().models[ 2 ] = pPlayer->getModelForSlot( Common::GearSetSlot::Hands );
packet->data().models[ 3 ] = pPlayer->getModelForSlot( Common::GearSetSlot::Legs );
packet->data().models[ 4 ] = pPlayer->getModelForSlot( Common::GearSetSlot::Feet );
// todo: main/sub/other stuff too
for( auto i = 0; i < Common::GearSetSlot::SoulCrystal + 1; ++i) for( auto i = 0; i < Common::GearSetSlot::SoulCrystal + 1; ++i)
{ {
auto pItem = pPlayer->getItemAt( Common::InventoryType::GearSet0, i ); auto pItem = pPlayer->getItemAt( Common::InventoryType::GearSet0, i );
if( pItem ) if( pItem )
{ {
auto slot = static_cast< Common::GearSetSlot >( i );
auto& entry = packet->data().entries[i]; auto& entry = packet->data().entries[i];
entry.catalogId = pItem->getId(); entry.catalogId = pItem->getId();
entry.quality = pItem->isHq();
//entry.appearanceCatalogId = pItem->getGlamourId() //entry.appearanceCatalogId = pItem->getGlamourId()
// todo: glamour/materia etc. // todo: glamour/materia etc.
} }
@ -183,6 +194,22 @@ void Core::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVAR
player.updateHowtosSeen( howToId ); player.updateHowtosSeen( howToId );
break; break;
} }
case ClientTriggerType::CharaNameReq:
{
uint64_t targetContentId = param1;
// todo: look up player by content id
/*
auto packet = makeZonePacket< FFXIVIpcCharaNameReq >( player.getId() );
packet->data().contentId = targetContentId;
// lookup the name
strcpy( packet->data().name, name );
player.queuePacket( packet );
*/
break;
}
case ClientTriggerType::EmoteReq: // emote case ClientTriggerType::EmoteReq: // emote
{ {
uint64_t targetId = player.getTargetId(); uint64_t targetId = player.getTargetId();