или стим оверлея презент еще люди хукают(ну не для скрытия читов на стриме всмысле а просто так как метод рендера). говорят там(ну и впринципе скорее всего в других оверлеях типа обс тоже) с мультикор рендерингом еще не приходится ебаться(с мультикор рендеригом если ендсцену хукать то нужно ебаться с синхронизацией ибо состояние сущностей(состояние логики игры и джвика - матрицы хуятрицы и тд) отличается от того состояния которое было когда сцена отрисовывалась ибо рендер и логика в разных потоках. в итоге получается что матрицы и прочие хуйни которые ты получаешь через движок во время ендсцены уже обновились и готовы к следующему кадру, и если их для отрисовки юзать то криво нарисуешь(нарисуешь на коордах которые должны быть в некст кадре, а на экране то старый кадр, в итоге рисуешь на опережение и сосешь член))можешь тогда просто презент OBS'а хукнуть и всё)
А вот это, кстати, звучит хайпово. Погуглил, даже репы на гитхабе есть. Пойду пердолить.или стим оверлея презент еще люди хукают(ну не для скрытия читов на стриме всмысле а просто так как метод рендера). говорят там(ну и впринципе скорее всего в других оверлеях типа обс тоже) с мультикор рендерингом еще не приходится ебаться(с мультикор рендеригом если ендсцену хукать то нужно ебаться с синхронизацией ибо состояние сущностей(состояние логики игры и джвика - матрицы хуятрицы и тд) отличается от того состояния которое было когда сцена отрисовывалась ибо рендер и логика в разных потоках. в итоге получается что матрицы и прочие хуйни которые ты получаешь через движок во время ендсцены уже обновились и готовы к следующему кадру, и если их для отрисовки юзать то криво нарисуешь(нарисуешь на коордах которые должны быть в некст кадре, а на экране то старый кадр, в итоге рисуешь на опережение и сосешь член))
это все берется из реверса джаваскриптовых фунок.>unsigned long long CreateParticleFunc = *(unsigned long long*)(CDOTA_ParticleManager + 7 * 8); // Функа CreateParticle из таблицы
Откуда это берется? На 0x38 у ParticleManager какой-то мусор лежит. Разве создание партиклей вообще там должно быть?
Чет херь какая-то получается. Да и разве не нужно создать партикль, другой функцией его зааттачить и еще одной функцией его удалить?
Этож охереть можно тогда.
class DOTAParticleManager : public VClass {
public:
unsigned long CurrentHandle() {
return Member<unsigned long>(0xa0);
}
unsigned long ParticlesCount() {
return Member<unsigned long>(0x88);
}
void IncHandle() {
This().write(0xa0,CurrentHandle() + 1);
}
struct NewParticleEffect {
u64 vmt;
u64 idk;
u64 idk2;
u64 idk3;
VClass* CParticleCollection;
};
struct ParticleListItem {
u64 unk1;
u64 unk2;
NewParticleEffect* NPE;
u64 unk3;
u64 unk4;
unsigned long handle;
};
struct ParticleList {
ParticleListItem* items[100];
};
Ptr<ParticleList> Particles() {
return Member(0x90);
}
void CreateParticle(u64 handle, AnyPtr structptr) {
Call<7>(handle, structptr);
IncHandle();
}
};
ну и на будущее не 7 * 8 а 7 * sizeof(std::ptrdiff_t) чтобы была совместимость x86/x64 на всякий случай. а для index/count/size/capacity и подобных данных(ну то есть счёт элементов) лучше юзать std::size_t.UPD: Аааа, лол, вот же я идиот, так по-тупому недосмотрел. Всё, разобрался, заработало.
Надо спать чаще чем раз в три дня. Делал + 7 * 8 не к вмт, и удивляюсь, А ЧО НЕ РОБОТОЕТ XD
Посмотреть вложение 171107
Да это я для наглядности, я просто 0x38 пишу. Но вообще, да, совет дельный. Если и не для читов, то просто как полезная практика.ну и на будущее не 7 * 8 а 7 * sizeof(std::ptrdiff_t) чтобы была совместимость x86/x64 на всякий случай. а для index/count/size/capacity и подобных данных(ну то есть счёт элементов) лучше юзать std::size_t.
а то я тоже как даун себе так понаписал восьмёрок, потом на х86 собрал свою говнобазу для другой игры и думаю хули крашит а у меня там по 8 байт пишет вместо 4 :D
это не чит это туториал. тут еще 3 туториала в этом же разделе есть, они хоть и старые, но все что изменилось это оффсеты и индексы вмт. сама концепция осталась такой же. сделай свой чит просто.есть готовый запуск чита на эти партиклы? можно ссылку? и да если бы вы убрали вижн от вражеских крипов и оставили только вижн от враж героев - этому читу не было бы цены, но для лесников пойдет
Нахуй никому ничего не давай, а то щас напастят как в ксэто не чит это туториал. тут еще 3 туториала в этом же разделе есть, они хоть и старые, но все что изменилось это оффсеты и индексы вмт. сама концепция осталась такой же. сделай свой чит просто.
ну ваще изначально странно было что он эту хуйню на клиент скидывал. как будто специально для читеров.Оказывается, Гейбу внезапно не похуй на игру. VBE -- всё, во всех читах.
Хук не вызывается, даже в нетвар локал хиро ничего не пишется xd
int32 m_iTaggedAsVisibleByTeam(offset 0x1054)
+ MNetworkEnable
+ MNetworkPriority 32
int32 m_iTaggedAsVisibleByTeam(offset 0x1014)
+ MNetworkEnable
+ MNetworkUserGroup "SpectatorsOnly"
+ MNetworkPriority 32
Так да, я сразу и сказал, что изначально так и должно было быть. С хуя ли вообще эта инфа на клиенте есть.ну ваще изначально странно было что он эту хуйню на клиент скидывал. как будто специально для читеров.
раньше на сервере было:
щас на сервере:C++:int32 m_iTaggedAsVisibleByTeam(offset 0x1054) + MNetworkEnable + MNetworkPriority 32
я так понимаю(ну судя по дампу шемы) он теперь токо спектаторам эту хуйню скидывает. надо посмотреть мб там еще какието нетвары кроме m_iTaggedAsVisibleByTeam интересные есть.C++:int32 m_iTaggedAsVisibleByTeam(offset 0x1014) + MNetworkEnable + MNetworkUserGroup "SpectatorsOnly" + MNetworkPriority 32
OnTeamVisbilityChanged так ваще убрали - в списке коллбеков нет и хрефа тоже нет
Уже везде вернули. Но первыми вроде хейк и дивайн были.Liberalist если появятся какие-то идеи -- делись :D
UPD: Дивайн уже пофиксал. Значит, это возможно. А учитывая уровень кодеров этой дерьмовой пасты, сделать это несложно.
Посмотреть вложение 207055
привет, нашел что нибудь интересное?)ну ваще изначально странно было что он эту хуйню на клиент скидывал. как будто специально для читеров.
раньше на сервере было:
щас на сервере:C++:int32 m_iTaggedAsVisibleByTeam(offset 0x1054) + MNetworkEnable + MNetworkPriority 32
я так понимаю(ну судя по дампу шемы) он теперь токо спектаторам эту хуйню скидывает. надо посмотреть мб там еще какието нетвары кроме m_iTaggedAsVisibleByTeam интересные есть.C++:int32 m_iTaggedAsVisibleByTeam(offset 0x1014) + MNetworkEnable + MNetworkUserGroup "SpectatorsOnly" + MNetworkPriority 32
OnTeamVisbilityChanged так ваще убрали - в списке коллбеков нет и хрефа тоже нет
// m_flStartSequenceCycle
const auto vis = entity.visible;
entity.visible = entity.StartSequenceCyclePrev == entity.StartSequenceCycle;
entity.StartSequenceCyclePrev = entity.StartSequenceCycle;
if (vis != entity.visible)
entity.vbe = false;
сча по тесчу, спасиба)Это буквально псевдо-код из одних паст.C++:// m_flStartSequenceCycle const auto vis = entity.visible; entity.visible = entity.StartSequenceCyclePrev == entity.StartSequenceCycle; entity.StartSequenceCyclePrev = entity.StartSequenceCycle; if (vis != entity.visible) entity.vbe = false;
За работоспособность не отвечаю.
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz