Пример #1
0
        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);
            }
                );
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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));
        }
Пример #6
0
        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);
                }
            }
        }
Пример #7
0
        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);
                    }
                }
            }
        }
Пример #8
0
        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;
                }
            }
        }
Пример #9
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;
            }
        }
Пример #10
0
        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);
        }