Code:
void ISurface::DrawSetColor(int r, int g, int b, int a)
{
	typedef void(__thiscall* OriginalFn)(void*, int, int, int, int);
	return Util::GetVFunc<OriginalFn>(this, 15)(this, r, g, b, a);
}

void ISurface::DrawSetColor(Color col)
{
	typedef void(__thiscall* OriginalFn)(void*, Color);
	return Util::GetVFunc<OriginalFn>(this, 14)(this, col);
}

void ISurface::DrawFilledRect(int x0, int y0, int x1, int y1)
{ 
	typedef void(__thiscall* OriginalFn)(void*, int, int, int, int);
	return Util::GetVFunc<OriginalFn>(this, 16)(this, x0, y0, x1, y1);
}

void ISurface::DrawOutlinedRect(int x0, int y0, int x1, int y1)
{ 
	typedef void(__thiscall* OriginalFn)(void*, int, int, int, int);
	return Util::GetVFunc<OriginalFn>(this, 18)(this, x0, y0, x1, y1);
}

void ISurface::DrawLine(int x0, int y0, int x1, int y1)
{
	typedef void(__thiscall* OriginalFn)(void*, int, int, int, int);
	return Util::GetVFunc<OriginalFn>(this, 19)(this, x0, y0, x1, y1);
}

void ISurface::DrawPolyLine(int *px, int *py, int numPoints) 
{
	typedef void(__thiscall* OriginalFn)(void*, int*, int*, int);
	return Util::GetVFunc<OriginalFn>(this, 20)(this, px, py, numPoints);
}

void ISurface::DrawSetTextFont(HFont font)
{ 
	typedef void(__thiscall* OriginalFn)(void*, HFont);
	return Util::GetVFunc<OriginalFn>(this, 23)(this, font);
}

void ISurface::DrawSetTextColor(int r, int g, int b, int a) 
{
	typedef void(__thiscall* OriginalFn)(void*, int, int, int, int);
	return Util::GetVFunc<OriginalFn>(this, 25)(this, r, g, b, a);
}

void ISurface::DrawSetTextColor(Color col)
{
	typedef void(__thiscall* OriginalFn)(void*, Color);
	return Util::GetVFunc<OriginalFn>(this, 24)(this, col);
}

void ISurface::DrawSetTextPos(int x, int y) 
{ 
	typedef void(__thiscall* OriginalFn)(void*, int, int);
	return Util::GetVFunc<OriginalFn>(this, 26)(this, x, y);
}

void ISurface::DrawPrintText(const wchar_t *text, int textLen, FontDrawType_t drawType)
{ 
	typedef void(__thiscall* OriginalFn)(void*, const wchar_t*, int, FontDrawType_t);
	return Util::GetVFunc<OriginalFn>(this, 28)(this, text, textLen, drawType);
}

void ISurface::DrawSetTextureRGBA(int id, const unsigned char *rgba, int wide, int tall)
{
	typedef void(__thiscall* OriginalFn)(void*, int, const unsigned char*, int, int);
	return Util::GetVFunc<OriginalFn>(this, 37)(this, id, rgba, wide, tall);
}

void ISurface::DrawSetTexture(int id) 
{
	typedef void(__thiscall* OriginalFn)(void*, int);
	return Util::GetVFunc<OriginalFn>(this, 38)(this, id);
}

int	ISurface::CreateNewTextureID(bool procedural)
{
	typedef int(__thiscall* OriginalFn)(void*, bool);
	return Util::GetVFunc<OriginalFn>(this, 43)(this, procedural);
}

HFont ISurface::Create_Font()
{
	typedef HFont(__thiscall* OriginalFn)(void*);
	return Util::GetVFunc<OriginalFn>(this, 71)(this);
}

bool ISurface::SetFontGlyphSet(HFont font, const char *windowsFontName, int tall, int weight, int blur, int scanlines, int flags, int nRangeMin, int nRangeMax)
{
	typedef bool(__thiscall* OriginalFn)(void*, HFont, const char*, int, int, int, int, int, int, int);
	return Util::GetVFunc<OriginalFn>(this, 72)(this, font, windowsFontName, tall, weight, blur, scanlines, flags, nRangeMin, nRangeMax);
}

void ISurface::GetTextSize(HFont font, const wchar_t *text, int &wide, int &tall)
{
	typedef void(__thiscall* OriginalFn)(void*, HFont, const wchar_t*, int&, int&);
	return Util::GetVFunc<OriginalFn>(this, 79)(this, font, text, wide, tall);
}

void ISurface::DrawOutlinedCircle(int x, int y, int radius, int segments) 
{ 
	typedef void(__thiscall* OriginalFn)(void*, int, int, int, int);
	return Util::GetVFunc<OriginalFn>(this, 103)(this, x, y, radius, segments);
}

void ISurface::DrawTexturedPolygon(int n, Vertex_t *pVertice, bool bClipVertices)
{
	typedef void(__thiscall* OriginalFn)(void*, int, Vertex_t*, bool);
	return Util::GetVFunc<OriginalFn>(this, 106)(this, n, pVertice, bClipVertices);
}
>Cheating Gmod
>2016

Choose One