bool csgo_CSkyBoxView_Draw_Install(void)
{
	static bool firstResult = false;
	static bool firstRun = true;
	if(!firstRun) return firstResult;
	firstRun = false;

	if(AFXADDR_GET(csgo_CSkyboxView_Draw))
	{
		detoured_csgo_CSkyBoxView_Draw = (csgo_CSkyBoxView_Draw_t)DetourClassFunc((BYTE *)AFXADDR_GET(csgo_CSkyboxView_Draw), (BYTE *)touring_csgo_CSkyBoxView_Draw, (int)AFXADDR_GET(csgo_CSkyboxView_Draw_DSZ));

		firstResult = true;
	}

	return firstResult;
}
bool csgo_ScaleFormDll_Hooks_Init(void)
{
	static bool firstResult = false;
	static bool firstRun = true;
	if(!firstRun) return firstResult;
	firstRun = false;

	if(AFXADDR_GET(csgo_Scaleformui_CUnkown_Loader))
	{
		detoured_csgo_Scaleformui_CUnkown_Loader = (csgo_Scaleformui_CUnkown_Loader_t)DetourClassFunc((BYTE *)AFXADDR_GET(csgo_Scaleformui_CUnkown_Loader), (BYTE *)touring_csgo_Scaleformui_CUnkown_Loader, (int)AFXADDR_GET(csgo_Scaleformui_CUnkown_Loader_DSZ));

		firstResult = true;
	}

	return firstResult;
}
void Hook_Cstrike_CrossHair_Fix()
{
	static bool firstRun = true;
	if(!firstRun) return;
	firstRun = false;

	double * addrMul = (double *)HL_ADDR_GET(cstrike_UnkCrosshairFn_mul_fac);
	double * addrAdd = (double *)HL_ADDR_GET(cstrike_UnkCrosshairFn_add_fac);
	BYTE * addrFn = (BYTE *)HL_ADDR_GET(cstrike_UnkCrosshairFn);
	int addrFnDsz = (int)HL_ADDR_GET(cstrike_UnkCrosshairFn_DSZ);

	if(!(
		addrMul && addrAdd && addrFn && addrFnDsz
	)) return;

	g_pfnCrosshairFix_Hooked_Func = (UnkCstrikeCrosshairFn_t)DetourClassFunc(addrFn, (BYTE *)CrosshairFix_Hooking_Func, addrFnDsz);
	g_f_ch_mul_fac = addrMul;
	g_f_ch_add_fac = addrAdd;
}