Делаю проект для мультиплеера, но столкнулся с такой проблемой:
  • Как сделать нормальное воскрешение героев после смерти?
Я пробовал разные способы, но работает только один и этот способ будет баговать при игре с игроками.
Просьба давать советы на GUI. С Jass не дружу.

Очень просто)

События:
Юнит Умирает
Условия:
(Diying unit) равно Герой
Owner of (Diying unit) не равно Нейтрально-враждебный
Действия:
Wait 10 секунд
Воскресить (Diying unit)

В этом триггере (Diying unit) не будет меняться с каждой новой смертью, она как локалка.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
22
8gabriel8, PolledWait это бж функция внутри которой жуть что делается
спс жнгп за Function list
function PolledWait takes real duration returns nothing
    local timer t
    local real  timeRemaining

    if (duration > 0) then
        set t = CreateTimer()
        call TimerStart(t, duration, false, null)
        loop
            set timeRemaining = TimerGetRemaining(t)
            exitwhen timeRemaining <= 0

            // If we have a bit of time left, skip past 10% of the remaining
            // duration instead of checking every interval, to minimize the
            // polling on long waits.
            if (timeRemaining > bj_POLLED_WAIT_SKIP_THRESHOLD) then
                call TriggerSleepAction(0.1 * timeRemaining)
            else
                call TriggerSleepAction(bj_POLLED_WAIT_INTERVAL)
            endif
        endloop
        call DestroyTimer(t)
    endif
endfunction
18
biridius, судя по тому что в BJ есть много туповатых функций и ещё некоторые функции должны быть в движке - могу предположить что программисты написали движок с нативками, отдали игру гейм-дизайнерам и послали их подальше
26
Ну в PolledWait не очищается переменная указывающая на таймер
Чего-то не пойму, вон есть же DestroyTimer(t), нужно ещё как-то очищать?
18
t = null
потому что близзардам прямоты рук не хватило чтобы сделать нормальную работу с памятью.
Не было бы претензий если это был бы какой то высокоуровневый яп или низкоуровневый, но это же jass)
По сути все переменные handle - это те же integer, не понимаю как близзарды с этим накосячили
10
Очень просто)
События:
Юнит Умирает
Условия:
(Diying unit) равно Герой
Owner of (Diying unit) не равно Нейтрально-враждебный
Действия:
Wait 10 секунд
Воскресить (Diying unit)
В этом триггере (Diying unit) не будет меняться с каждой новой смертью, она как локалка.
Согласен на 99%, но лучше при пике героя каждому герою присвоить свою переменную
17
8gabriel8, работать то работает, но тут немного баги будут. Все герои будут появляться только в одной области, а мне такое не нужно. У меня 2 разные команды
А, все, разобрался
26
Согласен на 99%, но лучше при пике героя каждому герою присвоить свою переменную
Ну это больше зависит от остальных триггеров.
Интересно, тут переменная (Diying unit) тоже не утекает?
18
8gabriel8:
Интересно, тут переменная (Diying unit) тоже не утекает?
это не переменная, это нативка которая берет инфу из потока и возвращает юнита
28
В этом триггере (Diying unit) не будет меняться с каждой новой смертью, она как локалка.
Ага, а вот если бы я занёс Dying Unit в переменную, то она бы менялась с каждым вызовом триггера.
Sergarr:
поддержка МУИ
Что же такое МУИ?
26
Что же такое МУИ?
multi user instance, если верно помню, означает что можно применять несколько раз и не будет никаких маразмов
26
но лучше при пике героя каждому герою присвоить свою переменную
ещё лучше при каждой смерти юнита, чекать его на воскрешение (либо отдельный ивент на него/них заводить), и поднимать напрямую из записи...
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.