26

» WarCraft 3 / GetTriggerPlayer( )

Я не понял, как понять "всё равно нужно" ? :-)
Ну если ты ссылаешься на владельца юнита-инициатора, и получаешь того же игрока, которым является игрок-инициатор - то почему не ссылаться сразу на игрока?)) можно
26

» WarCraft 3 / Можете предложить как написать спелл

Принятый ответ
Можно просто дать морф алхимику в огра без гоблина
И рядом создать самого гоблина, поставить ему нужный уровень и скиллы
При прокачке какой либо способности - чекать уровни и выравнивать их...
Можешь потренироваться на модельках гипогрифа и лучницы ))
26

» WarCraft 3 / Предмет: характеристики - название, что это?

Ну обычно у пассивных предметов там ничего нет...
Но а что на счёт анти-магического амулета? или аналоги
Его КД будет работать нормально?
26

» WarCraft 3 / GetTriggerPlayer( )

Вообще, по коду - да, ты можешь заменить одно на другое, НО...
не надо это делать прям ВЕЗДЕ
делай это только там, где тебе всё равно нужно получить владельца юнита-инициатора
но это какая-то неочень ценная экономия будет...
26

» WarCraft 3 / Предмет: характеристики - название, что это?

Принятый ответ
у предмета есть два пункта с указанием скиллов
первый - скиллы в самом предмете
второй - один скилл, по которому будет проводиться взаимосвязь предмета с другими
Подразумивается его правильное отображение требуемой маны и КД...
на счёт КД так же есть специфика - предметы в одинаковым скиллом перезарящаются вместе.
Пример:
Зелье омоложения, настой омоложения, эликсир омоложения, свиток омоложения...
У каждого предмета своя абилка, со своими парамтерами (что-то хилит больше, что-то меньше), но все они будут иметь один из скиллов в той графе, о которой ты спрашиваешь.
В итоге используя что-либо из этого списка - перезарядка начнётся у всех этих предметов.
Как можно использовать? Дагон из ДОТЫ
5 предметов, с 5 молниями на 400/500/600/700/800 урона, и уменьшающимся КД и МК.
Но используя любой из них - перезарядка идёт на всех.
Если бы этого небыло - ты мог бы использовать дагон на 700 урона и на 800 поочерёдно... а если все сразу - то просто расстреливать одним и тем же предметом (по сути)
26

» WarCraft 3 / Атака (запуск снаряда)

кое кто делал снаряды триггерными
делая дальнюю атаку мгновенной
в итоге отлавливалось получение урона целью (отхил мб), и делалось то что нужно
26

» WarCraft 3 / Усиление (точнее название не могу придумать, сорри)

а глобалки бывают не _udg ?
udg_ это специальная приписка для глобалок создаваемых редактором триггеров через список переменных...
26

» WarCraft 3 / Иконка способности в сфере замедления

находится в сфере, значит она будет выглядеть затемнённой
это DIS_BTN иконка
если просто дать - то иконка норм, это просто BTN иконка...
вывод? - у него на иконке не работает DIS версия
вариант 1 - он не импортировал парную DIS иконку
вариант 2 - он импортировал DIS иконку неправильно
26

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

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

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

ща скину функцию
// Reset CD of one Ability
function UnitResetCooldownAbility takes unit u, integer i returns nothing
    local integer l = GetUnitAbilityLevel(u,i)
    if l > 0 then
        call UnitRemoveAbility(u,i)
        call UnitAddAbility(u,i)
        call SetUnitAbilityLevel(u,i,l)
    endif
    set u = null // ololo
endfunction
Используешь так, u = юнит которому нужно сбросить кд скилла, i = равкод нужного скилла
call UnitResetCooldownAbility( u, i )
или так (юнит - тот кто вызвал триггер, скилл - который вызвал триггер)
call UnitResetCooldownAbility( GetTriggerUnit(), GetSpellAbilityId() )
26

» WarCraft 3 / Формулы в РО

Принятый ответ
Заполнение описаний делается вручную... (нет, это не сложно)
с этим ты потратишь больше времени, а если скиллы триггерные - то вообще бесполезно
26

» WarCraft 3 / Уровень способности

Принятый ответ
Есть один фокус, я его давно нашёл и использую.
Ты можешь дать юниту предмет, в этот момент юнит получит все абилки из предмета. Если ты изменишь им уровень - параметры точно так же поменяются. Если выбросишь предмет - абилки с повышенными уровнями удаляться нормально.
Таким образом можно создать "Когти атаки (+6)", которые будут иметь абилку на +6/8/10 атаки. В нужный момент даёшь предмету 1 заряд, выбрасываешь его, и возвращаешь. При подборе смотришь сколько зарядов, если больше 0 - даёшь абилке уровень равный зарядам +1 (и повторять это каждый, когда предмет подбирается, т.к. уровни абилок за предметом не сохраняются). В итоге получаешь что-то вроде чарки / заточки предмета, без лишнего геморроя с заменой, но описание предмета будет неизменно, офк
Суть в том что нельзя регулировать уровень одинаковых абилок если "Когтей" несколько в инвентаре... нельзя напрямую. Можно выбросить предмет и дать его снова, тогда его абилки будут как бы последними в очереди... и ссылаясь на абилку можно регулировать уровень бонусов именно от последнего предмета...
26

» WarCraft 3 / Отображение урона и отхила.

Заменить простое повышение хп юнита на отдельную функцию
Которая будет принимать юнита и число отхила
Внутри будет создание текст-тага с указанным числом около юнита и собственно отхил юнита
Далее весь хил в карте будешь делать триггерно через эту функцию...
26

» WarCraft 3 / Как отловить остаток здоровья?

Принятый ответ
Событие: юнит БОСС получает урон
Условие: текущее здоровье юнита / макс.здоровье юнита <= 0.5
Действия: то что тебе нужно
26

» WarCraft 3 / Кик игрока

локально заверши игру ему, вот и всё
call EndGame() или как-то так
26

» WarCraft 3 / Отлов уровня воды

Берёшь координаты, или точку (одно и другого получить можно, в обе стороны)
Проверяешь подходит ли точка для плавания
Если да - то это либо мелководье, либо глубоководье
Проверяешь подходит ли точка для ходьбы
Если нет - это глубоководье, если да - это мелководье
Далее ты можешь ещё проверить уровень склона (клифф) в точке, но проверки на проходимость и так должно быть достаточно... проверкой уровня ты лишь получишь то на какой высоте эта вода... (а она может быть на разных высотах).
Что собственно я и написал с самого начала... но кто-то не догнал, прпиходится разжёвывать
26

» WarCraft 3 / Отлов уровня воды

уровень клифа, подходящего для плавания, но не подходящего для ходьбы, что ли?
26

» WarCraft 3 / Уровни и способности (для чайника)

юнит приобретает способность
приобретённая способность == Абилка А
заблокировать для игрока (владелец юнита-инициатора) способность "Абилка Б"
и точно так же если Б то заблокировать А