18

» WarCraft 3 / Система стана

Один дамми молот бурь с 0 времени стана (или -1)
Далее хештаблица и таймер, сохраняешь юнита по хендлу таймера и запускаешь его на нужное время, потом в функции таймера удаляешь баф у юнита
18

» WarCraft 3 / Почему windwalk не проходит через предметы?

quq_CCCP:
UrsaBoss, потому что это особый тип перемещения, который не дает летунам летать, плавунам плавать, а наземным юнитам ходить сквозь предметы и здания, тут скорее всего проверка на виджеты чтобы юнит не ходил сквозь разрушаемые обьекты.
и даже никакой костыль не поможет?
18

» WarCraft 3 / Возрождение с затратами маны

Absolute:
Если это герой, то будет висеть иконка.
никто не обращает на это внимания
Wadimiru:
Мне наоборот надо, чтобы до реальной смерти (Нехватка маны на Возрождение) не было срабатывания "Юнит погибает".
ну значит больше нету вариантов, текущий вариант сделанный тобой - наиболее оптимальный
18

» WarCraft 3 / Возрождение с затратами маны

А не проще отловить момент смерти юнита, сразу возродить его и скрыть - далее делать что угодно
native ReviveHero takes unit whichHero, real x, real y, boolean doEyecandy returns boolean
18

» WarCraft 3 / Совет для новичка

Есть определенные плагины помогающие в разработке карт и кода они будут как то влиять в дальнейшем на мод при установке?
никак не будут влиять, все диалекты jass в итоге парсятся в оригинальный jass
Так же интересен вопрос по поддержке версий, понятно если мы будем разрабатывать на версии 1.29 мод не встанет скорее всего на версию игры 1.26 например. Но установится ли на 1.30?
В версиях ниже 1.30 - mpq архив карты
В 1.30 уже не mpq
А насчет совместимости - можно выпускать вариации кампании для разных версий игры
Может быть еще есть какие ни будь средства что бы улучшить саму графику в игре кроме RenderEdge ?
импорт кастомных текстур и моделей, для игры 2002 года это более чем достаточно
quq_CCCP:
Ах да мемхак ваше все, забудьте про новые патчи....
и без мемхака делались кампании
костыли наше всё
18

» WarCraft 3 / Победа уничтожением игрока и крипы

Как сделать игрока без стартовой позиции?
Никак, стартовая позиция - это то где будет камера игрока в начале игры
и чтобы за его уничтожение засчитывались победа
globals
    integer i = 0
endglobals

function filter takes nothing returns boolean
    if not (GetWidgetLife(GetFilterUnit()) < 0.405 or IsUnitType(GetFilterUnit(), UNIT_TYPE_DEAD)) then
        set i = i + 1
    endif
    return false
endfunction

i = 0
GroupEnumUnitsOfPlayer(g, p, function filter)
if i == 0 then
    //Поражение игроку
endif
Также необходимо, чтобы в союзе с этим игроком были все крипы на карте.
альянс игрока с нейтрально враждебным
18

» WarCraft 3 / Воскрешение в мультиплеере

quq_CCCP:
UrsaBoss, мало того что обрывается поток и функции Get*** могут вернуть черти знает что, оно еще может быть причиной десинха, игрок залагал а вейт то тикает, этого мало? Потом 2018 а мы досихпор советуем вейты...
а пауза != лагскрин?
Get***
локальную объявить можно
18

» WarCraft 3 / Воскрешение в мультиплеере

Hate:
8gabriel8:
quq_CCCP, с чего это Wait не будет в мультиплеере работать?
он написал "нормально работать не будет"
работать будет, да, только криво и неточно
разница в точности +-0.10 будет играть роль?
В некоторых простых случаях достаточно одной локалки и TriggerSleepAction (ни в коем случае PolledWait).
И прошу привести пример насчет "кривой" работы
18

» WarCraft 3 / Воскрешение в мультиплеере

8gabriel8:
Интересно, тут переменная (Diying unit) тоже не утекает?
это не переменная, это нативка которая берет инфу из потока и возвращает юнита
18

» WarCraft 3 / Воскрешение в мультиплеере

t = null
потому что близзардам прямоты рук не хватило чтобы сделать нормальную работу с памятью.
Не было бы претензий если это был бы какой то высокоуровневый яп или низкоуровневый, но это же jass)
По сути все переменные handle - это те же integer, не понимаю как близзарды с этим накосячили
18

» WarCraft 3 / Воскрешение в мультиплеере

biridius, судя по тому что в BJ есть много туповатых функций и ещё некоторые функции должны быть в движке - могу предположить что программисты написали движок с нативками, отдали игру гейм-дизайнерам и послали их подальше
18

» WarCraft 3 / Воскрешение в мультиплеере

8gabriel8:
И лучше не использовать PolledWait, можно сразу TriggerSleepAction
А что так?
Ну в PolledWait не очищается переменная указывающая на таймер
Да и вообще PolledWait это смесь TriggerSleepAction и таймера (типа отсчет игрового времени)
В данное время не актуально, т.к я лично проверял TriggerSleepAction в одиночной игре при паузе и в мультиплеере так же, никуда время не утекало.
18

» WarCraft 3 / Воскрешение в мультиплеере

близзарды походу давно починили это в каком то патче, но этого никто не узнал
18

» WarCraft 3 / Воскрешение в мультиплеере

Sergarr:
Я 100% уверен, что это ложь и провокация.
GetTriggeringUnit() и прочее - хранятся в самом потоке, а поток создается каждый раз при срабатывании триггера
И лучше не использовать PolledWait, можно сразу TriggerSleepAction
И кто бы ни говорил, TriggerSleepAction не продолжает отсчет при паузе в одиночной игре и в мультиплеере.
18

» WarCraft 3 / Скрыть способность?

Пушистый:
Для этого по классике используют спелбук. Также данную пассивку можно занести под координаты (0;-11), чтобы не отображалась (но это актуально для старых версий игры).
и потом в скрипте заблокировать этот спеллбук
18

» WarCraft 3 / Перевод карты без предоставления исходников

8gabriel8:
А варик может определить локаль RU или EN, либо надо задавать игроку вопрос при старте карты?
там че то файлам надо id указывать и т.д, я точно не помню как это делают.
Ну ещё вроде работает обычная "наглая" замена wts - получатся 2 совместимые карты
18

» WarCraft 3 / Перевод карты без предоставления исходников

8gabriel8:
Разве war3map.j нормально понимает кириллицу? Казалось, что он её только из wts берёт, либо представляет в нечитаемом виде.
вот и будет стимул русифицировать карту через wts)))
пошаманить и можно будет не скачивать заново карту.
Будет 2 языка в одной карте.
Например если варкрафт юзает английский язык - то и в карте он будет
С русским языком так же
"не скачивать" - я имел ввиду не совместимость русифицированной карты с оригинальной, а просто возможность воспроизводить карту на разных языках
18

» WarCraft 3 / Перевод карты без предоставления исходников

quq_CCCP:
UrsaBoss, а кто их юзает?
никто.
Я это сказал к тому - что переводить текст из скрипта вполне реально (не теряя совместимости)
18

» WarCraft 3 / Перевод карты без предоставления исходников

quq_CCCP:
разве что кроме текста в скрипте чтобы не потерять совместимость
в скрипте же можно из wts юзать строки
18

» WarCraft 3 / Помощь в избавлении от BJ

range * Cos(a * bj_DEGTORAD)
должно получится так:
a = Atan2(endfly_y - GetUnitY(suriken), endfly_x - GetUnitX(suriken))
SetUnitX(suriken, GetUnitX(suriken) + 20.00 * Cos(a))
SetUnitY(suriken, GetUnitY(suriken) + 20.00 * Sin(a))
18

» WarCraft 3 / Помощь в избавлении от BJ

Lillikon
На 20 единиц опасно сдвигать, т.к может не сработать условие на то что дистанция < 10 и сюрикен улетит за пределы карты.
Надо поставить условие чтобы дистанция была < 25, и вместо узнавания угла сюрикена - использовать угол между координатами (так он хотябы не улетит, если ошибешься с расчетами)
Вычисление угла в радианах
a = Atan2(m.y - GetUnitY(u), m.x - GetUnitX(u))
m.x и m.y это "конечная" точка, в которую юнит должен переместиться
И не надо переводить радианы в градусы, просто косинус и синус вычисляешь чтобы переместить юнита на 20
x = GetUnitX(u) + 20. * Cos(a)
y = GetUnitY(u) + 20. * Sin(a)