Приветствуем вас на форуме проекта WoW Circle. Если вы читаете это, значит не зарегистрировались у нас. Для того, чтобы получить доступ к расширенным возможностям нашего форума нажмите сюда и пройди регистрацию, которая не займет у вас много времени. После регистрации будут доступны новые, более расширенные, возможности.
Обрабатывается Игровая механика - WoW API GetInstanceInfo (определение сложности подземелья)

Упомянутые в теме пользователи:

Показано с 1 по 8 из 8

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Эксперт
    Регистрация
    17.01.2014
    Сообщений
    623
    Поблагодарил(а)
    0
    Получено благодарностей: 98 (сообщений: 59).
    Репутация: 98

    Игровая механика - WoW API GetInstanceInfo (определение сложности подземелья)

    16.10.2015

    С введением в патче 3.2.0 рейдового подземелья "Испытание крестоносца" появились два новых уровня сложности, ранее отсутствовавших в 3.x.x - "10 героич." и "25 героич." (до этого были только "10 игроков" и "25 игроков").
    Далее, с введением в патче 3.3.0 рейдового подземелья "Цитадель Ледяной Короны" появился так называемый динамический уровень сложности, ранее отсутствовавший в 3.x.x. Теперь можно было на ходу менять уровень сложности, подстраиваясь под возможности рейда. При этом он, по сути, оставался всё тем же "10 игроков" и "25 игроков". "Рубиновое святилище", появившееся в патче 3.3.5, работало по такой же схеме.

    Итого, в 3.3.5a было три категории рейдовых подземелий 3.x.x:

    "Склеп Аркавона", "Обсидиановое святилище", "Наксрамас", "Око вечности", "Логово Ониксии", "Ульдуар" - два режима сложности с отдельными кд: "10 игроков" и "25 игроков". При этом некоторые боссы Ульдуара имели так называемые "хард-мод режимы", что никак не отражалось на уровень сложности самого подземелья.
    "Испытание крестоносца" - четыре режима сложности с отдельными кд: "10 игроков", "25 игроков", "10 героич." и "25 героич."
    "Цитадель Ледяной Короны" и "Рубиновое святилище" - два уровня подземелья "10 игроков" и "25 игроков" с отдельными кд и динамической сменой сложности в процессе их прохождения. Итого четыре уровня сложности.

    На wowcircle сложности "Цитадель Ледяной Короны" и "Рубиновое святилище" специфичны, и аналогичны механике "Испытание крестоносца" (отдельные кд на норм и гер. версии, отсутствует динамическая смена сложности и т.д.).

    Теперь, собственно, суть проблемы:

    Для определения сложности подземелья используется функция GetInstanceInfo():

    name, type, difficultyIndex, difficultyName, maxPlayers, dynamicDifficulty, isDynamic, mapID = GetInstanceInfo()

    Скажем, для ИК она выдаёт:

    "Испытание крестоносца" "raid" 1 "10 игроков" 10 0 false
    "Испытание крестоносца" "raid" 2 "25 игроков" 25 0 false
    "Испытание крестоносца" "raid" 3 "10 игроков (героич.)" 10 0 false
    "Испытание крестоносца" "raid" 4 "25 игроков (героич.)" 25 0 false

    что вполне корректно.

    А вот что она выдаёт для РС:

    "Рубиновое святилище" "raid" 1 "10 игроков" 10 0 true
    "Рубиновое святилище" "raid" 2 "25 игроков" 25 0 true
    "Рубиновое святилище" "raid" 3 "10 игроков" 10 1 true
    "Рубиновое святилище" "raid" 4 "25 игроков" 25 1 true

    Однако, если посмотреть описание функции, то можно увидеть:

    In dynamic instances, difficultyIndex will only be 1 for 10man, or 2 25man.
    Т.е. должно быть:

    "Рубиновое святилище" "raid" 1 "10 игроков" 10 0 true
    "Рубиновое святилище" "raid" 2 "25 игроков" 25 0 true
    "Рубиновое святилище" "raid" 1 "10 игроков" 10 1 true
    "Рубиновое святилище" "raid" 2 "25 игроков" 25 1 true

    Собственно, из-за этой, казалось бы небольшой разницы, многие аддоны не понимают, что ЦЛК и РС имеет героич. режим 10 или 25 (нет обработки случаев difficultyIndex == 3 и difficultyIndex == 4)

    Вот, скажем, функция определения сложности инста в DBM'е:

    Код:
    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
    для ЦЛК/РС 10/25 гер возвратит nil, что совсем нехорошо.

  2. 1 пользователь сказал cпасибо Forest Dumb за это полезное сообщение:


Похожие темы

  1. Предупреждение пользователю КаржемелькО: Оскорбления пользователей
    от Инквизитор Вайтмейн в разделе Нарушители форума
    Ответов: 1
    Последнее сообщение: 04.01.2014, 21:05
  2. Ответов: 3
    Последнее сообщение: 17.10.2012, 08:53

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •