Единственная проблема, если ты используешь стандартный редактор карт
Если же используешь JNPG, то можно включить UMSWE. Тогда в GUI будет опция Local Player. Я бы всё же рекомендовал делать присвоение пустой строки в Иначе, потому что суть не меняется, а для локального игрока присвоений будет меньше (на 1).
В действиях выбираешь if/Then/Else (Если/То/Иначе), в условии пишешь проверку на локального игрока.
В То указываешь значение переменной на нужный путь.
В Иначе на "".
После этого блока создаёшь эффект.
Если анимация особая (как защита у пехотинцев или вихрь у мастера клинков), то можно просто добавить анимационный тег на время действия способности.
Для вихря нужно добавить тег "Spin".
А юнита, в которого делается морф, спеллбук есть?
Если есть, а такая проблема остаётся, можно попробовать каждую из способностей спеллбука делать постоянной триггерно (Действия - Боевая Единица - Make Ability Permanent).
Было бы неплохо вытащить это из чейнжлога в отдел Jass Syntax extensions.
И это никак нельзя отключить, печально. :(
Вряд ли это можно назвать хорошо. Эта та часть синтаксиса, что приводит к серьезной неразберихе. Подумать только, совершенно неявное приведение.
Хорошо, что теперь я и многие другие знают о таком сахаре.
Вообще, JassHelper любит кое-что менять не уведомляя.
Вот например, я забыл поставить равно.
globals
boolean B true
endglobals
JassHelper превратит это в
globals
boolean B
endglobals
То есть B будет без значения, и когда я буду его использовать, ожидая там изначальное значение, поток прервётся.
Хорошо, что последний pjass может такие случаи вывести на поверхность.
Ошибки нет, компилируется и работает нормально. Я даже больше скажу, совсем необязательно возвращать boolean, возвращаемый тип не имеет значения. У меня для краткости все фильтры возвращают nothing (то есть 32 нуля, что есть false).
Обёртка Filter() или Condition() нужна, если передавать функцию (code) как аргумент. LordDracula:
Потому что ему нужна не иллюзия, а клон, то есть заново созданный юнит. А героям не только ставится случайное имя из списка, но и прибавляется римская цифра после имени, если оно используется повторно. Если второй раз, то II, если третий, то III, если четвёртый, то IV, ну и так далее.
Конечно, вроде бы это решается, если сделать список имён пустым. Но такое себе решение.
Точно-точно, забыл, что имён может быть несколько.
Обычно в группу собираю всех юнитов, перебирая их вручную через цикл
Вот только фильтры куда быстрее циклов (JASS плохо справляется с циклами), а внутри фильтров можно делать абсолютно все необходимые действия.
Не могу понять как добавить в функции GroupEnumUnitsInRange фильтр, который добавлял бы в группу только врагов кастера.
Ниже пример, когда группа вообще не заполняется, а нужна только для вызова фильтра, чтобы выполнить нужные действия.
globals
player P
endglobals
function filter takes nothing returns boolean
if IsUnitEnemy(GetFilterUnit(), P) then
// твои действия
endif
return false
endfunction
function f takes integer i, real x, real, y, real range returns nothing
set P = Player(i)
call GroupEnumUnitsInRange(bj_lastCreatedGroup, x, y, range, function filter)
endfunction
2)предлагаю добавить создание триггер-события, которое могло бы влиять на броню и уменьшение героев и прочих юнитов, не так чтобы от 14 единиц брони урон уменьшался на 50%, а чтобы от 14 единиц брони урон бы уменьшался на 14%, от 28 единиц брони на 28%, но чтоб максимальное уменьшение урона была до 98%, а не 100% - иначе эффект будет неуязвимости от физических атак;
3)предлагаю добавить в редактор параметр изменения брони героям от повышения уровня и убрать зависимость брони от ловкости;
Это можно настроить в константах карты.
5)предлагаю добавить в WE событие, чтобы в игре на созданных картах музыкальное сопровождение менялось во время боевых действий (обнаружен(ы) вражеский(е)/нейтральный(ые) юнит(ы) вашим(и) юнитом(ами) либо вражеский(е)/нейтральный(ые) юнит(ы) обнаруживает(ют) вашего(ых) юнита(ов)), а чтобы после уничтожения вражеских/нейтральных войск либо ухода с их засвета мелодия б звучала по умолчанию либо указанная в WE (только в случае импорта музыкальных файлов для опредёлённой расы)
В теории можно это сделать, но придётся колдовать с союзниками и общим обзором.
Либо убирать общий обзор, либо никак :/
Для этого есть
native UnitShareVision takes unit whichUnit, player whichPlayer, boolean share returns nothing
Но вообще, на ответ вопрос очень простой: используем стандартную невидимость и стандартное обнаружение невидимости, которое будет только у некоторых юнитов.
Итак, персонаж будет невидим, но его будет видеть юнит с определённой способностью (со способностью обнаружения).
Вопрос решён.
» WarCraft 3 / Можно ли проиграть спецэффект только для отдельного игрока?
Ред. PT153
» WarCraft 3 / Можно ли проиграть спецэффект только для отдельного игрока?
Я бы всё же рекомендовал делать присвоение пустой строки в Иначе, потому что суть не меняется, а для локального игрока присвоений будет меньше (на 1).
» WarCraft 3 / Скилы из спеллбука пропадают при морфе
» WarCraft 3 / Можно ли проиграть спецэффект только для отдельного игрока?
В То указываешь значение переменной на нужный путь.
В Иначе на "".
После этого блока создаёшь эффект.
Ред. PT153
» WarCraft 3 / Как заставить юнита играть анимацию во время движения?
Для вихря нужно добавить тег "Spin".
» WarCraft 3 / Скилы из спеллбука пропадают при морфе
Если есть, а такая проблема остаётся, можно попробовать каждую из способностей спеллбука делать постоянной триггерно (Действия - Боевая Единица - Make Ability Permanent).
Ред. PT153
» WarCraft 3 / Убрать стандартные контролы 1.29
» WarCraft 3 / JASS GroupEnumUnitsInRange фильтр
И это никак нельзя отключить, печально. :(
Вот например, я забыл поставить равно.
Хорошо, что последний pjass может такие случаи вывести на поверхность.
» WarCraft 3 / Почему вы ливаете из игр в War3 или почему это делают другие?
Ливаю также, если
» WarCraft 3 / JASS GroupEnumUnitsInRange фильтр
Что же, очень хорошо, теперь будут знать.
» WarCraft 3 / Какие типы карт вы предпочитаете?
» WarCraft 3 / JASS GroupEnumUnitsInRange фильтр
Вот карта с примером.
» WarCraft 3 / JASS GroupEnumUnitsInRange фильтр
Обёртка Filter() или Condition() нужна, если передавать функцию (code) как аргумент.
LordDracula:
Ред. PT153
» WarCraft 3 / JASS GroupEnumUnitsInRange фильтр
» WarCraft 3 / Герой
» WarCraft 3 / Плохо работает способность
Ред. PT153
» WarCraft 3 / JASS GroupEnumUnitsInRange фильтр
» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)
» WarCraft 3 / Герой
» Мир безумного / WarCraft III Reforged - WE (что хотите увидеть?)
Сейчас это тоже можно сделать даже на 1.26.
» WarCraft 3 / Что то пошло не так
Ред. PT153
» WarCraft 3 / Как разделить данные структур статично?
Зачем вообще структура только для одного статичного масива?
JMCode:
Ред. PT153
» WarCraft 3 / Видимая невидимость
Итак, персонаж будет невидим, но его будет видеть юнит с определённой способностью (со способностью обнаружения).
Вопрос решён.
» WarCraft 3 / Призванные существа
» WarCraft 3 / Как сделать случайное событие?