alive forever
-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
XVTT Lessons
Итак,виртуализация функций - очень удобная и практичная вещь,которая поможет нам немного усложнить жизнь реверсерам,ваку и т.д. ,но это не все плюсы данной фитчи.
Рассматривать виртуализацию функций я буду лишь в теории и на примере большинства читов,где есть Rage\Legit bot'ы.
Итак,приступим.
В нашем чите есть два вида аима,но делать под каждый из них классы - долго и сложно.Проще сделать общий класс AimBot,откуда мы будем вызывать функции,которые нам нужны.
Так вот ,давайте создадим класс и пропишем там общие функции,которые есть в Rage и Legit ботах:
Код:
class AimBot
{
public:
virtual void EntityIsValid(int i);
virtual void DropTarget();
virtual float GetPlayerFOV(Vector& viewangles, const Vector& vSrc, const Vector& vEnd);
virtual void FindTarget(IClientEntity* mePlayer, IVEngineClient* pEngineClient);
virtual void DoAimBot(IClientEntity* mePlayer, IVEngineClient* pEngineClient, CUserCmd* cmd);
};
Помним то,что нам нужно указать в дочерних классах ссылку на наш класс AimBot
Код:
class RageBot : public AimbBot
{
};
Код:
class LegitBot: public AimbBot
{
};
Главное не забыть объявить указатель на главный класс и выделить под него память.
Код:
AimBot* AB = new AimBot();
Код:
Legit* LA= new Legit();
Rage* RA= new Rage();
AimBot* AMb[2];
AMb[0] = LA;
AMb[1] = RA;
for (int i = 0; i < 2; i++)
AMb[i]->DoAimBot(mePlayer, pEngine, cmd);
Главное это то,что такие методы реализаций очень сильно упрощают работу с большими проектами,где есть очень много одинаковых функций,но работающих немного по-другому.
И,естественно,аимы взяты лишь для примера и демонстрации.
В общем-то,это все.Спасибо за внимание.