Вопрос Может кто помочь с адаптированием watermark'a?

Начинающий
Статус
Оффлайн
Регистрация
9 Авг 2019
Сообщения
164
Реакции[?]
10
Поинты[?]
1K
В общем, сама watermark'a взята у такого прекрасного человека как sove ,
Ссылка на тему - https://yougame.biz/threads/155422/

Мне нужно подогнать её под свой SDK, кому не сложно - просьба помочь.

Исходник который я использую -
Пожалуйста, авторизуйтесь для просмотра ссылки.
(not ad)

Снизу код, не спрашивайте зачем я туда добавил imgui, я просто не знаю, как иначе получить размер экрана и размер текста.


C++:
#include <ctime>
#include <sstream>
#include <filesystem>
#include "valve_sdk/sdk.hpp"
#include "imgui/imgui.h"

void watermark() {
    const auto margin = 10; // Padding between screen edges and watermark
    const auto padding = 4; // Padding between watermark elements
    auto t = std::time(nullptr);
    std::ostringstream time;
    // Format: 12:59:09
    time << std::put_time(std::localtime(&t), "%H:%M:%S");
    // Cheat variables
    std::string logo = "paste";
#ifdef _DEBUG
    logo.append(" [debug]"); // :)
#endif
    const std::string user = "el1an";
    auto net_channel = g::client_state->m_NetChannel; // Receiving ping may differ from cheat base
    const auto nci = g::engine_client->GetNetChannelInfo();
    auto delay = nci->GetLatency(FLOW_OUTGOING);
    auto tick_rate = (int)printf("64"); // Играю же всё время на 64, толку ещё получать его
    auto text = logo + " | " + user + " | delay: " + std::to_string(delay) + "ms | " + std::to_string(tick_rate) + "tick | " + time.str().data();
    const auto text_size = ImGui::CalcTextSize("");
    const auto screen_size = ImGui::GetIO().DisplaySize;
    const auto text_pos = ImVec2(screen_size.x - margin - padding - text_size.x,  // Right align + margin + padding + text_size
        margin + padding); { // Top align
        auto bg_size = ImVec2(padding + text_size.x + padding, padding + text_size.y + padding); // Height // Width
        auto bg_pos = ImVec2(screen_size.x - margin - padding - text_size.x - padding, // Right align + margin
            margin); // Top align
        // Run on hooks::panel::paint_traverse - как запустить его в хуке?
        // Surface rendering
        render::rect(bg_pos.x, bg_pos.y, bg_size.x, bg_size.y, col_background); // Background
        render::rect(bg_pos.x, bg_pos.y, bg_size.x, 2, col_accent); // Accent line
        render::text(text_pos.x, text_pos.y, font::verdana_12, text, col_text); // Text
        /* И вот эти три верхние строки, как их подогнать под мой SDK?*/
     }
    }
 
Новичок
Статус
Оффлайн
Регистрация
24 Окт 2020
Сообщения
2
Реакции[?]
0
Поинты[?]
0
В menu.hpp

C++:
inline void watermark()
{
    const auto margin = 10; // Padding between screen edges and watermark
    const auto padding = 4; // Padding between watermark elements
    auto t = std::time(nullptr);
    std::ostringstream time;
    // Format: 12:59:09
    time << std::put_time(std::localtime(&t), "%H:%M:%S");
    // Cheat variables

    auto net_channel = g::client_state->m_NetChannel; // Receiving ping may differ from cheat base
    const auto nci = g::engine_client->GetNetChannelInfo();
    auto delay = nci->GetLatency(FLOW_OUTGOING);
    auto tick_rate = (int)printf("64"); // Играю же всё время на 64, толку ещё получать его
    std::string logo = "paste | delay: " + std::to_string(delay) + "ms | " + std::to_string(tick_rate) + "tick | " + time.str().data();
#ifdef _DEBUG
   logo.append(" [debug]"); // :)
#endif
    const auto text_size = ImGui::CalcTextSize(logo.c_str());
    const auto screen_size = ImGui::GetIO().DisplaySize;
    const auto text_pos = ImVec2(screen_size.x - margin - padding - text_size.x,  // Right align + margin + padding + text_size
        margin + padding);
        auto bg_size = ImVec2(padding + text_size.x + padding, padding + text_size.y + padding); // Height // Width
        auto bg_pos = ImVec2(screen_size.x - margin - padding - text_size.x - padding, // Right align + margin
            margin); // Top align
        // Run on hooks::panel::paint_traverse - как запустить его в хуке?
        // Surface rendering
        ImGui::GetWindowDrawList()->AddRectFilled(ImVec2(bg_pos.x, bg_pos.y), ImVec2(bg_size.x, bg_size.y), ImColor(0, 0, 0, 240)); // Background
        ImGui::GetWindowDrawList()->AddRectFilled(ImVec2(bg_pos.x, bg_pos.y), ImVec2(bg_size.x, 2), ImColor(90, 120, 240)); // Accent line
        ImGui::SetCursorPosX(text_pos.x);
        ImGui::SetCursorPosY(text_pos.y);
        ImGui::Text(logo.c_str());
}
/* Для хука пропишем watermark(); */
 
Сверху Снизу