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:
parent
3ff6f2b283
commit
9c4eddce4a
3 changed files with 46 additions and 19 deletions
|
@ -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 );
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 );
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Add table
Reference in a new issue