28

» WarCraft 3 / Принципы освещения

OVOgenez, использовал древнюю MdxLib.dll от Магоса, которая умеет читать и записывать mdx800 модели.
А для поиска файлов можно написать несложный код, который пробежится по моделям из папки с распакованным варкрафтом.
например
        static void SearchFiles(string folderPath)
        {
            foreach (string file in Directory.EnumerateFiles(folderPath, "*.mdx", SearchOption.AllDirectories))
            {
                try
                {
                    CModel model = new CModel();
                    using (FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read))
                    {
                        new CMdx().Load(file, fileStream, model);

                        if (model.Lights.Count > 0)
                        {
                            foreach (var light in model.Lights)
                            {
                                float attStart = light.AttenuationStart.GetValue();
                                float attEnd = light.AttenuationEnd.GetValue();

                                if (attStart != 80f || attEnd != 200f)
                                {
                                    Console.WriteLine($"{file.Remove(0, folderPath.Length)} | {light.Type} {light.Name}: Att Start: {attStart}, Att End: {attEnd}");
                                }
                            }
                        }
                    }
                }
                catch 
                {
                    continue;
                }
            }

            Console.WriteLine("All files have been processed");
        }
Загруженные файлы
28

» WarCraft 3 / Способность у воды

This. А проверять можно через
if not IsTerrainPathable(x, y, PATHING_TYPE_FLOATABILITY)
28

» WarCraft 3 / Помощь с LUA-кодом

Kalvin273, а, ну и в lua эти 'A000' работать не будут, нужно делать через FourCC(raw) или сразу забивать данные в таблицу абилок через целые числа
28

» WarCraft 3 / Помощь с LUA-кодом

Принятый ответ
Kalvin273, во-первых, функция SetAbilityCooldown(caster, ability) в этом коде вообще никогда не вызывается.
Во-вторых, даже если бы она вызывалась, то скорее всего она бы не работала, так как я не вижу, где тут функция GetAbilityId, возможно имелось ввиду BlzGetAbilityId(whichAbility).
В-третьих, даже если бы она работала, то она бы ничего не делала, так как она просто берёт число и умножает на 0.5, никуда его не возвращая.
Интуитивно кажется, что нужно переделать так, хотя я не могу утверждать, что отлов каста сделан правильно, никогда таким не занимался.
function SetAbilityCooldown(ability)
    local cooldown = AbilitiesCooldown[BlzGetAbilityId(ability)] or 0

    if CheckHaveOctarine() then
        return cooldown * 0.5
    end
    return cooldown
end

-- ...

TriggerAddAction(abilityCastTrigger, function()
    local caster = GetTriggerUnit()
    local ability = BlzGetUnitAbility(caster, GetSpellAbilityId())
    BlzStartUnitAbilityCooldown(caster, ability, SetAbilityCooldown(ability))
end)
28

» WarCraft 3 / Помощь с LUA-кодом

Не вижу в экшоне триггера вызова SetAbilityCooldown(), а аргумент cooldown там взялся из ниоткуда.
Загруженные файлы
28

» WarCraft 3 / Анимации текстур

Как я ни пытался, но заставить хоть как-то работать масштабирование или даже вращение у меня не вышло, и если шансы на корректную работу второго были низки из-за кватернионов, то неработоспособность масштабирования вызвала у меня глубокое недоумение. Ну тут уж ничего не сделать (хотя вы, конечно же, можете попытаться)
На случай, если сюда когда-нибудь кто-нибудь зайдёт, отмечу, что и масштабирование и поворот в варкрафте прекрасно работают, и на самом деле всегда работали (за анимирование в вар3ме не скажу, не пытался).

Поворот

Результат

Масштабирование

Результат
28

» WarCraft 3 / Как пропатчить Warcraft III с версии 1.21b до 1.30.4?

Тут бы, конечно, начать с вопроса для чего вообще нужен патч 1.30.4, и какая конечная цель
А вообще, никак не пропатчить. Последним отдельно выпущенным патчем был 1.27b, начиная с 1.28+ только искать пиратские сборки игры нужных версий.
Если есть оригинальный лицензионный ключ, то можно зарегистрировать его в баттлнет, и поставить актуальный 1.36.2
28

» WarCraft 3 / ЦВЕТ - как из игры получить точные значения playercolor в RGB кодировке ?

Да и для рефа можно было бы и не делать простыню элсифов на джассе
PlayerColorConstants = {
    [PLAYER_COLOR_RED] = "F80402", -- 1
    [PLAYER_COLOR_BLUE] = "0041F8", -- 2
    [PLAYER_COLOR_CYAN] = "1AE4B5", -- 3
    [PLAYER_COLOR_PURPLE] = "52007D", -- 4
    [PLAYER_COLOR_YELLOW] = "F8F900", -- 5
    [PLAYER_COLOR_ORANGE] = "F8880D", -- 6
    [PLAYER_COLOR_GREEN] = "20BD00", -- 7
    [PLAYER_COLOR_PINK] = "DD5AAA", -- 8
    [PLAYER_COLOR_LIGHT_GRAY] = "909492", -- 9
    [PLAYER_COLOR_LIGHT_BLUE] = "7ABDEA", -- 10
    [PLAYER_COLOR_AQUA] = "106145", -- 11
    [PLAYER_COLOR_BROWN] = "4D2A05", -- 12
}

function GetColorReforged(player)
    return PlayerColorConstants[GetPlayerColor(player)] or ""
end
28

» Game Dev / Вышел Blender 4.2 LTS!

N7 Molot, пользовательские плагины сами собой под новые версии не обновляются, поэтому стим не всегда удобен
28

» WarCraft 3 / ЦВЕТ - как из игры получить точные значения playercolor в RGB кодировке ?

предварительно их узнать через извлечение текстур тимколора
Тоже не понимаю с чего автор взял, что цвета команды находятся в коде игры, и что их можно получить через джасс.
Цвет команды берётся буквально из текстуры, которую можно, например, подменить
Загруженные файлы
28

» WarCraft 3 / Возможно ли урезать Warcraft 3 Reforged?

Принятый ответ
Не слышал о существовании возможности изменения файлов в CASC. Чтение архива и извлечение файлов возможны, редактирование — не факт.
Начать изучение этого вопроса можно отсюда
28

» WarCraft 3 / Прогрузка карты в редакторе

Принятый ответ
Зажать Ctrl и покрутить скролл мыши вниз до нужной дальности прорисовки
28

» WarCraft 3 / Принципы освещения

По дефолту у всех моделей освещения вара стоят значения 80 и 200, это потому что
На самом деле не у всех, хотя цель этих настроек и не очевидна
список
Abilities\Spells\Demon\DemonBoltImpact\DemonBoltImpact.mdx | Omnidirectional Omni01: Att Start: 40, Att End: 52
Abilities\Spells\Demon\RainOfFire\RainOfFireTarget.mdx | Omnidirectional Omni01: Att Start: 0, Att End: 0
Abilities\Spells\Human\ManaFlare\ManaFlareBoltImpact.mdx | Omnidirectional Omni01: Att Start: 40, Att End: 52
Abilities\Spells\NightElf\ManaBurn\ManaBurnTarget.mdx | Omnidirectional Omni01: Att Start: 40, Att End: 52
Abilities\Weapons\Bolt\BoltImpact.mdx | Omnidirectional Omni01: Att Start: 40, Att End: 52
Abilities\Weapons\DemonHunterMissile\DemonHunterMissile.mdx | Omnidirectional Omni01: Att Start: 0, Att End: 0
Doodads\Ruins\Props\Firepot\Firepot.mdx | Omnidirectional Omni01: Att Start: 200, Att End: 400
UI\Glues\SinglePlayer\HumanCampaign3D\HumanCampaign3D.mdx | Omnidirectional Omni01: Att Start: 964, Att End: 988
UI\Glues\SinglePlayer\HumanCampaign3D\HumanCampaign3D.mdx | Omnidirectional Omni02: Att Start: 964, Att End: 988
UI\Glues\SinglePlayer\HumanCampaign3D\HumanCampaign3D.mdx | Omnidirectional Omni04: Att Start: 964, Att End: 988
UI\Glues\SinglePlayer\HumanCampaign3D\HumanCampaign3D.mdx | Omnidirectional Omni05: Att Start: 964, Att End: 988
UI\Glues\SinglePlayer\HumanCampaign3D\HumanCampaign3D.mdx | Omnidirectional Omni06: Att Start: 964, Att End: 988
UI\Glues\SinglePlayer\NightElfCampaign3D\NightElfCampaign3D.mdx | Omnidirectional Omni02: Att Start: 80, Att End: 6999
UI\Glues\SinglePlayer\NightElfCampaign3D\NightElfCampaign3D.mdx | Omnidirectional Omni01: Att Start: 80, Att End: 6999
UI\Glues\SinglePlayer\NightElfCampaign3D\NightElfCampaign3D.mdx | Omnidirectional Omni04: Att Start: 80, Att End: 6999
UI\Glues\SinglePlayer\NightElfCampaign3D\NightElfCampaign3D.mdx | Omnidirectional Omni06: Att Start: 80, Att End: 6999
UI\Glues\SinglePlayer\NightElfCampaign3D\NightElfCampaign3D.mdx | Omnidirectional Omni07: Att Start: 80, Att End: 6999
Units\NightElf\EvilIllidan\IllidanEvil.mdx | Omnidirectional Omni01: Att Start: 40, Att End: 52
Units\NightElf\HeroDemonHunter\HeroDemonHunter.mdx | Omnidirectional Omni01: Att Start: 40, Att End: 52
28

» WarCraft 3 / RMS Twilac Edition

Что касается Open Jdk, то я его просто распаковал и всё, никакого установщика там не было. Как тогда его ставить?
Установщик здесь
Загруженные файлы
28

» WarCraft 3 / RMS Twilac Edition

EugeAl, что-то я не помню, что бы где-то указывал exe вручную, вроде сразу по дабл клику всегда открывалось. А openJDK установил? Кто-то в комментах писал, что нужен именно установленный, а не из распакованного архива.
Хз насчёт указания java.exe врчную, по крайней мере, лично у меня адрес экзешника у процесса такой C:\Program Files\Eclipse Adoptium\jdk-17.0.4.101-hotspot\bin\javaw.exe. Это как бы само выставилось, я ничего с этим не делал.
Но OpenJDK именно из инсталлятора ставил на компик
Загруженные файлы
28

» WarCraft 3 / Кастомный ScoreScreen

Принятый ответ
Если речь о визуальном оформлении, то все нужные модели и текстуры находятся в архиве игры по адресу ui\glues\scorescreen.
Любой из этих файлов можно изменить на своё усмотрение, используя соответствующий софт, и импортировать в карту.
Загруженные файлы
28

» WarCraft 3 / Как в редакторе моделей сделать удаление объекта во время его разрушения?

Принятый ответ
Конкретно в кейсе на видео, кажется, что лучшим вариантом было бы начать опускать статую вниз во время анимации Death, чтобы она как бы плавно ушла под землю, а не резко исчезла. В Decay анимациях уже скрыть.
Помогите пожалуйста в интернете не могу найти решение.
FAQ по моделингу, раздел анимирование, вопрос 5.

Можно также сделать это в ретере Твилака. Нужно настроить свойство Alpha у нужных мешей для нужных анимаций.
Загруженные файлы
28

» WarCraft 3 / Randomizer 0: Da Boyz Depart

Рандомайзер прикольно, но уже джва года жду, когда кто-нибудь запилит полноценный chaos mode, вроде тех, что делают в гта, со случайными игровыми событиями, переворачивающейся камерой, исчезающим UI, рандомно перетасоваными диалогами, и прочими приколами