1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-02 08:57:44 +00:00

Sign petition work, member gets added to db, but not much else yet.

This commit is contained in:
Mordred 2023-02-08 23:27:12 +01:00
parent 3ff6f2b283
commit 9c4eddce4a
3 changed files with 46 additions and 19 deletions

View file

@ -221,13 +221,7 @@ FreeCompanyPtr FreeCompanyMgr::createFreeCompany( const std::string& name, const
stmt->setString( 15, std::string( "" ) ); stmt->setString( 15, std::string( "" ) );
db.directExecute( stmt ); db.directExecute( stmt );
/*! FreeCompanyId, FcMemberId, HierarchyType, LastLogout */ dbInsertMember( freeCompanyId, masterId, 0 );
stmt = db.getPreparedStatement( Db::ZoneDbStatements::FC_MEMBERS_INS );
stmt->setUInt64( 1, freeCompanyId );
stmt->setUInt64( 2, masterId );
stmt->setUInt( 3, 0 );
stmt->setUInt( 4, createDate );
db.directExecute( stmt );
fcPtr->addMember( masterId, 0, createDate ); fcPtr->addMember( masterId, 0, createDate );
@ -249,7 +243,7 @@ void FreeCompanyMgr::sendFreeCompanyStatus( Entity::Player& player )
auto fcStatusResult = makeZonePacket< FFXIVIpcGetFcStatusResult >( player.getId() ); auto fcStatusResult = makeZonePacket< FFXIVIpcGetFcStatusResult >( player.getId() );
auto playerFc = getPlayerFreeCompany( player ); auto playerFc = getPlayerFreeCompany( player.getCharacterId() );
if( !playerFc ) if( !playerFc )
return; return;
@ -267,19 +261,18 @@ void FreeCompanyMgr::sendFreeCompanyStatus( Entity::Player& player )
} }
FreeCompanyPtr FreeCompanyMgr::getPlayerFreeCompany( Entity::Player& player ) FreeCompanyPtr FreeCompanyMgr::getPlayerFreeCompany( uint64_t characterId )
{ {
auto it = m_charaIdToFcIdMap.find( player.getCharacterId() ); auto it = m_charaIdToFcIdMap.find( characterId );
if( it != m_charaIdToFcIdMap.end() ) if( it != m_charaIdToFcIdMap.end() )
return getFreeCompanyById( it->second ); return getFreeCompanyById( it->second );
return nullptr; return nullptr;
} }
void FreeCompanyMgr::sendFcInviteList( Entity::Player& player ) void FreeCompanyMgr::sendFcInviteList( Entity::Player& player )
{ {
auto fc = getPlayerFreeCompany( player ); auto fc = getPlayerFreeCompany( player.getCharacterId() );
if( !fc ) if( !fc )
return; return;
@ -308,7 +301,7 @@ void FreeCompanyMgr::sendFcInviteList( Entity::Player& player )
uint8_t idx = 0; uint8_t idx = 0;
for( auto& entry : fc->getMemberIdList() ) for( auto& entry : fc->getMemberIdList() )
{ {
if( entry == 0 ) if( entry == 0 || entry == fc->getMasterId() )
continue; continue;
auto signee = server.getPlayer( entry ); auto signee = server.getPlayer( entry );
@ -327,7 +320,7 @@ void FreeCompanyMgr::sendFcInviteList( Entity::Player& player )
void FreeCompanyMgr::sendFcStatus( Entity::Player& player ) void FreeCompanyMgr::sendFcStatus( Entity::Player& player )
{ {
auto fc = getPlayerFreeCompany( player ); auto fc = getPlayerFreeCompany( player.getCharacterId() );
auto fcResultPacket = makeZonePacket< FFXIVIpcGetFcStatusResult >( player.getId() ); auto fcResultPacket = makeZonePacket< FFXIVIpcGetFcStatusResult >( player.getId() );
auto& resultData = fcResultPacket->data(); auto& resultData = fcResultPacket->data();
resultData.CharaFcParam = 1; resultData.CharaFcParam = 1;
@ -356,7 +349,7 @@ void FreeCompanyMgr::onFcLogin( uint64_t characterId )
if( !player ) if( !player )
return; return;
auto fc = getPlayerFreeCompany( *player ); auto fc = getPlayerFreeCompany( player->getCharacterId() );
if( !fc ) if( !fc )
return; return;
@ -374,4 +367,34 @@ void FreeCompanyMgr::onFcLogin( uint64_t characterId )
void FreeCompanyMgr::onSignPetition( Entity::Player& source, Entity::Player& target ) void FreeCompanyMgr::onSignPetition( Entity::Player& source, Entity::Player& target )
{ {
auto fc = getPlayerFreeCompany( target.getCharacterId() );
if( !fc )
return;
addMember( fc->getId(), source.getCharacterId() );
// todo - send fcresult packets
}
void FreeCompanyMgr::addMember( uint64_t fcId, uint64_t memberId )
{
auto pFc = getFreeCompanyById( fcId );
if( !pFc )
return;
dbInsertMember( fcId, memberId, 0 );
pFc->addMember( memberId, 0, 0 );
}
void FreeCompanyMgr::dbInsertMember( uint64_t fcId, uint64_t characterId, uint8_t hierarchyId )
{
auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref();
/*! FreeCompanyId, FcMemberId, HierarchyType, LastLogout */
auto stmt = db.getPreparedStatement( Db::ZoneDbStatements::FC_MEMBERS_INS );
stmt->setUInt64( 1, fcId );
stmt->setUInt64( 2, characterId );
stmt->setUInt( 3, hierarchyId );
stmt->setUInt( 4, 0 );
db.directExecute( stmt );
} }

View file

@ -32,6 +32,8 @@ namespace Sapphire::World::Manager
bool renameFreeCompany( uint64_t fcId, const std::string& name, const std::string& tag, Entity::Player& player ); bool renameFreeCompany( uint64_t fcId, const std::string& name, const std::string& tag, Entity::Player& player );
void addMember( uint64_t fcId, uint64_t memberId );
//void sendFreeCompanyResult( Entity::Player& player, uint64_t fcId, ResultType resultType, uint64_t target, //void sendFreeCompanyResult( Entity::Player& player, uint64_t fcId, ResultType resultType, uint64_t target,
// uint32_t result, UpdateStatus updateStatus, std::string targetName ); // uint32_t result, UpdateStatus updateStatus, std::string targetName );
@ -48,8 +50,10 @@ namespace Sapphire::World::Manager
void sendFreeCompanyStatus( Entity::Player& player ); void sendFreeCompanyStatus( Entity::Player& player );
void dbInsertMember( uint64_t fcId, uint64_t characterId, uint8_t hierarchyId );
// get fc associated with player // get fc associated with player
FreeCompanyPtr getPlayerFreeCompany( Entity::Player& player ); FreeCompanyPtr getPlayerFreeCompany( uint64_t characterId );
FreeCompanyPtr getFreeCompanyById( uint64_t fcId ); FreeCompanyPtr getFreeCompanyById( uint64_t fcId );
FreeCompanyPtr getFreeCompanyByName( const std::string& name ); FreeCompanyPtr getFreeCompanyByName( const std::string& name );

View file

@ -97,7 +97,7 @@ void Sapphire::Network::GameConnection::inviteHandler( const FFXIVARR_PACKET_RAW
strcpy( data.TargetName, packet.data().TargetName ); strcpy( data.TargetName, packet.data().TargetName );
server.queueForPlayer( player.getCharacterId(), inviteResultPacket ); server.queueForPlayer( player.getCharacterId(), inviteResultPacket );
auto invitePacket = makeInviteUpdatePacket( player, 1, packet.data().AuthType, 1, InviteUpdateType::NEW_INVITE ); auto invitePacket = makeInviteUpdatePacket( player, Common::Util::getTimeSeconds() + 300, packet.data().AuthType, 1, InviteUpdateType::NEW_INVITE );
server.queueForPlayer( pTargetPlayer->getCharacterId(), invitePacket ); server.queueForPlayer( pTargetPlayer->getCharacterId(), invitePacket );
break; break;
} }
@ -109,7 +109,7 @@ void Sapphire::Network::GameConnection::inviteHandler( const FFXIVARR_PACKET_RAW
strcpy( data.TargetName, packet.data().TargetName ); strcpy( data.TargetName, packet.data().TargetName );
server.queueForPlayer( player.getCharacterId(), inviteResultPacket ); server.queueForPlayer( player.getCharacterId(), inviteResultPacket );
auto invitePacket = makeInviteUpdatePacket( player, 1, packet.data().AuthType, 1, InviteUpdateType::NEW_INVITE ); auto invitePacket = makeInviteUpdatePacket( player, Common::Util::getTimeSeconds() + 300, packet.data().AuthType, 1, InviteUpdateType::NEW_INVITE );
server.queueForPlayer( pTargetPlayer->getCharacterId(), invitePacket ); server.queueForPlayer( pTargetPlayer->getCharacterId(), invitePacket );
break; break;
} }
@ -198,7 +198,7 @@ void Sapphire::Network::GameConnection::inviteReplyHandler( const FFXIVARR_PACKE
{ {
result = InviteUpdateType::REJECT_INVITE; result = InviteUpdateType::REJECT_INVITE;
} }
auto inviteUpPacket = makeInviteUpdatePacket( player, 0, data.AuthType, 1, result ); auto inviteUpPacket = makeInviteUpdatePacket( player, Common::Util::getTimeSeconds() + 300, data.AuthType, 1, result );
server.queueForPlayer( pPlayer->getCharacterId(), inviteUpPacket ); server.queueForPlayer( pPlayer->getCharacterId(), inviteUpPacket );
inviteReplyData.AuthType = data.AuthType; inviteReplyData.AuthType = data.AuthType;