alive forever
-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Vector - вещь очень классная и помогает упрощать задачки для программиста.
Сегодня разберем пример упрощенного рендера ESP текста.
Сегодня разберем пример упрощенного рендера ESP текста.
Показывать буду на примере всеми любимого A5/TGF.
Итак,начнем.
Первое,что мы сделаем - это зададим пространство имен (не обязательно) и объявим класс,в котором будут храниться наши переменные (текст,цвет) и пропишем конструктор и деструктор для данного класса,естественно ,не забывая нормально инициализировать переменные.
Итак,начнем.
Первое,что мы сделаем - это зададим пространство имен (не обязательно) и объявим класс,в котором будут храниться наши переменные (текст,цвет) и пропишем конструктор и деструктор для данного класса,естественно ,не забывая нормально инициализировать переменные.
Код:
namespace p_info
{
static class draw_string
{
public:
std::string text = "empty";
Color color = Color(0,0,0);
draw_string(string text, Color color) : text(text), color(color) {}
~draw_string(){
text = "empty";
color = Color(0, 0, 0);
}
};
}
Код:
std::vector< p_info::draw_string > info_text;
Код:
if (Vars.Visuals.Info.Name)
info_text.push_back(p_info::draw_string(Entity->GetName(), Color::Green()));
if (Vars.Visuals.Info.Weapon)
info_text.push_back(p_info::draw_string(Entity->GetWeapon()->GetWeaponName(), Color::Red()));
if (Vars.Visuals.Info.Flashed && Entity->IsFlashed())
info_text.push_back(p_info::draw_string(charenc("Flashed!"), Color::LightBlue()));
Код:
for (auto info_string : info_text)
{
RECT nameSize = D::GetTextSize(F::ESP, info_string.text.c_str());
D::DrawString(F::ESP, top.x, top.y - nameSize.bottom, info_string.color, FONT_CENTER, "%s", info_string.text.c_str());
top.y += nameSize.bottom;
}
Код:
info_text.clear();
Результат :
Дополнительно :
- Функция для определения размера строки.
Код:
RECT D::GetTextSize(DWORD font, const char* text)
{
char Buffer[1024] = { '\0' };
/* set up varargs*/
va_list Args;
va_start(Args, text);
vsprintf_s(Buffer, text, Args);
va_end(Args);
size_t Size = strlen(Buffer) + 1;
wchar_t* WideBuffer = new wchar_t[Size];
mbstowcs_s(nullptr, WideBuffer, Size, Buffer, Size - 1);
RECT rect;
int x, y;
I::Surface->GetTextSize(font, WideBuffer, x, y);
rect.left = x;
rect.bottom = y;
rect.right = x;
return rect;
}
- Подробнее про класс вектора : Пожалуйста, авторизуйтесь для просмотра ссылки.(не реклама)