30

» Литература / Очередной вопрос по поводу брони

Соотношение к реальности не берётся в расчёт
Если берётся не подобие нашей реальности, то нужно как бы описать, как в ней обстоит дело с доспехами.
встреченных мною придирок, которых вполне себе больше, что Геральд дебил поскольку не носит доспехи.
А эти придиратели то книги про Герванта читали то?
30

» WarCraft 3 / 6. Перехват вызова

vJass позволяет перехватывать вызов любой функции в карте
Не любой. Функцию объявленную пользователем не перехватывает.
30

» WarCraft 3 / как создать юнита по XXXX коду из чата? 'hpea'

как сконвертировать string "hpea" (или "'hpea'")
В этой статье есть ссылочка на [Lua][vJass] Ascii.
call CreateUnit(Player(0),Char2Ascii("hpea"),1000,1000,0)
30

» WarCraft 3 / Депротект (знаю заеженная тема)

неужели нельзя выйти на связь, чтобы они обнародовали/продали проект?
Попробуй, моя будет благодарна.
30

» WarCraft 3 / [lua] Подсветка кода во внешнем редакторе

может быть попробовать поискать старую версию 2021 года
Зачем её искать, просто установи JetBrains Toolbox, который позволяет использовать разные версии IDE.
что Идея постояно зависает, помогает только перезапуск
Так как IntelliJ написана на жабе, то зависания лечатся добавлением оперативы.
Загруженные файлы
30

» WarCraft 3 / Депротект (знаю заеженная тема)

Недавно slonick пытался играть в это, в итоге больше разочарования, чем "офигеть раньше карты были классными"
Ну так была бы открытая версия на гите, то можно было бы до ума довести. А так только или искать автора или заниматься депротектом.
30

» WarCraft 3 / Депротект (знаю заеженная тема)

О каком проекте идёт речь?
Вот пример проекта, в который я бы не против запустить свои шаловливые ручки.
30

» Помойка Макебы / Оставляем хвост за курсором

Экскалибур, ну так нужно достать пак курсоров из карт и выложить. Я помню видел где-то реально красивые, только не помню где.
30

» WarCraft 3 / Крашнулась карта

Если используешь JNGP, юзай бэкап, если нет соболезную.
А как же github?
30

» WarCraft 3 / каким софтом проставлять отступы в JASS ?

ну вот, сами на китайском джасе кодют
Поддержка собственно языка там ужастна. Он даже не знает о существовании отрицательных чисел и пробел после минуса лепит.
Ни о каком рефакторе переменных можно и не думать, он тупо по имени матчит.
Ну и самое элементарное, даже не подсвечивает использование необъявленных переменных.
30

» что то / Геометрия 9 класс

Есть же наработка. Если вкратце, то ложим прямоугольник на оси и ищем обычным сравнением.
30

» WarCraft 3 / Авто-поворот юнитов

Что это, зачем это, что по поводу уточек?

Так вот зачем этот вопрос был создан?

-f XXX (-f 45 -f 200 -f 300) - поворот на градус
Что по поводу отрицательных значений?

Что мешает отформатировать код по человечески?
globals
    integer PLAYERS = 12
    integer array GO
    integer array N
    trigger array tgo4
    integer array tgo4_init
    hashtable ht = InitHashtable()
    string array Direction
    real array DirectionStart
    unit array u
endglobals
    
function GOO4_Actions takes nothing returns nothing
    local integer i = LoadInteger(ht, GetHandleId(GetTriggeringTrigger()), 0)
    local real A = 0
    set N[i] = N[i] + 1
    if Direction[i] == "R" then
        set A = DirectionStart[i] - (N[i] * 120)
    elseif Direction[i] == "L" then
        set A = DirectionStart[i] + (N[i] * 120)
    endif
    call BJDebugMsg(I2S(R2I(GetUnitFacing(u[i]))) + " " + I2S(N[i]) + " " + GetPlayerName(Player(i - 1)))
    call SetUnitFacing(u[i], A)
    if N[i] == 3 then
        set N[i] = 0
    endif
endfunction
    
function GOO4 takes string s returns nothing
    local integer i = GetPlayerId(GetTriggerPlayer()) + 1
    if tgo4_init[i] == 0 then
        set tgo4_init[i] = 1
        set tgo4[i] = CreateTrigger()
        call SaveInteger(ht, GetHandleId(tgo4[i]), 0, i)
        call TriggerRegisterTimerEvent(tgo4[i], 0.5, true)
        call TriggerAddAction(tgo4[i], function GOO4_Actions)
        call DisableTrigger(tgo4[i])
    endif
    if s == "R" then
        call BJDebugMsg("R")
        set Direction[i] = "R"
    elseif s == "L" then
        set Direction[i] = "L"
        call BJDebugMsg("L")
    endif
    if GO[i] == 0 then
        set GO[i] = 1
        set DirectionStart[i] = GetUnitFacing(u[i])
        call EnableTrigger(tgo4[i])
    else
        set GO[i] = 0
        set N[i] = 0
        call DisableTrigger(tgo4[i])
        call BJDebugMsg("STOP: " + GetPlayerName(Player(i - 1)))
    endif
endfunction
    
function Facing takes integer s returns nothing
    local integer i = GetPlayerId(GetTriggerPlayer()) + 1
    call SetUnitFacing(u[i], s)
endfunction
    
function Start takes nothing returns nothing
    local string s = StringCase(GetEventPlayerChatString(), false)
    if s == "-r" then
        call GOO4("R")
    elseif s == "-l" then
        call GOO4("L")
    elseif SubString(s, 0, 3) == "-f " then
        call Facing(S2I(SubString(s, 3, StringLength(s))))
    endif
endfunction
    
function Start_init takes nothing returns nothing
    local trigger t = CreateTrigger()
    local integer i = 1
    loop
        exitwhen i > PLAYERS
        call TriggerRegisterPlayerChatEvent(t, Player(i - 1), "-", false)
        set i = i + 1
    endloop
    call TriggerAddAction(t, function Start)
endfunction
    
function Facing_Start takes nothing returns nothing
    call SetUnitFacing(u[1], 270)
    call SetUnitFacing(u[2], 270)
    call SetUnitFacing(u[3], 270)
    call SetUnitFacing(u[4], 270)
    call SetUnitFacing(u[5], 270)
    call SetUnitFacing(u[6], 270)
    call SetUnitFacing(u[7], 270)
    call BJDebugMsg("Use -L , -R , -f XXX")
endfunction
    
function CreateAllUnits takes nothing returns nothing
    set u[1] = CreateUnit(Player(0), 'Hblm', - 800, - 50, 3.977)
    set u[2] = CreateUnit(Player(1), 'Hblm', - 400, - 50, 3.977)
    set u[3] = CreateUnit(Player(2), 'Hblm', 0, - 50, 3.977)
    set u[4] = CreateUnit(Player(3), 'Hblm', - 200, - 450, 3.977)
    set u[5] = CreateUnit(Player(4), 'Hblm', - 600, - 450, 3.977)
    set u[6] = CreateUnit(Player(5), 'Hblm', - 200, 350, 3.977)
    set u[7] = CreateUnit(Player(6), 'Hblm', - 600, 350, 3.977)
    call Facing_Start()
endfunction
30

» WarCraft 3 / Jass MythBusters

host_pi, TriggerSleepAction отстой, остальное норм, миллионы гуишников врать не будут.
30

» WarCraft 3 / как сделать 3 разных действия с одной периодичностью по таймеру?

а если в карту вшита защита от паузы путём троекратного запаузивания на старте?
Ожидание игрока при лагах тоже пауза.
на это пока не нашёл подтверждений
В QA этих подверждений было полно.
30

» WarCraft 3 / как сделать 3 разных действия с одной периодичностью по таймеру?

есть ссылки на статьи? пошёл погуглить
Да всё просто, TriggerSleepAction игнорирует паузу и может десинкнуть из-за неточности внутреннего таймера.
30

» WarCraft 3 / как сделать 3 разных действия с одной периодичностью по таймеру?

имелись ввиду глобалки простые типа integer и string
Я только одну локалку использовал, всё остальное глобалки.
trigger t = CreateTrigger();
в общем хештейбл я так понял это как словарь
Это и есть хэш-таблица. Для простоты можешь относиться к ней как к к двумерному массиву с числовыми ключами.
ht[0][1] = somevalue;

данном случае тянется номер игрока по привязанному к нему id таймера. классное решение
Сохранение данных на хэндл это основа практически каждого MUI заклинания.
30

» WarCraft 3 / как сделать 3 разных действия с одной периодичностью по таймеру?

т.е. на глобалках и таймерах подобный код не сделать с отдельным таймером для каждого плеера?
У меня код с отдельным таймером для каждого игрока какраз на глобалках. Можешь проверить через Multiwindow.
Вот здесь идёт получение номера игрока из ХТ. Игрока можно просто получить через Player(i).
Загруженные файлы
30

» WarCraft 3 / Депротект (знаю заеженная тема)

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