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,
CameraMode = 0x13B, // param12, 1 = camera mode enable, 0 = disable
CharaNameReq = 0x13D, // requests character name by content id
HuntingLogDetails = 0x194,
Timers = 0x1AB,

View file

@ -136,7 +136,8 @@ enum ServerZoneIpcType :
PlayerStateFlags = 0x0184, // updated 4.3
PlayerClassInfo = 0x0185, // 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
ItemInfo = 0x0190, // updated 4.3

View file

@ -988,14 +988,17 @@ struct FFXIVIpcExamine :
char level;
uint16_t padding;
uint16_t titleId;
//char grandCompany;
//char grandCompanyRank;
char unknown[56];
struct ItemData
{
uint32_t catalogId;
uint32_t appearanceCatalogId;
uint64_t unknown2;
uint32_t unknown3;
uint64_t crafterId;
uint8_t quality;
uint8_t unknown[3];
struct Materia
{
uint16_t materiaId;
@ -1007,8 +1010,15 @@ struct FFXIVIpcExamine :
char unk3[16];
char look[26];
char padding3[5];
//uint32_t models[10];
char unknown4[270];
uint32_t models[10];
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().unkFlag2 = 1;
packet->data().titleId = pPlayer->getTitle();
//packet->data().grandCompany = 1;
//packet->data().grandCompanyRank = 2;
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)
{
auto pItem = pPlayer->getItemAt( Common::InventoryType::GearSet0, i );
if( pItem )
{
auto slot = static_cast< Common::GearSetSlot >( i );
auto& entry = packet->data().entries[i];
entry.catalogId = pItem->getId();
entry.quality = pItem->isHq();
//entry.appearanceCatalogId = pItem->getGlamourId()
// todo: glamour/materia etc.
}
@ -183,6 +194,22 @@ void Core::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVAR
player.updateHowtosSeen( howToId );
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
{
uint64_t targetId = player.getTargetId();