mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-29 07:37:45 +00:00
fixed an issue with binary fields bit read incorrectly
This commit is contained in:
parent
25b75043c5
commit
3564964a8a
4 changed files with 24 additions and 18 deletions
|
@ -120,15 +120,10 @@ void Core::Db::CharaDbConnection::doPrepareStatements()
|
||||||
|
|
||||||
prepareStatement( CHARA_QUEST_SEL, "SELECT * FROM charaquestnew WHERE CharacterId = ?;", CONNECTION_SYNC );
|
prepareStatement( CHARA_QUEST_SEL, "SELECT * FROM charaquestnew WHERE CharacterId = ?;", CONNECTION_SYNC );
|
||||||
|
|
||||||
|
|
||||||
/// CLASS INFO
|
/// CLASS INFO
|
||||||
prepareStatement( CHARA_CLASS_SEL, "SELECT ClassIdx, Exp, Lvl FROM characlass WHERE CharacterId = ?;", CONNECTION_SYNC );
|
prepareStatement( CHARA_CLASS_SEL, "SELECT ClassIdx, Exp, Lvl FROM characlass WHERE CharacterId = ?;", CONNECTION_SYNC );
|
||||||
prepareStatement( CHARA_CLASS_INS, "INSERT INTO characlass ( CharacterId, ClassIdx, Exp, Lvl ) VALUES( ?,?,?,?);", CONNECTION_ASYNC );
|
prepareStatement( CHARA_CLASS_INS, "INSERT INTO characlass ( CharacterId, ClassIdx, Exp, Lvl ) VALUES( ?,?,?,?);", CONNECTION_BOTH );
|
||||||
prepareStatement( CHARA_CLASS_UP, "UPDATE characlass SET Exp = ?, SET Lvl = ? ) WHERE CharacterId = ? AND ClassIdx = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_CLASS_UP, "UPDATE characlass SET Exp = ?, Lvl = ? WHERE CharacterId = ? AND ClassIdx = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_CLASS_DEL, "DELETE FROM characlass WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_CLASS_DEL, "DELETE FROM characlass WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -69,15 +69,15 @@ namespace Core {
|
||||||
m_contentId = res->getUInt64( "ContentId" );
|
m_contentId = res->getUInt64( "ContentId" );
|
||||||
m_zoneId = res->getUInt8( "TerritoryId" );
|
m_zoneId = res->getUInt8( "TerritoryId" );
|
||||||
|
|
||||||
auto pQR2 = g_database.query( "SELECT * FROM characlass WHERE CharacterId = " + std::to_string( charId ) + ";" );
|
// SELECT ClassIdx, Exp, Lvl
|
||||||
|
auto stmtClass = g_charaDb.getPreparedStatement( Db::CharaDbStatements::CHARA_SEL_MINIMAL );
|
||||||
|
stmtClass->setInt( 1, m_id );
|
||||||
|
|
||||||
Db::Field* field2 = pQR2->fetch();
|
auto resClass = g_charaDb.query( stmt );
|
||||||
|
|
||||||
for( uint8_t i = 0; i < 25; i++ )
|
while( resClass->next() )
|
||||||
{
|
{
|
||||||
uint8_t index = i * 2;
|
m_classMap[resClass->getUInt( 1 )] = resClass->getUInt( 3 );
|
||||||
m_classMap[i] = field2[index].get< uint8_t >();
|
|
||||||
//m_expArray[i] =
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -165,6 +165,8 @@ namespace Core {
|
||||||
std::vector< uint8_t > questTracking8(10);
|
std::vector< uint8_t > questTracking8(10);
|
||||||
std::vector< int16_t > questTracking = { -1, -1, -1, -1, -1 };
|
std::vector< int16_t > questTracking = { -1, -1, -1, -1, -1 };
|
||||||
|
|
||||||
|
memset( questComplete.data(), 0, questComplete.size() );
|
||||||
|
|
||||||
memcpy( questTracking8.data(), questTracking.data(), questTracking8.size() );
|
memcpy( questTracking8.data(), questTracking.data(), questTracking8.size() );
|
||||||
|
|
||||||
uint16_t size = static_cast< uint16_t >( m_lookMap.size() );
|
uint16_t size = static_cast< uint16_t >( m_lookMap.size() );
|
||||||
|
@ -223,6 +225,14 @@ namespace Core {
|
||||||
// "HomePoint, StartTown, Discovery, HowTo, QuestCompleteFlags, Unlocks, QuestTracking, "
|
// "HomePoint, StartTown, Discovery, HowTo, QuestCompleteFlags, Unlocks, QuestTracking, "
|
||||||
// "Aetheryte, GMRank, UPDATE_DATE )
|
// "Aetheryte, GMRank, UPDATE_DATE )
|
||||||
|
|
||||||
|
// CharacterId, ClassIdx, Exp, Lvl
|
||||||
|
auto stmtClass = g_charaDb.getPreparedStatement( Db::CharaDbStatements::CHARA_CLASS_INS );
|
||||||
|
stmtClass->setInt( 1, m_id );
|
||||||
|
stmtClass->setInt( 2, g_exdData.m_classJobInfoMap[m_class].exp_idx );
|
||||||
|
stmtClass->setInt( 3, 0 );
|
||||||
|
stmtClass->setInt( 4, 1 );
|
||||||
|
g_charaDb.directExecute( stmtClass );
|
||||||
|
|
||||||
auto stmt = g_charaDb.getPreparedStatement( Db::CharaDbStatements::CHARA_INS );
|
auto stmt = g_charaDb.getPreparedStatement( Db::CharaDbStatements::CHARA_INS );
|
||||||
|
|
||||||
stmt->setInt( 1, m_accountId );
|
stmt->setInt( 1, m_accountId );
|
||||||
|
@ -256,11 +266,9 @@ namespace Core {
|
||||||
stmt->setBinary( 29, questTracking8 );
|
stmt->setBinary( 29, questTracking8 );
|
||||||
stmt->setBinary( 30, aetherytes );
|
stmt->setBinary( 30, aetherytes );
|
||||||
stmt->setInt( 31, m_gmRank );
|
stmt->setInt( 31, m_gmRank );
|
||||||
|
|
||||||
g_charaDb.directExecute( stmt );
|
g_charaDb.directExecute( stmt );
|
||||||
|
|
||||||
g_charaDb.execute( "INSERT INTO characlass (CharacterId, Lv_" + std::to_string( g_exdData.m_classJobInfoMap[m_class].exp_idx ) + ", UPDATE_DATE ) "
|
|
||||||
" VALUES (" + std::to_string( m_id ) + ", 1, NOW());" );
|
|
||||||
|
|
||||||
g_charaDb.execute( "INSERT INTO charainfosearch (CharacterId, UPDATE_DATE ) VALUES (" + std::to_string( m_id ) + ", NOW());" );
|
g_charaDb.execute( "INSERT INTO charainfosearch (CharacterId, UPDATE_DATE ) VALUES (" + std::to_string( m_id ) + ", NOW());" );
|
||||||
|
|
||||||
|
|
|
@ -88,6 +88,8 @@ Core::Entity::Player::Player() :
|
||||||
memset( m_name, 0, sizeof( m_name ) );
|
memset( m_name, 0, sizeof( m_name ) );
|
||||||
memset( m_stateFlags, 0, sizeof( m_stateFlags ) );
|
memset( m_stateFlags, 0, sizeof( m_stateFlags ) );
|
||||||
memset( m_searchMessage, 0, sizeof( m_searchMessage ) );
|
memset( m_searchMessage, 0, sizeof( m_searchMessage ) );
|
||||||
|
memset( m_classArray, 0, sizeof( m_classArray ) );
|
||||||
|
memset( m_expArray, 0, sizeof( m_expArray ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::Entity::Player::~Player()
|
Core::Entity::Player::~Player()
|
||||||
|
|
|
@ -414,9 +414,10 @@ void Core::Entity::Player::updateDbClass() const
|
||||||
{
|
{
|
||||||
uint8_t classJobIndex = g_exdData.m_classJobInfoMap[static_cast< uint8_t >( getClass() )].exp_idx;
|
uint8_t classJobIndex = g_exdData.m_classJobInfoMap[static_cast< uint8_t >( getClass() )].exp_idx;
|
||||||
|
|
||||||
|
//Exp = ?, Lvl = ? WHERE CharacterId = ? AND ClassIdx = ?
|
||||||
auto stmtS = g_charaDb.getPreparedStatement( Core::Db::CHARA_CLASS_UP );
|
auto stmtS = g_charaDb.getPreparedStatement( Core::Db::CHARA_CLASS_UP );
|
||||||
stmtS->setInt( 1, getLevel() );
|
stmtS->setInt( 1, getExp() );
|
||||||
stmtS->setInt( 2, getExp() );
|
stmtS->setInt( 2, getLevel() );
|
||||||
stmtS->setInt( 3, m_id );
|
stmtS->setInt( 3, m_id );
|
||||||
stmtS->setInt( 4, classJobIndex );
|
stmtS->setInt( 4, classJobIndex );
|
||||||
g_charaDb.execute( stmtS );
|
g_charaDb.execute( stmtS );
|
||||||
|
|
Loading…
Add table
Reference in a new issue