|
Патчи на рассмотрении Рассматриваемые к принятию патчи |
|
Опции темы | Поиск в этой теме | Опции просмотра |
17.04.2010, 13:14 | #1 |
YTDB Dev
Регистрация: 06.03.2010
Сообщений: 259
Сказал(а) спасибо: 28
Поблагодарили 280 раз(а) в 136 сообщениях
|
[патч] Добавление условий в areatrigger_teleport(доступ по квестам)
Для доступа в новые подземелья, введены отдельные квесты для алов и орды, попытка реализовать.)
Код:
diff --git a/src/game/MiscHandler.cpp b/src/game/MiscHandler.cpp index a598130..ca25c32 100644 --- a/src/game/MiscHandler.cpp +++ b/src/game/MiscHandler.cpp @@ -781,16 +781,28 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPacket & recv_data) uint32 missingQuest = 0; if (!isRegularTargetMap) { - if (at->requiredQuestHeroic && !GetPlayer()->GetQuestRewardStatus(at->requiredQuestHeroic)) + if (at->requiredQuestHeroic2 && !GetPlayer()->GetQuestRewardStatus(at->requiredQuestHeroic2)) + missingQuest = at->requiredQuestHeroic2; + } + else + { + if (at->requiredQuestHeroic && !GetPlayer()->GetQuestRewardStatus(at->requiredQuestHeroic)) missingQuest = at->requiredQuestHeroic; } + + uint32 missingQuest2 = 0; + if (!isRegularTargetMap) + { + if (at->requiredQuest2 && !GetPlayer()->GetQuestRewardStatus(at->requiredQuest2)) + missingQuest2 = at->requiredQuest2; + } else { if (at->requiredQuest && !GetPlayer()->GetQuestRewardStatus(at->requiredQuest)) - missingQuest = at->requiredQuest; + missingQuest2 = at->requiredQuest; } - if(missingLevel || missingItem || missingKey || missingQuest) + if(missingLevel || missingItem || missingKey || missingQuest || missingQuest2) { // TODO: all this is probably wrong if(missingItem) @@ -799,6 +811,8 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPacket & recv_data) GetPlayer()->SendTransferAborted(at->target_mapId, TRANSFER_ABORT_DIFFICULTY, isRegularTargetMap ? DUNGEON_DIFFICULTY_NORMAL : DUNGEON_DIFFICULTY_HEROIC); else if(missingQuest) SendAreaTriggerMessage("%s", at->requiredFailedText.c_str()); + else if(missingQuest2) + SendAreaTriggerMessage("%s", at->requiredFailedText.c_str()); else if(missingLevel) SendAreaTriggerMessage(GetMangosString(LANG_LEVEL_MINREQUIRED), missingLevel); return; diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index b5ca24c..1f4873d 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -5454,7 +5454,7 @@ void ObjectMgr::LoadAreaTriggerTeleports() uint32 count = 0; // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 - QueryResult *result = WorldDatabase.Query("SELECT id, required_level, required_item, required_item2, heroic_key, heroic_key2, required_quest_done, required_quest_done_heroic, required_failed_text, target_map, target_position_x, target_position_y, target_position_z, target_orientation FROM areatrigger_teleport"); + QueryResult *result = WorldDatabase.Query("SELECT id, required_level, required_item, required_item2, heroic_key, heroic_key2, required_quest_done, required_quest_done2, required_quest_done_heroic, required_quest_done_heroic2, required_failed_text, target_map, target_position_x, target_position_y, target_position_z, target_orientation FROM areatrigger_teleport"); if (!result) { @@ -5487,13 +5487,15 @@ void ObjectMgr::LoadAreaTriggerTeleports() at.heroicKey = fields[4].GetUInt32(); at.heroicKey2 = fields[5].GetUInt32(); at.requiredQuest = fields[6].GetUInt32(); - at.requiredQuestHeroic = fields[7].GetUInt32(); - at.requiredFailedText = fields[8].GetCppString(); - at.target_mapId = fields[9].GetUInt32(); - at.target_X = fields[10].GetFloat(); - at.target_Y = fields[11].GetFloat(); - at.target_Z = fields[12].GetFloat(); - at.target_Orientation = fields[13].GetFloat(); + at.requiredQuest2 = fields[7].GetUInt32(); + at.requiredQuestHeroic = fields[8].GetUInt32(); + at.requiredQuestHeroic2 = fields[9].GetUInt32(); + at.requiredFailedText = fields[10].GetCppString(); + at.target_mapId = fields[11].GetUInt32(); + at.target_X = fields[12].GetFloat(); + at.target_Y = fields[13].GetFloat(); + at.target_Z = fields[14].GetFloat(); + at.target_Orientation = fields[15].GetFloat(); AreaTriggerEntry const* atEntry = sAreaTriggerStore.LookupEntry(Trigger_ID); if (!atEntry) @@ -5552,6 +5554,16 @@ void ObjectMgr::LoadAreaTriggerTeleports() } } + if (at.requiredQuest2) + { + QuestMap::iterator qReqItr = mQuestTemplates.find(at.requiredQuest2); + if (qReqItr == mQuestTemplates.end()) + { + sLog.outErrorDb("Table `areatrigger_teleport` has not existed required second quest %u for trigger %u, remove quest done requirement.",at.requiredQuest2,Trigger_ID); + at.requiredQuest2 = 0; + } + } + if (at.requiredQuestHeroic) { QuestMap::iterator qReqItr = mQuestTemplates.find(at.requiredQuestHeroic); @@ -5562,6 +5574,16 @@ void ObjectMgr::LoadAreaTriggerTeleports() } } + if (at.requiredQuestHeroic2) + { + QuestMap::iterator qReqItr = mQuestTemplates.find(at.requiredQuestHeroic2); + if (qReqItr == mQuestTemplates.end()) + { + sLog.outErrorDb("Table `areatrigger_teleport` has not existed required heroic second quest %u for trigger %u, remove quest done requirement.",at.requiredQuestHeroic2,Trigger_ID); + at.requiredQuestHeroic2 = 0; + } + } + MapEntry const* mapEntry = sMapStore.LookupEntry(at.target_mapId); if (!mapEntry) { diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h index a989f26..cac4e2b 100644 --- a/src/game/ObjectMgr.h +++ b/src/game/ObjectMgr.h @@ -117,7 +117,9 @@ struct AreaTrigger uint32 heroicKey; uint32 heroicKey2; uint32 requiredQuest; + uint32 requiredQuest2; uint32 requiredQuestHeroic; + uint32 requiredQuestHeroic2; std::string requiredFailedText; uint32 target_mapId; float target_X; Код:
ALTER TABLE areatrigger_teleport ADD COLUMN required_quest_done2 int(11) unsigned NOT NULL default '0' AFTER required_quest_done, ADD COLUMN required_quest_done_heroic2 int(11) unsigned NOT NULL default '0' AFTER required_quest_done_heroic; |
17.04.2010, 13:18 | #2 |
YTDB Dev
Регистрация: 01.02.2010
Сообщений: 115
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
|
Думаю этого не достаточно, ибо как показывает практика required_quest_done_heroic - к 25 нормал относится сейчас, если это не 5 инст
Итого, я так понял, сейчас по два квеста для 5 норм и 5 хероик, 10 нормал и 25 нормал... но 10 и 25 героик не затрагивают как и раньше Последний раз редактировалось timmit; 17.04.2010 в 13:21. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[patch]Скалирующиеся Маунты (Добавление) | evilstar | Отвергнутые патчи | 3 | 11.05.2010 23:42 |
[9677] Добавление Показателя блокирования | Antimozg | Принятые патчи | 1 | 06.04.2010 01:16 |
[SQL]Добавление квестовых спеллов в тренеров (3.Х.Х и 2.4.3) | Pro[100]Hens | Патчи и наработки | 3 | 11.03.2010 10:42 |
Добавление классовых квестовых скиллов тренерам для 3.0.X | xstream | Патчи и наработки | 0 | 07.03.2010 15:57 |