I'm finished with hacking Black Ops 2 so here are some useful addresses I reversed along the way.
C++:
uintptr_t tacScreenshotThread = 0x75BF02;
uintptr_t vsat = 0x2E4911D4;
uintptr_t recoil = 0x56EC09;
uintptr_t entity_t = *(uintptr_t*)0x1140878;
uintptr_t entitySize = 0x380;
uintptr_t cg_t = *(uintptr_t*)0x113F18C;
uintptr_t playerState_t = cg_t + 0x480A8;
uintptr_t clientInfo_t = cg_t + 0x699C8 + 0x98;
uintptr_t clientInfoSize = 0x808;
uintptr_t refdef_t = cg_t + 0x4D890;
uintptr_t cl_viewAngle = cg_t + 0xFE643940;
C++:
typedef unsigned short(__cdecl * tRegisterTag) (char * szName);
static tRegisterTag RegisterTag_ = (tRegisterTag)0x479B40;
typedef signed int(__cdecl * tGetTagPos) (entity_t * pEntity, void * dwMeshResult, int iTag, vec3_t vOut);
static tGetTagPos GetTagPos_ = (tGetTagPos)0x664930;
typedef bool(__cdecl * tCG_Trace) (trace_t * pTrace, vec3_t vSrc, vec3_t vDest, int a4, int iNum, int a6, int a7);
static tCG_Trace CG_Trace_ = (tCG_Trace)0x6C6C00;
typedef PVOID(__cdecl * tGetClientDObj) (UINT iClientNum, UINT iPlayerMesh);
static tGetClientDObj GetClientDObj_ = (tGetClientDObj)0x5D2590;
typedef PVOID(__cdecl * tRegisterFont) (const char * szFont);
static tRegisterFont RegisterFont_ = (tRegisterFont)0x4660F0;
typedef void(__cdecl * tAddCmdDrawText) (const char * szText, int iMaxChars, void * font, float x, float y, float flXScale, float flYScale, float flRotation, const float * flColor, int iStyle);
static tAddCmdDrawText AddCmdDrawText_ = (tAddCmdDrawText)0x710470;
typedef int(__cdecl * tTextWidth) (int a1, char * szText, int iMaxLength, void * pFont);
static tTextWidth TextWidth_ = (tTextWidth)0x733360;
typedef void * (__cdecl * tRegisterShader) (char * szName, int a2);
static tRegisterShader RegisterShader_ = (tRegisterShader)0x734000;
typedef void(__cdecl * tDrawStrechedPicPhysical) (float x, float y, float w, float h, float s1, float t1, float s2, float t2, float * flColor, void * pShader);
static tDrawStrechedPicPhysical DrawStrechedPicPhysical_ = (tDrawStrechedPicPhysical)0x538050;