Гайд Основные функции чита

Пользователь
Статус
Оффлайн
Регистрация
15 Июл 2021
Сообщения
233
Реакции[?]
85
Поинты[?]
0
Кейбинды. Это самое веселое что может быть.

Все кейбинды системы делаются оч просто, создаёте переменную. Добавляете ей пару типов, ставите для неё кнопку и создаёте бул актив.
А потом делаете проверку на активный тип и поехали:

C++:
struct KeyBindik
{
Int key;
Int mode;
Bool active;
}

Inline KeyBindik g_Keys[max];

for (int I = 0; I < max_keys; I++)
{
auto bind = g_Binds[i];

Switch (bind.mode)

    case force_on:

            bind.active = true; break;

    case toggle:

             bind.active = GetKeyState(bind.key); break;

    case hold_on:

            bind.active = GetAsyncKeyState(bind.key); break;

    case hold_off:

             bind.active = !GetAsyncKeyState(bind.key); break;

    case force_off:

             bind.active = false; break;

}

Самая простая система логов)

И так , для начала нам понадобится больше 20 iq, ну если вы смогли открыть это, то значит вы нам подходите!

Для начала хочется сказать, тут не будет крутых анимаций, простенькая система и не более, по желанию вы можете её доработать

C++:
//Создаём наш структ
struct NotifyLogs
{
std::string text;
color col;
float erase_time;
}
inline NotifyLogs m_logs;
//Создаём функцию добавления логов
void AddLog(std::string text, color col = colors::white , float time = 2.f)
{
  m_logs({text, col, globals.realtime + time});
}

//Теперь создаём функцию рисования логов)
void LogsDraw()
{

for (int log = 0; log < m_logs.size(); log++)
{
if (m_logs[log].erase_time < globals.realtime)
     m_logs.erace();

static int offset = 10 + 16 * log;
render.draw_text(vec2_t(10, offset), m_logs[log].text, m_logs[log].col, font);

}

}

Рисольвер, о да, то самое на что так дрочат пастеры. То, что хочет иметь любой Винни пух, все хотят себе самый крутой и топовый ресольвер, а что это такое, как он работает и как сделать его правильным, не многие знают(даже я честно говоря xD)

Ресольвер - простыми словами это нахождение реального угла противника( не положения головы, нет)
Стоит сказать, что хороший ресольвер без правильных анимаций и хорошего лагкомп не сделать. Он конечно будет работать, но не идеально.
Для начала стоит узнать какие способы определения стороны десинк имеются:
Первый и самый известный - анимации. Для большинства выражение “ресольвер по анимациям» означает анимлееры, да, они принимают в нём участие, и являются главной частью.
Большая часть аним ресольвера начинаются с поиском дельт
Левая, центральна, правая, и лоу
Дельта находится так:
Abs(для получения положительного значения)

C++:
(record->layers[center][6].playback_rate - record->layers[left or right][6].playback_rate) 6
- это мув леер, отвечает за мувы (что логично)
Вантуз в2-в3 сравнивал их при помощи крутых вычислений, а крутые кодеры по типу порча, делают иначе, сравнивая их, и занося большую в статичную переменную.
Как я уже сказал раньше нам нужен хороший анимфикс, а для чего? А чтобы иметь для каждой матрицы, свои лееры


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


Теперь расскажу про десинк дельту

Самый лучший способ найти максимально правильную, setupvelocity, а именно значения MaxBodyYaw и MinBodyYaw, они ограничены от -58 до 58 и больше быть не могут

Оки доки, у вас есть десинк дельта, нужный сайт, что же делать дальше? ПОДСТАВЛЯТЬ!!

Самый простой способ это юзать switch

На первый кейс вы ставите

animstate->goal_feet_yaw = record-> abs_yaw - desync_delta * side;

На второй, вы своё значение умножаете на -1, а дальше(2, 3, 4 и тд) начинаете брутить, сначала миняв, потом максяв, потом 30 градусов, потом -30 градусов, можете свои углы придумать, но это не обязательно

Профит!


Лагкомпенсация, самая важная часть любого рейдж чита, без неё не получится сделать хороший рейдж, беккек и тд.

Коротко о работе лагкомп, собираем рекорды противника, проверяем, обновляем анимации для каждого рекорда, и сейвим.
Что такое рекорд? Рекорд это запись игрока(ахуеть да?), запись большинства его переменных, позиция, углы, флаги, мины и максы, симтаймы матрицы и тд.

Базовый лагкомп.

Находим игрока, проверяем что он нам подходит(он живой, является противником), проверяем что он не юзает эксплойты, сохраняем рекорд, апдейтим анимки, и если кол-во рекордов больше 32, удаляем последний. По сути всё, не буду углубляться в мелочи, ссылку на
Пожалуйста, авторизуйтесь для просмотра ссылки.



Анимфикс, да да , он самый, так как мне нечего делать, распишу суть его работы:

Он нужен для синхронизации анимаций на сервере и клиенте, рассинхрон происходит из-за того, что на сервере анимации обновляются каждый тик, а на клиенте каждый кадр.
Для синхронизации нам нужно остановить игру от обновлений, и в момент прихода к нам анимаций, обновить аналогично серверу.

Простейшая версия анимфикса:

  • Для начала мы должны засторить все наши глобальные переменные(curtime, realtime, frametime, frame count, absframecount и interp_amount)
  • Все таймы мы приравниваем к симтайму энеми, а каунты к интервалу, интерп эмаунт ставим на нуль.
  • Форсим флаг 0x1000
  • Приравниваем абс велосити к обычному велосити
  • Обновляем клиенсайд анимации
  • Сетапим матрицу
  • Ресторим глобалсы

Всё! Базовый анимфикс готов, но для того чтобы сделать его чуть лучше, нужно добавить велоситификс, сейчас мне его лень расписывать, но позже я обязательно это сделаю)


Думал я тут значит насчёт дефенсива и подобных ему эксплойтах, что я знаю:

Дефенсив по сути те же фейклаги, но вместо чока, они шифтят тикбазу, а какие фейклаги труднее всего предиктить? Правильно, на пик, а почему? Да потому что при пике большинство читов ставят более большой чок, 15-16 тиков, за счёт этого лагкомпенсация ломается более сильно, и если в чите нет проверки на брик лк, то чит либо мисает, либо не стреляет вовсе.
Как я себе вижу примерный код:
C++:
//Делаем таймер, который будет шифтить раз в какое-то кол-во тиков, буду брать их из фейклагов
static int m_iTickDelay = o;
if (++m_iTickDelay >= g_Setting.FakelagFactor)
g_Exploits->SetShiftCount(bIsPeeking ? 16 : 14);
// Да я понимаю что шифт 16-ти тиков повлияет на стабильность дт и скорее всего зашифчено будет меньше, но оно может сломать лагкомпенсацию

m_iTickDelay = 0;
// Обнуляем делей после шифта
Теперь брик лц. Это похожий эксплоит, работает по тому же сценарию, но только без таймера и без проверки на пик, при использовании с фейклагами достаточно шифтить 1-2 тика, без фейклагов 10-14, в зависимости от того, какие флаги у вас стоят по дефу (1 или 2)


Теперь подумаем насчёт ресольвера, в частности запоминания угла, я себе представляю это так:
C++:
// Мы создаём переменную, которая будет хранить последний заресольвленный угол
static float m_flLastResolvedAngle[64];
if (m_flLastResolvedAngle[index] == 0)
m_flLastResolvedAngle[index] = -1.f;
// Определяем угол, чтобы не было крашей случайных, сделать надо через цикл for

case 0:
//  У нас пока не было мисов, и если ласт угол не равен -1 то мы ставим его, в ином случае мы ставим найденый он угол, а ласт угол определяем

Оптимизация, это вообще отдельная тема, делается ту мач сложно, начиная ограничениями вычислений, заканчивая созданием мультитрединга, и вынесением функций в потоки:

Самая простая оптимизация, это:

  • Ограничение игроков для скана до 2-х
  • Фиксация значений ресольвера хотя бы на пару тиков
  • Оптимизация сигнатур, использования типа static везде где это приемлемо
  • Удаление ненужного кода, комментариев, бесполезных вычислений и сравниваний
  • Вместо постоянного поиска названия и директорий в чамсах и тд, использование статичных индексов и тд.

Более хорошая оптимизация:

  • Рефакторинг кода
  • Поиск жрущих фпс частей кода
  • Чистка хуков
  • Разбивка кода по функция, дабы не переполнять буфер
  • Редкое использование сетапбонса

Наилучшая оптимизация:

  • Использование мультридинга
  • Профилировщиком найти всё что сильно нагружает ЦП
  • Статичные хуки
Credits: Insultik
 
Последнее редактирование:
(\ /) _ ($ __ $ ) _ (\ /)
Пользователь
Статус
Оффлайн
Регистрация
22 Окт 2021
Сообщения
361
Реакции[?]
92
Поинты[?]
24K
Кейбинды. Это самое веселое что может быть.

Все кейбинды системы делаются оч просто, создаёте переменную. Добавляете ей пару типов, ставите для неё кнопку и создаёте бул актив.
А потом делаете проверку на активный тип и поехали:

C++:
struct KeyBindik
{
Int key;
Int mode;
Bool active;
}

Inline KeyBindik g_Keys[max];

for (int I = 0; I < max_keys; I++)
{
auto bind = g_Binds[i];

Switch (bind.mode)

    case force_on:

            Bind.active = true; break;

    case toggle:

             bind.active = GetKeyState(bind.key); break;

    case hold_on:

            bind.active = GetAsyncKeyState(bind.key); break;

    case hold_off:

             bind.active = !GetAsyncKeyState(bind.key); break;

    case force_off:

             bind.active = false; break;

}

Самая простая система логов)

И так , для начала нам понадобится больше 20 iq, ну если вы смогли открыть это, то значит вы нам подходите!

Для начала хочется сказать, тут не будет крутых анимаций, простенькая система и не более, по желанию вы можете её доработать

C++:
//Создаём наш структ
struct NotifyLogs
{
std::string text;
color col;
float erase_time;
}
inline NotifyLogs m_logs;
//Создаём функцию добавления логов
void AddLog(std::string text, color col = colors::white , float time = 2.f)
{
  m_logs({text, col, globals.realtime + time});
}

//Теперь создаём функцию рисования логов)
void LogsDraw()
{

for (int log = 0; log < m_logs.size(); log++)
{
if (m_logs[log].erase_time < globals.realtime)
     m_logs.erace();

static int offset = 10 + 16 * log;
render.draw_text(vec2_t(10, offset), m_logs[log].text, m_logs[log].col, font);

}

}

Рисольвер, о да, то самое на что так дрочат пастеры. То, что хочет иметь любой Винни пух, все хотят себе самый крутой и топовый ресольвер, а что это такое, как он работает и как сделать его правильным, не многие знают(даже я честно говоря xD)

Ресольвер - простыми словами это нахождение реального угла противника( не положения головы, нет)
Стоит сказать, что хороший ресольвер без правильных анимаций и хорошего лагкомп не сделать. Он конечно будет работать, но не идеально.
Для начала стоит узнать какие способы определения стороны десинк имеются:
Первый и самый известный - анимации. Для большинства выражение “ресольвер по анимациям» означает анимлееры, да, они принимают в нём участие, и являются главной частью.
Большая часть аним ресольвера начинаются с поиском дельт
Левая, центральна, правая, и лоу
Дельта находится так:
Abs(для получения положительного значения)

C++:
(record->layers[center][6].playback_rate - record->layers[left or right][6].playback_rate) 6
- это мув леер, отвечает за мувы (что логично)
Вантуз в2-в3 сравнивал их при помощи крутых вычислений, а крутые кодеры по типу порча, делают иначе, сравнивая их, и занося большую в статичную переменную.
Как я уже сказал раньше нам нужен хороший анимфикс, а для чего? А чтобы иметь для каждой матрицы, свои лееры


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


Теперь расскажу про десинк дельту

Самый лучший способ найти максимально правильную, setupvelocity, а именно значения MaxBodyYaw и MinBodyYaw, они ограничены от -58 до 58 и больше быть не могут

Оки доки, у вас есть десинк дельта, нужный сайт, что же делать дальше? ПОДСТАВЛЯТЬ!!

Самый простой способ это юзать switch

На первый кейс вы ставите

animstate->goal_feet_yaw = record-> abs_yaw - desync_delta * side;

На второй, вы своё значение умножаете на -1, а дальше(2, 3, 4 и тд) начинаете брутить, сначала миняв, потом максяв, потом 30 градусов, потом -30 градусов, можете свои углы придумать, но это не обязательно

Профит!


Лагкомпенсация, самая важная часть любого рейдж чита, без неё не получится сделать хороший рейдж, беккек и тд.

Коротко о работе лагкомп, собираем рекорды противника, проверяем, обновляем анимации для каждого рекорда, и сейвим.
Что такое рекорд? Рекорд это запись игрока(ахуеть да?), запись большинства его переменных, позиция, углы, флаги, мины и максы, симтаймы матрицы и тд.

Базовый лагкомп.

Находим игрока, проверяем что он нам подходит(он живой, является противником), проверяем что он не юзает эксплойты, сохраняем рекорд, апдейтим анимки, и если кол-во рекордов больше 32, удаляем последний. По сути всё, не буду углубляться в мелочи, ссылку на
Пожалуйста, авторизуйтесь для просмотра ссылки.



Анимфикс, да да , он самый, так как мне нечего делать, распишу суть его работы:

Он нужен для синхронизации анимаций на сервере и клиенте, рассинхрон происходит из-за того, что на сервере анимации обновляются каждый тик, а на клиенте каждый кадр.
Для синхронизации нам нужно остановить игру от обновлений, и в момент прихода к нам анимаций, обновить аналогично серверу.

Простейшая версия анимфикса:

  • Для начала мы должны засторить все наши глобальные переменные(curtime, realtime, frametime, frame count, absframecount и interp_amount)
  • Все таймы мы приравниваем к симтайму энеми, а каунты к интервалу, интерп эмаунт ставим на нуль.
  • Форсим флаг 0x1000
  • Приравниваем абс велосити к обычному велосити
  • Обновляем клиенсайд анимации
  • Сетапим матрицу
  • Ресторим глобалсы

Всё! Базовый анимфикс готов, но для того чтобы сделать его чуть лучше, нужно добавить велоситификс, сейчас мне его лень расписывать, но позже я обязательно это сделаю)


Думал я тут значит насчёт дефенсива и подобных ему эксплойтах, что я знаю:

Дефенсив по сути те же фейклаги, но вместо чока, они шифтят тикбазу, а какие фейклаги труднее всего предиктить? Правильно, на пик, а почему? Да потому что при пике большинство читов ставят более большой чок, 15-16 тиков, за счёт этого лагкомпенсация ломается более сильно, и если в чите нет проверки на брик лк, то чит либо мисает, либо не стреляет вовсе.
Как я себе вижу примерный код:
C++:
//Делаем таймер, который будет шифтить раз в какое-то кол-во тиков, буду брать их из фейклагов
static int m_iTickDelay = o;
if (++m_iTickDelay >= g_Setting.FakelagFactor)
g_Exploits->SetShiftCount(bIsPeeking ? 16 : 14);
// Да я понимаю что шифт 16-ти тиков повлияет на стабильность дт и скорее всего зашифчено будет меньше, но оно может сломать лагкомпенсацию

m_iTickDelay = 0;
// Обнуляем делей после шифта
Теперь брик лц. Это похожий эксплоит, работает по тому же сценарию, но только без таймера и без проверки на пик, при использовании с фейклагами достаточно шифтить 1-2 тика, без фейклагов 10-14, в зависимости от того, какие флаги у вас стоят по дефу (1 или 2)


Теперь подумаем насчёт ресольвера, в частности запоминания угла, я себе представляю это так:
C++:
// Мы создаём переменную, которая будет хранить последний заресольвленный угол
static float m_flLastResolvedAngle[64];
if (m_flLastResolvedAngle[index] == 0)
m_flLastResolvedAngle[index] = -1.f;
// Определяем угол, чтобы не было крашей случайных, сделать надо через цикл for

case 0:
//  У нас пока не было мисов, и если ласт угол не равен -1 то мы ставим его, в ином случае мы ставим найденый он угол, а ласт угол определяем

Оптимизация, это вообще отдельная тема, делается ту мач сложно, начиная ограничениями вычислений, заканчивая созданием мультитрединга, и вынесением функций в потоки:

Самая простая оптимизация, это:

  • Ограничение игроков для скана до 2-х
  • Фиксация значений ресольвера хотя бы на пару тиков
  • Оптимизация сигнатур, использования типа static везде где это приемлемо
  • Удаление ненужного кода, комментариев, бесполезных вычислений и сравниваний
  • Вместо постоянного поиска названия и директорий в чамсах и тд, использование статичных индексов и тд.

Более хорошая оптимизация:

  • Рефракторинг кода
  • Поиск жрущих фпс частей кода
  • Чистка хуков
  • Разбивка кода по функция, дабы не переполнять буфер
  • Редкое использование сетапбонса

Наилучшая оптимизация:

  • Использование мультридинга
  • Профилировщиком найти всё что сильно нагружает ЦП
  • Статичные хуки
good job, правда я про это знал, можно еще подключить потоки, чтобы оптимизировать
UPD.

Не прочитал, что ты написал про потоки, значит все збс, пастеркам пригодится :roflanBuldiga:
 
Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
492
Реакции[?]
289
Поинты[?]
79K
Кейбинды. Это самое веселое что может быть.

Все кейбинды системы делаются оч просто, создаёте переменную. Добавляете ей пару типов, ставите для неё кнопку и создаёте бул актив.
А потом делаете проверку на активный тип и поехали:

C++:
struct KeyBindik
{
Int key;
Int mode;
Bool active;
}

Inline KeyBindik g_Keys[max];

for (int I = 0; I < max_keys; I++)
{
auto bind = g_Binds[i];

Switch (bind.mode)

    case force_on:

            Bind.active = true; break;

    case toggle:

             bind.active = GetKeyState(bind.key); break;

    case hold_on:

            bind.active = GetAsyncKeyState(bind.key); break;

    case hold_off:

             bind.active = !GetAsyncKeyState(bind.key); break;

    case force_off:

             bind.active = false; break;

}

Самая простая система логов)

И так , для начала нам понадобится больше 20 iq, ну если вы смогли открыть это, то значит вы нам подходите!

Для начала хочется сказать, тут не будет крутых анимаций, простенькая система и не более, по желанию вы можете её доработать

C++:
//Создаём наш структ
struct NotifyLogs
{
std::string text;
color col;
float erase_time;
}
inline NotifyLogs m_logs;
//Создаём функцию добавления логов
void AddLog(std::string text, color col = colors::white , float time = 2.f)
{
  m_logs({text, col, globals.realtime + time});
}

//Теперь создаём функцию рисования логов)
void LogsDraw()
{

for (int log = 0; log < m_logs.size(); log++)
{
if (m_logs[log].erase_time < globals.realtime)
     m_logs.erace();

static int offset = 10 + 16 * log;
render.draw_text(vec2_t(10, offset), m_logs[log].text, m_logs[log].col, font);

}

}

Рисольвер, о да, то самое на что так дрочат пастеры. То, что хочет иметь любой Винни пух, все хотят себе самый крутой и топовый ресольвер, а что это такое, как он работает и как сделать его правильным, не многие знают(даже я честно говоря xD)

Ресольвер - простыми словами это нахождение реального угла противника( не положения головы, нет)
Стоит сказать, что хороший ресольвер без правильных анимаций и хорошего лагкомп не сделать. Он конечно будет работать, но не идеально.
Для начала стоит узнать какие способы определения стороны десинк имеются:
Первый и самый известный - анимации. Для большинства выражение “ресольвер по анимациям» означает анимлееры, да, они принимают в нём участие, и являются главной частью.
Большая часть аним ресольвера начинаются с поиском дельт
Левая, центральна, правая, и лоу
Дельта находится так:
Abs(для получения положительного значения)

C++:
(record->layers[center][6].playback_rate - record->layers[left or right][6].playback_rate) 6
- это мув леер, отвечает за мувы (что логично)
Вантуз в2-в3 сравнивал их при помощи крутых вычислений, а крутые кодеры по типу порча, делают иначе, сравнивая их, и занося большую в статичную переменную.
Как я уже сказал раньше нам нужен хороший анимфикс, а для чего? А чтобы иметь для каждой матрицы, свои лееры


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


Теперь расскажу про десинк дельту

Самый лучший способ найти максимально правильную, setupvelocity, а именно значения MaxBodyYaw и MinBodyYaw, они ограничены от -58 до 58 и больше быть не могут

Оки доки, у вас есть десинк дельта, нужный сайт, что же делать дальше? ПОДСТАВЛЯТЬ!!

Самый простой способ это юзать switch

На первый кейс вы ставите

animstate->goal_feet_yaw = record-> abs_yaw - desync_delta * side;

На второй, вы своё значение умножаете на -1, а дальше(2, 3, 4 и тд) начинаете брутить, сначала миняв, потом максяв, потом 30 градусов, потом -30 градусов, можете свои углы придумать, но это не обязательно

Профит!


Лагкомпенсация, самая важная часть любого рейдж чита, без неё не получится сделать хороший рейдж, беккек и тд.

Коротко о работе лагкомп, собираем рекорды противника, проверяем, обновляем анимации для каждого рекорда, и сейвим.
Что такое рекорд? Рекорд это запись игрока(ахуеть да?), запись большинства его переменных, позиция, углы, флаги, мины и максы, симтаймы матрицы и тд.

Базовый лагкомп.

Находим игрока, проверяем что он нам подходит(он живой, является противником), проверяем что он не юзает эксплойты, сохраняем рекорд, апдейтим анимки, и если кол-во рекордов больше 32, удаляем последний. По сути всё, не буду углубляться в мелочи, ссылку на
Пожалуйста, авторизуйтесь для просмотра ссылки.



Анимфикс, да да , он самый, так как мне нечего делать, распишу суть его работы:

Он нужен для синхронизации анимаций на сервере и клиенте, рассинхрон происходит из-за того, что на сервере анимации обновляются каждый тик, а на клиенте каждый кадр.
Для синхронизации нам нужно остановить игру от обновлений, и в момент прихода к нам анимаций, обновить аналогично серверу.

Простейшая версия анимфикса:

  • Для начала мы должны засторить все наши глобальные переменные(curtime, realtime, frametime, frame count, absframecount и interp_amount)
  • Все таймы мы приравниваем к симтайму энеми, а каунты к интервалу, интерп эмаунт ставим на нуль.
  • Форсим флаг 0x1000
  • Приравниваем абс велосити к обычному велосити
  • Обновляем клиенсайд анимации
  • Сетапим матрицу
  • Ресторим глобалсы

Всё! Базовый анимфикс готов, но для того чтобы сделать его чуть лучше, нужно добавить велоситификс, сейчас мне его лень расписывать, но позже я обязательно это сделаю)


Думал я тут значит насчёт дефенсива и подобных ему эксплойтах, что я знаю:

Дефенсив по сути те же фейклаги, но вместо чока, они шифтят тикбазу, а какие фейклаги труднее всего предиктить? Правильно, на пик, а почему? Да потому что при пике большинство читов ставят более большой чок, 15-16 тиков, за счёт этого лагкомпенсация ломается более сильно, и если в чите нет проверки на брик лк, то чит либо мисает, либо не стреляет вовсе.
Как я себе вижу примерный код:
C++:
//Делаем таймер, который будет шифтить раз в какое-то кол-во тиков, буду брать их из фейклагов
static int m_iTickDelay = o;
if (++m_iTickDelay >= g_Setting.FakelagFactor)
g_Exploits->SetShiftCount(bIsPeeking ? 16 : 14);
// Да я понимаю что шифт 16-ти тиков повлияет на стабильность дт и скорее всего зашифчено будет меньше, но оно может сломать лагкомпенсацию

m_iTickDelay = 0;
// Обнуляем делей после шифта
Теперь брик лц. Это похожий эксплоит, работает по тому же сценарию, но только без таймера и без проверки на пик, при использовании с фейклагами достаточно шифтить 1-2 тика, без фейклагов 10-14, в зависимости от того, какие флаги у вас стоят по дефу (1 или 2)


Теперь подумаем насчёт ресольвера, в частности запоминания угла, я себе представляю это так:
C++:
// Мы создаём переменную, которая будет хранить последний заресольвленный угол
static float m_flLastResolvedAngle[64];
if (m_flLastResolvedAngle[index] == 0)
m_flLastResolvedAngle[index] = -1.f;
// Определяем угол, чтобы не было крашей случайных, сделать надо через цикл for

case 0:
//  У нас пока не было мисов, и если ласт угол не равен -1 то мы ставим его, в ином случае мы ставим найденый он угол, а ласт угол определяем

Оптимизация, это вообще отдельная тема, делается ту мач сложно, начиная ограничениями вычислений, заканчивая созданием мультитрединга, и вынесением функций в потоки:

Самая простая оптимизация, это:

  • Ограничение игроков для скана до 2-х
  • Фиксация значений ресольвера хотя бы на пару тиков
  • Оптимизация сигнатур, использования типа static везде где это приемлемо
  • Удаление ненужного кода, комментариев, бесполезных вычислений и сравниваний
  • Вместо постоянного поиска названия и директорий в чамсах и тд, использование статичных индексов и тд.

Более хорошая оптимизация:

  • Рефракторинг кода
  • Поиск жрущих фпс частей кода
  • Чистка хуков
  • Разбивка кода по функция, дабы не переполнять буфер
  • Редкое использование сетапбонса

Наилучшая оптимизация:

  • Использование мультридинга
  • Профилировщиком найти всё что сильно нагружает ЦП
  • Статичные хуки
Credits: Insultik
Ты чево наделал, люди поумнеют и перестанут создавать темы по поводу каждой ошибки в разделе помощи новичкам. Или более умные по этой antipaste строчке static int m_iTickDelay = o; будут задавать вопрос, мол почему не работает, а что за g_Exploits.

А вообще тема ну чисто на приколе, поставил бы реакции, будь у меня возможность. Ньюкамыч всея Руси точно одобряет. +rep

P.s. даже форум сейчас упал из-за поста...
 
ima sippin lean
Забаненный
Статус
Оффлайн
Регистрация
6 Май 2020
Сообщения
495
Реакции[?]
380
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
хавыахвыхвыа че за кринж я прочитал
 
Keep Ev0lving, Stay Fatal
Эксперт
Статус
Оффлайн
Регистрация
6 Фев 2018
Сообщения
1,550
Реакции[?]
585
Поинты[?]
101K
Самый простой способ это юзать switch
Свитч блять чего.
Самая простая оптимизация, это:

  • Ограничение игроков для скана до 2-х
Мммм, говном то запахло.
Использование мультридинга
Так и не нашёл в паблике инфы насчёт этого. (ПРОПЕР ИНФЫ).
В целом гайд сделан +- нормально, пару моментов только переделать.
На мой взгляд, он целесообразен только для новичков в сфере пастинга, что является хорошим для них и нехорошим для меня, поэтому :roflanPominki:
 
ima sippin lean
Забаненный
Статус
Оффлайн
Регистрация
6 Май 2020
Сообщения
495
Реакции[?]
380
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Эксперт
Статус
Оффлайн
Регистрация
13 Сен 2020
Сообщения
1,415
Реакции[?]
713
Поинты[?]
10K
Кейбинды. Это самое веселое что может быть.

Все кейбинды системы делаются оч просто, создаёте переменную. Добавляете ей пару типов, ставите для неё кнопку и создаёте бул актив.
А потом делаете проверку на активный тип и поехали:

C++:
struct KeyBindik
{
Int key;
Int mode;
Bool active;
}

Inline KeyBindik g_Keys[max];

for (int I = 0; I < max_keys; I++)
{
auto bind = g_Binds[i];

Switch (bind.mode)

    case force_on:

            Bind.active = true; break;

    case toggle:

             bind.active = GetKeyState(bind.key); break;

    case hold_on:

            bind.active = GetAsyncKeyState(bind.key); break;

    case hold_off:

             bind.active = !GetAsyncKeyState(bind.key); break;

    case force_off:

             bind.active = false; break;

}

Самая простая система логов)

И так , для начала нам понадобится больше 20 iq, ну если вы смогли открыть это, то значит вы нам подходите!

Для начала хочется сказать, тут не будет крутых анимаций, простенькая система и не более, по желанию вы можете её доработать

C++:
//Создаём наш структ
struct NotifyLogs
{
std::string text;
color col;
float erase_time;
}
inline NotifyLogs m_logs;
//Создаём функцию добавления логов
void AddLog(std::string text, color col = colors::white , float time = 2.f)
{
  m_logs({text, col, globals.realtime + time});
}

//Теперь создаём функцию рисования логов)
void LogsDraw()
{

for (int log = 0; log < m_logs.size(); log++)
{
if (m_logs[log].erase_time < globals.realtime)
     m_logs.erace();

static int offset = 10 + 16 * log;
render.draw_text(vec2_t(10, offset), m_logs[log].text, m_logs[log].col, font);

}

}

Рисольвер, о да, то самое на что так дрочат пастеры. То, что хочет иметь любой Винни пух, все хотят себе самый крутой и топовый ресольвер, а что это такое, как он работает и как сделать его правильным, не многие знают(даже я честно говоря xD)

Ресольвер - простыми словами это нахождение реального угла противника( не положения головы, нет)
Стоит сказать, что хороший ресольвер без правильных анимаций и хорошего лагкомп не сделать. Он конечно будет работать, но не идеально.
Для начала стоит узнать какие способы определения стороны десинк имеются:
Первый и самый известный - анимации. Для большинства выражение “ресольвер по анимациям» означает анимлееры, да, они принимают в нём участие, и являются главной частью.
Большая часть аним ресольвера начинаются с поиском дельт
Левая, центральна, правая, и лоу
Дельта находится так:
Abs(для получения положительного значения)

C++:
(record->layers[center][6].playback_rate - record->layers[left or right][6].playback_rate) 6
- это мув леер, отвечает за мувы (что логично)
Вантуз в2-в3 сравнивал их при помощи крутых вычислений, а крутые кодеры по типу порча, делают иначе, сравнивая их, и занося большую в статичную переменную.
Как я уже сказал раньше нам нужен хороший анимфикс, а для чего? А чтобы иметь для каждой матрицы, свои лееры


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


Теперь расскажу про десинк дельту

Самый лучший способ найти максимально правильную, setupvelocity, а именно значения MaxBodyYaw и MinBodyYaw, они ограничены от -58 до 58 и больше быть не могут

Оки доки, у вас есть десинк дельта, нужный сайт, что же делать дальше? ПОДСТАВЛЯТЬ!!

Самый простой способ это юзать switch

На первый кейс вы ставите

animstate->goal_feet_yaw = record-> abs_yaw - desync_delta * side;

На второй, вы своё значение умножаете на -1, а дальше(2, 3, 4 и тд) начинаете брутить, сначала миняв, потом максяв, потом 30 градусов, потом -30 градусов, можете свои углы придумать, но это не обязательно

Профит!


Лагкомпенсация, самая важная часть любого рейдж чита, без неё не получится сделать хороший рейдж, беккек и тд.

Коротко о работе лагкомп, собираем рекорды противника, проверяем, обновляем анимации для каждого рекорда, и сейвим.
Что такое рекорд? Рекорд это запись игрока(ахуеть да?), запись большинства его переменных, позиция, углы, флаги, мины и максы, симтаймы матрицы и тд.

Базовый лагкомп.

Находим игрока, проверяем что он нам подходит(он живой, является противником), проверяем что он не юзает эксплойты, сохраняем рекорд, апдейтим анимки, и если кол-во рекордов больше 32, удаляем последний. По сути всё, не буду углубляться в мелочи, ссылку на
Пожалуйста, авторизуйтесь для просмотра ссылки.



Анимфикс, да да , он самый, так как мне нечего делать, распишу суть его работы:

Он нужен для синхронизации анимаций на сервере и клиенте, рассинхрон происходит из-за того, что на сервере анимации обновляются каждый тик, а на клиенте каждый кадр.
Для синхронизации нам нужно остановить игру от обновлений, и в момент прихода к нам анимаций, обновить аналогично серверу.

Простейшая версия анимфикса:

  • Для начала мы должны засторить все наши глобальные переменные(curtime, realtime, frametime, frame count, absframecount и interp_amount)
  • Все таймы мы приравниваем к симтайму энеми, а каунты к интервалу, интерп эмаунт ставим на нуль.
  • Форсим флаг 0x1000
  • Приравниваем абс велосити к обычному велосити
  • Обновляем клиенсайд анимации
  • Сетапим матрицу
  • Ресторим глобалсы

Всё! Базовый анимфикс готов, но для того чтобы сделать его чуть лучше, нужно добавить велоситификс, сейчас мне его лень расписывать, но позже я обязательно это сделаю)


Думал я тут значит насчёт дефенсива и подобных ему эксплойтах, что я знаю:

Дефенсив по сути те же фейклаги, но вместо чока, они шифтят тикбазу, а какие фейклаги труднее всего предиктить? Правильно, на пик, а почему? Да потому что при пике большинство читов ставят более большой чок, 15-16 тиков, за счёт этого лагкомпенсация ломается более сильно, и если в чите нет проверки на брик лк, то чит либо мисает, либо не стреляет вовсе.
Как я себе вижу примерный код:
C++:
//Делаем таймер, который будет шифтить раз в какое-то кол-во тиков, буду брать их из фейклагов
static int m_iTickDelay = o;
if (++m_iTickDelay >= g_Setting.FakelagFactor)
g_Exploits->SetShiftCount(bIsPeeking ? 16 : 14);
// Да я понимаю что шифт 16-ти тиков повлияет на стабильность дт и скорее всего зашифчено будет меньше, но оно может сломать лагкомпенсацию

m_iTickDelay = 0;
// Обнуляем делей после шифта
Теперь брик лц. Это похожий эксплоит, работает по тому же сценарию, но только без таймера и без проверки на пик, при использовании с фейклагами достаточно шифтить 1-2 тика, без фейклагов 10-14, в зависимости от того, какие флаги у вас стоят по дефу (1 или 2)


Теперь подумаем насчёт ресольвера, в частности запоминания угла, я себе представляю это так:
C++:
// Мы создаём переменную, которая будет хранить последний заресольвленный угол
static float m_flLastResolvedAngle[64];
if (m_flLastResolvedAngle[index] == 0)
m_flLastResolvedAngle[index] = -1.f;
// Определяем угол, чтобы не было крашей случайных, сделать надо через цикл for

case 0:
//  У нас пока не было мисов, и если ласт угол не равен -1 то мы ставим его, в ином случае мы ставим найденый он угол, а ласт угол определяем

Оптимизация, это вообще отдельная тема, делается ту мач сложно, начиная ограничениями вычислений, заканчивая созданием мультитрединга, и вынесением функций в потоки:

Самая простая оптимизация, это:

  • Ограничение игроков для скана до 2-х
  • Фиксация значений ресольвера хотя бы на пару тиков
  • Оптимизация сигнатур, использования типа static везде где это приемлемо
  • Удаление ненужного кода, комментариев, бесполезных вычислений и сравниваний
  • Вместо постоянного поиска названия и директорий в чамсах и тд, использование статичных индексов и тд.

Более хорошая оптимизация:

  • Рефакторинг кода
  • Поиск жрущих фпс частей кода
  • Чистка хуков
  • Разбивка кода по функция, дабы не переполнять буфер
  • Редкое использование сетапбонса

Наилучшая оптимизация:

  • Использование мультридинга
  • Профилировщиком найти всё что сильно нагружает ЦП
  • Статичные хуки
Credits: Insultik
почему ты не сделал for (auto& bind : g_Binds)?
 
Бульдозер
Эксперт
Статус
Оффлайн
Регистрация
18 Июл 2019
Сообщения
1,231
Реакции[?]
508
Поинты[?]
2K
Самая простая оптимизация, это:

  • Ограничение игроков для скана до 2-х
  • Фиксация значений ресольвера хотя бы на пару тиков
  • Оптимизация сигнатур, использования типа static везде где это приемлемо
  • Удаление ненужного кода, комментариев, бесполезных вычислений и сравниваний
  • Вместо постоянного поиска названия и директорий в чамсах и тд, использование статичных индексов и тд
Удаление ненужного кода, комментариев, бесполезных вычислений и сравниваний
нихуя себе, комментарии влияют на оптимизацию, спасибо будем знать
 
Участник
Статус
Оффлайн
Регистрация
29 Дек 2019
Сообщения
381
Реакции[?]
168
Поинты[?]
3K
Кейбинды. Это самое веселое что может быть.

Все кейбинды системы делаются оч просто, создаёте переменную. Добавляете ей пару типов, ставите для неё кнопку и создаёте бул актив.
А потом делаете проверку на активный тип и поехали:

C++:
struct KeyBindik
{
Int key;
Int mode;
Bool active;
}

Inline KeyBindik g_Keys[max];

for (int I = 0; I < max_keys; I++)
{
auto bind = g_Binds[i];

Switch (bind.mode)

    case force_on:

            Bind.active = true; break;

    case toggle:

             bind.active = GetKeyState(bind.key); break;

    case hold_on:

            bind.active = GetAsyncKeyState(bind.key); break;

    case hold_off:

             bind.active = !GetAsyncKeyState(bind.key); break;

    case force_off:

             bind.active = false; break;

}

Самая простая система логов)

И так , для начала нам понадобится больше 20 iq, ну если вы смогли открыть это, то значит вы нам подходите!

Для начала хочется сказать, тут не будет крутых анимаций, простенькая система и не более, по желанию вы можете её доработать

C++:
//Создаём наш структ
struct NotifyLogs
{
std::string text;
color col;
float erase_time;
}
inline NotifyLogs m_logs;
//Создаём функцию добавления логов
void AddLog(std::string text, color col = colors::white , float time = 2.f)
{
  m_logs({text, col, globals.realtime + time});
}

//Теперь создаём функцию рисования логов)
void LogsDraw()
{

for (int log = 0; log < m_logs.size(); log++)
{
if (m_logs[log].erase_time < globals.realtime)
     m_logs.erace();

static int offset = 10 + 16 * log;
render.draw_text(vec2_t(10, offset), m_logs[log].text, m_logs[log].col, font);

}

}

Рисольвер, о да, то самое на что так дрочат пастеры. То, что хочет иметь любой Винни пух, все хотят себе самый крутой и топовый ресольвер, а что это такое, как он работает и как сделать его правильным, не многие знают(даже я честно говоря xD)

Ресольвер - простыми словами это нахождение реального угла противника( не положения головы, нет)
Стоит сказать, что хороший ресольвер без правильных анимаций и хорошего лагкомп не сделать. Он конечно будет работать, но не идеально.
Для начала стоит узнать какие способы определения стороны десинк имеются:
Первый и самый известный - анимации. Для большинства выражение “ресольвер по анимациям» означает анимлееры, да, они принимают в нём участие, и являются главной частью.
Большая часть аним ресольвера начинаются с поиском дельт
Левая, центральна, правая, и лоу
Дельта находится так:
Abs(для получения положительного значения)

C++:
(record->layers[center][6].playback_rate - record->layers[left or right][6].playback_rate) 6
- это мув леер, отвечает за мувы (что логично)
Вантуз в2-в3 сравнивал их при помощи крутых вычислений, а крутые кодеры по типу порча, делают иначе, сравнивая их, и занося большую в статичную переменную.
Как я уже сказал раньше нам нужен хороший анимфикс, а для чего? А чтобы иметь для каждой матрицы, свои лееры


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


Теперь расскажу про десинк дельту

Самый лучший способ найти максимально правильную, setupvelocity, а именно значения MaxBodyYaw и MinBodyYaw, они ограничены от -58 до 58 и больше быть не могут

Оки доки, у вас есть десинк дельта, нужный сайт, что же делать дальше? ПОДСТАВЛЯТЬ!!

Самый простой способ это юзать switch

На первый кейс вы ставите

animstate->goal_feet_yaw = record-> abs_yaw - desync_delta * side;

На второй, вы своё значение умножаете на -1, а дальше(2, 3, 4 и тд) начинаете брутить, сначала миняв, потом максяв, потом 30 градусов, потом -30 градусов, можете свои углы придумать, но это не обязательно

Профит!


Лагкомпенсация, самая важная часть любого рейдж чита, без неё не получится сделать хороший рейдж, беккек и тд.

Коротко о работе лагкомп, собираем рекорды противника, проверяем, обновляем анимации для каждого рекорда, и сейвим.
Что такое рекорд? Рекорд это запись игрока(ахуеть да?), запись большинства его переменных, позиция, углы, флаги, мины и максы, симтаймы матрицы и тд.

Базовый лагкомп.

Находим игрока, проверяем что он нам подходит(он живой, является противником), проверяем что он не юзает эксплойты, сохраняем рекорд, апдейтим анимки, и если кол-во рекордов больше 32, удаляем последний. По сути всё, не буду углубляться в мелочи, ссылку на
Пожалуйста, авторизуйтесь для просмотра ссылки.



Анимфикс, да да , он самый, так как мне нечего делать, распишу суть его работы:

Он нужен для синхронизации анимаций на сервере и клиенте, рассинхрон происходит из-за того, что на сервере анимации обновляются каждый тик, а на клиенте каждый кадр.
Для синхронизации нам нужно остановить игру от обновлений, и в момент прихода к нам анимаций, обновить аналогично серверу.

Простейшая версия анимфикса:

  • Для начала мы должны засторить все наши глобальные переменные(curtime, realtime, frametime, frame count, absframecount и interp_amount)
  • Все таймы мы приравниваем к симтайму энеми, а каунты к интервалу, интерп эмаунт ставим на нуль.
  • Форсим флаг 0x1000
  • Приравниваем абс велосити к обычному велосити
  • Обновляем клиенсайд анимации
  • Сетапим матрицу
  • Ресторим глобалсы

Всё! Базовый анимфикс готов, но для того чтобы сделать его чуть лучше, нужно добавить велоситификс, сейчас мне его лень расписывать, но позже я обязательно это сделаю)


Думал я тут значит насчёт дефенсива и подобных ему эксплойтах, что я знаю:

Дефенсив по сути те же фейклаги, но вместо чока, они шифтят тикбазу, а какие фейклаги труднее всего предиктить? Правильно, на пик, а почему? Да потому что при пике большинство читов ставят более большой чок, 15-16 тиков, за счёт этого лагкомпенсация ломается более сильно, и если в чите нет проверки на брик лк, то чит либо мисает, либо не стреляет вовсе.
Как я себе вижу примерный код:
C++:
//Делаем таймер, который будет шифтить раз в какое-то кол-во тиков, буду брать их из фейклагов
static int m_iTickDelay = o;
if (++m_iTickDelay >= g_Setting.FakelagFactor)
g_Exploits->SetShiftCount(bIsPeeking ? 16 : 14);
// Да я понимаю что шифт 16-ти тиков повлияет на стабильность дт и скорее всего зашифчено будет меньше, но оно может сломать лагкомпенсацию

m_iTickDelay = 0;
// Обнуляем делей после шифта
Теперь брик лц. Это похожий эксплоит, работает по тому же сценарию, но только без таймера и без проверки на пик, при использовании с фейклагами достаточно шифтить 1-2 тика, без фейклагов 10-14, в зависимости от того, какие флаги у вас стоят по дефу (1 или 2)


Теперь подумаем насчёт ресольвера, в частности запоминания угла, я себе представляю это так:
C++:
// Мы создаём переменную, которая будет хранить последний заресольвленный угол
static float m_flLastResolvedAngle[64];
if (m_flLastResolvedAngle[index] == 0)
m_flLastResolvedAngle[index] = -1.f;
// Определяем угол, чтобы не было крашей случайных, сделать надо через цикл for

case 0:
//  У нас пока не было мисов, и если ласт угол не равен -1 то мы ставим его, в ином случае мы ставим найденый он угол, а ласт угол определяем

Оптимизация, это вообще отдельная тема, делается ту мач сложно, начиная ограничениями вычислений, заканчивая созданием мультитрединга, и вынесением функций в потоки:

Самая простая оптимизация, это:

  • Ограничение игроков для скана до 2-х
  • Фиксация значений ресольвера хотя бы на пару тиков
  • Оптимизация сигнатур, использования типа static везде где это приемлемо
  • Удаление ненужного кода, комментариев, бесполезных вычислений и сравниваний
  • Вместо постоянного поиска названия и директорий в чамсах и тд, использование статичных индексов и тд.

Более хорошая оптимизация:

  • Рефакторинг кода
  • Поиск жрущих фпс частей кода
  • Чистка хуков
  • Разбивка кода по функция, дабы не переполнять буфер
  • Редкое использование сетапбонса

Наилучшая оптимизация:

  • Использование мультридинга
  • Профилировщиком найти всё что сильно нагружает ЦП
  • Статичные хуки
Credits: Insultik
Лол, топ тема, спс????????????????
 
Пользователь
Статус
Оффлайн
Регистрация
15 Апр 2021
Сообщения
224
Реакции[?]
64
Поинты[?]
0
нихуя себе, комментарии влияют на оптимизацию, спасибо будем знать
и в правду, к чему это? комментарии наоборот помогают "ориентироваться" по коду как по мне, ну +-
тем более как ты уже сказал они не влияют на оптимиз, да
 
Легенда форума
Статус
Оффлайн
Регистрация
10 Дек 2018
Сообщения
4,379
Реакции[?]
2,284
Поинты[?]
189K
Прочитал только начало и конец твоей темы, мне хватило, если честно)
Оптимизация сигнатур
Что?..
использования типа static везде где это приемлемо
Чего блин? Ключевое слово static указывается для того, чтобы переменная не уничтожалась при выходе из области видимости. Выделение памяти для таких вар происходит только один раз, освобождение памяти произойдёт только по завершению работы программы.
Не могу, конечно, утверждать на 100%, но что-то мне подсказывает, что уж лучше потратить околонулевые ресурсы на создание и удаление переменной, чем удерживать её в памяти постоянно.
Для рассуждения о таких вещах нужно матчасть, но что-то мне подсказывает, что ни ты, ни я её не знаем.
Если ты хотел сказать о const переменных, то это тоже большой пользы не принесёт, т.к. компилятор сам зачастую понимает, какие переменные константны, а какие нет. Но я бы всё равно указывал const / constexpr для всех неизменных переменных, как минимум, так лучше понимаешь код.
Удаление ненужного кода, комментариев, бесполезных вычислений и сравниваний
Ага, удаление комментариев особенно сильно поможет, компилятор же для прикола их не включает в выходной файл.
Что имеется в виду под удалением "сравниваний" - большая загадка. Если ты говоришь о ненужных логических операциях, например, в условиях (а-ля if (!g_LocalPlayer || !g_LocalPlayer->IsAlive()) return;), то это правильно.
Разбивка кода по функция, дабы не переполнять буфер
Что-то мне подсказывает, что переполнения буфера из-за слишком "толстых" функций возникнуть не может, в отличие от слишком частого их вызова.

Рассказал бы лучше про способы сокращения ненужных вызовов функций, например, все начальные проверки (на локалплеера, ис коннектед и т.п.) лучше выносить в место вызова функции, так, чтобы функция вызывалась только при их прохождении.

И ещё:
1. Префиксные операторы (в основном, они используются в циклах) производительнее постфиксных, особенно с тяжёлыми типами данных.
2. Можно было рассказать про использование передачи объектов по &ссылке, а не копированием, которое в большинстве случае не нужно и тратит лишние ресурсы.
3. Для неизменных строк лучше использовать constexpr char[] и передачу по ссылке / указателю, вместо std::string.


Заранее извиняюсь, если что-то неправильно написал, я не погромист, вот...
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
6 Ноя 2021
Сообщения
14
Реакции[?]
20
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Если это не рофло пост, то он написан уебищно
Почти все абсолютно максимально поверхностно или не пояснено вообще
Например тут:
1641911800349.png
Какой флаг форсим? Как сетапим кости? Зачем это рассказывать, да? Проще высрать полный кал, не понимая, о чем идет речь, не так ли?
 
Пользователь
Статус
Оффлайн
Регистрация
15 Июл 2021
Сообщения
233
Реакции[?]
85
Поинты[?]
0
Если это не рофло пост, то он написан уебищно
Почти все абсолютно максимально поверхностно или не пояснено вообще
Например тут:
Посмотреть вложение 187950
Какой флаг форсим? Как сетапим кости? Зачем это рассказывать, да? Проще высрать полный кал, не понимая, о чем идет речь, не так ли?
самому додумать, не?
это лишь направление на правильные действия, дальше сам
 
Забаненный
Статус
Оффлайн
Регистрация
6 Ноя 2021
Сообщения
14
Реакции[?]
20
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
самому додумать, не?
это лишь направление на правильные действия, дальше сам
А если новичок вообще не понимает, о чем ты?
Суть гайдов, чтобы тот, кто хочет разобраться,понял, что нужно делать
Без догадок и тд
 
Нефор
Забаненный
Статус
Оффлайн
Регистрация
9 Ноя 2018
Сообщения
1,042
Реакции[?]
663
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пользователь
Статус
Оффлайн
Регистрация
15 Июл 2021
Сообщения
233
Реакции[?]
85
Поинты[?]
0
А если новичок вообще не понимает, о чем ты?
Суть гайдов, чтобы тот, кто хочет разобраться,понял, что нужно делать
Без догадок и тд
Если бы я, будучи новичком в этой теме увидел этот гайд, я бы дальше двигался от стартовой точки все дальше и дальше, попутно разбираясь самостоятельно
Ну а если не понимает, что я поделать могу, тут только в пастинг
 
Сверху Снизу