diff options
author | Machiavelli <none@none> | 2010-12-18 23:25:03 +0100 |
---|---|---|
committer | Machiavelli <none@none> | 2010-12-18 23:25:03 +0100 |
commit | a09340836080f02d4b724d215587aef805f90767 (patch) | |
tree | d23017c959edb409f6ecf93669db506607e119c9 /src | |
parent | 7196b880d6f28c4a98a026ab6f04dfcedb64e68d (diff) |
Core/Player: Convert _SaveAuras to prepared statement format
--HG--
branch : trunk
Diffstat (limited to 'src')
3 files changed, 29 insertions, 6 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 10b0e148925..b1e4435c55a 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -18086,7 +18086,9 @@ void Player::_SaveActions(SQLTransaction& trans) void Player::_SaveAuras(SQLTransaction& trans) { - trans->PAppend("DELETE FROM character_aura WHERE guid = '%u'",GetGUIDLow()); + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_AURA); + stmt->setUInt32(0, GetGUIDLow()); + trans->Append(stmt); for (AuraMap::const_iterator itr = m_ownedAuras.begin(); itr != m_ownedAuras.end() ; ++itr) { @@ -18116,11 +18118,24 @@ void Player::_SaveAuras(SQLTransaction& trans) } } - trans->PAppend("INSERT INTO character_aura (guid,caster_guid,spell,effect_mask,recalculate_mask,stackcount,amount0,amount1,amount2,base_amount0,base_amount1,base_amount2,maxduration,remaintime,remaincharges) " - "VALUES ('%u', '" UI64FMTD "', '%u', '%u', '%u', '%u', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%u')", - GetGUIDLow(), itr->second->GetCasterGUID(), itr->second->GetId(), effMask, recalculateMask, - itr->second->GetStackAmount(), damage[0], damage[1], damage[2], baseDamage[0], baseDamage[1], baseDamage[2], - itr->second->GetMaxDuration(), itr->second->GetDuration(),itr->second->GetCharges()); + uint8 index = 0; + stmt = CharacterDatabase.GetPreparedStatement(CHAR_ADD_AURA); + stmt->setUInt32(index++, GetGUIDLow()); + stmt->setUInt64(index++, itr->second->GetCasterGUID()); + stmt->setUInt32(index++, itr->second->GetId()); + stmt->setUInt8(index++, effMask); + stmt->setUInt8(index++, recalculateMask); + stmt->setUInt8(index++, itr->second->GetStackAmount()); + stmt->setInt32(index++, damage[0]); + stmt->setInt32(index++, damage[1]); + stmt->setInt32(index++, damage[2]); + stmt->setInt32(index++, baseDamage[0]); + stmt->setInt32(index++, baseDamage[1]); + stmt->setInt32(index++, baseDamage[2]); + stmt->setInt32(index++, itr->second->GetMaxDuration()); + stmt->setInt32(index++, itr->second->GetDuration()); + stmt->setUInt8(index, itr->second->GetCharges()); + trans->Append(stmt); } } diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp index c11fdb57cd0..5e5ab97e075 100755 --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp @@ -251,5 +251,10 @@ bool CharacterDatabaseConnection::Open() PrepareStatement(CHAR_ADD_EQUIP_SET, "INSERT INTO character_equipmentsets (guid,setguid,setindex,name,iconname,item0,item1,item2,item3,item4,item5,item6,item7,item8,item9,item10,item11,item12,item13,item14,item15,item16,item17,item18) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", true); PrepareStatement(CHAR_DEL_EQUIP_SET, "DELETE FROM character_equipmentsets WHERE setguid=?", true); + // Auras + PrepareStatement(CHAR_DEL_AURA, "DELETE FROM character_aura WHERE guid = ?", true); + PrepareStatement(CHAR_ADD_AURA, "INSERT INTO character_aura (guid,caster_guid,spell,effect_mask,recalculate_mask,stackcount,amount0,amount1,amount2,base_amount0,base_amount1,base_amount2,maxduration,remaintime,remaincharges) " + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", true); + return true; } diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h index 77b300640e5..e9b83fcfad8 100755 --- a/src/server/shared/Database/Implementation/CharacterDatabase.h +++ b/src/server/shared/Database/Implementation/CharacterDatabase.h @@ -210,6 +210,9 @@ enum CharacterDatabaseStatements CHAR_ADD_EQUIP_SET, CHAR_DEL_EQUIP_SET, + CHAR_DEL_AURA, + CHAR_ADD_AURA, + MAX_CHARACTERDATABASE_STATEMENTS, }; |