Привет всем, может кто помочь со такой способностью, которая отнимала бы у героя 50% от текущего запаса здоровья, и в течении 10 сек. восстанавливала бы их обратно.
Вкратце это способность героя Зул'джин из Heroes of the Storm.
Думал как это реализовать на гуи, в голову ничего не лезет, могу только отнять здоровье, не знаю как это же количество восстанавливать обратно.
Описание скилла из хотса:
"При использовании Зул'джин мгновенно теряет 50% текущего запаса здоровья и восполняет такой же объем здоровья в течение 10 сек."
Делаю на рефордже последней версии.
Буду благодарен за любую помощь.

Не обязательно. Карта.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
33
Засёк, код написан 100% с нуля за 4 минуты
do
    TimerStart(CreateTimer(), 0.11, false, function()
        InitSpell() -- инициализация, сюда, чтобы работало само по себе
    end)
end

function InitSpell()
    local SpellTrigger = CreateTrigger()
    for i = 0, bj_MAX_PLAYER_SLOTS - 1 do
        local player = Player(i)
        TriggerRegisterPlayerUnitEvent(SpellTrigger, player, EVENT_PLAYER_UNIT_SPELL_CAST)
    end
    TriggerAddAction(SpellTrigger, function()
        if GetSpellAbilityId() == FourCC('A00A') then --ID Способности
            local caster=GetTriggerUnit() -- юнит скастовавший абилку
            local currentHP=GetUnitState(caster,UNIT_STATE_LIFE) -- значение текущего хп
            local restoreHP=currentHP/10 -- значение хп что будем восстанвливать
            local sec=0 -- обратный отсчет
            SetUnitState(caster,UNIT_STATE_LIFE,currentHP/2) -- отнимаем половину хп при касте
            TimerStart(CreateTimer(), 1, true, function() -- кложур таймер
                sec=sec+1
                SetUnitState(caster,UNIT_STATE_LIFE,GetUnitState(caster,UNIT_STATE_LIFE)+restoreHP) -- лечим героя на 1/10 за каждый тик таймера
                if sec>10 then
                    DestroyTimer(GetExpiredTimer())
                end
            end)

        end
    end)
end
Да это Lua
Да муи
Да без утечек
Нет на Джасс не умею
3
Bergi_Bear:
Засёк, код написан 100% с нуля за 4 минуты
do
    TimerStart(CreateTimer(), 0.11, false, function()
        InitSpell() -- инициализация, сюда, чтобы работало само по себе
    end)
end

function InitSpell()
    local SpellTrigger = CreateTrigger()
    for i = 0, bj_MAX_PLAYER_SLOTS - 1 do
        local player = Player(i)
        TriggerRegisterPlayerUnitEvent(SpellTrigger, player, EVENT_PLAYER_UNIT_SPELL_CAST)
    end
    TriggerAddAction(SpellTrigger, function()
        if GetSpellAbilityId() == FourCC('A00A') then --ID Способности
            local caster=GetTriggerUnit() -- юнит скастовавший абилку
            local currentHP=GetUnitState(caster,UNIT_STATE_LIFE) -- значение текущего хп
            local restoreHP=currentHP/10 -- значение хп что будем восстанвливать
            local sec=0 -- обратный отсчет
            SetUnitState(caster,UNIT_STATE_LIFE,currentHP/2) -- отнимаем половину хп при касте
            TimerStart(CreateTimer(), 1, true, function() -- кложур таймер
                sec=sec+1
                SetUnitState(caster,UNIT_STATE_LIFE,GetUnitState(caster,UNIT_STATE_LIFE)+restoreHP) -- лечим героя на 1/10 за каждый тик таймера
                if sec>10 then
                    DestroyTimer(GetExpiredTimer())
                end
            end)

        end
    end)
end
Да это Lua
Да муи
Да без утечек
Нет на Джасс не умею
Здорово конечно, но у меня в настройках карты стоит Jass.
Смогу я как-то это "вставать" в карту?
33
Нет не проверял
Нет, про паузу таймера не забыл

Здорово конечно, но у меня в настройках карты стоит Jass.
Смогу я как-то это "вставать" в карту?
Нет, но вы же не указали что джасс, ждите ответа на джасс или пользуйтесь моим способом как общности принципами, но на джасс сложнее.. потребуется хештаблицы или структуры
3
Bergi_Bear:
Нет не проверял
Нет, про паузу таймера не забыл

Здорово конечно, но у меня в настройках карты стоит Jass.
Смогу я как-то это "вставать" в карту?
Нет, но вы же не указали что джасс, ждите ответа на джасс или пользуйтесь моим способом как общности принципами, но на джасс сложнее.. потребуется хештаблицы или структуры
Я указал что делаю на гуи.
В любом случае спасибо за этот способ. Сохраню на всякий случай.
3
Bergi_Bear:
Нет не проверял
Нет, про паузу таймера не забыл

Здорово конечно, но у меня в настройках карты стоит Jass.
Смогу я как-то это "вставать" в карту?
Нет, но вы же не указали что джасс, ждите ответа на джасс или пользуйтесь моим способом как общности принципами, но на джасс сложнее.. потребуется хештаблицы или структуры
Будь такой же крутой и помоги мне с моим вопросом:) а то я голову уже сломал можно на луи
3
Bergi_Bear:
Гуи и луа полностью совместимы
Я в этом не особо разбираюсь, просто карта у меня уже старая, в плане еще до рефорджа делалась, и там в настройках невозможно поменять язык кода с джаз на луа.
30
и там в настройках невозможно поменять язык кода с джаз на луа.
Если удалить весь custom code то можно.

но на джасс сложнее.. потребуется хештаблицы или структуры
Тут человек в gui не может, а ты такие умные слова говоришь))
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.