Работоспособность проверена на DBM версии 4.52 r4442 и сервере logon3 x1 PvE
Таймеры и способности в об и гер режимах иногда сильно различаются. Для выяснения текущей сложности инста в DBMе используется следующая функция:
где GetInstanceInfo() стандартная функция интерфейса WoW API, возвращающая подробную информацию об инсте.Код:function bossModPrototype:GetDifficulty() local _, instanceType, difficulty, _, _, playerDifficulty, isDynamicInstance = GetInstanceInfo() if instanceType == "raid" and isDynamicInstance then -- "new" instance (ICC) if difficulty == 1 then -- 10 men return playerDifficulty == 0 and "normal10" or playerDifficulty == 1 and "heroic10" or "unknown" elseif difficulty == 2 then -- 25 men return playerDifficulty == 0 and "normal25" or playerDifficulty == 1 and "heroic25" or "unknown" end else -- support for "old" instances if GetInstanceDifficulty() == 1 then return (self.modId == "DBM-Party-WotLK" or self.modId == "DBM-Party-BC") and "normal5" or self.hasHeroic and "normal10" or "heroic10" elseif GetInstanceDifficulty() == 2 then return (self.modId == "DBM-Party-WotLK" or self.modId == "DBM-Party-BC") and "heroic5" or self.hasHeroic and "normal25" or "heroic25" elseif GetInstanceDifficulty() == 3 then return "heroic10" elseif GetInstanceDifficulty() == 4 then return "heroic25" end end end
Блок
возвращает значение сложности (normal10/normal25/heroic10/heroic25/unknown) для инстов ЦЛК/РС в зависимости от значений параметров difficulty и playerDifficulty. Всё было бы хорошо, если бы GetInstanceInfo() не возвращал значения 3 и 4 для параметра difficulty в инстах ЦЛК/РС 10гер/25гер. А так как эта часть кода не обрабатывает значения difficulty равные 3 и 4, то никакое значение обратно не передаётся. Чтобы всё заработало "как надо", следует подкорректировать данную функцию:Код:if difficulty == 1 then -- 10 men return playerDifficulty == 0 and "normal10" or playerDifficulty == 1 and "heroic10" or "unknown" elseif difficulty == 2 then -- 25 men return playerDifficulty == 0 and "normal25" or playerDifficulty == 1 and "heroic25" or "unknown" end
Сама функция находится в файле DBM-Core.lua каталога DBM-CoreКод:function bossModPrototype:GetDifficulty() local _, instanceType, difficulty, _, _, playerDifficulty, isDynamicInstance = GetInstanceInfo() if instanceType == "raid" and isDynamicInstance then -- "new" instance (ICC) if difficulty == 1 or difficulty == 3 then -- 10 men return playerDifficulty == 0 and "normal10" or playerDifficulty == 1 and "heroic10" or "unknown" elseif difficulty == 2 or difficulty == 4 then -- 25 men return playerDifficulty == 0 and "normal25" or playerDifficulty == 1 and "heroic25" or "unknown" end else -- support for "old" instances if GetInstanceDifficulty() == 1 then return (self.modId == "DBM-Party-WotLK" or self.modId == "DBM-Party-BC") and "normal5" or self.hasHeroic and "normal10" or "heroic10" elseif GetInstanceDifficulty() == 2 then return (self.modId == "DBM-Party-WotLK" or self.modId == "DBM-Party-BC") and "heroic5" or self.hasHeroic and "normal25" or "heroic25" elseif GetInstanceDifficulty() == 3 then return "heroic10" elseif GetInstanceDifficulty() == 4 then return "heroic25" end end end




Ответить с цитированием
