/// <summary> /// Update the internal player data /// </summary> public void Update(uint Pointer) { this.Pointer = Pointer; this.GlowIndex = KernelBlackMagic.Read <uint>(Pointer + offsets["m_iGlowIndex"]); this.IsUmmunity = (KernelBlackMagic.Read <byte>(Pointer + offsets["m_bGunGameImmunity"]) == 1); this.IsDefusing = KernelBlackMagic.Read <bool>(Pointer + offsets["m_bIsDefusing"]); this.TeamNum = KernelBlackMagic.Read <uint>(Pointer + offsets["m_iTeamNum"]); this.Health = KernelBlackMagic.Read <uint>(Pointer + offsets["m_iHealth"]); }
/// <summary> /// Get MM wins /// </summary> public uint GetWins() { uint _playerResourcesPtr = PlayerResourcesPtr; if (_playerResourcesPtr != 0) { return(KernelBlackMagic.Read <uint>(_playerResourcesPtr + offsets["m_iCompetitiveWins"] + (Index + 1) * 0x4)); } return(0); }
public static void PlayerEntitiesUpdater_Thread() { while (!Program.IsClosing) { Stopwatch timer = Stopwatch.StartNew(); if (InGame) { //Обновляем текущую тиму у локального игрока uint _localPlayerPtr = LocalPlayerPtr; if (_localPlayerPtr != 0) { LocalPlayer.TeamNum = KernelBlackMagic.Read <uint>(_localPlayerPtr + offsets["m_iTeamNum"]); } //Обновляем всех игроков for (uint Index = 0; Index < 64; Index++) { uint pointer = KernelBlackMagic.Read <uint>(Modules.ClientDLL + offsets["dwEntityList"] + Index * 16); if (pointer != 0) { //Если игрок уже есть в списке if (_PlayersList.ContainsKey(Index)) { _PlayersList[Index].Update(pointer); //Обновляем его } else { lock (_PlayersList) //Игрока нету в списке, добавляем! _PlayersList.Add(Index, new PlayerEntity(pointer, Index)); } } else { if (_PlayersList.ContainsKey(Index)) { lock (_PlayersList) //Удаляем устаревшую информацию _PlayersList.Remove(Index); } } } } else { lock (_PlayersList) //Мы не в игре, поэтому очищаем оставшийся мусор _PlayersList.Clear(); } timer.Stop(); PlayersListUpdateTakenMs = timer.Elapsed.TotalMilliseconds; //Спим примерно 1 тик игры Thread.Sleep(16); } }
public bool Fill(uint PlayerInfoStructPtr) { this.PlayerInfoStructPtr = PlayerInfoStructPtr; if (PlayerInfoStructPtr != 0) { Name = KernelBlackMagic.ReadString(PlayerInfoStructPtr + 0x10, 128); UserId = KernelBlackMagic.Read <byte>(PlayerInfoStructPtr + 0x93); SteamId = KernelBlackMagic.ReadString(PlayerInfoStructPtr + 0x94, 36); FakePlayer = KernelBlackMagic.Read <bool>(PlayerInfoStructPtr + 0x139); IsHltv = KernelBlackMagic.Read <bool>(PlayerInfoStructPtr + 0x13A); return(true); } return(false); }
/// <summary> /// Get PlayerInfo by Index from entities list /// </summary> public static PlayerInfo GetByIndex(uint Index) { uint _playerInfoPtr = ClientStatePlayerInfoPtr; if (_playerInfoPtr != 0) { uint someClassOne = KernelBlackMagic.Read <uint>(_playerInfoPtr + 0x40); if (someClassOne != 0) { uint someClassTwo = KernelBlackMagic.Read <uint>(someClassOne + 0xC); if (someClassTwo != 0) { uint pInfo = KernelBlackMagic.Read <uint>(someClassTwo + 0x28 + (Index * 0x34)); PlayerInfo info = new PlayerInfo(); info.Fill(pInfo); return(info); } } } return(null); }
public static void MainThread() { while (!Program.IsClosing) { if (!Enabled || !InGame) { Thread.Sleep(500); continue; } if (IsActivated()) //Можно триггерится? { //Метод без задержки или с простой задержкой if (DelayType == TriggerDelayType.NO_DELAY || DelayType == TriggerDelayType.DELAY) { uint localPlayerPtr = LocalPlayerPtr; if (localPlayerPtr != 0) { int CrossHairID = (KernelBlackMagic.Read <int>(localPlayerPtr + offsets["m_iCrosshairId"]) - 1); if (CrossHairID >= 0 && CrossHairID <= 63) { PlayerEntity player; if (PlayersList.TryGetValue((uint)CrossHairID, out player)) { //Проверяем валидность тимы if (TeamActivate == TriggerTeamType.ENEMY && !player.IsEnemy) { goto Exit; } else if (TeamActivate == TriggerTeamType.TEAMMATES && player.IsEnemy) { goto Exit; } //Игрок не в неуязвимости if (!player.IsUmmunity) { //Если метод простой задержки перед выстрелом, то ждем необходимую задержку! if (DelayType == TriggerDelayType.DELAY) { Thread.Sleep(Delay + ((Delay * _Random.Next(-DelaySpreadProcents, DelaySpreadProcents)) / 100)); } //Атакуем! LocalPlayer.Attack((byte)_Random.Next(8, 16)); //После клика немного поспим Thread.Sleep(_Random.Next(22, 48)); } } } } } //МЕТОД УДЕРЖАНИЯ else if (DelayType == TriggerDelayType.HOLDING) { MessageBox.Show("Сука, кулхацкер взломал)0"); Thread.Sleep(5000); } } Exit: Thread.Sleep(2); //2мс период } }