Создание функции "SpamX" для Warface [ СМОЖЕТ КАЖДЫЙ ]

  • Автор темы Автор темы Arkting
  • Дата начала Дата начала
Забаненный
Забаненный
Статус
Оффлайн
Регистрация
2 Мар 2021
Сообщения
1,087
Реакции
406
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сегодня я расскажу и наглядно объясню как легко написать одну из интересных и достаточно простых функций на нашу игру Warface. Сегодня мы уберем ограничение каунтера на действия вашего персонажа как: Лечь/Встать, а так же полностью разберем методы объявления и написания кода.

Для первого шага нам понадобится создать класс ( Название можно использовать любое, но мы будем называть Cvars, в нем обычно хранятся всякие функции по типу спама...)

Заполняем следующим образом:

C++:
Expand Collapse Copy
class GameCvars
{
    public:
template <class CvarsSet>
        auto SetCvars(DWORD64 Offset, CvarsSet Value)
          { 
                   *(CvarsSet*)((DWORD64)this + Offset) = Value;
          }
}

С помощью строчки "template <class CvarsSet>" мы создаем локальный класс от которого будет отталкиваться наша основная функция "SetCvars" (если мы укажем вместо CvarsSet имя нашего основного класса, то компилятор выбьет ошибку, ну логично).

Auto вы можете заменить на более известное - функцию void (использовать авто гораздо удобней), далее задаем название нашей функции "SetCvars" и включаем в нее 2 переменные типа Dword64 (можно заменить на любой другой тип данных по типу INT64) и переменную созданную из локального класса.

Первая переменная - это наш оффсет, который мы заранее нашли
Вторая переменная - это значение нашего оффсета, т.е включение или выключение в нашем случае.

И наконец создаем легкую часть функции, присваивание значения Value к Offset.


C самой сложной частью мы закончили, переходим в функции...
Нам понадобится создать функцию типа void:

C++:
Expand Collapse Copy
void Spam()
{
       GameCvars* c_cvars = *(GameCvars**)0x14217C758;
       c_cvars->SetCvars(0xD3C,0);
}

1 строчка из данной функции - это создание переменной класса GameCvars , которая несет в себе адрес этого класса (игровой)
2 строчка функции - это объявление функции SetCvars из переменной c_cvars

0xD3C - это ячейка памяти игры (оффсет) именно этого действия, т.е лечь/встать.
0 - это значение для этого оффсета (т.е ВЫКЛ).

Все, мы добавили в наш чит новую функцию - SPAM X.

Video:

 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Какие функции хотите увидеть еще?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А есть готовая дллка ?)
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Мм, так это же даже школьник знал, не?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
И что оно дает?
 
пиздец. крайне не рекомендую писать именно так. стиль кода очень некрасив, зачем-то называть ещё и темплейт, когда его можно назвать просто t и не ебаться с этим. ещё 1 строка с иницилизацией адреса до ICVar, когда можно внести её в класс

C++:
Expand Collapse Copy
class ICVar
{
public:
    template <class t>
    void Set(uintptr_t offset, t value)
    {
        *(t*)((uintptr_t)this + offset) = value;
    }
    template <class T>
    t Get(uintptr_t offset)
    {
        return *(t*)((uintptr_t)this + offset);
    }

    static ICVar* Singleton()
    {
        return *(ICVar**)0x14217C758;
    }
}

в идеале конечно кастить, т.к мы пишем на плюсах, а не на просто С, но мне лень

usage:
C++:
Expand Collapse Copy
ICVar::Singleton()->Set(offset, value);

мог бы указать у кого взял. идеально видно что взял ты его у меня просто написав перменные с главной буквы и переименовав Set на SetCvars
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
пиздец. крайне не рекомендую писать именно так. стиль кода очень некрасив, зачем-то называть ещё и темплейт, когда его можно назвать просто t и не ебаться с этим. ещё 1 строка с иницилизацией адреса до ICVar, когда можно внести её в класс

C++:
Expand Collapse Copy
class ICVar
{
public:
    template <class t>
    void Set(uintptr_t offset, t value)
    {
        *(t*)((uintptr_t)this + offset) = value;
    }
    template <class T>
    t Get(uintptr_t offset)
    {
        return *(t*)((uintptr_t)this + offset);
    }

    static ICVar* Singleton()
    {
        return *(ICVar**)0x14217C758;
    }
}

в идеале конечно кастить, т.к мы пишем на плюсах, а не на просто С, но мне лень

usage:
C++:
Expand Collapse Copy
ICVar::Singleton()->Set(offset, value);

мог бы указать у кого взял. идеально видно что взял ты его у меня просто написав перменные с главной буквы и переименовав Set на SetCvars
Пожалуйста, авторизуйтесь для просмотра ссылки.
Но а смысл её какой?
 
Но а смысл её какой?
я сам до конца не понимаю какой смысл от неё, когда с таким же изменением памяти можно сделать аим или просто читать память и рисовать визуалы не от движка
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
я сам до конца не понимаю какой смысл от неё, когда с таким же изменением памяти можно сделать аим или просто читать память и рисовать визуалы не от движка
Вот именно. Куда не посмотри, он почти везде есть, а смысл от него не кто не говорит. Типо есть, ну есть.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
пиздец. крайне не рекомендую писать именно так. стиль кода очень некрасив, зачем-то называть ещё и темплейт, когда его можно назвать просто t и не ебаться с этим. ещё 1 строка с иницилизацией адреса до ICVar, когда можно внести её в класс

C++:
Expand Collapse Copy
class ICVar
{
public:
    template <class t>
    void Set(uintptr_t offset, t value)
    {
        *(t*)((uintptr_t)this + offset) = value;
    }
    template <class T>
    t Get(uintptr_t offset)
    {
        return *(t*)((uintptr_t)this + offset);
    }

    static ICVar* Singleton()
    {
        return *(ICVar**)0x14217C758;
    }
}

в идеале конечно кастить, т.к мы пишем на плюсах, а не на просто С, но мне лень

usage:
C++:
Expand Collapse Copy
ICVar::Singleton()->Set(offset, value);

мог бы указать у кого взял. идеально видно что взял ты его у меня просто написав перменные с главной буквы и переименовав Set на SetCvars
Взял. Повыебывался. Ушел. Нахуя? Зачем? Своими статиками ты уже заебал, если можно легко инициализировать это сразу в функциях и вообще. Я блять просто показал как это сделать, в твоем случае кода больше получилось. Не нужно всю свою обиду на меня (хуй знает вообще из за чего) переносить на туториалы и путать людей.
 
Взял. Повыебывался. Ушел. Нахуя? Зачем? Своими статиками ты уже заебал, если можно легко инициализировать это сразу в функциях и вообще. Я блять просто показал как это сделать, в твоем случае кода больше получилось. Не нужно всю свою обиду на меня (хуй знает вообще из за чего) переносить на туториалы и путать людей.
мне не за чем на тебя обижаться. выкладываешь код - будь любезен, выкладывай его адекватно. в моём случае кода получилось меньше, если убрать функцию Get. И я не выёбываюсь, а показываю как лучше.
GameCvars* c_cvars = *(GameCvars**)0x14217C758;
дело в том, что используя такой код, проект будет в говне. куда лучше использовать как показал я, ибо так выглядит эстетичние, сам посмотри
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
мне не за чем на тебя обижаться. выкладываешь код - будь любезен, выкладывай его адекватно. в моём случае кода получилось меньше, если убрать функцию Get. И я не выёбываюсь, а показываю как лучше.

дело в том, что используя такой код, проект будет в говне. куда лучше использовать как показал я, ибо так выглядит эстетичние, сам посмотри
В моем примере меньше кода... Из за чего проект будет в говне? Писать ненужные статики или сразу инициализировать по ходу действия? Думаю ответ очевиден.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Назад
Сверху Снизу