Вопрос Dota 2 - Триггер на Sunstrike, Charge of Darkness

Начинающий
Статус
Оффлайн
Регистрация
12 Мар 2025
Сообщения
9
Реакции[?]
0
Поинты[?]
0
Привет форумчане, создаю свой экстернал на путоне используя CE, подскажите как найти адрес или оффсет отвечает за санстрайк или бег бары? Просто писать byte 1 когда бежит бара или дается санстрайк не получается, или надо по каждому герою в entity list пройтись и посмотреть куда герой нажал кнопку? И да если будут примеры пожалуй без C++ , C++ пока что не мое, желательно просто теория
 
Начинающий
Статус
Оффлайн
Регистрация
12 Мар 2025
Сообщения
3
Реакции[?]
0
Поинты[?]
0
Разбег Бары — это модификатор modifier_spirit_breaker_charge_of_darkness_vision. Бегаешь по энтити листу, получаешь (условным вектором) все его модификаторы, ну и чекаешь наличие нужных.
Санстрайк— это модификатор modifier_invoker_sun_strike. Но он не на героя накладывается, а на npc_dota_thinker.
Он появляется в момент каста скилла и живет до тех пор, пока скилл не закончится.
В итерации энтитей в самом начале (чем раньше, тем больше времени на реакцию, очевидно) делай что-то типа такого:

C++:
if (current_ent->is_thinker()) {
    if (current_ent->modifier_manager()->find_by_name("modifier_invoker_sun_strike")) {
        // ???
    }
}

// ...

class CEntityIdentity {
public:
    optional<string> internal_name() const {
        const auto name_ptr = Memory::read_memory<uintptr_t>(this + 0x18);
        return !name_ptr ? nullopt : Memory::read_string(name_ptr.value());
    }
    
    bool is_thinker() const {
        const auto name = this->internal_name();
        return name.value_or("") == "npc_dota_thinker";
    }
}
 
Сверху Снизу