https://qweme.dev
-
Автор темы
- #1
вообще к чему я это пишу у меня в хуке препейр юнет ордерс на танго работает а на фласку нихуя хотя ентити лист там дотавскийпопробуй не в OnAddEntity логать.
я например в хуке OnAddEntity добавляю в entity_queue, потом в хуке CFlattenedSerializers::Decode убираю сущность из entity_queue и кидаю в entity_list(и логаю dispatching entity blablabla), а в хуке OnRemoveEntity убираю сущности из обоих контейнеров. логаю "entity_added blablabla" из CEngineServiceMgr::OnFrameRenderingFinished по приколу(это всё лишь просто тестовая комбинация по фану не думаю что стоит ее использовать в продакшне). поэкспериментируй сам.
Посмотреть вложение 213812
if (Config::prevent_fail_action.enable) {
if (Order == DOTA_UNIT_ORDER_CAST_TARGET_TREE) {
CBaseEntity* AbilityEnt = vmt.EntitySystem->GetBaseEntity(AbilityIndex);
if (Config::prevent_fail_action.tango && AbilityEnt && AbilityEnt->IsHeroName("item_tango") && GameData.LocalHero->GetModifierManager()->HasModifier("modifier_tango_heal"))
return;
}
else if (Order == DOTA_UNIT_ORDER_CAST_TARGET) {
CBaseEntity* AbilityEnt = vmt.EntitySystem->GetBaseEntity(AbilityIndex);
CBaseEntity* TargetEnt = vmt.EntitySystem->GetBaseEntity(TargetIndex);
if (Config::prevent_fail_action.flask && AbilityEnt && AbilityEnt->IsHeroName("item_flask"))
if (TargetEnt && TargetEnt->GetModifierManager()->HasModifier("modifier_flask_healing"))
return;
}
}
class CGameEntitySystem {
public:
CBaseEntity* GetBaseEntity(int index) {
if (index <= -1 || index >= (MAX_TOTAL_ENTITIES - 1))
return nullptr;
CEntityIdentities* chunkToUse = m_pIdentityChunks[(index / MAX_ENTITIES_IN_LIST)]; // equal to ( index >> 9 )
if (!chunkToUse)
return nullptr;
CEntityIdentity* identity = &chunkToUse->m_pIdentities[index % MAX_ENTITIES_IN_LIST]; // equal to ( index & 1FF )
if (!identity)
return nullptr;
return (CBaseEntity*)identity->BaseEntity;
}
TargetEnt->GetModifierManager()->HasModifier("modifier_flask_healing")вообще к чему я это пишу у меня в хуке препейр юнет ордерс на танго работает а на фласку нихуя хотя ентити лист там дотавский
только потом уже начал чекать в OnAddEntity
C++:if (Config::prevent_fail_action.enable) { if (Order == DOTA_UNIT_ORDER_CAST_TARGET_TREE) { CBaseEntity* AbilityEnt = vmt.EntitySystem->GetBaseEntity(AbilityIndex); if (Config::prevent_fail_action.tango && AbilityEnt && AbilityEnt->IsHeroName("item_tango") && GameData.LocalHero->GetModifierManager()->HasModifier("modifier_tango_heal")) return; } else if (Order == DOTA_UNIT_ORDER_CAST_TARGET) { CBaseEntity* AbilityEnt = vmt.EntitySystem->GetBaseEntity(AbilityIndex); CBaseEntity* TargetEnt = vmt.EntitySystem->GetBaseEntity(TargetIndex); if (Config::prevent_fail_action.flask && AbilityEnt && AbilityEnt->IsHeroName("item_flask")) if (TargetEnt && TargetEnt->GetModifierManager()->HasModifier("modifier_flask_healing")) return; } }
C++:class CGameEntitySystem { public: CBaseEntity* GetBaseEntity(int index) { if (index <= -1 || index >= (MAX_TOTAL_ENTITIES - 1)) return nullptr; CEntityIdentities* chunkToUse = m_pIdentityChunks[(index / MAX_ENTITIES_IN_LIST)]; // equal to ( index >> 9 ) if (!chunkToUse) return nullptr; CEntityIdentity* identity = &chunkToUse->m_pIdentities[index % MAX_ENTITIES_IN_LIST]; // equal to ( index & 1FF ) if (!identity) return nullptr; return (CBaseEntity*)identity->BaseEntity; }
.сделай лог посмотри что там происходит в хуке какая сущность что где почему откуда блаблабла. не работает - ищи место где конкретно не работает и что конкретно идёт не так и дальше уже разбирайся.
все отбой я еблан у них InternalName валидныеПосмотреть вложение 213855
Посмотреть вложение 213856
что самое странное
в релизе чеков будет в 10 раз больше это просто прототип функи по этому до кода доебыватся не надо я сам все это понимаю )
.
да, там есть обычный нейм а есть дизайнер нейм. можешь как костыль заебашить GetAnyName() которое возвращает любое из этих двух имён которое не ноль(if (m_name == nullptr) {return m_designerName} else {return m_name} условно).
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz