mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-08 15:58:04 +00:00
fix(Core/QuestTracker): do not store quest if quest_id is null (#4027)
This commit is contained in:
@@ -15876,7 +15876,7 @@ void Player::AddQuest(Quest const* quest, Object* questGiver)
|
|||||||
if (sWorld->getBoolConfig(CONFIG_QUEST_ENABLE_QUEST_TRACKER))
|
if (sWorld->getBoolConfig(CONFIG_QUEST_ENABLE_QUEST_TRACKER))
|
||||||
{
|
{
|
||||||
// prepare Quest Tracker datas
|
// prepare Quest Tracker datas
|
||||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_QUEST_TRACK);
|
auto stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_QUEST_TRACK);
|
||||||
stmt->setUInt32(0, quest_id);
|
stmt->setUInt32(0, quest_id);
|
||||||
stmt->setUInt32(1, GetGUIDLow());
|
stmt->setUInt32(1, GetGUIDLow());
|
||||||
stmt->setString(2, _HASH);
|
stmt->setString(2, _HASH);
|
||||||
@@ -15893,31 +15893,35 @@ void Player::AddQuest(Quest const* quest, Object* questGiver)
|
|||||||
|
|
||||||
void Player::CompleteQuest(uint32 quest_id)
|
void Player::CompleteQuest(uint32 quest_id)
|
||||||
{
|
{
|
||||||
if (quest_id)
|
if (!quest_id)
|
||||||
{
|
{
|
||||||
SetQuestStatus(quest_id, QUEST_STATUS_COMPLETE);
|
return;
|
||||||
|
|
||||||
uint16 log_slot = FindQuestSlot(quest_id);
|
|
||||||
if (log_slot < MAX_QUEST_LOG_SIZE)
|
|
||||||
SetQuestSlotState(log_slot, QUEST_STATE_COMPLETE);
|
|
||||||
|
|
||||||
Quest const* qInfo = sObjectMgr->GetQuestTemplate(quest_id);
|
|
||||||
if (qInfo && qInfo->HasFlag(QUEST_FLAGS_TRACKING))
|
|
||||||
{
|
|
||||||
RewardQuest(qInfo, 0, this, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Xinef: area auras may change on quest completion!
|
|
||||||
UpdateZoneDependentAuras(GetZoneId());
|
|
||||||
UpdateAreaDependentAuras(GetAreaId());
|
|
||||||
AdditionalSavingAddMask(ADDITIONAL_SAVING_INVENTORY_AND_GOLD | ADDITIONAL_SAVING_QUEST_STATUS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SetQuestStatus(quest_id, QUEST_STATUS_COMPLETE);
|
||||||
|
|
||||||
|
auto log_slot = FindQuestSlot(quest_id);
|
||||||
|
if (log_slot < MAX_QUEST_LOG_SIZE)
|
||||||
|
{
|
||||||
|
SetQuestSlotState(log_slot, QUEST_STATE_COMPLETE);
|
||||||
|
}
|
||||||
|
|
||||||
|
Quest const* qInfo = sObjectMgr->GetQuestTemplate(quest_id);
|
||||||
|
if (qInfo && qInfo->HasFlag(QUEST_FLAGS_TRACKING))
|
||||||
|
{
|
||||||
|
RewardQuest(qInfo, 0, this, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Xinef: area auras may change on quest completion!
|
||||||
|
UpdateZoneDependentAuras(GetZoneId());
|
||||||
|
UpdateAreaDependentAuras(GetAreaId());
|
||||||
|
AdditionalSavingAddMask(ADDITIONAL_SAVING_INVENTORY_AND_GOLD | ADDITIONAL_SAVING_QUEST_STATUS);
|
||||||
|
|
||||||
// check if Quest Tracker is enabled
|
// check if Quest Tracker is enabled
|
||||||
if (sWorld->getBoolConfig(CONFIG_QUEST_ENABLE_QUEST_TRACKER))
|
if (sWorld->getBoolConfig(CONFIG_QUEST_ENABLE_QUEST_TRACKER))
|
||||||
{
|
{
|
||||||
// prepare Quest Tracker datas
|
// prepare Quest Tracker datas
|
||||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_QUEST_TRACK_COMPLETE_TIME);
|
auto stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_QUEST_TRACK_COMPLETE_TIME);
|
||||||
stmt->setUInt32(0, quest_id);
|
stmt->setUInt32(0, quest_id);
|
||||||
stmt->setUInt32(1, GetGUIDLow());
|
stmt->setUInt32(1, GetGUIDLow());
|
||||||
|
|
||||||
|
|||||||
@@ -432,7 +432,7 @@ void WorldSession::HandleQuestLogRemoveQuest(WorldPacket& recvData)
|
|||||||
if (sWorld->getBoolConfig(CONFIG_QUEST_ENABLE_QUEST_TRACKER))
|
if (sWorld->getBoolConfig(CONFIG_QUEST_ENABLE_QUEST_TRACKER))
|
||||||
{
|
{
|
||||||
// prepare Quest Tracker datas
|
// prepare Quest Tracker datas
|
||||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_QUEST_TRACK_ABANDON_TIME);
|
auto stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_QUEST_TRACK_ABANDON_TIME);
|
||||||
stmt->setUInt32(0, questId);
|
stmt->setUInt32(0, questId);
|
||||||
stmt->setUInt32(1, _player->GetGUIDLow());
|
stmt->setUInt32(1, _player->GetGUIDLow());
|
||||||
|
|
||||||
|
|||||||
@@ -235,7 +235,7 @@ public:
|
|||||||
if (sWorld->getBoolConfig(CONFIG_QUEST_ENABLE_QUEST_TRACKER))
|
if (sWorld->getBoolConfig(CONFIG_QUEST_ENABLE_QUEST_TRACKER))
|
||||||
{
|
{
|
||||||
// prepare Quest Tracker datas
|
// prepare Quest Tracker datas
|
||||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_QUEST_TRACK_GM_COMPLETE);
|
auto stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_QUEST_TRACK_GM_COMPLETE);
|
||||||
stmt->setUInt32(0, quest->GetQuestId());
|
stmt->setUInt32(0, quest->GetQuestId());
|
||||||
stmt->setUInt32(1, player->GetGUIDLow());
|
stmt->setUInt32(1, player->GetGUIDLow());
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user