Простые вопросы #2

Статус
В этой теме нельзя размещать новые ответы.
Как определить, какой тип и сколько урона наноситься (чистый, магический, критический)? И как посмотреть сколько времени весит на врага дебафф (замедление, оглушение)?
MODIFIER_EVENT_ON_TAKEDAMAGE модификатор отслеживает любой урон, даже если перент не имеет к нему отношения. Распринтуй таблицу, которая передаётся в эвент. Там много несодержательных полей, но тип урона там точно есть (на счёт крита не уверен, если в этой таблице о нем инфы нет, то для отслеживания своя система критов необходима)
====================================
modifier:GetDuraton() - modifier:GetRemainingTime()
 
есть ли предел по юнитам на карте? сейчас втыкаю на карту крипа и все становятся невидимыми, если вместо кого-то втыкаю то же кол-во то все норм
 
есть ли предел по юнитам на карте? сейчас втыкаю на карту крипа и все становятся невидимыми, если вместо кого-то втыкаю то же кол-во то все норм
Предел только в размерах карты, если не будет свододного места, им некуда будет спавниться.
 
есть ли стандартное событие для модификатора когда цель теряет хп
нашел ток OnTakeDamage но не подходит ибо цель может получить урон но не потерять хп
 
Как в панораме управлять порядком отображения элементов? а то при открытии таблицы счета она оказывается под моими элементами
 
Мне надо именно узнать сам дебафф (замедление, стан, маг иммун и т.д), а не модификатор.
Ну определи перебором модификатор, который дает дебафф. Приведенный ниже код работает для луа-модификаторов.
Код:
local stun_duration = 0
for _, modifier in pairs( unit:FindAllModifiers() ) do
    if modifier:CheckState()[MODIFIER_STATE_STUNNED] then
        local duration = modifier:GetDuration()
        if duration > stun_duration then
            stun_duration = duration
        end
    end
end
 
Ну определи перебором модификатор, который дает дебафф. Приведенный ниже код работает для луа-модификаторов.
Код:
local stun_duration = 0
for _, modifier in pairs( unit:FindAllModifiers() ) do
    if modifier:CheckState()[MODIFIER_STATE_STUNNED] then
        local duration = modifier:GetDuration()
        if duration > stun_duration then
            stun_duration = duration
        end
    end
end
А как это определять без конкретного модификатора? То есть любой дебафф.
 
А как это определять без конкретного модификатора? То есть любой дебафф.
Никак. Только перебором модификаторов, которые имеют нужный стейт/проперти (в примере я сделал со станом, но можно и с любым другим эффектом) с выбором самого долгого. Причем работать это будет, очевидно, только с кастомными модификаторами.
 
А как это определять без конкретного модификатора? То есть любой дебафф.
Кажется, я не так тебя понял. Вот так проверяется явятся ли модификатор дебафом.
modifier:IsDebuff()
Но тут тоже могут быть подводные камни, т.к. не все дебафы дают явный эффект.
 
мамин программист, подскажи плз, у меня есть код который определяет стим айди, и выдает по нему герою предмет, как мне выдать дисконект этому герою по этому айди)
 
Как определить, какой тип и сколько урона наноситься (чистый, магический, критический)? И как посмотреть сколько времени весит на врага дебафф (замедление, оглушение)?

1. GetAbilityDamageType()
2. GetDuration()

А дальше сам.
https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/API
 
Просто удалить хендл игрока не пробовал?
 
Статус
В этой теме нельзя размещать новые ответы.
Реклама: