unsigned long ulCShell_Module = 0;
typedef void ( __thiscall *lpDrawEngineString ) ( unsigned long ulFontBase, char* szString, int xCoord, int yCoord, unsigned long clColor, bool bShadow, bool bUnk);
lpDrawEngineString DrawEngineString;
unsigned long __stdcall runMem(void* lParam)
{
while( !ulCShell_Module )
{
ulCShell_Module = (unsigned long)GetModuleHandle("CShell.dll");
Sleep(10);
}
DrawEngineString = (lpDrawEngineString ) ( ulCShell_Module + 0x002DB8A0 );
unsigned long ulFontBase = *(unsigned long*) ( ulCShell_Module + 0xDBD1C8 );
DrawEngineString(ulFontBase, "Hello World", 30, 80, D3DCOLOR_XRGB(255, 0, 0), true, false);
return 0;
}
typedef void ( __thiscall *lpDrawEngineString ) ( unsigned long ulFontBase, char* szString, int xCoord, int yCoord, unsigned long clColor, bool bShadow, bool bUnderline, bool bUnk);
#define DrawEngineString_Call 0x2DB8A0 #define DrawEngineString_ulBase 0xDBD1C8
LTRESULT(* ILTClient::End3D)(uint32 flags) Parameters: flags Flags to use when performing the flip (a combination of END3D_ flags in ltcodes.h). Returns: LT_OK, LT_NOTINITIALIZED, or LT_NOTIN3D. End a Start3D/End3D block. Note: You must be in a Start3D()/End3D() block in order to render through any cameras.