public void Update() { List<Tuple<int, CSPlayer>> players = new List<Tuple<int, CSPlayer>>(); List<Tuple<int, BaseEntity>> entities = new List<Tuple<int, BaseEntity>>(); List<Tuple<int, Weapon>> weapons = new List<Tuple<int, Weapon>>(); dwLocalPlayer = WithOverlay.MemUtils.Read<int>((IntPtr)(clientDllBase + CSGOOffsets.Misc.LocalPlayer)); dwIGameResources = WithOverlay.MemUtils.Read<int>((IntPtr)(clientDllBase + CSGOOffsets.GameResources.Base)); State = (SignOnState)WithOverlay.MemUtils.Read<int>((IntPtr)(dwClientState + CSGOOffsets.ClientState.m_dwInGame)); if (State != SignOnState.SIGNONSTATE_FULL) return; ViewMatrix = WithOverlay.MemUtils.ReadMatrix((IntPtr)dwViewMatrix, 4, 4); ViewAngles = WithOverlay.MemUtils.Read<Vector3>((IntPtr)(dwClientState + CSGOOffsets.ClientState.m_dwViewAngles)); NewViewAngles = ViewAngles; RCSHandled = false; #region Read entities byte[] data = new byte[16 * 8192]; WithOverlay.MemUtils.Read((IntPtr)(dwEntityList), out data, data.Length); for (int i = 0; i < data.Length / 16; i++) { int address = BitConverter.ToInt32(data, 16 * i); if (address != 0) { BaseEntity ent = new BaseEntity(address); if (!ent.IsValid()) continue; if (ent.IsPlayer()) players.Add(new Tuple<int, CSPlayer>(i, new CSPlayer(ent))); else if (ent.IsWeapon()) weapons.Add(new Tuple<int, Weapon>(i, new Weapon(ent))); else entities.Add(new Tuple<int, BaseEntity>(i, ent)); } } Players = players.ToArray(); Entities = entities.ToArray(); Weapons = weapons.ToArray(); #endregion #region LocalPlayer and Target if (players.Exists(x => x.Item2.Address == dwLocalPlayer)) { LocalPlayer = new CSLocalPlayer(players.First(x => x.Item2.Address == dwLocalPlayer).Item2); LocalPlayerWeapon = LocalPlayer.GetActiveWeapon(); } else { LocalPlayer = null; LocalPlayerWeapon = null; } if (LocalPlayer != null) { if (entities.Exists(x => x.Item1 == LocalPlayer.m_iCrosshairIdx - 1)) Target = entities.First(x => x.Item1 == LocalPlayer.m_iCrosshairIdx - 1).Item2; if (players.Exists(x => x.Item1 == LocalPlayer.m_iCrosshairIdx - 1)) Target = players.First(x => x.Item1 == LocalPlayer.m_iCrosshairIdx - 1).Item2; else Target = null; } #endregion if (LocalPlayer == null) return; #region IGameResources if (dwIGameResources != 0) { Kills = WithOverlay.MemUtils.ReadArray<int>((IntPtr)(dwIGameResources + CSGOOffsets.GameResources.Kills), 65); Deaths = WithOverlay.MemUtils.ReadArray<int>((IntPtr)(dwIGameResources + CSGOOffsets.GameResources.Deaths), 65); Armor = WithOverlay.MemUtils.ReadArray<int>((IntPtr)(dwIGameResources + CSGOOffsets.GameResources.Armor), 65); Assists = WithOverlay.MemUtils.ReadArray<int>((IntPtr)(dwIGameResources + CSGOOffsets.GameResources.Assists), 65); Score = WithOverlay.MemUtils.ReadArray<int>((IntPtr)(dwIGameResources + CSGOOffsets.GameResources.Score), 65); byte[] clantagsData = new byte[16 * 65]; WithOverlay.MemUtils.Read((IntPtr)(dwIGameResources + CSGOOffsets.GameResources.Clantag), out clantagsData, clantagsData.Length); string[] clantags = new string[65]; for (int i = 0; i < 65; i++) clantags[i] = Encoding.Unicode.GetString(clantagsData, i * 16, 16); Clantags = clantags; int[] namePtrs = WithOverlay.MemUtils.ReadArray<int>((IntPtr)(dwIGameResources + CSGOOffsets.GameResources.Names), 65); string[] names = new string[65]; for (int i = 0; i < 65; i++) try { names[i] = WithOverlay.MemUtils.ReadString((IntPtr)namePtrs[i], 32, Encoding.ASCII); } catch { } Names = names; } #endregion #region Aimbot if (WithOverlay.ConfigUtils.GetValue<bool>("aimEnabled")) { if (WithOverlay.ConfigUtils.GetValue<bool>("aimToggle")) { if (WithOverlay.KeyUtils.KeyWentUp(WithOverlay.ConfigUtils.GetValue<WinAPI.VirtualKeyShort>("aimKey"))) AimbotActive = !AimbotActive; } else if (WithOverlay.ConfigUtils.GetValue<bool>("aimHold")) { AimbotActive = WithOverlay.KeyUtils.KeyIsDown(WithOverlay.ConfigUtils.GetValue<WinAPI.VirtualKeyShort>("aimKey")); } if (AimbotActive) DoAimbot(); } #endregion #region RCS DoRCS(); #endregion #region Set view angles if (NewViewAngles != ViewAngles) SetViewAngles(NewViewAngles); #endregion #region triggerbot if (WithOverlay.ConfigUtils.GetValue<bool>("triggerEnabled")) { if (WithOverlay.ConfigUtils.GetValue<bool>("triggerToggle")) { if (WithOverlay.KeyUtils.KeyWentUp(WithOverlay.ConfigUtils.GetValue<WinAPI.VirtualKeyShort>("triggerKey"))) TriggerbotActive = !TriggerbotActive; } else if (WithOverlay.ConfigUtils.GetValue<bool>("triggerHold")) { TriggerbotActive = WithOverlay.KeyUtils.KeyIsDown(WithOverlay.ConfigUtils.GetValue<WinAPI.VirtualKeyShort>("triggerKey")); } if (TriggerbotActive && !WithOverlay.KeyUtils.KeyIsDown(WinAPI.VirtualKeyShort.LBUTTON)) DoTriggerbot(); } #endregion #region triggerbot-burst if (TriggerShooting) { if (LocalPlayerWeapon == null) { TriggerShooting = false; } else { if (WithOverlay.ConfigUtils.GetValue<bool>("triggerBurstEnabled")) { if (TriggerBurstFired >= TriggerBurstCount) { TriggerShooting = false; TriggerBurstFired = 0; } else { if (LocalPlayerWeapon.m_iClip1 != LastClip) { TriggerBurstFired += Math.Abs(LocalPlayerWeapon.m_iClip1 - LastClip); } else { Shoot(); } } } else { Shoot(); TriggerShooting = false; } } } #endregion if (LocalPlayerWeapon != null) LastClip = LocalPlayerWeapon.m_iClip1; else LastClip = 0; LastShotsFired = LocalPlayer.m_iShotsFired; LastPunch = LocalPlayer.m_vecPunch; }
public void Update() { List <Tuple <int, CSPlayer> > players = new List <Tuple <int, CSPlayer> >(); List <Tuple <int, BaseEntity> > entities = new List <Tuple <int, BaseEntity> >(); List <Tuple <int, Weapon> > weapons = new List <Tuple <int, Weapon> >(); dwLocalPlayer = WithOverlay.MemUtils.Read <int>((IntPtr)(clientDllBase + CSGOOffsets.Misc.LocalPlayer)); dwIGameResources = WithOverlay.MemUtils.Read <int>((IntPtr)(clientDllBase + CSGOOffsets.GameResources.Base)); State = (SignOnState)WithOverlay.MemUtils.Read <int>((IntPtr)(dwClientState + CSGOOffsets.ClientState.m_dwInGame)); if (State != SignOnState.SIGNONSTATE_FULL) { return; } ViewMatrix = WithOverlay.MemUtils.ReadMatrix((IntPtr)dwViewMatrix, 4, 4); ViewAngles = WithOverlay.MemUtils.Read <Vector3>((IntPtr)(dwClientState + CSGOOffsets.ClientState.m_dwViewAngles)); NewViewAngles = ViewAngles; RCSHandled = false; #region Read entities byte[] data = new byte[16 * 8192]; WithOverlay.MemUtils.Read((IntPtr)(dwEntityList), out data, data.Length); for (int i = 0; i < data.Length / 16; i++) { int address = BitConverter.ToInt32(data, 16 * i); if (address != 0) { BaseEntity ent = new BaseEntity(address); if (!ent.IsValid()) { continue; } if (ent.IsPlayer()) { players.Add(new Tuple <int, CSPlayer>(i, new CSPlayer(ent))); } else if (ent.IsWeapon()) { weapons.Add(new Tuple <int, Weapon>(i, new Weapon(ent))); } else { entities.Add(new Tuple <int, BaseEntity>(i, ent)); } } } Players = players.ToArray(); Entities = entities.ToArray(); Weapons = weapons.ToArray(); #endregion #region LocalPlayer and Target if (players.Exists(x => x.Item2.Address == dwLocalPlayer)) { LocalPlayer = new CSLocalPlayer(players.First(x => x.Item2.Address == dwLocalPlayer).Item2); LocalPlayerWeapon = LocalPlayer.GetActiveWeapon(); } else { LocalPlayer = null; LocalPlayerWeapon = null; } if (LocalPlayer != null) { if (entities.Exists(x => x.Item1 == LocalPlayer.m_iCrosshairIdx - 1)) { Target = entities.First(x => x.Item1 == LocalPlayer.m_iCrosshairIdx - 1).Item2; } if (players.Exists(x => x.Item1 == LocalPlayer.m_iCrosshairIdx - 1)) { Target = players.First(x => x.Item1 == LocalPlayer.m_iCrosshairIdx - 1).Item2; } else { Target = null; } } #endregion if (LocalPlayer == null) { return; } #region IGameResources if (dwIGameResources != 0) { Kills = WithOverlay.MemUtils.ReadArray <int>((IntPtr)(dwIGameResources + CSGOOffsets.GameResources.Kills), 65); Deaths = WithOverlay.MemUtils.ReadArray <int>((IntPtr)(dwIGameResources + CSGOOffsets.GameResources.Deaths), 65); Armor = WithOverlay.MemUtils.ReadArray <int>((IntPtr)(dwIGameResources + CSGOOffsets.GameResources.Armor), 65); Assists = WithOverlay.MemUtils.ReadArray <int>((IntPtr)(dwIGameResources + CSGOOffsets.GameResources.Assists), 65); Score = WithOverlay.MemUtils.ReadArray <int>((IntPtr)(dwIGameResources + CSGOOffsets.GameResources.Score), 65); byte[] clantagsData = new byte[16 * 65]; WithOverlay.MemUtils.Read((IntPtr)(dwIGameResources + CSGOOffsets.GameResources.Clantag), out clantagsData, clantagsData.Length); string[] clantags = new string[65]; for (int i = 0; i < 65; i++) { clantags[i] = Encoding.Unicode.GetString(clantagsData, i * 16, 16); } Clantags = clantags; int[] namePtrs = WithOverlay.MemUtils.ReadArray <int>((IntPtr)(dwIGameResources + CSGOOffsets.GameResources.Names), 65); string[] names = new string[65]; for (int i = 0; i < 65; i++) { try { names[i] = WithOverlay.MemUtils.ReadString((IntPtr)namePtrs[i], 32, Encoding.ASCII); } catch { } } Names = names; } #endregion #region Aimbot if (WithOverlay.ConfigUtils.GetValue <bool>("aimEnabled")) { if (WithOverlay.ConfigUtils.GetValue <bool>("aimToggle")) { if (WithOverlay.KeyUtils.KeyWentUp(WithOverlay.ConfigUtils.GetValue <WinAPI.VirtualKeyShort>("aimKey"))) { AimbotActive = !AimbotActive; } } else if (WithOverlay.ConfigUtils.GetValue <bool>("aimHold")) { AimbotActive = WithOverlay.KeyUtils.KeyIsDown(WithOverlay.ConfigUtils.GetValue <WinAPI.VirtualKeyShort>("aimKey")); } if (AimbotActive) { DoAimbot(); } } #endregion #region RCS DoRCS(); #endregion #region Set view angles if (NewViewAngles != ViewAngles) { SetViewAngles(NewViewAngles); } #endregion #region triggerbot if (WithOverlay.ConfigUtils.GetValue <bool>("triggerEnabled")) { if (WithOverlay.ConfigUtils.GetValue <bool>("triggerToggle")) { if (WithOverlay.KeyUtils.KeyWentUp(WithOverlay.ConfigUtils.GetValue <WinAPI.VirtualKeyShort>("triggerKey"))) { TriggerbotActive = !TriggerbotActive; } } else if (WithOverlay.ConfigUtils.GetValue <bool>("triggerHold")) { TriggerbotActive = WithOverlay.KeyUtils.KeyIsDown(WithOverlay.ConfigUtils.GetValue <WinAPI.VirtualKeyShort>("triggerKey")); } if (TriggerbotActive && !WithOverlay.KeyUtils.KeyIsDown(WinAPI.VirtualKeyShort.LBUTTON)) { DoTriggerbot(); } } #endregion #region triggerbot-burst if (TriggerShooting) { if (LocalPlayerWeapon == null) { TriggerShooting = false; } else { if (WithOverlay.ConfigUtils.GetValue <bool>("triggerBurstEnabled")) { if (TriggerBurstFired >= TriggerBurstCount) { TriggerShooting = false; TriggerBurstFired = 0; } else { if (LocalPlayerWeapon.m_iClip1 != LastClip) { TriggerBurstFired += Math.Abs(LocalPlayerWeapon.m_iClip1 - LastClip); } else { Shoot(); } } } else { Shoot(); TriggerShooting = false; } } } #endregion if (LocalPlayerWeapon != null) { LastClip = LocalPlayerWeapon.m_iClip1; } else { LastClip = 0; } LastShotsFired = LocalPlayer.m_iShotsFired; LastPunch = LocalPlayer.m_vecPunch; }