private void DrawBaseEntitySet(CSLocalPlayer lp, IEnumerable <BaseEntity> ents, ESPEntry settings) { DrawEspSet <BaseEntity>( ents, settings, (w) => w.m_vecOrigin, (w) => w.m_vecOrigin, (d, u) => { var f = d - u; return(new Vector2(System.Math.Max(f.X, f.Y))); }, null, null, (w, s) => { string text = ""; if (settings.ShowName) { text += w.m_ClientClass.NetworkName + "\n"; } if (settings.ShowDist) { text += string.Format("[{0}m]", DistToMeters(lp.DistanceTo(w)).ToString("0.00")) + "\n"; } return(text); } ); }
private void DrawWeapon(CSLocalPlayer lp, BaseCombatWeapon weapon, ESPEntry settings) { var up = Vector2.Zero; var down = Vector2.Zero; if (!w2s(ref up, weapon.m_vecOrigin + Vector3.UnitZ * 5f) || !w2s(ref down, weapon.m_vecOrigin - Vector3.UnitZ * 5f)) { return; } var mid = (down + up) * 0.5f; var delta = weapon.m_vecOrigin - lp.m_vecOrigin; var size = new Vector2((down - up).Y); if (settings.ShowDist || settings.ShowName) { var text = ""; if (settings.ShowName) { text += string.Format("{0} [{1}/{2}]", weapon.m_ClientClass.NetworkName.Value.Replace("CWeapon", ""), weapon.m_iClip1 >= 0 ? weapon.m_iClip1.ToString() : "-", weapon.m_iClip2 >= 0 ? weapon.m_iClip2.ToString() : "-") + "\n"; } if (settings.ShowDist) { text += DistToMeters(lp.DistanceTo(weapon)).ToString("0.00") + "m"; } var nameSize = espFont.MeasureString(text); Program.Hack.Overlay.Visuals.DrawString(settings.Color, espFont, mid + Vector2.UnitY * size.Y - nameSize * 0.5f, text); } DrawWeaponIcon(weapon.WeaponId, mid, lp.DistanceTo(weapon), settings.Color); }
private void DrawWeaponSet(CSLocalPlayer lp, IEnumerable <BaseCombatWeapon> weapons, ESPEntry settings) { //DrawEspSet<BaseCombatWeapon>( // weapons, // settings, // (w) => w.m_vecOrigin, // (w) => w.m_vecOrigin, // (d, u) => // { // var f = d - u; // return new Vector2(System.Math.Max(f.X, f.Y)); // }, // null, // null, // (w, s) => // { // string text = ""; // if (settings.ShowName) // text += string.Format("{0} [{1}]", // w.m_ClientClass.NetworkName.Replace("CWeapon", ""), // w.m_iClip1 >= 0 ? w.m_iClip1.ToString() : "/") + "\n"; // if (settings.ShowDist) // text += string.Format("[{0}m]", DistToMeters(lp.DistanceTo(w)).ToString("0.00")) + "\n"; // return text; // } //); foreach (var wep in weapons) { DrawWeapon(lp, wep, settings); } }
protected override void OnUpdate(TickEventArgs args) { base.OnUpdate(args); if (!Program.CurrentSettings.NoRecoil.Enabled) { return; } //TODO: Fix... var lp = Program.Hack.StateMod.LocalPlayer.Value; if (!CSLocalPlayer.IsProcessable(lp)) { return; } var wep = lp.m_ActiveWeapon.Value; if (Program.CurrentSettings.NoRecoil.NoRecoilSemiAuto) { if (wep == null || !wep.IsValid) { return; } else if (wep == null || !wep.IsValid || wep.IsPistol || wep.IsPumpgun || wep.IsSniper) { DrawCrosshair(); return; } } if (Program.CurrentSettings.NoRecoil.ShowCrosshair) { DrawCrosshair(); } if (Program.Hack.AimBot.CurrentTarget == 0) { var vecPunch = lp.m_aimPunchAngle; var delta = (vecPunch - lastPunch) * -2f * Program.CurrentSettings.NoRecoil.Force; if (wep.m_iClip1 != lastClip || lp.m_iShotsFired > 0) { lastClip = wep.m_iClip1; Program.Hack.View.ApplyChange(delta); //Program.Logger.Log("PunchY: {0}, punchY: {1}, lastPunchY: {2}", // System.Math.Round(vecPunch.Y, 2), // System.Math.Round(delta.Y, 2), // System.Math.Round(lastPunch.Y, 2)); } lastPunch = vecPunch; } else { Program.Hack.View.ApplyChange(lp.m_aimPunchAngle * -2f * Program.CurrentSettings.NoRecoil.Force); } }
public StateModule() : base(Program.Hack, ModulePriority.Highest) { LocalPlayer = new LazyCache <CSLocalPlayer>(() => { var address = Program.Hack.Memory.Read <IntPtr>(pLocalPlayer); if ((long)address == 0) { return(null); } var lp = new CSLocalPlayer(address); return(lp); }); ClientState = new LazyCache <ClientState>(() => { var address = Program.Hack.Memory.Read <int>(pClientState); if (address == 0 || address == -1) { return(null); } return(new ClientState(address)); }); GameDirectory = new LazyCache <string>(() => { return(Program.Hack.Memory.ReadString(Program.Hack.EngineDll.BaseAddress.ToInt32() + Program.Offsets.GameDirectory, 256, Encoding.UTF8)); }); //GameRules = new LazyCache<CSGameRulesProxy>(() => //{ // var address = Program.Hack.Memory.Read<int>(pGameRules); // if (address == 0 || address == -1) // return null; // //var grp = Program.Hack.GetEntityByAddress<CSGameRulesProxy>(address); // var grp = Program.Hack.GetEntityByAddress<CSGameRulesProxy>(pGameRules); // return grp; //}); PlayerResources = new LazyCache <CSPlayerResource>(() => { var address = Program.Hack.Memory.Read <IntPtr>(pPlayerResources); if ((int)address == 0) { return(null); } return(Program.Hack.GetEntityByAddress <CSPlayerResource>(address)); }); ViewMatrix = new LazyCache <Matrix>(() => Program.Hack.Memory.Read <Matrix>(pViewMatrix)); }
protected override void OnUpdate(TickEventArgs args) { base.OnUpdate(args); if (!Program.CurrentSettings.MiscAutoPistol) { return; } var lp = Program.Hack.StateMod.LocalPlayer.Value; if (!CSLocalPlayer.IsProcessable(lp)) { return; } var wep = lp.m_ActiveWeapon.Value; if (wep == null || !wep.IsValid || !wep.IsPistol) { return; } var address = Program.Hack.ClientDll.BaseAddress.ToInt32() + Program.Offsets.ForceAttack; var key = Program.Hack.Memory.Read <int>(address); if (WinAPI.GetAsyncKeyState(System.Windows.Forms.Keys.LButton) != 0) { if (wep.m_iClip1 > 0) { if (key == 4) { Program.Hack.Memory.Write <int>(address, 5); } else if (key == 5) { Program.Hack.Memory.Write <int>(address, 4); } } } else { if (key == 5) { Program.Hack.Memory.Write <int>(address, 4); } } }
protected override void OnUpdate(TickEventArgs args) { base.OnUpdate(args); if (!Program.CurrentSettings.MiscBunnyHop) { return; } var lp = Program.Hack.StateMod.LocalPlayer.Value; if (!CSLocalPlayer.IsProcessable(lp)) { return; } if (WinAPI.GetAsyncKeyState(System.Windows.Forms.Keys.Space) != 0) { var address = Program.Hack.ClientDll.BaseAddress.ToInt32() + Program.Offsets.ForceJump; var key = Program.Hack.Memory.Read <int>(address); if (((Flags)lp.m_fFlags).HasFlag(Flags.FL_ONGROUND)) { if (key == 4) { Program.Hack.Memory.Write <int>(address, 5); } } else { if (key == 5) { Program.Hack.Memory.Write <int>(address, 4); } } } }
protected override void OnUpdate(TickEventArgs args) { base.OnUpdate(args); Hotkey = Program.CurrentSettings.Trigger.Key; Mode = Program.CurrentSettings.Trigger.Mode; //Aquire localplayer var lp = Program.Hack.StateMod.LocalPlayer.Value; if (!CSLocalPlayer.IsProcessable(lp)) { //Program.Logger.Log("TRG: No LocalPlayer"); return; } //Aquire active weapon var wep = lp.m_ActiveWeapon; if (wep.Value == null || !wep.Value.IsValid) { //Program.Logger.Log("TRG: No ActiveWeapon"); return; } //Take care of any burst-shots before doing anything else if (shotsLeft > 0) { if (wep.Value.m_iClip1 > 0) { if ((wep.Value.m_flNextPrimaryAttack - lp.m_flSimulationTime) <= 0f) { //Program.Logger.Log("TRG: Shooting burst"); Shoot(); shotsLeft--; } } else { shotsLeft = 0; } lastShots = lp.m_iShotsFired; lastEnemyId = 0; return; } if (!ActiveByHotkey) { return; } //Empty crosshair? -> Reset id if (lp.m_iCrosshairIdx == 0) { if (lostOnce) { //if (lastEnemyId != localPlayer.m_iCrosshairIdx) // Program.Logger.Log("TRG: No CrosshairIdx"); lastEnemyId = 0; } lostOnce = true; } //New enemy? Check entity and set variables else if (lp.m_iCrosshairIdx != lastEnemyId) { var enemy = Program.Hack.StateMod.Players[lp.m_iCrosshairIdx]; if (enemy == null || !enemy.IsValid || enemy.m_iTeamNum == lp.m_iTeamNum) { //Program.Logger.Log("TRG: No (valid) enemy"); lastEnemyId = 0; lostOnce = true; } else { //Program.Logger.Log("TRG: Enemy set to {0}", localPlayer.m_iCrosshairIdx.Value); lastEnemyDetection = DateTime.Now; lastEnemyId = lp.m_iCrosshairIdx; lostOnce = false; } } else //Still the same enemy -> Check delay and fire { lostOnce = false; if ((DateTime.Now - lastEnemyDetection).TotalMilliseconds < Program.CurrentSettings.Trigger.Delay) { return; } var enemy = Program.Hack.StateMod.Players[lp.m_iCrosshairIdx]; if (enemy == null || !enemy.IsValid || enemy.m_iTeamNum == lp.m_iTeamNum) { return; } //Program.Logger.Log("TRG: ALRIGHT"); if (wep.Value.m_iClip1 > 0)// && wep.Value.m_fAccuracyPenalty < 0.01f) { if (Program.CurrentSettings.Trigger.Burst.Enabled) { shotsLeft += Program.CurrentSettings.Trigger.Burst.Count; } else { Shoot(); } lastEnemyId = 0; } } }
protected override void OnUpdate(TickEventArgs args) { base.OnUpdate(args); if (!Program.CurrentSettings.Aim.Enabled) { return; } Hotkey = Program.CurrentSettings.Aim.Key; Mode = Program.CurrentSettings.Aim.Mode; var lp = Program.Hack.StateMod.LocalPlayer.Value; if (!CSLocalPlayer.IsProcessable(lp)) { return; } if (!ActiveByHotkey) { CurrentTarget = 0; return; } var src = lp.m_vecOrigin + lp.m_vecViewOffset;// + lp.m_vecVelocity * (float)args.Time.ElapsedTime.TotalSeconds; if (Program.CurrentSettings.Aim.Predict) { var oldLp = Program.Hack.StateMod.PlayersOld[lp.m_iID]; src += lp.m_vecOrigin - oldLp.m_vecOrigin; } if (Program.CurrentSettings.Aim.Lock && CurrentTarget != 0) { var enemy = Program.Hack.StateMod.Players[CurrentTarget]; if (enemy == null || !enemy.IsValid || enemy.m_lifeState != Enums.LifeState.Alive || enemy.m_bDormant == 1) { CurrentTarget = 0; Reset(); } } else { CurrentTarget = GetTarget(src); } if (CurrentTarget != 0) { var enemy = Program.Hack.StateMod.Players[CurrentTarget]; if (enemy == null || !enemy.IsValid) { CurrentTarget = 0; return; } float a = 0.75f + (float)(0.25 * System.Math.Sin(ZatsHackBase.Maths.Math.DegreesToRadians(DateTime.Now.TimeOfDay.TotalSeconds * 1500))); //Program.Hack.Glow.EncolorObject(Color.FromKnownColor(Color.Orange, // a) // , enemy.m_iGlowIndex); var dest = enemy.m_Skeleton.m_Bones[Program.CurrentSettings.Aim.Bone].ToVector(); if (Program.CurrentSettings.Aim.Predict) { var oldEnemy = Program.Hack.StateMod.PlayersOld[CurrentTarget]; if (oldEnemy != null && oldEnemy.IsValid) { var oldDest = oldEnemy.m_Skeleton.m_Bones[Program.CurrentSettings.Aim.Bone].ToVector(); dest = dest + (dest - oldDest); } } dest += Vector3.UnitZ * ESPModule.MetersToUnits(Program.CurrentSettings.Aim.HeightOffset / 100f); var angle = CalcAngle(src, dest) - Program.Hack.StateMod.ClientState.Value.ViewAngles; angle = ViewModule.ClampAngle(angle); if (Program.CurrentSettings.Aim.Smoothing.Enabled) { switch (Program.CurrentSettings.Aim.Smoothing.Mode) { case Settings.SmoothMode.Scalar: angle *= Program.CurrentSettings.Aim.Smoothing.Scalar; break; case Settings.SmoothMode.MaxDist: if (angle.Length > Program.CurrentSettings.Aim.Smoothing.PerAxis.Length) { angle.Normalize(); angle = angle * Program.CurrentSettings.Aim.Smoothing.PerAxis.Length; } break; case Settings.SmoothMode.MaxDistPerAxis: if (angle.X < 0f) { angle.X = System.Math.Max(angle.X, -Program.CurrentSettings.Aim.Smoothing.PerAxis.X); } else if (angle.X > 0f) { angle.X = System.Math.Min(angle.X, Program.CurrentSettings.Aim.Smoothing.PerAxis.X); } if (angle.Y < 0f) { angle.Y = System.Math.Max(angle.Y, -Program.CurrentSettings.Aim.Smoothing.PerAxis.Y); } else if (angle.Y > 0f) { angle.Y = System.Math.Min(angle.Y, Program.CurrentSettings.Aim.Smoothing.PerAxis.Y); } break; case Settings.SmoothMode.ScalarPerAxis: angle = new Vector3(angle.X * Program.CurrentSettings.Aim.Smoothing.PerAxis.X, angle.Y * Program.CurrentSettings.Aim.Smoothing.PerAxis.Y, 0f); break; } } Program.Hack.View.ApplyChange(angle); } if (CurrentTarget != lastId) { var enemy = Program.Hack.StateMod.Players[CurrentTarget]; //Program.Logger.Log("[Aim] Aiming at {0}: {1}", enemy != null ? enemy.m_iID : -1, enemy != null ? enemy.m_ClientClass.NetworkName : "null"); lastId = CurrentTarget; } }
protected override void AfterPluginsTick(TickEventArgs args) { dbg = Program.Hack.Overlay.Renderer.Fonts[dbg]; if (Process.IsInForeground) { //Input Overlay.Menu.DrawString(Color.White, dbg, Vector2.Unit * 20f, Input.MousePos.ToString() + "\n" + Input.MouseMoveDist.ToString() + "\n" + string.Join(", ", Input.KeysDown.Select(x => x.ToString()))); //Mem var str = string.Format( "=============================\n" + "RPM: {0} calls\n" + " {1} total\n" + " {2}/s\n" + "WPM: {3} calls\n" + " {4} total\n" + " {5}/s\n" + "=============================", Memory.RPMCalls.ToString("N0"), SizeFormatter.GetUnitFromSize(Memory.BytesIn, true), SizeFormatter.GetUnitFromSize(Memory.BytesIn / args.Time.TotalTime.TotalSeconds, true), Memory.WPMCalls.ToString("N0"), SizeFormatter.GetUnitFromSize(Memory.BytesOut, true), SizeFormatter.GetUnitFromSize(Memory.BytesOut / args.Time.TotalTime.TotalSeconds, true)); var size = dbg.MeasureString(str); Overlay.Menu.DrawString(Color.White, dbg, Vector2.UnitY * (Overlay.Size.Y * 0.75f - size.Y * 0.5f), str); //Specs var lp = StateMod.LocalPlayer.Value; Color drawColor = Color.White; if (CSLocalPlayer.IsProcessable(lp) && !lp.IsDormant) { var players = StateMod.GetPlayersSet(true, false, true); Func <CSPlayer, bool> filter = null; filter = (x) => x.m_iID != lp.m_iID && x.m_hObserverTarget == lp.m_iID; if (players.Any(filter)) { var specs = players.Where(filter); if (specs.Any(x => x.m_iObserverMode == ObserverMode.Ego)) { drawColor = Color.Red; } else if (specs.Any(x => x.m_iObserverMode == ObserverMode.ThirdPerson)) { drawColor = Color.Orange; } string text = string.Join("\n", specs.Select(x => string.Format("▻ {0} ({1})", Program.Hack.StateMod.PlayerResources.Value.m_sNames[x.m_iID], x.m_iObserverMode.ToString()) ) ); Overlay.Menu.DrawString( drawColor, dbg, Vector2.UnitY * (Overlay.Size.Y / 2f), "[Specs]\n" + text); } else { Overlay.Menu.DrawString(drawColor, dbg, Vector2.UnitY * (Overlay.Size.Y / 2f), "[Specs]\n<none>"); } } else { Overlay.Menu.DrawString(drawColor, dbg, Vector2.UnitY * (Overlay.Size.Y / 2f), "[Specs]\n<not ingame>"); } } base.AfterPluginsTick(args); }