25

» STALKER 2 / S.T.A.L.K.E.R. 2 выйдет, но не в этом году

Известно, что студия испытывает жестокий недостаток средств, и, скорее всего, сократит количество персонала вдвое.
25

» StarCraft / Blizzard Dota

А как новость зачем постить?
Вроде бы - не аргумент.
Торнак такой торнак ©
Про оформление вообще молчу.
25

» WarCraft 3 / Наработки

Громоздко, нерационально +с утечками. Для новичков - непонятно, для шарящих - глупо.
И опять же уже было.
25

» Minecraft / Скины в Minecraft

Чтобы вам было легче, есть несколько изображений, где уже отмечено какая часть изображения за что отвечает. Там все легко и понятно.
Это нужно подробно расписать, иначе не статья. И далеко не для всех это легко и понятно.
25

» Diablo / Никаких модов в Diablo 3

*Все кинулись не делать моды*
А ещё они запрещают качать игру с торрентов и пользоваться кряком=)
25

» WarCraft 3 / cJass - дополнение к языку JASS

Ошибочка с wehack.lua
Lua Error

wehack.lua:169: attempt to index global 'MenuEntryGroup' (a nil value)
Hanabishi добавил:
Ругается на
ah_version = MenuEntryGroup:New(ah_menu,"Game version switch")
25

» WarCraft 3 / Библиотека функций

GetEnumDestructable​​
Это баг форматирования текста на форуме. Почему-то форма кода иногда глючит.
25

» WarCraft 3 / Библиотека функций

alexprey, ну можно, но ориентироваться в функции будет сложнее
Так
function IsCoordsIn4Gon takes real x, real y, real rx1, real ry1, real rx2, real ry2, real rx3, real ry3, real rx4, real ry4 returns boolean
    local real array dist
    local boolean b = false
    set dist[1] = SquareRoot((rx1-rx2)*(rx1-rx2)+(ry1-ry2)*(ry1-ry2))
    set dist[2] = SquareRoot((rx2-rx3)*(rx2-rx3)+(ry2-ry3)*(ry2-ry3))
    set dist[3] = SquareRoot((rx3-rx4)*(rx3-rx4)+(ry3-ry4)*(ry3-ry4))
    set dist[4] = SquareRoot((rx4-rx1)*(rx4-rx1)+(ry4-ry1)*(ry4-ry1))
    set dist[5] = SquareRoot((rx1-rx3)*(rx1-rx3)+(ry1-ry3)*(ry1-ry3))
    set dist[6] = SquareRoot((x-rx1)*(x-rx1)+(y-ry1)*(y-ry1))
    set dist[7] = SquareRoot((x-rx2)*(x-rx2)+(y-ry2)*(y-ry2))
    set dist[8] = SquareRoot((x-rx3)*(x-rx3)+(y-ry3)*(y-ry3))
    if (dist[6]<=dist[1]) and (dist[6]<=dist[5]) and (dist[7]<=dist[1]) and (dist[7]<=dist[2]) and (dist[8]<=dist[2]) and (dist[8]<=dist[5]) then
        set b = true
    else
        set dist[7] = SquareRoot((x-rx4)*(x-rx4)+(y-ry4)*(y-ry4))
        if (dist[6]<=dist[1]) and (dist[6]<=dist[5]) and (dist[7]<=dist[1]) and (dist[7]<=dist[2]) and (dist[8]<=dist[2]) and (dist[8]<=dist[5]) then
            set b = true
        endif
    endif
    return b
endfunction
25

» WarCraft 3 / Библиотека функций

Можно выпилить dx с dy и вставить действия напрямую
Так
function IsCoordsIn4Gon takes real x, real y, real rx1, real ry1, real rx2, real ry2, real rx3, real ry3, real rx4, real ry4 returns boolean
    local real dist1
    local real dist2
    local real dist3
    local real dist4
    local real distS
    local real distR1
    local real distR2
    local real distR3
    local boolean b = false
    
    set dist1 = SquareRoot((rx1-rx2)*(rx1-rx2)+(ry1-ry2)*(ry1-ry2))
    set dist2 = SquareRoot((rx2-rx3)*(rx2-rx3)+(ry2-ry3)*(ry2-ry3))
    set dist3 = SquareRoot((rx3-rx4)*(rx3-rx4)+(ry3-ry4)*(ry3-ry4))
    set dist4 = SquareRoot((rx4-rx1)*(rx4-rx1)+(ry4-ry1)*(ry4-ry1))
    set distS = SquareRoot((rx1-rx3)*(rx1-rx3)+(ry1-ry3)*(ry1-ry3))
    
    set distR1 = SquareRoot((x-rx1)*(x-rx1)+(y-ry1)*(y-ry1))
    set distR2 = SquareRoot((x-rx2)*(x-rx2)+(y-ry2)*(y-ry2))
    set distR3 = SquareRoot((x-rx3)*(x-rx3)+(y-ry3)*(y-ry3))
    if (distR1<=dist1) and (distR1<=distS) and (distR2<=dist1) and (distR2<=dist2) and (distR3<=dist2) and (distR3<=distS) then
        set b = true
    else
        set distR2 = SquareRoot((x-rx4)*(x-rx4)+(y-ry4)*(y-ry4))
        if (distR1<=dist1) and (distR1<=distS) and (distR2<=dist1) and (distR2<=dist2) and (distR3<=dist2) and (distR3<=distS) then
            set b = true
        endif
    endif
    return b
endfunction
Hanabishi добавил:
Кстати нашёл ошибку, исправил.
25

» WarCraft 3 / Библиотека функций

Doc, а что моя тоже полезна, для вещей типа "нестандартный рект". Работает с четырёхугольными областями произвольной формы.
25

» WarCraft 3 / Библиотека функций

Функция вычисляет, принадлежат ли координаты (x,y) четырёхугольнику с вершинами: (rx1,ry1);(rx2,ry2);(rx3,ry3);(rx4,ry4).
Вершины вводить по порядку, т.е. не допускать "перекрутки" фигуры.
Код
function IsCoordsIn4Gon takes real x, real y, real rx1, real ry1, real rx2, real ry2, real rx3, real ry3, real rx4, real ry4, returns boolean
    local real dx
    local real dy
    local real dist1
    local real dist2
    local real dist3
    local real dist4
    local real distS
    local real distR1
    local real distR2
    local real distR3
    local boolean b = false
    
    set dx = rx1-rx2
    set dy = ry1-ry2
    set dist1 = SquareRoot(dx*dx+dy*dy)
    set dx = rx2-rx3
    set dy = ry2-ry3
    set dist2 = SquareRoot(dx*dx+dy*dy)
    set dx = rx3-rx4
    set dy = ry3-ry4
    set dist3 = SquareRoot(dx*dx+dy*dy)
    set dx = rx4-rx1
    set dy = ry4-ry1
    set dist4 = SquareRoot(dx*dx+dy*dy)
    set dx = rx1-rx3
    set dy = ry1-ry3
    set distS = SquareRoot(dx*dx+dy*dy)
    
    set dx = x-rx1
    set dy = y-ry1
    set distR1 = SquareRoot(dx*dx+dy*dy)
    set dx = x-rx2
    set dy = y-ry2
    set distR2 = SquareRoot(dx*dx+dy*dy)
    set dx = x-rx3
    set dy = y-ry3
    set distR3 = SquareRoot(dx*dx+dy*dy)
    if (distR1<=dist1) and (distR1<=distS) and (distR2<=dist1) and (distR2<=dist2) and (distR3<=dist2) and (distR3<=distS) then
        set b = true
    else
        set dx = x-rx4
        set dy = y-ry4
        set distR2 = SquareRoot(dx*dx+dy*dy)
        if (distR1<=dist1) and (distR1<=distS) and (distR2<=dist1) and (distR2<=dist2) and (distR3<=dist2) and (distR3<=distS) then
            set b = true
        endif
    endif
    return b
endfunction