Как на гуи сделать скильчик что у юнита есть пасивка которая: считает вокруг себя трупов, и за каждого трупа дает +1 регенхп. Интересует конкретно как отследить трупа в радиусе. Наработки приветствуются:)

Наработки приветствуются:)
Хз, в гуи не шарю, вот наработка для рефа, вроде работает.
    local hero = CreateUnit(Player(0), FourCC('Hpal'), 0, 0, 0) -- тестовый герой
    local defRegen = BlzGetUnitRealField(hero, UNIT_RF_HIT_POINTS_REGENERATION_RATE) -- базовый реген хп этого героя из РО

    local group = CreateGroup()
    local radius = 500 -- радиус поиска трупов
    local condition = Condition(function() return IsUnitDeadBJ(GetFilterUnit())  end) -- гуишная проверка является ли юнит трупом

    TimerStart(CreateTimer(), 1, true, function()
        GroupEnumUnitsInRange(group, GetUnitX(hero), GetUnitY(hero), radius, condition) -- пикаем трупы
        BlzSetUnitRealField(hero, UNIT_RF_HIT_POINTS_REGENERATION_RATE, defRegen + CountUnitsInGroup(group)) -- прибавляем их количество к базовому регену

        print("Количество трупов:", CountUnitsInGroup(group), "Текущий реген:", BlzGetUnitRealField(hero, UNIT_RF_HIT_POINTS_REGENERATION_RATE)) -- проверяем
    end)
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
30
  • Посчитать трупов вокруг себя
  • Настроить прибавку регена
  • Профит
Ответы (2)
2
nazarpunk, я подчеркнул: конкретно КАК отследить трупов. ты мне пишешь посчитай трупов xD
30
nero666, перебрать всех юнитов вокруг себя. Проверить является ли юнит трупом.
16
На днях был вопрос про отслеживание деревьев вокруг героя, а тут даже проще, примерно так можно:
Таймер раз в секунду
Счетчик = 0
Выбираешь юнитов вокруг героя
	Выбранный == мертв
		Установить счетчик = счетчик + 1
Устанавливаешь уровень способности с регеном на значение счетчика
25
Наработки приветствуются:)
Хз, в гуи не шарю, вот наработка для рефа, вроде работает.
    local hero = CreateUnit(Player(0), FourCC('Hpal'), 0, 0, 0) -- тестовый герой
    local defRegen = BlzGetUnitRealField(hero, UNIT_RF_HIT_POINTS_REGENERATION_RATE) -- базовый реген хп этого героя из РО

    local group = CreateGroup()
    local radius = 500 -- радиус поиска трупов
    local condition = Condition(function() return IsUnitDeadBJ(GetFilterUnit())  end) -- гуишная проверка является ли юнит трупом

    TimerStart(CreateTimer(), 1, true, function()
        GroupEnumUnitsInRange(group, GetUnitX(hero), GetUnitY(hero), radius, condition) -- пикаем трупы
        BlzSetUnitRealField(hero, UNIT_RF_HIT_POINTS_REGENERATION_RATE, defRegen + CountUnitsInGroup(group)) -- прибавляем их количество к базовому регену

        print("Количество трупов:", CountUnitsInGroup(group), "Текущий реген:", BlzGetUnitRealField(hero, UNIT_RF_HIT_POINTS_REGENERATION_RATE)) -- проверяем
    end)
Загруженные файлы
Принятый ответ
Ответы (1)
25
Вот такой-же вопрос был недавно, система абсолютно такая-же, но вместо деревьев выбирай юнитов + проверяй, что они мертвые. Или не справишься по этому примеру?
Ответом на твой вопрос будет - проверяй каждую секунду в радиусе от героя кол-во трупов и устанавливай реген. А как это выглядит в триггерах - пример в вопросе выше.
28
Челу нужны трупы, а не мертвые юниты. Юнит считается мертвым, когда его здоровье падает ниже определенного значения и добавляются соответствующие флаги. У юнитов есть время смерти, и только после его истечения они начинают разлагаться. Нужно с помощью события unit decaying юнитов в группу трупов, и уже выбирать всех юнитов в радиусе, при условии, что они в этой группе. Кроме того, стоит отслеживать воскресили ли этого юнита, чтобы убрать его из группы
Чтобы оставить комментарий, пожалуйста, войдите на сайт.