28

» WarCraft 3 / Почему не работает абилка?(чекните GetDistance)

return полученная способность
Это событие относится к героям, когда они увеличивают уровень способности для героев.
Тебе нужна функция GetLearnedSkill().
28

» WarCraft 3 / Почему не работает абилка?(чекните GetDistance)

quq_CCCP, а вот верно.
globals
...
    unit Caster
endglobals

function TakeUnitsFilter takes nothing returns boolean
    return GetFilterUnit() != Caster and IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(Caster))
endfunction

...

    set Caster = caster
    call GroupEnumUnitsInRange(targets, x, y, 100., Filter(function TakeUnitsFilter))
    set target = FindClosestToXY(targets, x, y)
    if target != null then
        call UnitDamageTargetBJ(caster, target, 100., ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL)
        set target = null
    endif
28

» WarCraft 3 / Почему не работает абилка?(чекните GetDistance)

DopaMine, добавь проверку, что target != caster.
    if target != null and target != caster then
        call UnitDamageTargetBJ(caster, target, 100., ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL)
    endif
    set target = null
28

» WarCraft 3 / Почему не работает абилка?(чекните GetDistance)

Принятый ответ
function PolarProjectionX takes real x, real dist, real angle returns real
    return x + dist * Cos(angle * bj_DEGTORAD)
endfunction

function PolarProjectionY takes real y, real dist, real angle returns real
    return y + dist * Sin(angle * bj_DEGTORAD)
endfunction

function Trig_Hit_Actions takes nothing returns nothing
    local unit caster = GetTriggerUnit()
    local real face = GetUnitFacing(caster)
    local real x = PolarProjectionX(GetUnitX(caster), 100., face)
    local real y = PolarProjectionY(GetUnitY(caster), 100., face)
    local group targets = CreateGroup()
    local unit target
    call GroupEnumUnitsInRange(targets, x, y, 100., null)
    set target = FindClosestToXY(targets, x, y)
    if target != null then
        call UnitDamageTargetBJ(caster, target, 100., ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL)
        set target = null
    endif
    set caster = null
    call DestroyGroup(targets)
    set targets = null
endfunction
DopaMine, у тебя нет вызова FindClosestUnitXY.
28

» WarCraft 3 / Почему не работает абилка?(чекните GetDistance)

Так ты функцию нахождения юнита не вызвал.
Ты не наносишь урон, а отнимаешь здоровье, килл твоему кастеру не засчитается.
28

» WarCraft 3 / Получение координат каждого юнита в группе

Pow(2, 128)
Я бы вообще поставил максимальный float, но было лень гуглить.
Заметка для оптимизации: экономичнее не извлекать квадратный корень, а сравнивать с квадратом дистанции.
Верно, так даже точнее будет.
28

» WarCraft 3 / Получение координат каждого юнита в группе

Принятый ответ
Функции дистанции
function GetDistancePoints takes real x1, real y1, real x2, real y2 returns real
return SquareRoot((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2))
endfunction
function GetDistanceUnitPoint takes unit u, real x, real y returns real
local real dx = GetUnitX(u) - x
local real dy = GetUnitY(u) - y
return SquareRoot(dx * dx + dy * dy)
endfunction
function GetDistanceUnits takes unit u1, unit u2 returns real
local real dx = GetUnitX(u1) - GetUnitX(u2)
local real dy = GetUnitY(u1) - GetUnitY(u2)
return SquareRoot(dx * dx + dy * dy)
endfunction
Узнать ближайшего юнита к (x, y)
globals
    real X
    real Y
    unit ClosestUnit
    real Distance
endglobals

function FindClosestToXYCallback takes nothing returns nothing
    local real d = GetDistanceUnitPoint(GetEnumUnit(), X, Y)
    if d <= Distance then
        set Distance = d
        set ClosestUnit = GetEnumUnit()
    endif
endfunction

function FindClosestToXY takes group g, real x, real y returns unit
    set X = x
    set Y = y
    set ClosestUnit = null
    set Distance = 999999.
    call ForGroup(g, function FindClosestToXYCallback)
    return ClosestUnit
endfunction
28

» WarCraft 3 / Импорт звуков

Всё зависит от характеристик звука, с этим есть проблемы. В 1.31 скорее всего что-то подкрутили, потому там работает.
28

» WarCraft 3 / Где взять норм варкрафт

Можно поставить отсюда, тут можно выбрать локализацию. Из минусов: нет папки support, но это не страшно.
28

» WarCraft 3 / Что за ошибка?

Принятый ответ
Ты делаешь возврат из функции, а потом обнуляешь переменную. Тут вообще не нужна переменная unit.
28

» WarCraft 3 / Аринас 1x1

ScopteRectuS, в редакторе можно сделать импорт со всеми надстройками.
28

» WarCraft 3 / Андуин - Набор иконок

Что это? Я например без понятия.
Граффити, как в шутерах. Просто картинка, которую можно напечатать в любом месте на карте.
28

» WarCraft 3 / lua таблица в таблице

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

» WarCraft 3 / lua таблица в таблице

ScopteRectuS, я думаю, что можно, ибо сам подобное буду использовать, но нужно помнить об этом и при удалении юнита убирать его из таблицы.
28

» WarCraft 3 / lua таблица в таблице

Принятый ответ
Я полагаю, надо сравнивать вот так, ибо индексация идёт с 1.
GROUP[GetHandleId(unit)][1] == nil
Ну и нужно вот так присваивать.
GROUP[caster_uid][1] = CreateGroup()