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 DrawPlayers(IEnumerable <CSPlayer> players, ESPEntry settings) { List <Vector2> points = new List <Vector2>(); foreach (var player in players) { if (!player.IsValid || player.IsDormant || player.m_lifeState != Enums.LifeState.Alive) { continue; } var _head = player.m_Skeleton.m_Bones[8].ToVector() + Vector3.UnitZ * 15; var _feet = player.m_Skeleton.m_Bones[1].ToVector() - Vector3.UnitZ * 10; Vector2 head = Vector2.Zero, feet = Vector2.Zero; if (!w2s(ref head, _head) || !w2s(ref feet, _feet)) { continue; } var width = (feet - head).Y * 0.5f; var x = (head.X + feet.X) / 2f; var position = new Vector2(x - width / 2, head.Y); var size = new Vector2(width, feet.Y - head.Y); DrawPlayer(player, settings, position, size); points.Clear(); } }
private void DrawEsp <T>( T ent, ESPEntry settings, Func <T, Vector3> fnGetBottom, Func <T, Vector3> fnGetTop, Func <Vector2, Vector2, Vector2> fnGetSize, Func <T, float> fnGetLife, Func <T, float> fnGetArmor, Func <T, ESPEntry, string> fnGetText) where T : BaseEntity { var ptDown3d = fnGetBottom(ent) - MARGINS_Z; var ptUp3d = fnGetTop(ent) + MARGINS_Z; Vector2 ptDown = Vector2.Zero, ptUp = Vector2.Zero; if (!w2s(ref ptDown, ptDown3d) || !w2s(ref ptUp, ptUp3d)) { return; } var size = fnGetSize(ptDown, ptUp); var upperLeft = new Vector2((ptUp.X + ptDown.X) / 2f - size.X * 0.5f, ptUp.Y); var text = fnGetText(ent, settings); if (settings.ShowBox) { DrawOutlinedRect(upperLeft, size, settings.Color, Color.Black); } if (settings.ShowHealth && fnGetLife != null && fnGetArmor != null) { Vector2 barSize = new Vector2(size.X, size.Y / 20f); Vector2 barPos = new Vector2(upperLeft.X, upperLeft.Y + size.Y + barSize.Y * 0.5f); if (fnGetLife != null) { DrawHBar(barPos, barSize, fnGetLife(ent) / 100f, settings.Color, Color.Transparent, Color.Green, Color.Black); barPos.Y += barSize.Y * 1.5f; } if (fnGetArmor != null && fnGetArmor(ent) > 0f) { DrawHBar(barPos, barSize, fnGetArmor(ent) / 100f, settings.Color, Color.Transparent, Color.White, Color.Black); } } if (!string.IsNullOrEmpty(text)) { espFont = Program.Hack.Overlay.Renderer.Fonts[espFont]; var textPos = upperLeft + Vector2.UnitX * size.X; Program.Hack.Overlay.Visuals.DrawString(settings.Color, espFont, textPos, text); } }
private void DrawEspSet <T>( IEnumerable <T> ents, ESPEntry settings, Func <T, Vector3> fnGetBottom, Func <T, Vector3> fnGetTop, Func <Vector2, Vector2, Vector2> fnGetSize, Func <T, float> fnGetLife, Func <T, float> fnGetArmor, Func <T, ESPEntry, string> fnGetText) where T : BaseEntity { foreach (var e in ents) { DrawEsp <T>(e, settings, fnGetBottom, fnGetTop, fnGetSize, fnGetLife, fnGetArmor, fnGetText); } }
private void DrawEntityEsp(Vector2 upperLeft, Vector2 size, ESPEntry settings, string text, float armor = 0f, float life = 0f) { if (settings.ShowBox) { DrawOutlinedRect(upperLeft, size, settings.Color, Color.Black); } if (settings.ShowHealth) { Vector2 barSize = new Vector2(size.X, size.Y / 20f); Vector2 barHP = new Vector2(upperLeft.X, upperLeft.Y + size.Y + barSize.Y * 0.5f); Vector2 barArmor = new Vector2(upperLeft.X, upperLeft.Y + size.Y + barSize.Y + barSize.Y); DrawHBar(barHP, barSize, life / 100f, settings.Color, Color.Transparent, Color.Green, Color.Black); DrawHBar(barArmor, barSize, armor / 100f, settings.Color, Color.Transparent, Color.White, Color.Black); } if (!string.IsNullOrEmpty(text)) { espFont = Program.Hack.Overlay.Renderer.Fonts[espFont]; var textPos = upperLeft + Vector2.UnitX * size.X; Program.Hack.Overlay.Visuals.DrawString(settings.Color, espFont, textPos, text); } }
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 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); } }
private void DrawPlayer(CSPlayer player, ESPEntry settings, Vector2 position, Vector2 size) { var drawColor = settings.Color; var map = Program.Hack.StateMod.Map; if (map != null) { var from = Program.Hack.StateMod.LocalPlayer.Value.m_vecOrigin + Program.Hack.StateMod.LocalPlayer.Value.m_vecViewOffset; var to = player.m_Skeleton.m_Bones[8].ToVector(); if (map.IsVisible(from, to)) { drawColor = settings.ColorOccluded; } } if (settings.ShowBox) { Program.Hack.Overlay.Visuals.DrawRectangle(drawColor, position, size); //DrawOutlinedRect(position, size, drawColor, Color.Black); } if (settings.ShowHealth) { var lifePerc = System.Math.Max(System.Math.Min(player.m_iHealth, 100), 0) / 100f; var lifeFrom = position - Vector2.UnitX * 2f; var lifeTo = lifeFrom + Vector2.UnitY * size.Y * lifePerc; Program.Hack.Overlay.Visuals.DrawLine(Color.Green, lifeFrom, lifeTo); //var lifeSize = espFont.MeasureString(player.m_iHealth.ToString()); //var lifeText = lifeFrom - Vector2.UnitY * lifeSize.Y - Vector2.UnitX * lifeSize.X * 0.5f; //Program.Hack.Overlay.Visuals.DrawString(Color.White, espFont, lifeText, player.m_iHealth.ToString()); var armorPerc = System.Math.Max(System.Math.Min(player.m_ArmorValue, 100), 0) / 100f; var armorFrom = position + Vector2.UnitX * size.X + Vector2.UnitX * 2f; var armorTo = armorFrom + Vector2.UnitY * size.Y * armorPerc; Program.Hack.Overlay.Visuals.DrawLine(Color.Blue, armorFrom, armorTo); //var armorSize = espFont.MeasureString(player.m_ArmorValue.ToString()); //var armorText = armorFrom - Vector2.UnitY * armorSize.Y - Vector2.UnitX * armorSize.X * 0.5f; //Program.Hack.Overlay.Visuals.DrawString(Color.White, espFont, armorText, player.m_ArmorValue.ToString()); } var infoMiddle = position + Vector2.UnitY * size.Y + Vector2.UnitX * size.X * 0.5f + Vector2.UnitY * 2f; if (settings.ShowName && Program.Hack.StateMod.PlayerResources != null) { var name = Program.Hack.StateMod.PlayerResources.Value.m_sNames[player.m_iID]; var nameSize = espFont.MeasureString(name); Program.Hack.Overlay.Visuals.DrawString(drawColor, espFont, infoMiddle + Vector2.UnitX * (nameSize.X * -0.5f), name); infoMiddle += Vector2.UnitY * nameSize.Y; } if (settings.ShowDist) { var dist = System.Math.Ceiling(DistToMeters((player.m_vecOrigin - Program.Hack.StateMod.LocalPlayer.Value.m_vecOrigin).Length)).ToString() + "m"; var distSize = espFont.MeasureString(dist); Program.Hack.Overlay.Visuals.DrawString(drawColor, espFont, infoMiddle + Vector2.UnitX * (distSize.X * -0.5f), dist); } if (settings.ShowWeapon) { var wep = player.m_ActiveWeapon.Value; if (wep != null) { DrawWeaponIcon( wep.WeaponId, position + Vector2.UnitX * size.X * 0.5f - Vector2.UnitY * 10f, DistToMeters((player.m_vecOrigin - Program.Hack.StateMod.LocalPlayer.Value.m_vecOrigin).Length) * 0.5f, settings.Color); } } }
private void DrawPlayer(CSPlayer player, ESPEntry settings, Vector2 position, Vector2 size) { var drawColor = settings.Color; var map = Program.Hack.StateMod.Map; if (map != null) { var from = Program.Hack.StateMod.LocalPlayer.Value.m_vecOrigin + Program.Hack.StateMod.LocalPlayer.Value.m_vecViewOffset; var to = player.m_Skeleton.m_Bones[8].ToVector(); if (!map.IsVisible(from, to)) { drawColor = settings.ColorOccluded; } } if (settings.ShowBox) { Program.Hack.Overlay.Visuals.DrawRectangle(drawColor, position, size); //DrawOutlinedRect(position, size, drawColor, Color.Black); } if (settings.ShowHealth) { var lifePerc = System.Math.Max(System.Math.Min(player.m_iHealth, 100), 0) / 100f; var lifeFrom = position - Vector2.UnitX * 2f; var lifeTo = lifeFrom + Vector2.UnitY * size.Y * lifePerc; Program.Hack.Overlay.Visuals.DrawLine(Color.Green, lifeFrom, lifeTo); //var lifeSize = espFont.MeasureString(player.m_iHealth.ToString()); //var lifeText = lifeFrom - Vector2.UnitY * lifeSize.Y - Vector2.UnitX * lifeSize.X * 0.5f; //Program.Hack.Overlay.Visuals.DrawString(Color.White, espFont, lifeText, player.m_iHealth.ToString()); var armorPerc = System.Math.Max(System.Math.Min(player.m_ArmorValue, 100), 0) / 100f; var armorFrom = position + Vector2.UnitX * size.X + Vector2.UnitX * 2f; var armorTo = armorFrom + Vector2.UnitY * size.Y * armorPerc; Program.Hack.Overlay.Visuals.DrawLine(Color.Blue, armorFrom, armorTo); //var armorSize = espFont.MeasureString(player.m_ArmorValue.ToString()); //var armorText = armorFrom - Vector2.UnitY * armorSize.Y - Vector2.UnitX * armorSize.X * 0.5f; //Program.Hack.Overlay.Visuals.DrawString(Color.White, espFont, armorText, player.m_ArmorValue.ToString()); } var infoMiddle = position + Vector2.UnitY * size.Y + Vector2.UnitX * size.X * 0.5f + Vector2.UnitY * 2f; if (settings.ShowName && Program.Hack.StateMod.PlayerResources.Value != null) { var name = Program.Hack.StateMod.PlayerResources.Value.m_sNames[player.m_iID]; if (name != null) { var nameSize = espFont.MeasureString(name); Program.Hack.Overlay.Visuals.DrawString(drawColor, espFont, infoMiddle + Vector2.UnitX * (nameSize.X * -0.5f), name); infoMiddle += Vector2.UnitY * nameSize.Y; } } if (settings.ShowDist) { var dist = System.Math.Ceiling(DistToMeters((player.m_vecOrigin - Program.Hack.StateMod.LocalPlayer.Value.m_vecOrigin).Length)).ToString() + "m"; var distSize = espFont.MeasureString(dist); Program.Hack.Overlay.Visuals.DrawString(drawColor, espFont, infoMiddle + Vector2.UnitX * (distSize.X * -0.5f), dist); } if (settings.ShowWeapon) { var wep = player.m_ActiveWeapon.Value; if (wep != null) { DrawWeaponIcon( wep.WeaponId, position + Vector2.UnitX * size.X * 0.5f - Vector2.UnitY * 10f, DistToMeters((player.m_vecOrigin - Program.Hack.StateMod.LocalPlayer.Value.m_vecOrigin).Length) * 0.5f, settings.Color); } } //Loot stuff //var lootstuff = Enumerable.Range(0, 1024).Select(x => Program.Hack.StateMod.BaseEntitites[x]).Where(x => // x!=null && x.m_ClientClass!=null &&( // x.m_ClientClass.ClassID == 47 || // x.m_ClientClass.ClassID == 48 || // x.m_ClientClass.ClassID == 123 || // x.m_ClientClass.ClassID == 124 || // x.m_ClientClass.ClassID == 125 // )).ToArray(); //DrawEspSet(lootstuff, new ESPEntry() { Enabled = true, Color = Color.Orange, ColorOccluded = Color.Orange, ShowName = true, ShowBox=true }, // x => x.m_vecOrigin, x => x.m_vecOrigin, (d, u) => Vector2.Unit*32f, x => 100f, x => 100f, (x, e) => x.m_ClientClass.NetworkName.Value); }