28

» Fa_losophy / FaMPQ

Самого задолбал этот варимпортет, особенно, когда с одной карты на другое всё переносишь
Вот как я делаю импорт в своей карте.
В карте есть триггер. Он обычно выключен.
Вот его содержимое. Тут записана команда на импорт файлов из папки zMapImport.
Путь к папке zMapImport прописан в jasshelper.conf.
Сама папка zMapImport содержит в себе вот что.
В некоторых папках тоже есть папки.

А теперь сам процесс импорта:
  1. Включаем триггер Import. Можно делать не триггером, а через Extensions -> Import Directory.
  2. Сохранем карту.
  3. Закрывем карту.

Теперь всё содержимое папки zMapImport есть в карте с сохранением своего расположения относительно zMapImport и отображается в Import Manager.

Уже после пункта 2 всё содержимое папки zMapImport есть в карте, но оно не отображается в Import Manager и будет удалено, если вы выключите триггер Import и сохраните карту опять. Аналогично и со способом через Extensions -> Import Directory.

Делаем на диске папку, в которой будут файлы для импорта с необходимым расположением относительно друг друга. Если нужно добавить файл, кидаем его в эту папку по нужному пути, выполняем действия 1-3. Если нужно обновить файл, обновляем его в этой папке, выполняем действия 1-3. Если нужно всё перенести в другую карту, делаем в ней триггер (или через Extensions -> Import Directory), выполняем действия 1-3.
28

» WarCraft 3 / Замедлить скорость анимации атаки

Графика - Анимация: обратный ход броска
Графика - Анимация: точка броска
Combat - Attack x - Animation Backswing Point (Real)
The amount of time it takes a unit/building/hero to go through half the physical movement necessary to attack something. If the unit/building/hero has no animations for attacking, the time set in this field still applies, but there will be no viewed physical movement. This field combines additively with "Combat - Attack x - Animation Damage Point" to form the total time taken to physically attack a target.
Combat - Attack x - Animation Damage Point (Real)
The amount of time it takes a unit/building/hero to go through half the physical movement necessary to attack something. If the unit/building/hero has no animations for attacking, the time set in this field still applies, but there will be no viewed physical movement. This field combines additively with "Combat - Attack x - Animation Backswing Point" to form the total time taken to physically attack a target.
Как я понял, это работает так: приказ атаковать -> проходит время из "Графика - Анимация: точка броска" -> снаряд бросается -> проходит время из "Графика - Анимация: обратный ход броска" -> юнит готов к следующему приказу.
28

» WarCraft 3 / Кампания-противостояние 2

А что за карта с Дальвенгиром (2 скриншот)? Я вообще не узнаю её...
Вторая миссия кампании Альянса TFT.
Иллидан также сильно изменился. Теперь в его состав войск входят не только наги, но и дренеи, демоны, демоническая орда, сатиры и высшие эльфы.
О, а вот это хорошо.
28

» WarCraft 3 / Скелеты из атаки

шанс на фатал еррор
Если не делать глупостей, но фатала не будет.
28

» WarCraft 3 / SharpCraft XGM Addon

нем это и так можно. Закидываешь там в папку tesh\includes файл .j со своими функциями и радуешься.
А глобалки пока нельзя. :(
28

» WarCraft 3 / Скелеты из атаки

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

» WarCraft 3 / Скелеты из атаки

кстати можно по идее так мины какие-нибудь спавнить и делать рендж сплеши при атаках или стазис ловушки и еще до фига... кул идея короче!
Полностью поддерживаю, но у юнита, что заспавнится уже из умершего даммика, будет таймер жизни, и он будет считаться суммоном.
Потому если нужен вечный выделяемый юнит, нужно сделать даммика без модели с равкодом Х, способность на основе 'Apts' с длительностью 0.01 и триггер с событием Enters map и условием на сравнение равкода и действием "Создать нужного юнита".

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

» WarCraft 3 / Jass утечка, спецэффект

function check takes nothing returns boolean
    local unit u = GetFilterUnit()
    local player p = GetOwningPlayer(caster)
    local real coneAngle = TransferDegrees(bj_RADTODEG * Atan2(GetUnitY(u) - GetUnitY(caster), GetUnitX(u) - GetUnitX(caster)))
    local real sector = 30
    local boolean answer =  u != caster and IsUnitEnemy(u, p) and IsUnitVisible(u, p) and IsUnitAliveBJ(u) and GetUnitFacing(caster) - coneAngle <= sector and GetUnitFacing(caster) - coneAngle >= sector - sector*2
    set u = null
    set p = null // игрока можно не обнулять, их всё же очень конечное количество.
    return answer
endfunction
На кол-во handles это никак не повлияло.
Потому что никто из твоих FilterUnit() не был убран из игры. Без обнуления после удаления юнита хэндл бы остался, а с обнулением, был бы освобождён для нового использования.
У них стандартное время смерти 5 секунд, смотри игровые константы.
Поставь в игровых константах Decay Time - Effects время меньше, но не очень маленькое, а то анимация смерти эффекта проигрываться не будет.

Чтобы не плодить переменные эффекта, сделай такие функции:
function CreateEffectPoint takes string s, real x, real y returns nothing
    call DestroyEffect(AddSpecialEffect(s, x, y))
endfunction

function CreateEffectTarget takes string s, widget w, string att returns nothing
    call DestroyEffect(AddSpecialEffectTarget(s, w, att))
endfunction
Во время сохранения при включённой оптимизации кода и выключенном режиме дебага эти 2 функции будут "раскрыты", и в конечном коде будут только DestroyEffect(AddSpecialEffectTarget(...)).
У Inline оптимизации есть некоторые требования для передаваемых параметров, потому функции не в некоторых случаях не будут "раскрыты".
28

» WarCraft 3 / Jass утечка, спецэффект

Да нет там никакой утечки -_-
Есть, ты не обнуляешь u. Как я уже сказал, создай логическую переменную, запиши ответ, обнули u и верни ответ.
28

» WarCraft 3 / Jass утечка, спецэффект

юзай тут глобалку
Тут можно создать локальную логическую, а хендлы обнулить.
KingMaximax:
ни удаляются с игры не сразу, а постепенно
У них стандартное время смерти 5 секунд, смотри игровые константы.
28

» WarCraft 3 / Jass утечка, спецэффект

если ты вызовешь функцию более одного раза за 0.3 секунды, то запаузенный триггер запустится заново, а созданный спецэффект не удалится.
Удалится, он же локальную переменную использует, а не глобальную, потому что при каждом запуске триггера создаётся новый поток.
28

» WarCraft 3 / Дальность атаки через предмет, триггер или способность

Можно использовать способность "Ловчий" для увеличения дальности, но тогда герой не может передвигаться. Ещё можно сделать герою даммики с разной дальностью, которые и будут атаковать. То есть если предмет есть - даммик один, предмет выкинул, даммик другой. Ещё можно использовать морфы.
28

» WarCraft 3 / Скелеты из атаки

потому что у него есть способность "aloc", москиты.
Так-то у скелета нет этой москитов изначально, Проверка также показала, что москитов тоже нет. Просто 'Apts' делает юнитов такими.
Загруженные файлы
28

» WarCraft 3 / Скелеты из атаки

У труповозок нежити есть способноть, которая создаёт облако в точке попадания. Воспользуйся ею, её равкод 'Apts'. В поле "Длительность" ставится длительность созданного юнита. Но созданный этой способностью юнит неуязвим и не может быть выделен.

Прикрепил карту с катапульной, которая спавнит скелетов при атаке.

Поэкспериментировал немного.
Юнит, призванный этой способностью, не вызывает события спавна, но вызывает событие "Входит в область". Ему также можно давать приказы триггерно.
Хм, так можно даммики делать.
Загруженные файлы
28

» WarCraft 3 / Отобрать контроль над юнитами

или триггерно снимать выделение.
Это происходит с небольшой задержкой, потому не лучший вариант. Либо передавать юнитов под власть другого игрока, либо так, как сказали выше.
28

» WarCraft 3 / Проблемы с постройкой зданий

а если поставил очередь строительства, потом блокировал постройки, то они всё равно строятся?
Нет, только что проверил.
28

» Fa_losophy / FaMPQ

А для обработки иконок есть BLP Laboratory.
Про обработку иконок (точнее создание рамок) это я сказал кстати, так я использую Button Manager для рамок, а BLP Lab только для оптимизации и конвертации.
28

» Fa_losophy / FaMPQ

Вот у меня вопрос в чём истинная цель создание ещё одного MPQ правщика, если есть другие. Вы хотите добиться умного импорта, которого нет у других правщиков. Али просто вы делаете его как хобби?
Как я уже говорил, весь функционал, которого не хватало Fakovу, есть в Grimex, Fakov просто о нём не знал. Я всё импортирую в 2 клика - включаю триггер, где 1 строка с импортом и сохраняю карту. Но карту нужно закрыть и открыть снова, а это большой минус для карт, загрузка которых требует продолжительного времени.

Я не хочу сказать, что Fakov занимается ерундой. Его утилита как раз подойдёт для громоздких карт. Ну а также, я надеюсь, эта утилита станет альтернативой Grimex, что хорошо.
Grimex помимо импорта, может сразу сделать нужное обрамление иконки и много чего ещё. Я тут в комментариях кидал мануал Grimex на английском.
28

» WarCraft 3 / Усиление нейтрально враждебных

А можно изначально дать способность всем нужным юнитам в Редакторе Объектов, но заблокировать её нейтрально-враждебному игроку. Как только нужные условия будут выполнены, разблокировать способность.
28

» WarCraft 3 / Добавление файлов в карту через mpq-редактор не действует.

Можно использовать утилиту Fakova, а можно, как я уже писал, использовать встроенный в JNPG Grimex, чем я и пользуюсь. Мануал Grimex прикрепил к своему предыдущему сообщению. Grimex также можно использовать из меню Extensions.
28

» WarCraft 3 / Добавление файлов в карту через mpq-редактор не действует.

Или необходимо, всё же, вручную, через редактор импорта, добавлять новые файлы?
Grimex в помощь. Нужен JNPG.
Загруженные файлы
28

» WarCraft 3 / Сделать берсерка доступным

Вот карта, где заблокирован Охотник за головами, но доступен Берсеркер.
Загруженные файлы
28

» WarCraft 3 / Сделать берсерка доступным


Также нужно помнить, что InitTechTree вызывается перед InitBlizzard, то есть ваши настройки игроков, сделанные с помощью Scenario -> Techtree\Abilities\Upgrades Properties будут применены раньше, чем запрет Парового такнка и Берсеркера.
Потому, чтобы разблокировать Берсеркера и заблокировать Охотника за головами, можно сделать улучшение на Берсеркера сразу исследованным в Scenario -> Upgrades Properties, а Охотника за головами заблокировать в Scenario -> Techtree Properties.
function main takes nothing returns nothing
    call SetCameraBounds(...)
    call SetDayNightModels(...)
    call NewSoundEnvironment("Default")
    call SetAmbientDaySound("LordaeronSummerDay")
    call SetAmbientNightSound("LordaeronSummerNight")
    call SetMapMusic("Music", true, 0)
    call InitSounds()
    call InitTechTree()
    call InitBlizzard()


    call InitGlobals()
    call InitCustomTriggers()
    call RunInitializationTriggers()

endfunction

На всякий случай убери его из особых
Этот параметр просто сортировка, он никак не влияет на доступность юнита.
28

» WarCraft 3 / Сделать берсерка доступным

function InitSummonableCaps takes nothing returns nothing
    local integer index

    set index = 0
    loop
        // upgraded units
        // Note: Only do this if the corresponding upgrade is not yet researched
        // Barrage - Siege Engines
        if (not GetPlayerTechResearched(Player(index), 'Rhrt', true)) then
            call SetPlayerTechMaxAllowed(Player(index), 'hrtt', 0)
        endif

        // Berserker Upgrade - Troll Berserkers
        if (not GetPlayerTechResearched(Player(index), 'Robk', true)) then
            call SetPlayerTechMaxAllowed(Player(index), 'otbk', 0)
        endif

        // max skeletons per player
        call SetPlayerTechMaxAllowed(Player(index), 'uske', bj_MAX_SKELETONS)

        set index = index + 1
        exitwhen index == bj_MAX_PLAYERS
    endloop
endfunction
Это функция, которая запускается из InitBlizzard, которая в свою очередь запускается из функции main. Она блокирует Берсеркера, Паровой танк и устанавливает лимит на скелетов.

Чтобы убрать Охотника за головами из казармы, но сделать доступным Берсеркера, нужно заблокировать у каждого игрока Охотника за головами и разблокировать Берсеркера.

Это функция, которая запускается из InitBlizzard, которая в свою очередь запускается из функции main.
Я это к тому, что если в карте нет //! inject main, то эта функция вызывается.
28

» WarCraft 3 / Проверка на уровень предмета.

В каком это редакторе? В меня стоит ещё старенький FNWE, когда зажимаю шифт даже не пишется ничего.
Выделяешь поле, жмёшь Shift+Enter, пишешь нужный уровень, жмёшь OK.