//Called every tick public void Update() { if (!Global.AimEnabled || Global.AllOff || Global.AimSettings.RageBot || !Global.AimSettings.LegitBot) { return; } if (!Provider.isConnected) { return; } if (Provider.clients.Count < 1) { return; } //Is holding gun if (!(Player.player?.equipment?.asset is ItemGunAsset)) { return; } if (!Input.GetKey(KeyCode.Mouse1)) { return; } Camera m = Camera.main; SteamPlayer targ = null; float maxDist = ((ItemGunAsset)Player.player.equipment.asset).range, bestFov = 300, trgDst = 0f; Vector3 position = m.transform.position, forward = m.transform.forward, AimAt = Vector3.zero; foreach (SteamPlayer i in Provider.clients) { if (i.player == Player.player) { continue; } if (i.player.quests.groupID == Player.player.quests.groupID) { continue; } if (i.player.life.isDead) { continue; } float distance = Vector3.Distance(i.player.transform.position, position); if (!(distance < maxDist)) { continue; } Vector3 wtsp = Drawing.Drawing_Hk.WorldToScreen(i.player.transform.position); if (wtsp.z > -8) { float fov = Mathf.Abs(Vector2.Distance(new Vector2(wtsp.x, Screen.height - wtsp.y), new Vector2((Screen.width / 2), (Screen.height / 2)))); if (fov < bestFov) { bestFov = fov; targ = i; trgDst = distance; } } } if (targ == null) { pPredict.User = null; return; } AimAt = GetHitbox(targ.player.transform, "Skull"); //Not all players have a skull, or is majorly displaced when prone if (AimAt == Vector3.zero || targ.player.stance.prone) { AimAt = targ.player.transform.position + new Vector3(0, targ.player.look.heightLook / 1.45f, 0); } if (Global.AimSettings.VisibleCheck) { RaycastHit hit; Physics.Raycast(m.transform.position, AimAt - m.transform.position, out hit, trgDst + 0.35f, RayMasks.DAMAGE_CLIENT); if (hit.transform == null || !hit.transform.CompareTag("Enemy")) { return; } } //Unity engine will use player sensitivity when we use it's own functions for math calculations float save = Player.player.look.sensitivity; Player.player.look.sensitivity = Global.AimSettings.AimSpeed; //Apply drop calculation if server is using ballistics if (Global.AimSettings.DropCalculator && Provider.modeConfigData.Gameplay.Ballistics) { AimAt.y += DropCalc(AimAt); } //Get rotation angles, ez bypass to doing math Quaternion quaternion = Quaternion.LookRotation(AimAt - m.transform.position); Quaternion quaternion2 = Quaternion.RotateTowards(m.transform.rotation, quaternion, Global.AimSettings.AimSpeed); //Reset sensitivty Player.player.look.sensitivity = save; float xVal = quaternion2.eulerAngles.x; if (xVal <= 90f) { xVal += 90f; } else if (xVal > 180f) { xVal -= 270f; } //Todo: Rotate using camera Yaw.SetValue(Player.player.look, quaternion2.eulerAngles.y); Pitch.SetValue(Player.player.look, xVal); }