• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Гайд Как сделать Watermark для вашего чита

  • Автор темы Автор темы Insultik
  • Дата начала Дата начала
Эксперт
Эксперт
Статус
Оффлайн
Регистрация
30 Дек 2019
Сообщения
1,966
Реакции
958
Что нужно?
1.Brain(хоть чуть-чуть, чтобы нажать ctrl+C ctrl+V)
2.Сурс(ахуетб)
Шаг 1
Найти в сурсе visuals.cpp, и PaintTraverse.cpp
Шаг 2
открыть Visuals.cpp и Visuals.hpp
Шаг 3
перейти в Vusuals.hpp
и найдите это:
1591457601912.png

после впишите туда


void watermark();
void GradientLine2(int x, int y, int w, int h, Color c1, Color color2)
RECT GetTextSize(vgui::HFont font, const char* text);
Шаг 4
открыть Visuals.cpp и примерно после отрисовки боксов вставьте
C++:
Expand Collapse Copy
const std::string currentDateTime( ) {
    time_t     now = time( 0 );
    struct tm  tstruct;
    char       buf[ 80 ];
    tstruct = *localtime( &now );
    strftime( buf, sizeof( buf ), "%X", &tstruct );

    return buf;
}
void Visuals::GradientLine2(int x, int y, int w, int h, Color c1, Color color2)
{
    filled_rect(x, y, w, h, c1);
    BYTE first = color2.r();
    BYTE second = color2.g();
    BYTE third = color2.b();
    for (int i = 0; i < w; i++)
    {
        float fi = i, fw = w;
        float a = fi / fw;
        DWORD ia = a * 255;
        filled_rect(x + i, y, 1, h, Color(first, second, third, ia));
    }
}
Шаг 5
открыть Visuals.cpp и после GradientLine
C++:
Expand Collapse Copy
RECT Visuals::GetTextSize( vgui::HFont font, const char* text )
{
    size_t origsize = strlen(text) + 1;
    const size_t newsize = 500;
    size_t convertedChars = 0;
    wchar_t wcstring[newsize];
    mbstowcs_s(&convertedChars, wcstring, origsize, text, _TRUNCATE);

    RECT rect;

    rect.left = rect.right = rect.bottom = rect.top = 0;

    wchar_t wbuf[ 1024 ];
    if ( MultiByteToWideChar( CP_UTF8, 0, text, -1, wbuf, 256 ) > 0 ) {
        int x, y;
        g_VGuiSurface->GetTextSize( font, wbuf, x, y );
        rect.left = x; rect.bottom = y;
        rect.right = x; rect.top = y;
    }

    return rect;
}
Шаг 6
открыть Visuals.cpp и после GetTextSize
C++:
Expand Collapse Copy
void Visuals::watermark()
{

    if (g_Options.Visuals.pwatermark) {
        char path[MAX_PATH], * name = NULL;
        GetEnvironmentVariable((LPCTSTR)"USERPROFILE", (LPSTR)path, (DWORD)MAX_PATH);
        name = &path[std::strlen(path) - 1];
        for (; *name != '\\'; --name);
        ++name;

        //raimbow flex code
        auto r = (floor(sin(g_pGlobalVars->realtime* 2) * 127 + 128)) / 255.f;
        auto g = (floor(sin(g_pGlobalVars->realtime * 2 + 2) * 127 + 128)) / 255.f;
        auto b = (floor(sin(g_pGlobalVars->realtime * 2 + 4) * 127 + 128)) / 255.f;
        //Color line = Color::FromHSB(raimbow, 1.f, 1.f);


        static int fps, old_tick_count;
        if ((g_pGlobalVars->tickcount - old_tick_count) > 50) {

            fps = static_cast<int>(1.f / g_pGlobalVars->frametime);

            old_tick_count = g_pGlobalVars->tickcount;

        }
        int screen_x, screen_y;
        g_EngineClient->GetScreenSize(screen_x, screen_y);
        static float bar_width = 226.8;
        std::stringstream ss;
        auto local_player = reinterpret_cast<C_BaseEntity*>(g_EntityList->GetClientEntity(g_EngineClient->GetLocalPlayer()));
        auto net_channel = g_EngineClient->GetNetChannelInfo();
        std::string outgoing = local_player ? std::to_string((int)(net_channel->GetLatency(FLOW_OUTGOING) * 1000)) : "0";
        ss << u8"Ваш софт| " <</* тут чит гетнит имя вашего пк*/ name << " | " << "PING: " << outgoing.c_str() << "ms" << " | FPS: " << fps << " | " << currentDateTime().c_str() << "";
        int x, y, w, h;
        RECT textsize = Visuals::GetTextSize(Render::Get().esp_font, ss.str().c_str());
        //static int textsize = 280;
        filled_rect(screen_x - (textsize.right + 10), 6, textsize.right + 20, 18, Color(15, 15, 15, 140));
        GradientLine2(screen_x - (textsize.right + 10), 6, textsize.right + 20, 2, Color(r,g,b), Color(b, r, g));


        Render::Get().DrawString(Render::Get().esp_font,screen_x - (textsize.right + 5), 15, Color(255, 255, 255), false, ss.str().c_str());

    //    GradientLine2(0,0, 2000,3, Color(r,g,b),Color(b,r,g));
    }
 
}
Шаг 7
после этого идём в PaintTraverse.cpp
и ищем где у нас отрисовывается бокс, и после вставляем

Visuals::Get().watermark();
 
Результат покажи хоть
 
на половину воркает
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ne work

Пожалуйста, авторизуйтесь для просмотра ссылки.
работает но очень странно
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ss << u8"Ваш софт | "
В чем сложность отступить было?
 
По мне хуйня полнейшая...
Могу в имгуи за минуты 3-5 сделать в разы лучше,чище(по коду) и намного красивее
Самый лучший драв фреймворк если чо
Причом его даже двигать можно будет !!!!!!!!!!!!!!!!!
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
По мне хуйня полнейшая...
Могу в имгуи за минуты 3-5 сделать в разы лучше,чище(по коду) и намного красивее
Самый лучший драв фреймворк если чо
Причом его даже двигать можно будет !!!!!!!!!!!!!!!!!
ну ты сделай
 
Скрытое содержимое
Кода в 200 раз меньше
Производительность (не у всех ) раза в два лучше
Код чище и стабильнее в разы
Да и выглядит не плохо хоть и дефолтно
.....
мож дать хайд?
 
1594160823478.png

как бы ок
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Что нужно?
1.Brain(хоть чуть-чуть, чтобы нажать ctrl+C ctrl+V)
2.Сурс(ахуетб)
Шаг 1
Найти в сурсе visuals.cpp, и PaintTraverse.cpp
Шаг 2
открыть Visuals.cpp и Visuals.hpp
Шаг 3
перейти в Vusuals.hpp
и найдите это:Посмотреть вложение 79327
после впишите туда


void watermark();
void GradientLine2(int x, int y, int w, int h, Color c1, Color color2)
RECT GetTextSize(vgui::HFont font, const char* text);
Шаг 4
открыть Visuals.cpp и примерно после отрисовки боксов вставьте
C++:
Expand Collapse Copy
const std::string currentDateTime( ) {
    time_t     now = time( 0 );
    struct tm  tstruct;
    char       buf[ 80 ];
    tstruct = *localtime( &now );
    strftime( buf, sizeof( buf ), "%X", &tstruct );

    return buf;
}
void Visuals::GradientLine2(int x, int y, int w, int h, Color c1, Color color2)
{
    filled_rect(x, y, w, h, c1);
    BYTE first = color2.r();
    BYTE second = color2.g();
    BYTE third = color2.b();
    for (int i = 0; i < w; i++)
    {
        float fi = i, fw = w;
        float a = fi / fw;
        DWORD ia = a * 255;
        filled_rect(x + i, y, 1, h, Color(first, second, third, ia));
    }
}
Шаг 5
открыть Visuals.cpp и после GradientLine
C++:
Expand Collapse Copy
RECT Visuals::GetTextSize( vgui::HFont font, const char* text )
{
    size_t origsize = strlen(text) + 1;
    const size_t newsize = 500;
    size_t convertedChars = 0;
    wchar_t wcstring[newsize];
    mbstowcs_s(&convertedChars, wcstring, origsize, text, _TRUNCATE);

    RECT rect;

    rect.left = rect.right = rect.bottom = rect.top = 0;

    wchar_t wbuf[ 1024 ];
    if ( MultiByteToWideChar( CP_UTF8, 0, text, -1, wbuf, 256 ) > 0 ) {
        int x, y;
        g_VGuiSurface->GetTextSize( font, wbuf, x, y );
        rect.left = x; rect.bottom = y;
        rect.right = x; rect.top = y;
    }

    return rect;
}
Шаг 6
открыть Visuals.cpp и после GetTextSize
C++:
Expand Collapse Copy
void Visuals::watermark()
{

    if (g_Options.Visuals.pwatermark) {
        char path[MAX_PATH], * name = NULL;
        GetEnvironmentVariable((LPCTSTR)"USERPROFILE", (LPSTR)path, (DWORD)MAX_PATH);
        name = &path[std::strlen(path) - 1];
        for (; *name != '\\'; --name);
        ++name;

        //raimbow flex code
        auto r = (floor(sin(g_pGlobalVars->realtime* 2) * 127 + 128)) / 255.f;
        auto g = (floor(sin(g_pGlobalVars->realtime * 2 + 2) * 127 + 128)) / 255.f;
        auto b = (floor(sin(g_pGlobalVars->realtime * 2 + 4) * 127 + 128)) / 255.f;
        //Color line = Color::FromHSB(raimbow, 1.f, 1.f);


        static int fps, old_tick_count;
        if ((g_pGlobalVars->tickcount - old_tick_count) > 50) {

            fps = static_cast<int>(1.f / g_pGlobalVars->frametime);

            old_tick_count = g_pGlobalVars->tickcount;

        }
        int screen_x, screen_y;
        g_EngineClient->GetScreenSize(screen_x, screen_y);
        static float bar_width = 226.8;
        std::stringstream ss;
        auto local_player = reinterpret_cast<C_BaseEntity*>(g_EntityList->GetClientEntity(g_EngineClient->GetLocalPlayer()));
        auto net_channel = g_EngineClient->GetNetChannelInfo();
        std::string outgoing = local_player ? std::to_string((int)(net_channel->GetLatency(FLOW_OUTGOING) * 1000)) : "0";
        ss << u8"Ваш софт| " <</* тут чит гетнит имя вашего пк*/ name << " | " << "PING: " << outgoing.c_str() << "ms" << " | FPS: " << fps << " | " << currentDateTime().c_str() << "";
        int x, y, w, h;
        RECT textsize = Visuals::GetTextSize(Render::Get().esp_font, ss.str().c_str());
        //static int textsize = 280;
        filled_rect(screen_x - (textsize.right + 10), 6, textsize.right + 20, 18, Color(15, 15, 15, 140));
        GradientLine2(screen_x - (textsize.right + 10), 6, textsize.right + 20, 2, Color(r,g,b), Color(b, r, g));


        Render::Get().DrawString(Render::Get().esp_font,screen_x - (textsize.right + 5), 15, Color(255, 255, 255), false, ss.str().c_str());

    //    GradientLine2(0,0, 2000,3, Color(r,g,b),Color(b,r,g));
    }

}
Шаг 7
после этого идём в PaintTraverse.cpp
и ищем где у нас отрисовывается бокс, и после вставляем

Visuals::Get().watermark();
блять эти гайды из розряды А ВОТ НАМ ПОНАДОБЯТСЯ РУКИ И МОЗГИ ты же сам нихуя не умеешь зачем выёбываться то ?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
10 iq иметь надо да?какие 10 iq у тебя меньше 1 это точно по твоему коду трешкоду/говнокоду.Этот ватермарк сломается при первом же килле и это уже видно по строчкам в твоём ватермарке.
Вывод:Хватит постить говно в виде гайдов где полно трешкода:CoolStoryBob:
 
Назад
Сверху Снизу