csgo-imgui-sdk icon indicating copy to clipboard operation
csgo-imgui-sdk copied to clipboard

painttraverse only draw if open game settings and console

Open DonoDayZ opened this issue 2 years ago • 0 comments


get_interface(panel, "vgui2.dll", "VGUI_Panel");
get_interface(surface, "vguimatsurface.dll", "VGUI_Surface");

void Texto(const vfont font, std::string text, const float x, const float y, const Color clr)
{
        if (!font.initialized)
	 return;

	sdk::surface->DrawSetTextFont(font.hfont);
	sdk::surface->DrawSetTextColor(clr);

	sdk::surface->DrawSetTextPos(
		static_cast<int> (x),
		static_cast<int> (y)
	);
	sdk::surface->DrawPrintText(std::wstring(text.begin(), text.end()).data(), text.size());
}
void __fastcall painttraverse(i_panel* thisptr, PVOID, VPANEL vguiPanel, bool forceRepaint, bool allowForce) noexcept
	{
	        if (!original::painttraverse) {
		 return;
		}
		
		original::painttraverse(thisptr, vguiPanel, forceRepaint, allowForce);

		static VPANEL vpanel = 0;
		if (!vpanel)
			if (fnv::hash(thisptr->GetName(vguiPanel)) == HASH("MatSystemTopPanel")) {
				vpanel = vguiPanel;

				static auto inited = false;

				if (!inited)
				{
					g_fonts.init();
					inited = true;
				}
			}

		if (vguiPanel == vpanel)
		{
			Texto(g_fonts.textoesp, "testttt", config::screen_monitor_x / -187, 5, Color(255, 255, 255, 255));
		}
}
	
auto* const painttraverse_target = utilities::get_virtual(sdk::panel, 41);
MH_CreateHookSafe(painttraverse_target, &painttraverse, &original::painttraverse, "painttraverse");


I'm trying to draw a text inside the match using painttraverse . however it only works if I press esc + open the game console.

DonoDayZ avatar Sep 10 '21 16:09 DonoDayZ