void AimLegit::Work(CUserCmd *usercmd)
{
	this->usercmd = usercmd;

	if (!g_LocalPlayer->m_hActiveWeapon().Get())
		return;

	if (g_LocalPlayer->m_hActiveWeapon().Get()->IsWeaponNonAim() || g_LocalPlayer->m_hActiveWeapon().Get()->m_iClip1() < 1)
		return;

	if (g_Options.legit_enabled && (g_InputSystem->IsButtonDown(static_cast<ButtonCode_t>(g_Options.legit_aimkey1)) || g_InputSystem->IsButtonDown(static_cast<ButtonCode_t>(g_Options.legit_aimkey2))) && !g_LocalPlayer->m_hActiveWeapon().Get()->IsWeaponNonAim())
	{
		GetBestTarget();
		if (HasTarget())
			TargetRegion();
	}

	if (g_Options.legit_trigger || (g_Options.legit_trigger_with_aimkey && (g_InputSystem->IsButtonDown(static_cast<ButtonCode_t>(g_Options.legit_aimkey1)) || g_InputSystem->IsButtonDown(static_cast<ButtonCode_t>(g_Options.legit_aimkey2)))))
		Triggerbot();

	if (g_Options.legit_rcs)
		RecoilControlSystem();

	if (!g_Options.rage_silent) // I dont feel here good, cause of ragebot and stuff and the part inside CM cause of that
		g_EngineClient->SetViewAngles(usercmd->viewangles);
}
int main() {
	std::cout << "Radar and Trigger\n\n";
	
	Engine()->start();
	std::thread engineThread(&CEngine::update, Engine());

	std::cout << "Found\n\n";
	std::cout << "Offsets\n";
	std::cout << "Local player: 0x" << Engine()->Offsets()->toHex(Engine()->Offsets()->dwLocalPlayer) << "\n";
	std::cout << "Entity list: 0x" << Engine()->Offsets()->toHex(Engine()->Offsets()->dwEntityList) << "\n";
	std::cout << "Attack: 0x" << Engine()->Offsets()->toHex(Engine()->Offsets()->dwAttack) << "\n\n";

	std::cout << "Hotkeys:\n";
	std::cout << "Triggerkey: ";
	Settings()->trigger_key = whichKeyIsPressed();
	std::cout << Settings()->trigger_key << "\n";
	std::cout << "Trigger hold key (press ENTER for no hold key): ";
	Settings()->trigger_holdkey = whichKeyIsPressed();
	if (Settings()->trigger_holdkey == VK_RETURN) {
		Settings()->trigger_holdkey = 0;
	}
	std::cout << Settings()->trigger_holdkey << "\n";
	std::cout << "Radar key: ";
	Settings()->radar_key = whichKeyIsPressed();
	std::cout << Settings()->radar_key << "\n\n";

	std::cout << "The hack is now active!\n\n";

	std::thread settingsThread(&CSettings::run, Settings());
	std::thread radarThread(&Radar::run, Radar());
	std::thread triggerThread(&Triggerbot::run, Triggerbot());

	while (!GetAsyncKeyState(VK_END)) {
		Sleep(100);
	}

	exit(0);

	return 0;
}