mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-05-05 18:27:47 +00:00
Groundwork for pose, still needs to be added to spawn / initui
This commit is contained in:
parent
77495fcfb9
commit
c12c0b1d99
6 changed files with 35 additions and 8 deletions
|
@ -48,3 +48,4 @@ ALTER TABLE `charainfo` CHANGE `Orchestrion` `Orchestrion` BINARY(40) NULL DEFAU
|
||||||
ALTER TABLE `charainfo` CHANGE `Minions` `Minions` BINARY(37) NULL DEFAULT NULL;
|
ALTER TABLE `charainfo` CHANGE `Minions` `Minions` BINARY(37) NULL DEFAULT NULL;
|
||||||
ALTER TABLE `charainfo` CHANGE `QuestCompleteFlags` `QuestCompleteFlags` VARBINARY(396) NULL DEFAULT NULL;
|
ALTER TABLE `charainfo` CHANGE `QuestCompleteFlags` `QuestCompleteFlags` VARBINARY(396) NULL DEFAULT NULL;
|
||||||
ALTER TABLE `charainfo` ADD COLUMN `EquipDisplayFlags` INT(3) NULL DEFAULT '0' AFTER `GMRank`;
|
ALTER TABLE `charainfo` ADD COLUMN `EquipDisplayFlags` INT(3) NULL DEFAULT '0' AFTER `GMRank`;
|
||||||
|
ALTER TABLE `charainfo` ADD COLUMN `Pose` INT(3) NULL DEFAULT '0' AFTER `EquipDisplayFlags`;
|
|
@ -29,7 +29,8 @@ void Core::Db::CharaDbConnection::doPrepareStatements()
|
||||||
"FavoritePoint, RestPoint, StartTown, ActiveTitle, TitleList, Achievement, "
|
"FavoritePoint, RestPoint, StartTown, ActiveTitle, TitleList, Achievement, "
|
||||||
"Aetheryte, HowTo, Minions, Mounts, Orchestrion, EquippedMannequin, ConfigFlags, "
|
"Aetheryte, HowTo, Minions, Mounts, Orchestrion, EquippedMannequin, ConfigFlags, "
|
||||||
"QuestCompleteFlags, OpeningSequence, QuestTracking, GrandCompany, "
|
"QuestCompleteFlags, OpeningSequence, QuestTracking, GrandCompany, "
|
||||||
"GrandCompanyRank, Discovery, GMRank, EquipDisplayFlags, Unlocks, CFPenaltyUntil "
|
"GrandCompanyRank, Discovery, GMRank, EquipDisplayFlags, Unlocks, CFPenaltyUntil, "
|
||||||
|
"Pose "
|
||||||
"FROM charainfo WHERE CharacterId = ?;", CONNECTION_SYNC );
|
"FROM charainfo WHERE CharacterId = ?;", CONNECTION_SYNC );
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,7 +45,7 @@ void Core::Db::CharaDbConnection::doPrepareStatements()
|
||||||
"ActiveTitle = ?, TitleList = ?, Achievement = ?, Aetheryte = ?, HowTo = ?, Minions = ?, Mounts = ?, Orchestrion = ?, "
|
"ActiveTitle = ?, TitleList = ?, Achievement = ?, Aetheryte = ?, HowTo = ?, Minions = ?, Mounts = ?, Orchestrion = ?, "
|
||||||
"EquippedMannequin = ?, ConfigFlags = ?, QuestCompleteFlags = ?, OpeningSequence = ?, "
|
"EquippedMannequin = ?, ConfigFlags = ?, QuestCompleteFlags = ?, OpeningSequence = ?, "
|
||||||
"QuestTracking = ?, GrandCompany = ?, GrandCompanyRank = ?, Discovery = ?, GMRank = ?, EquipDisplayFlags = ?, Unlocks = ?, "
|
"QuestTracking = ?, GrandCompany = ?, GrandCompanyRank = ?, Discovery = ?, GMRank = ?, EquipDisplayFlags = ?, Unlocks = ?, "
|
||||||
"CFPenaltyUntil = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
"CFPenaltyUntil = ?, Pose = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
|
|
||||||
|
|
||||||
prepareStatement( CHARA_SEL_MINIMAL, "SELECT Name, Customize, ModelEquip, TerritoryId, GuardianDeity, "
|
prepareStatement( CHARA_SEL_MINIMAL, "SELECT Name, Customize, ModelEquip, TerritoryId, GuardianDeity, "
|
||||||
|
|
|
@ -277,6 +277,16 @@ bool Core::Entity::Player::isAutoattackOn() const
|
||||||
return m_bAutoattack;
|
return m_bAutoattack;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t Core::Entity::Player::getPose() const
|
||||||
|
{
|
||||||
|
return m_pose;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Core::Entity::Player::setPose( uint8_t pose )
|
||||||
|
{
|
||||||
|
m_pose = pose;
|
||||||
|
}
|
||||||
|
|
||||||
void Core::Entity::Player::sendStats()
|
void Core::Entity::Player::sendStats()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
|
@ -565,6 +565,9 @@ public:
|
||||||
void setAutoattack( bool mode );
|
void setAutoattack( bool mode );
|
||||||
bool isAutoattackOn() const;
|
bool isAutoattackOn() const;
|
||||||
|
|
||||||
|
uint8_t getPose() const;
|
||||||
|
void setPose( uint8_t pose );
|
||||||
|
|
||||||
// Content Finder handling
|
// Content Finder handling
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
/*! Get an unix time when the player can register into content finder again. */
|
/*! Get an unix time when the player can register into content finder again. */
|
||||||
|
@ -719,6 +722,7 @@ private:
|
||||||
|
|
||||||
uint8_t m_mount;
|
uint8_t m_mount;
|
||||||
uint32_t m_emoteMode;
|
uint32_t m_emoteMode;
|
||||||
|
uint8_t m_pose;
|
||||||
|
|
||||||
Util::SpawnIndexAllocator< uint8_t > m_objSpawnIndexAllocator;
|
Util::SpawnIndexAllocator< uint8_t > m_objSpawnIndexAllocator;
|
||||||
Util::SpawnIndexAllocator< uint8_t > m_actorSpawnIndexAllocator;
|
Util::SpawnIndexAllocator< uint8_t > m_actorSpawnIndexAllocator;
|
||||||
|
|
|
@ -151,6 +151,8 @@ bool Core::Entity::Player::load( uint32_t charId, SessionPtr pSession )
|
||||||
|
|
||||||
m_equipDisplayFlags = res->getUInt8( "EquipDisplayFlags" );
|
m_equipDisplayFlags = res->getUInt8( "EquipDisplayFlags" );
|
||||||
|
|
||||||
|
m_pose = res->getUInt8( "Pose" );
|
||||||
|
|
||||||
// Blobs
|
// Blobs
|
||||||
|
|
||||||
auto howTo = res->getBlobVector( "HowTo" );
|
auto howTo = res->getBlobVector( "HowTo" );
|
||||||
|
@ -328,7 +330,7 @@ void Core::Entity::Player::updateSql()
|
||||||
"ActiveTitle 36, TitleList 37, Achievement 38, Aetheryte 39, HowTo 40, Minions 41, Mounts 42, Orchestrion 43, "
|
"ActiveTitle 36, TitleList 37, Achievement 38, Aetheryte 39, HowTo 40, Minions 41, Mounts 42, Orchestrion 43, "
|
||||||
"EquippedMannequin 44, ConfigFlags 45, QuestCompleteFlags 46, OpeningSequence 47, "
|
"EquippedMannequin 44, ConfigFlags 45, QuestCompleteFlags 46, OpeningSequence 47, "
|
||||||
"QuestTracking 48, GrandCompany 49, GrandCompanyRank 50, Discovery 51, GMRank 52, Unlocks 53, "
|
"QuestTracking 48, GrandCompany 49, GrandCompanyRank 50, Discovery 51, GMRank 52, Unlocks 53, "
|
||||||
"CFPenaltyUntil 54"*/
|
"CFPenaltyUntil 54, Pose 55"*/
|
||||||
auto stmt = pDb->getPreparedStatement( Db::CharaDbStatements::CHARA_UP );
|
auto stmt = pDb->getPreparedStatement( Db::CharaDbStatements::CHARA_UP );
|
||||||
|
|
||||||
stmt->setInt( 1, getHp() );
|
stmt->setInt( 1, getHp() );
|
||||||
|
@ -438,7 +440,9 @@ void Core::Entity::Player::updateSql()
|
||||||
|
|
||||||
stmt->setInt( 55, m_cfPenaltyUntil );
|
stmt->setInt( 55, m_cfPenaltyUntil );
|
||||||
|
|
||||||
stmt->setInt( 56, m_id );
|
stmt->setInt( 56, m_pose );
|
||||||
|
|
||||||
|
stmt->setInt( 57, m_id );
|
||||||
|
|
||||||
pDb->execute( stmt );
|
pDb->execute( stmt );
|
||||||
|
|
||||||
|
|
|
@ -184,15 +184,22 @@ void Core::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVAR
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ClientTriggerType::PoseChange: // change pose
|
case ClientTriggerType::PoseChange: // change pose
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case ClientTriggerType::PoseReapply: // reapply pose
|
case ClientTriggerType::PoseReapply: // reapply pose
|
||||||
{
|
{
|
||||||
|
player.setPose( param12 );
|
||||||
|
auto pSetStatusPacket = boost::make_shared< ActorControlPacket142 >( player.getId(),
|
||||||
|
SetPose,
|
||||||
|
param11, param12 );
|
||||||
|
player.sendToInRangeSet( pSetStatusPacket, true );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ClientTriggerType::PoseCancel: // cancel pose
|
case ClientTriggerType::PoseCancel: // cancel pose
|
||||||
{
|
{
|
||||||
|
player.setPose( param12 );
|
||||||
|
auto pSetStatusPacket = boost::make_shared< ActorControlPacket142 >( player.getId(),
|
||||||
|
SetPose,
|
||||||
|
param11, param12 );
|
||||||
|
player.sendToInRangeSet( pSetStatusPacket, true );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ClientTriggerType::Return: // return dead / accept raise
|
case ClientTriggerType::Return: // return dead / accept raise
|
||||||
|
|
Loading…
Add table
Reference in a new issue