the initial commit to the repo.

This commit is contained in:
NukedBart 2025-10-25 01:27:14 +08:00
parent 025c032b8c
commit 1b757591b9
264 changed files with 21882 additions and 0 deletions

View file

@ -0,0 +1,155 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using EFT.Interactive;
using EscapeFromTarkovCheat.Utils;
using UnityEngine;
namespace EscapeFromTarkovCheat.Data
{
class GameExfiltrationPoint
{
public ExfiltrationPoint ExfiltrationPoint { get; }
public Vector3 ScreenPosition => screenPosition;
public bool IsOnScreen { get; private set; }
public float Distance { get; private set; }
public string Name { get; set; }
public bool Eligible { get; private set; }
public string FormattedDistance => $"{Math.Round(Distance)}m";
private Vector3 screenPosition;
public GameExfiltrationPoint(ExfiltrationPoint exfiltrationPoint, bool eligible)
{
if (exfiltrationPoint == null)
throw new ArgumentNullException(nameof(exfiltrationPoint));
ExfiltrationPoint = exfiltrationPoint;
screenPosition = default;
Distance = 0f;
Name = exfiltrationPoint.Settings.Name.Localized();
Eligible = eligible;
}
public void RecalculateDynamics()
{
if (!GameUtils.IsExfiltrationPointValid(ExfiltrationPoint))
return;
screenPosition = GameUtils.WorldPointToScreenPoint(ExfiltrationPoint.transform.position);
IsOnScreen = GameUtils.IsScreenPointVisible(screenPosition);
Distance = Vector3.Distance(Main.MainCamera.transform.position, ExfiltrationPoint.transform.position);
}
private string ExtractionNameToSimpleName(string extractionName)
{
// Factory
if (extractionName.Contains("exit (3)"))
return "Cellars";
if (extractionName.Contains("exit (1)"))
return "Gate 3";
if (extractionName.Contains("exit (2)"))
return "Gate 0";
if (extractionName.Contains("exit_scav_gate3"))
return "Gate 3";
if (extractionName.Contains("exit_scav_camer"))
return "Blinking Light";
if (extractionName.Contains("exit_scav_office"))
return "Office";
// Woods
if (extractionName.Contains("eastg"))
return "East Gate";
if (extractionName.Contains("scavh"))
return "House";
if (extractionName.Contains("deads"))
return "Dead Mans Place";
if (extractionName.Contains("var1_1_constant"))
return "Outskirts";
if (extractionName.Contains("scav_outskirts"))
return "Outskirts";
if (extractionName.Contains("water"))
return "Outskirts Water";
if (extractionName.Contains("boat"))
return "The Boat";
if (extractionName.Contains("mountain"))
return "Mountain Stash";
if (extractionName.Contains("oldstation"))
return "Old Station";
if (extractionName.Contains("UNroad"))
return "UN Road Block";
if (extractionName.Contains("var2_1_const"))
return "UN Road Block";
if (extractionName.Contains("gatetofactory"))
return "Gate to Factory";
if (extractionName.Contains("RUAF"))
return "RUAF Gate";
// Shoreline
if (extractionName.Contains("roadtoc"))
return "Road to Customs";
if (extractionName.Contains("lighthouse"))
return "Lighthouse";
if (extractionName.Contains("tunnel"))
return "Tunnel";
if (extractionName.Contains("wreckedr"))
return "Wrecked Road";
if (extractionName.Contains("deadend"))
return "Dead End";
if (extractionName.Contains("housefence"))
return "Ruined House Fence";
if (extractionName.Contains("gyment"))
return "Gym Entrance";
if (extractionName.Contains("southfence"))
return "South Fence Passage";
if (extractionName.Contains("adm_base"))
return "Admin Basement";
// Customs
if (extractionName.Contains("administrationg"))
return "Administration Gate";
if (extractionName.Contains("factoryfar"))
return "Factory Far Corner";
if (extractionName.Contains("oldazs"))
return "Old Gate";
if (extractionName.Contains("milkp_sh"))
return "Shack";
if (extractionName.Contains("beyondfuel"))
return "Beyond Fuel Tank";
if (extractionName.Contains("railroadtom"))
return "Railroad to Mil Base";
if (extractionName.Contains("_pay_car"))
return "V-Exit";
if (extractionName.Contains("oldroadgate"))
return "Old Road Gate";
if (extractionName.Contains("sniperroad"))
return "Sniper Road Block";
if (extractionName.Contains("warehouse17"))
return "Warehouse 17";
if (extractionName.Contains("factoryshacks"))
return "Factory Shacks";
if (extractionName.Contains("railroadtotarkov"))
return "Railroad to Tarkov";
if (extractionName.Contains("trailerpark"))
return "Trailer Park";
if (extractionName.Contains("crossroads"))
return "Crossroads";
if (extractionName.Contains("railroadtoport"))
return "Railroad to Port";
// Interchange
if (extractionName.Contains("NW_Exfil"))
return "North West Extract";
if (extractionName.Contains("SE_Exfil"))
return "Emmercom";
return extractionName;
}
}
}

View file

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using EFT.Interactive;
using EscapeFromTarkovCheat.Utils;
using UnityEngine;
namespace EscapeFromTarkovCheat.Data
{
class GameLootContainer
{
public LootableContainer LootableContainer { get;}
public Vector3 ScreenPosition => screenPosition;
public bool IsOnScreen { get; private set; }
public float Distance { get; private set; }
public string FormattedDistance => $"{Math.Round(Distance)}m";
private Vector3 screenPosition;
public GameLootContainer(LootableContainer lootableContainer)
{
if (lootableContainer == null)
throw new ArgumentNullException(nameof(lootableContainer));
LootableContainer = lootableContainer;
screenPosition = default;
Distance = 0f;
}
public void RecalculateDynamics()
{
if (!GameUtils.IsLootableContainerValid(LootableContainer))
return;
screenPosition = GameUtils.WorldPointToScreenPoint(LootableContainer.transform.position);
IsOnScreen = GameUtils.IsScreenPointVisible(screenPosition);
Distance = Vector3.Distance(Main.MainCamera.transform.position, LootableContainer.transform.position);
}
}
}

View file

@ -0,0 +1,43 @@
using System;
using EFT.Interactive;
using EscapeFromTarkovCheat.Utils;
using UnityEngine;
namespace EscapeFromTarkovCheat.Data
{
public class GameLootItem
{
public LootItem LootItem { get; }
public Vector3 ScreenPosition => screenPosition;
public bool IsOnScreen { get; private set; }
public float Distance { get; private set; }
public string FormattedDistance => $"{Math.Round(Distance)}m";
private Vector3 screenPosition;
public GameLootItem(LootItem lootItem)
{
if (lootItem == null)
throw new ArgumentNullException(nameof(lootItem));
LootItem = lootItem;
screenPosition = default;
Distance = 0f;
}
public void RecalculateDynamics()
{
if (!GameUtils.IsLootItemValid(LootItem))
return;
screenPosition = GameUtils.WorldPointToScreenPoint(LootItem.transform.position);
IsOnScreen = GameUtils.IsScreenPointVisible(screenPosition);
Distance = Vector3.Distance(Main.MainCamera.transform.position, LootItem.transform.position);
}
}
}

View file

@ -0,0 +1,75 @@
using System;
using System.Linq;
using EFT;
using EscapeFromTarkovCheat.Utils;
using UnityEngine;
namespace EscapeFromTarkovCheat.Data
{
public class GamePlayer
{
public Player Player { get; }
public Vector3 ScreenPosition => screenPosition;
public Vector3 HeadScreenPosition => headScreenPosition;
public bool IsOnScreen { get; private set; }
public bool IsVisible { get; private set; }
public float Distance { get; private set; }
public bool IsAI { get; private set; }
public string FormattedDistance => $"{(int)Math.Round(Distance)}m";
private Vector3 screenPosition;
private Vector3 headScreenPosition;
public GamePlayer(Player player)
{
if (player == null)
throw new ArgumentNullException(nameof(player));
this.Player = player;
screenPosition = default;
headScreenPosition = default;
IsOnScreen = false;
Distance = 0f;
IsAI = true;
}
public Vector3 GetBonePosition(BoneType boneType)
{
if (Player.PlayerBody?.SkeletonRootJoint?.Bones == null)
return Vector3.zero;
Transform boneTransform = Player.PlayerBody.SkeletonRootJoint.Bones.ElementAtOrDefault((int)boneType).Value;
if (boneTransform == null)
return Vector3.zero;
return GameUtils.WorldPointToScreenPoint(boneTransform.position);
}
public void RecalculateDynamics()
{
if (!GameUtils.IsPlayerValid(Player))
return;
screenPosition = GameUtils.WorldPointToScreenPoint(Player.Transform.position);
if (Player.PlayerBones != null)
headScreenPosition = GameUtils.WorldPointToScreenPoint(Player.PlayerBones.Head.position);
IsOnScreen = GameUtils.IsScreenPointVisible(screenPosition);
Distance = Vector3.Distance(Main.MainCamera.transform.position, Player.Transform.position);
if ((Player.Profile != null) && (Player.Profile.Info != null))
IsAI = (Player.Profile.Info.RegistrationDate <= 0);
}
}
}

View file

@ -0,0 +1,8 @@
namespace EscapeFromTarkovCheat.Data
{
public enum Locale
{
ENGLISH,
CHINESE
}
}

View file

@ -0,0 +1,266 @@
using EscapeFromTarkovCheat.Utils;
using System.Collections.Generic;
namespace EscapeFromTarkovCheat.Data
{
internal class LocalisationData
{
public Locale locale;
public Dictionary<StringKey, string> data = new Dictionary<StringKey, string>();
private void zh_CN() {
data.Add(StringKey.MAIN_TITLE, "Stoopid Cheat V1");
data.Add(StringKey.MENU_PLAYER_VISUAL_TITLE, "玩家视觉菜单");
data.Add(StringKey.MENU_MISC_VISUAL_TITLE, "杂项视觉菜单");
data.Add(StringKey.MENU_AIMBOT_TITLE, "自瞄视觉菜单");
data.Add(StringKey.MENU_MISCELLANEOUS_TITLE, "杂项菜单");
data.Add(StringKey.MENU_SKILLS_TITLE, "技能编辑器");
data.Add(StringKey.MENU_ITEMS_TITLE, "物品菜单");
data.Add(StringKey.MENU_MAIN_DESC_TOGGLE, "按 Insert 键开关菜单");
data.Add(StringKey.MENU_MAIN_HINT_UNLOCK, "按 数字键盘 4 解锁所有门");
data.Add(StringKey.MENU_MAIN_HINT_HEAL, "按 数字键盘 1 治疗");
data.Add(StringKey.MENU_MAIN_BUTTON_PLAYER_VISUAL, GetByKey(StringKey.MENU_PLAYER_VISUAL_TITLE));
data.Add(StringKey.MENU_MAIN_BUTTON_MISC_VISUAL, GetByKey(StringKey.MENU_MISC_VISUAL_TITLE));
data.Add(StringKey.MENU_MAIN_BUTTON_AIMBOT, GetByKey(StringKey.MENU_AIMBOT_TITLE));
data.Add(StringKey.MENU_MAIN_BUTTON_MISCELLANEOUS, GetByKey(StringKey.MENU_MISCELLANEOUS_TITLE));
data.Add(StringKey.MENU_MAIN_BUTTON_SKILLS, GetByKey(StringKey.MENU_SKILLS_TITLE));
data.Add(StringKey.MENU_MAIN_BUTTON_ITEMS, GetByKey(StringKey.MENU_ITEMS_TITLE));
data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYERS, "绘制玩家");
data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_BOX, "绘制玩家方框");
data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_NAME, "绘制玩家名");
data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_LINE, "绘制玩家射线");
data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_HEALTH, "绘制玩家血量");
data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_SKELETON, "绘制玩家骨骼");
data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_RANGE, "玩家距离范围");
data.Add(StringKey.MENU_MISC_VISUAL_DRAWLOOTITEMS, "绘制杂散物资");
data.Add(StringKey.MENU_MISC_VISUAL_LOOTITEMRANGE, "杂散物资距离范围");
data.Add(StringKey.MENU_MISC_VISUAL_DRAWCONTAINERS, "绘制容器");
data.Add(StringKey.MENU_MISC_VISUAL_CONTAINERRANGE, "容器距离范围");
data.Add(StringKey.MENU_MISC_VISUAL_DRAWEP, "绘制撤离点");
data.Add(StringKey.MENU_AIMBOT_TOGGLE, "自瞄");
data.Add(StringKey.MENU_AIMBOT_SMOOTH, "自瞄平滑");
data.Add(StringKey.MENU_AIMBOT_DRAWFOV, "绘制自瞄范围");
data.Add(StringKey.MENU_AIMBOT_FOVRANGE, "自瞄视野范围");
data.Add(StringKey.MENU_AIMBOT_AIMINGRANGE, "瞄准上限距离");
data.Add(StringKey.MENU_AIMBOT_VISIBLEONLY, "仅瞄准可见目标");
data.Add(StringKey.MENU_AIMBOT_SILENT, "静默瞄准");
data.Add(StringKey.MENU_AIMBOT_NORECOIL, "无后座");
data.Add(StringKey.MENU_MISCELLANEOUS_GODMODE, "锁血");
data.Add(StringKey.MENU_MISCELLANEOUS_STAMINA, "无限耐");
data.Add(StringKey.MENU_MISCELLANEOUS_SPEEDHACK, "角色加速");
data.Add(StringKey.MENU_MISCELLANEOUS_SPEEDHACK_ADDITION, "速度加成量");
data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_HEAL, $"回满血 [{Settings.InstaHeal}]");
data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_UNLOCK, $"解锁 20米 内所有门 [{Settings.UnlockDoors}]");
data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_KILL, $"全场活光光 [{Settings.KillSwitch}]");
data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_TPENEMIES, $"吸星大法 [{Settings.TpEnemies}]");
data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_TRADERSTANDING, $"全部商人好感增加 0.1 [{Settings.IncreaseTraderStandingKey}]");
data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_ADDXP, "添加经验");
data.Add(StringKey.MENU_MISCELLANEOUS_XPINRAID, "本局经验:");
data.Add(StringKey.MENU_MISCELLANEOUS_XPADDITION, "经验添加量:");
data.Add(StringKey.MENU_SKILLS_BUTTON_MAXALL, "技能全满");
data.Add(StringKey.MENU_SKILLS_HINT_INRAID, "请在战局中使用!");
data.Add(StringKey.MENU_SKILLS_STRENGTH, "力量");
data.Add(StringKey.MENU_SKILLS_STRESSRESIST, "抗压");
data.Add(StringKey.MENU_SKILLS_MAGDRILLS, "弹匣训练");
data.Add(StringKey.MENU_SKILLS_MELEE, "近战");
data.Add(StringKey.MENU_SKILLS_HIDEOUT, "藏身处管理");
data.Add(StringKey.MENU_SKILLS_CRAFTING, "工艺");
data.Add(StringKey.MENU_SKILLS_HEAVYVESTS, "重型护甲");
data.Add(StringKey.MENU_SKILLS_LIGHTVESTS, "轻型护甲");
data.Add(StringKey.MENU_SKILLS_LMG, "轻机枪");
data.Add(StringKey.MENU_SKILLS_ASSAULT, "突击步枪");
data.Add(StringKey.MENU_SKILLS_PISTOL, "手枪");
data.Add(StringKey.MENU_SKILLS_PERCEPTION, "感知");
data.Add(StringKey.MENU_SKILLS_SNIPER, "狙击步枪");
data.Add(StringKey.MENU_SKILLS_SNIPING, "狙击");
data.Add(StringKey.MENU_SKILLS_ENDURANCE, "耐力");
data.Add(StringKey.MENU_SKILLS_THROWING, "投掷物");
data.Add(StringKey.MENU_SKILLS_CHARISMA, "魅力");
data.Add(StringKey.MENU_SKILLS_HEALTH, "健康");
data.Add(StringKey.MENU_SKILLS_VITALITY, "活力");
data.Add(StringKey.MENU_SKILLS_METABOLISM, "代谢");
data.Add(StringKey.MENU_SKILLS_IMMUNITY, "免疫");
data.Add(StringKey.MENU_SKILLS_SURGERY, "手术");
data.Add(StringKey.MENU_SKILLS_INTELLECT, "智力");
data.Add(StringKey.MENU_SKILLS_ATTENTION, "专注");
data.Add(StringKey.MENU_SKILLS_REVOLVER, "左轮手枪");
data.Add(StringKey.MENU_SKILLS_SHOTGUN, "霰弹枪");
data.Add(StringKey.MENU_SKILLS_HMG, "重机枪");
data.Add(StringKey.MENU_SKILLS_DMR, "精确射手步枪");
data.Add(StringKey.MENU_SKILLS_AIMDRILLS, "瞄准训练");
data.Add(StringKey.MENU_SKILLS_SEARCH, "搜索");
data.Add(StringKey.MENU_SKILLS_WEAPONTREATMENT, "武器维护");
data.Add(StringKey.MENU_SKILLS_TROUBLESHOOTING, "故障排除");
data.Add(StringKey.MENU_SKILLS_COVERTMOVEMENT, "隐蔽行动");
data.Add(StringKey.MENU_SKILLS_SMG, "冲锋枪");
data.Add(StringKey.MENU_ITEMS_BUTTON_TPLOOTS, $"吸物资 [{Settings.TpLoots}]");
data.Add(StringKey.MENU_ITEMS_BUTTON_AIRDROP, $"摇空投 [{Settings.CallAirdrop}]");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_TITLE, "物品栏编辑器");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_SEARCH, "搜索物品 ID");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_GET, "从背包中寻找");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_STRINGS, "搜索结果");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_CHANGES, "要提交的更改(按物品ID、宽和高的顺序)");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_BUTTON_COMMIT, "提交更改");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_BUTTON_SETFIR, "全部带勾");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_TITLE, "物品复制器");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_SETSTACK, "更改堆叠为 x");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_RESETSTACK, "重置堆叠为 1");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_SETSTACK_FASTRUBLE, "快速设置堆叠40万(卢布)");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_SETSTACK_FASTEUROUSD, "快速设置堆叠5万(欧美元)");
// 撤离点
data.Add(StringKey.DATA_EP_ACTIVE, "激活");
data.Add(StringKey.DATA_EP_TIMER, "倒计时");
data.Add(StringKey.DATA_EP_CLOSED, "已关闭");
data.Add(StringKey.DATA_EP_PENDING, "等待中");
data.Add(StringKey.DATA_EP_OPEN, "开放");
data.Add(StringKey.DATA_EP_REQUIREMENT, "需要前置");
// 人机类型
data.Add(StringKey.DATA_PLAYERTYPE_BOT, "普通人机");
data.Add(StringKey.DATA_PLAYERTYPE_GUARD, "保镖");
data.Add(StringKey.DATA_PLAYERTYPE_BEAR, "玩家 俄军");
data.Add(StringKey.DATA_PLAYERTYPE_USEC, "玩家 美军");
data.Add(StringKey.DATA_PLAYERTYPE_PMC, "玩家");
data.Add(StringKey.DATA_PLAYERTYPE_BOSS, "BOSS");
}
private void en_US()
{
data.Add(StringKey.MAIN_TITLE, "Stoopid Cheat V1");
data.Add(StringKey.MENU_PLAYER_VISUAL_TITLE, "Player Visual");
data.Add(StringKey.MENU_MISC_VISUAL_TITLE, "Misc Visual");
data.Add(StringKey.MENU_AIMBOT_TITLE, "Aimbot");
data.Add(StringKey.MENU_MISCELLANEOUS_TITLE, "Miscellaneous");
data.Add(StringKey.MENU_SKILLS_TITLE, "Skill Editor");
data.Add(StringKey.MENU_ITEMS_TITLE, "Items");
data.Add(StringKey.MENU_MAIN_DESC_TOGGLE, "Insert For Menu");
data.Add(StringKey.MENU_MAIN_HINT_UNLOCK, "Num 4 to Open Doors");
data.Add(StringKey.MENU_MAIN_HINT_HEAL, "Num 1 to Heal");
data.Add(StringKey.MENU_MAIN_BUTTON_PLAYER_VISUAL, GetByKey(StringKey.MENU_PLAYER_VISUAL_TITLE));
data.Add(StringKey.MENU_MAIN_BUTTON_MISC_VISUAL, GetByKey(StringKey.MENU_MISC_VISUAL_TITLE));
data.Add(StringKey.MENU_MAIN_BUTTON_AIMBOT, GetByKey(StringKey.MENU_AIMBOT_TITLE));
data.Add(StringKey.MENU_MAIN_BUTTON_MISCELLANEOUS, GetByKey(StringKey.MENU_MISCELLANEOUS_TITLE));
data.Add(StringKey.MENU_MAIN_BUTTON_SKILLS, GetByKey(StringKey.MENU_SKILLS_TITLE));
data.Add(StringKey.MENU_MAIN_BUTTON_ITEMS, GetByKey(StringKey.MENU_ITEMS_TITLE));
data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYERS, "Draw Players");
data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_BOX, "Draw Player Box");
data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_NAME, "Draw Player Name");
data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_LINE, "Draw Player Line");
data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_HEALTH, "Draw Player Health");
data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_SKELETON, "Draw Player Skeleton");
data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_RANGE, "Player Distance");
data.Add(StringKey.MENU_MISC_VISUAL_DRAWLOOTITEMS, "Draw Loot Items");
data.Add(StringKey.MENU_MISC_VISUAL_LOOTITEMRANGE, "Loot Item Distance");
data.Add(StringKey.MENU_MISC_VISUAL_DRAWCONTAINERS, "Draw Containers");
data.Add(StringKey.MENU_MISC_VISUAL_CONTAINERRANGE, "Container Distance");
data.Add(StringKey.MENU_MISC_VISUAL_DRAWEP, "Draw Extraction");
data.Add(StringKey.MENU_AIMBOT_TOGGLE, "Aimbot");
data.Add(StringKey.MENU_AIMBOT_SMOOTH, "Aimbot Smooth");
data.Add(StringKey.MENU_AIMBOT_DRAWFOV, "Draw FOV");
data.Add(StringKey.MENU_AIMBOT_FOVRANGE, "Aimbot FOV");
data.Add(StringKey.MENU_AIMBOT_AIMINGRANGE, "Aim Targets In: ");
data.Add(StringKey.MENU_AIMBOT_VISIBLEONLY, "Aim Visible Targets Only");
data.Add(StringKey.MENU_AIMBOT_SILENT, "Silent Aim");
data.Add(StringKey.MENU_AIMBOT_NORECOIL, "No Recoil");
data.Add(StringKey.MENU_MISCELLANEOUS_GODMODE, "God Mode");
data.Add(StringKey.MENU_MISCELLANEOUS_STAMINA, "Infinite Stamina");
data.Add(StringKey.MENU_MISCELLANEOUS_SPEEDHACK, "Speed Hack");
data.Add(StringKey.MENU_MISCELLANEOUS_SPEEDHACK_ADDITION, "Speed Boost");
data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_HEAL, $"Heal Yourself [{Settings.InstaHeal}]");
data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_UNLOCK, $"Unlock All Doors In 20m [{Settings.UnlockDoors}]");
data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_KILL, $"Kill Every Living Thing [{Settings.KillSwitch}]");
data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_TPENEMIES, $"Teleport All Enemies To You [{Settings.TpEnemies}]");
data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_TRADERSTANDING, $"Increase Standings For All Traders By 0.1 [{Settings.IncreaseTraderStandingKey}]");
data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_ADDXP, "Add Exp To Player");
data.Add(StringKey.MENU_MISCELLANEOUS_XPINRAID, "Current Exp In Raid: ");
data.Add(StringKey.MENU_MISCELLANEOUS_XPADDITION, "Exp Addition: ");
data.Add(StringKey.MENU_SKILLS_BUTTON_MAXALL, "Max All Skills");
data.Add(StringKey.MENU_SKILLS_HINT_INRAID, "Use it only in raids!");
data.Add(StringKey.MENU_SKILLS_STRENGTH, "Strength");
data.Add(StringKey.MENU_SKILLS_STRESSRESIST, "Stress Resistance");
data.Add(StringKey.MENU_SKILLS_MAGDRILLS, "Mag Drills");
data.Add(StringKey.MENU_SKILLS_MELEE, "Melee");
data.Add(StringKey.MENU_SKILLS_HIDEOUT, "Hideout Management");
data.Add(StringKey.MENU_SKILLS_CRAFTING, "Crafting");
data.Add(StringKey.MENU_SKILLS_HEAVYVESTS, "Heavy Vests");
data.Add(StringKey.MENU_SKILLS_LIGHTVESTS, "Light Vests");
data.Add(StringKey.MENU_SKILLS_LMG, "Light Machine Guns");
data.Add(StringKey.MENU_SKILLS_ASSAULT, "Assult Rifles");
data.Add(StringKey.MENU_SKILLS_PISTOL, "Pistols");
data.Add(StringKey.MENU_SKILLS_PERCEPTION, "Perception");
data.Add(StringKey.MENU_SKILLS_SNIPER, "Bolt-action Rifles");
data.Add(StringKey.MENU_SKILLS_SNIPING, "Sniping");
data.Add(StringKey.MENU_SKILLS_ENDURANCE, "Endurance");
data.Add(StringKey.MENU_SKILLS_THROWING, "Throwables");
data.Add(StringKey.MENU_SKILLS_CHARISMA, "Charisma");
data.Add(StringKey.MENU_SKILLS_HEALTH, "Health");
data.Add(StringKey.MENU_SKILLS_VITALITY, "Vitality");
data.Add(StringKey.MENU_SKILLS_METABOLISM, "Metabolism");
data.Add(StringKey.MENU_SKILLS_IMMUNITY, "Immunity");
data.Add(StringKey.MENU_SKILLS_SURGERY, "Surgery");
data.Add(StringKey.MENU_SKILLS_INTELLECT, "Intellect");
data.Add(StringKey.MENU_SKILLS_ATTENTION, "Attention");
data.Add(StringKey.MENU_SKILLS_REVOLVER, "Revolvers");
data.Add(StringKey.MENU_SKILLS_SHOTGUN, "Shotguns");
data.Add(StringKey.MENU_SKILLS_HMG, "Heavy Machine Guns");
data.Add(StringKey.MENU_SKILLS_DMR, "DMRs");
data.Add(StringKey.MENU_SKILLS_AIMDRILLS, "Aim Drills");
data.Add(StringKey.MENU_SKILLS_SEARCH, "Search");
data.Add(StringKey.MENU_SKILLS_WEAPONTREATMENT, "Weapon Maintenance");
data.Add(StringKey.MENU_SKILLS_TROUBLESHOOTING, "Troubleshooting");
data.Add(StringKey.MENU_SKILLS_COVERTMOVEMENT, "Covert Movement");
data.Add(StringKey.MENU_SKILLS_SMG, "Submachine Guns");
data.Add(StringKey.MENU_ITEMS_BUTTON_TPLOOTS, $"Teleport All Loots To You [{Settings.TpLoots}]");
data.Add(StringKey.MENU_ITEMS_BUTTON_AIRDROP, $"Call Air Drop [{Settings.CallAirdrop}]");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_TITLE, "Inventory Editor");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_SEARCH, "Search ID");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_GET, "Get Items From Backpack");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_STRINGS, "Item Strings");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_CHANGES, "Changes To Be Made (In Order Of ID, Width And Height)");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_BUTTON_COMMIT, "Commit Changes");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_BUTTON_SETFIR, "Set Whole Inventory Found In Raid");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_TITLE, "Item Dupe");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_SETSTACK, "Dupe Stack x");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_RESETSTACK, "Reset Stack To 1");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_SETSTACK_FASTRUBLE, "Fast Stack 400k(RUB)");
data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_SETSTACK_FASTEUROUSD, "Fast Stack 50k(EUR,USD)");
// Exfiltration Points
data.Add(StringKey.DATA_EP_ACTIVE, "Active");
data.Add(StringKey.DATA_EP_TIMER, "Timer");
data.Add(StringKey.DATA_EP_CLOSED, "Closed");
data.Add(StringKey.DATA_EP_PENDING, "Pending");
data.Add(StringKey.DATA_EP_OPEN, "Open");
data.Add(StringKey.DATA_EP_REQUIREMENT, "Requirement");
// Bot Types
data.Add(StringKey.DATA_PLAYERTYPE_BOT, "BOT");
data.Add(StringKey.DATA_PLAYERTYPE_GUARD, "GUARD");
data.Add(StringKey.DATA_PLAYERTYPE_BEAR, "PMC BEAR");
data.Add(StringKey.DATA_PLAYERTYPE_USEC, "PMC USEC");
data.Add(StringKey.DATA_PLAYERTYPE_PMC, "PMC");
data.Add(StringKey.DATA_PLAYERTYPE_BOSS, "BOSS");
}
public LocalisationData(Locale locale) {
this.locale = locale;
switch (locale) {
case Locale.CHINESE:
zh_CN();
break;
case Locale.ENGLISH:
en_US();
break;
default:
en_US();
break;
}
}
public string GetByKey(StringKey key) {
string o;
if (data.TryGetValue(key, out o)) return o;
return $"{key}";
}
}
}

View file

@ -0,0 +1,125 @@
using EFT;
using EscapeFromTarkovCheat;
using EscapeFromTarkovCheat.Feauters.ESP;
using System;
using UnityEngine;
namespace EscapeFromTarkovCheat.Data
{
public enum StringKey
{
MAIN_TITLE,
MENU_PLAYER_VISUAL_TITLE,
MENU_MISC_VISUAL_TITLE,
MENU_AIMBOT_TITLE,
MENU_MISCELLANEOUS_TITLE,
MENU_SKILLS_TITLE,
MENU_ITEMS_TITLE,
MENU_MAIN_DESC_TOGGLE,
MENU_MAIN_HINT_UNLOCK,
MENU_MAIN_HINT_HEAL,
MENU_MAIN_BUTTON_PLAYER_VISUAL,
MENU_MAIN_BUTTON_MISC_VISUAL,
MENU_MAIN_BUTTON_AIMBOT,
MENU_MAIN_BUTTON_MISCELLANEOUS,
MENU_MAIN_BUTTON_SKILLS,
MENU_MAIN_BUTTON_ITEMS,
MENU_PLAYER_VISUAL_DRAWPLAYERS,
MENU_PLAYER_VISUAL_DRAWPLAYER_BOX,
MENU_PLAYER_VISUAL_DRAWPLAYER_NAME,
MENU_PLAYER_VISUAL_DRAWPLAYER_LINE,
MENU_PLAYER_VISUAL_DRAWPLAYER_HEALTH,
MENU_PLAYER_VISUAL_DRAWPLAYER_SKELETON,
MENU_PLAYER_VISUAL_DRAWPLAYER_RANGE,
MENU_MISC_VISUAL_DRAWLOOTITEMS,
MENU_MISC_VISUAL_LOOTITEMRANGE,
MENU_MISC_VISUAL_DRAWCONTAINERS,
MENU_MISC_VISUAL_CONTAINERRANGE,
MENU_MISC_VISUAL_DRAWEP,
MENU_AIMBOT_TOGGLE,
MENU_AIMBOT_SMOOTH,
MENU_AIMBOT_DRAWFOV,
MENU_AIMBOT_FOVRANGE,
MENU_AIMBOT_AIMINGRANGE,
MENU_AIMBOT_VISIBLEONLY,
MENU_AIMBOT_SILENT,
MENU_AIMBOT_NORECOIL,
MENU_MISCELLANEOUS_GODMODE,
MENU_MISCELLANEOUS_STAMINA,
MENU_MISCELLANEOUS_SPEEDHACK,
MENU_MISCELLANEOUS_SPEEDHACK_ADDITION,
MENU_MISCELLANEOUS_BUTTON_HEAL,
MENU_MISCELLANEOUS_BUTTON_UNLOCK,
MENU_MISCELLANEOUS_BUTTON_KILL,
MENU_MISCELLANEOUS_BUTTON_TRADERSTANDING,
MENU_MISCELLANEOUS_BUTTON_TPENEMIES,
MENU_MISCELLANEOUS_BUTTON_ADDXP,
MENU_MISCELLANEOUS_XPINRAID,
MENU_MISCELLANEOUS_XPADDITION,
MENU_ITEMS_BUTTON_TPLOOTS,
MENU_ITEMS_BUTTON_AIRDROP,
MENU_ITEMS_INVEDITOR_TITLE,
MENU_ITEMS_INVEDITOR_SEARCH,
MENU_ITEMS_INVEDITOR_GET,
MENU_ITEMS_INVEDITOR_STRINGS,
MENU_ITEMS_INVEDITOR_CHANGES,
MENU_ITEMS_INVEDITOR_BUTTON_COMMIT,
MENU_ITEMS_INVEDITOR_BUTTON_SETFIR,
MENU_ITEMS_INVEDITOR_DUPE_TITLE,
MENU_ITEMS_INVEDITOR_DUPE_BUTTON_SETSTACK,
MENU_ITEMS_INVEDITOR_DUPE_BUTTON_RESETSTACK,
MENU_ITEMS_INVEDITOR_DUPE_BUTTON_SETSTACK_FASTRUBLE,
MENU_ITEMS_INVEDITOR_DUPE_BUTTON_SETSTACK_FASTEUROUSD,
// Skills Menu
MENU_SKILLS_BUTTON_MAXALL,
MENU_SKILLS_HINT_INRAID,
MENU_SKILLS_STRENGTH,
MENU_SKILLS_STRESSRESIST,
MENU_SKILLS_MAGDRILLS,
MENU_SKILLS_MELEE,
MENU_SKILLS_HIDEOUT,
MENU_SKILLS_CRAFTING,
MENU_SKILLS_HEAVYVESTS,
MENU_SKILLS_LIGHTVESTS,
MENU_SKILLS_LMG,
MENU_SKILLS_ASSAULT,
MENU_SKILLS_PISTOL,
MENU_SKILLS_PERCEPTION,
MENU_SKILLS_SNIPER,
MENU_SKILLS_SNIPING,
MENU_SKILLS_ENDURANCE,
MENU_SKILLS_THROWING,
MENU_SKILLS_CHARISMA,
MENU_SKILLS_HEALTH,
MENU_SKILLS_VITALITY,
MENU_SKILLS_METABOLISM,
MENU_SKILLS_IMMUNITY,
MENU_SKILLS_SURGERY,
MENU_SKILLS_INTELLECT,
MENU_SKILLS_ATTENTION,
MENU_SKILLS_REVOLVER,
MENU_SKILLS_SHOTGUN,
MENU_SKILLS_HMG,
MENU_SKILLS_DMR,
MENU_SKILLS_AIMDRILLS,
MENU_SKILLS_SEARCH,
MENU_SKILLS_WEAPONTREATMENT,
MENU_SKILLS_TROUBLESHOOTING,
MENU_SKILLS_COVERTMOVEMENT,
MENU_SKILLS_SMG,
DATA_EP_ACTIVE,
DATA_EP_TIMER,
DATA_EP_CLOSED,
DATA_EP_PENDING,
DATA_EP_OPEN,
DATA_EP_REQUIREMENT,
DATA_PLAYERTYPE_BOT,
DATA_PLAYERTYPE_GUARD,
DATA_PLAYERTYPE_BEAR,
DATA_PLAYERTYPE_USEC,
DATA_PLAYERTYPE_PMC,
DATA_PLAYERTYPE_BOSS
}
}

View file

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{C1C426A1-EFC3-4C83-972C-ECA557571328}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>EscapeFromTarkovCheat</RootNamespace>
<AssemblyName>EscapeFromTarkovCheat</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>8.0</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>8.0</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="Assembly-CSharp">
<HintPath>..\Managed\Assembly-CSharp.dll</HintPath>
</Reference>
<Reference Include="Assembly-CSharp-firstpass">
<HintPath>..\Managed\Assembly-CSharp-firstpass.dll</HintPath>
</Reference>
<Reference Include="Cinemachine">
<HintPath>..\Managed\Cinemachine.dll</HintPath>
</Reference>
<Reference Include="Comfort, Version=1.0.0.4, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Managed\Comfort.dll</HintPath>
</Reference>
<Reference Include="Comfort.Unity">
<HintPath>..\Managed\Comfort.Unity.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="UnityEngine">
<HintPath>..\Managed\UnityEngine.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.CoreModule">
<HintPath>..\Managed\UnityEngine.CoreModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.DirectorModule">
<HintPath>..\Managed\UnityEngine.DirectorModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.IMGUIModule">
<HintPath>..\Managed\UnityEngine.IMGUIModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.InputLegacyModule">
<HintPath>..\Managed\UnityEngine.InputLegacyModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.InputModule">
<HintPath>..\Managed\UnityEngine.InputModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.PhysicsModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Managed\UnityEngine.PhysicsModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UI">
<HintPath>..\Managed\UnityEngine.UI.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UIModule">
<HintPath>..\Managed\UnityEngine.UIModule.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Data\GameExfiltrationPoint.cs" />
<Compile Include="Data\GameLootContainer.cs" />
<Compile Include="Data\GameLootItem.cs" />
<Compile Include="Data\GamePlayer.cs" />
<Compile Include="Data\Locale.cs" />
<Compile Include="Data\LocalisationData.cs" />
<Compile Include="Data\StringKey.cs" />
<Compile Include="Features\ExperienceManager.cs" />
<Compile Include="Features\ItemFeatures.cs" />
<Compile Include="Features\Skills.cs" />
<Compile Include="Features\SpeedHack.cs" />
<Compile Include="LocalisationManager.cs" />
<Compile Include="Features\Aimbot.cs" />
<Compile Include="Features\ESP\PlayerSkeletons.cs" />
<Compile Include="Main.cs" />
<Compile Include="Features\ESP\ExfiltrationPointsESP.cs" />
<Compile Include="Features\ESP\ItemESP.cs" />
<Compile Include="Loader.cs" />
<Compile Include="Features\ESP\LootableContainerESP.cs" />
<Compile Include="Features\ESP\PlayerESP.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="UI\Menu.cs" />
<Compile Include="Utils\AllocConsoleHandler.cs" />
<Compile Include="Utils\BoneType.cs" />
<Compile Include="Utils\GameUtils.cs" />
<Compile Include="Utils\Render.cs" />
<Compile Include="Utils\Settings.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View file

@ -0,0 +1,121 @@
using System;
using EFT;
using EFT.InventoryLogic;
using EscapeFromTarkovCheat.Data;
using EscapeFromTarkovCheat.Utils;
using UnityEngine;
using static Systems.Effects.Effects;
namespace EscapeFromTarkovCheat.Feauters
{
class Aimbot : MonoBehaviour
{
public void Update()
{
if (Settings.NoRecoil)
NoRecoil();
if (Main.GameWorld != null && Settings.Aimbot && Input.GetKey(Settings.AimbotKey))
this.Aim();
}
private void Aim()
{
Vector3 target = Vector3.zero;
float distanceOfTarget = 9999f;
foreach (GamePlayer gamePlayer in Main.GamePlayers)
{
if (gamePlayer == null)
// 未开局 : Not loaded
continue;
if (Main.LocalPlayer.HandsController == null)
// 卡手 : Invalid hand
continue;
Weapon weapon = Main.LocalPlayer.HandsController.Item as Weapon;
if (weapon == null)
// 无武器 : No weapon
continue;
AmmoTemplate currentAmmoTemplate = weapon.CurrentAmmoTemplate;
if (currentAmmoTemplate == null)
// 无弹药 : Out of ammo
continue;
Vector3 destination = GameUtils.GetBonePosByEID(gamePlayer.Player, BoneType.HumanHead);
float distance = Vector3.Distance(Main.MainCamera.transform.position, gamePlayer.Player.Transform.position);
if (distance > Settings.AimbotRange)
// 大于瞄准范围 : Too far
continue;
if (destination == Vector3.zero)
// 无法找到头部 : Head not found
continue;
if (Aimbot.CalculateInFov(destination) > Settings.AimbotFOV)
// 不在瞄准圈内 : Not in fov
continue;
if (Settings.VisibleOnly && !GameUtils.IsPlayerVisible(gamePlayer.Player))
// 开启仅瞄准可见时不可见 : Not visible while Visible Only is toggled on
continue;
if (distanceOfTarget > distance) // 寻找最近 : Aim at the nearest
{
distanceOfTarget = distance;
float timeToHit = distance / currentAmmoTemplate.InitialSpeed; // 子弹飞行时间 : Time to hit the target
destination.x += gamePlayer.Player.Velocity.x * timeToHit; // 速度时间预判,下同 : Add some drifts to the target for hitting moving targets
destination.y += gamePlayer.Player.Velocity.y * timeToHit;
target = destination; // 建立瞄准点 : Construct the final aiming point
}
}
if (target != Vector3.zero)
{
Aimbot.AimAtPos(target);
}
}
private void NoRecoil()
{
if (Main.LocalPlayer == null)
return;
if (Main.LocalPlayer.ProceduralWeaponAnimation == null)
return;
var effect = Main.LocalPlayer.ProceduralWeaponAnimation.Shootingg?.CurrentRecoilEffect;
if (effect == null)
return;
effect.CameraRotationRecoilEffect.Intensity = 0f;
effect.HandPositionRecoilEffect.Intensity = 0f;
effect.HandRotationRecoilEffect.Intensity = 0f;
}
public void OnGUI()
{
if (Settings.AimbotDrawFOV)
{
Render.DrawCircle(new Vector2((float)Screen.width / 2f, (float)Screen.height / 2f), Screen.width * Settings.AimbotFOV / 75, 64, Color.red, true, 1);
}
}
public static float CalculateInFov(Vector3 position1)
{
Vector3 position2 = Main.MainCamera.transform.position;
Vector3 forward = Main.MainCamera.transform.forward;
Vector3 normalized = (position1 - position2).normalized;
return Mathf.Acos(Mathf.Clamp(Vector3.Dot(forward, normalized), -1f, 1f)) * 57.29578f;
}
public static void AimAtPos(Vector3 position)
{
if (Settings.SilentAim)
{
Main.LocalPlayer.ProceduralWeaponAnimation.ShotNeedsFovAdjustments = false;
Vector3 normalizedPosition = (position - Main.LocalPlayer.Fireport.position).normalized;
Vector3 shotDirection = Main.LocalPlayer.Fireport.InverseTransformVector(normalizedPosition);
Main.LocalPlayer.ProceduralWeaponAnimation._shotDirection = shotDirection;
}
else
{
Vector3 b = Main.LocalPlayer.Fireport.position - Main.LocalPlayer.Fireport.up * 1f;
Vector3 eulerAngles = Quaternion.LookRotation((position - b).normalized).eulerAngles;
if (eulerAngles.x > 180f)
{
eulerAngles.x -= 360f;
}
Main.LocalPlayer.MovementContext.Rotation = new Vector2(eulerAngles.y, eulerAngles.x);
}
}
}
}

View file

@ -0,0 +1,100 @@
using System.Collections.Generic;
using Comfort.Common;
using EFT;
using EFT.Interactive;
using EscapeFromTarkovCheat.Data;
using EscapeFromTarkovCheat.Utils;
using JsonType;
using UnityEngine;
namespace EscapeFromTarkovCheat.Feauters.ESP
{
public class ExfiltrationPointsESP : MonoBehaviour
{
private List<GameExfiltrationPoint> _gameExfiltrationPoints= new List<GameExfiltrationPoint>();
private static readonly float CacheExfiltrationPointInterval = 5f;
private float _nextLootItemCacheTime;
private static readonly Color ExfiltrationPointColour = Color.green;
private static readonly Color ClosedExfiltrationPointColour = Color.yellow;
public void Update()
{
if (!Settings.DrawExfiltrationPoints)
return;
if (Time.time >= _nextLootItemCacheTime)
{
if ((Main.GameWorld != null) && (Main.GameWorld.ExfiltrationController.ExfiltrationPoints != null))
{
_gameExfiltrationPoints.Clear();
foreach (var exfiltrationPoint in Main.GameWorld.ExfiltrationController.EligiblePoints(Main.LocalPlayer.Profile))
{
if (!GameUtils.IsExfiltrationPointValid(exfiltrationPoint))
continue;
_gameExfiltrationPoints.Add(new GameExfiltrationPoint(exfiltrationPoint, true));
}
foreach (var exfiltrationPoint in Main.GameWorld.ExfiltrationController.ExfiltrationPoints)
{
bool trig = false;
if (!GameUtils.IsExfiltrationPointValid(exfiltrationPoint))
continue;
foreach (var ep in _gameExfiltrationPoints)
{
if (ep.Name == exfiltrationPoint.Settings.Name.Localized())
trig = !trig;
continue;
}
if (trig)
continue;
_gameExfiltrationPoints.Add(new GameExfiltrationPoint(exfiltrationPoint, false));
}
_nextLootItemCacheTime = (Time.time + CacheExfiltrationPointInterval);
}
}
foreach (GameExfiltrationPoint gameExfiltrationPoint in _gameExfiltrationPoints)
gameExfiltrationPoint.RecalculateDynamics();
}
private static string GetName(ExfiltrationPoint point, bool isEligible)
{
var localizedName = point.Settings.Name.Localized();
return !isEligible ? localizedName : $"{localizedName} ({GetStatus(point.Status)})";
}
public static string GetStatus(EExfiltrationStatus status)
{
return status switch
{
EExfiltrationStatus.AwaitsManualActivation => LocalisationManager.GetString(Settings.Language, StringKey.DATA_EP_ACTIVE),
EExfiltrationStatus.Countdown => LocalisationManager.GetString(Settings.Language, StringKey.DATA_EP_TIMER),
EExfiltrationStatus.NotPresent => LocalisationManager.GetString(Settings.Language, StringKey.DATA_EP_CLOSED),
EExfiltrationStatus.Pending => LocalisationManager.GetString(Settings.Language, StringKey.DATA_EP_PENDING),
EExfiltrationStatus.RegularMode => LocalisationManager.GetString(Settings.Language, StringKey.DATA_EP_OPEN),
EExfiltrationStatus.UncompleteRequirements => LocalisationManager.GetString(Settings.Language, StringKey.DATA_EP_REQUIREMENT),
_ => string.Empty
};
}
private void OnGUI()
{
if (Settings.DrawExfiltrationPoints)
{
foreach (var exfiltrationPoint in _gameExfiltrationPoints)
{
if (!GameUtils.IsExfiltrationPointValid(exfiltrationPoint.ExfiltrationPoint) || !exfiltrationPoint.IsOnScreen)
continue;
string exfiltrationPointText = $"{GetName(exfiltrationPoint.ExfiltrationPoint, exfiltrationPoint.Eligible)} [{exfiltrationPoint.FormattedDistance}]";
Render.DrawString(new Vector2(exfiltrationPoint.ScreenPosition.x - 50f, exfiltrationPoint.ScreenPosition.y), exfiltrationPointText, exfiltrationPoint.Eligible ? ExfiltrationPointColour : ClosedExfiltrationPointColour);
}
}
}
}
}

View file

@ -0,0 +1,81 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using Comfort.Common;
using EFT;
using EFT.Interactive;
using EscapeFromTarkovCheat.Data;
using EscapeFromTarkovCheat.Utils;
using JsonType;
using UnityEngine;
namespace EscapeFromTarkovCheat.Feauters.ESP
{
public class ItemESP : MonoBehaviour
{
private static readonly float CacheLootItemsInterval = 4f;
private float _nextLootItemCacheTime;
//private static readonly Color SpecialColor = new Color(1f, 0.2f, 0.09f);
private static readonly Color QuestColor = Color.yellow;
private static readonly Color CommonColor = Color.white;
private static readonly Color RareColor = new Color(0.38f, 0.43f, 1f);
private static readonly Color SuperRareColor = new Color(1f, 0.29f, 0.36f);
private List<GameLootItem> _gameLootItems = new List<GameLootItem>();
private Stopwatch _stopwatch = new Stopwatch();
public void Update()
{
if (!Settings.DrawLootItems)
return;
if (Time.time >= _nextLootItemCacheTime)
{
if ((Main.GameWorld != null) && (Main.GameWorld.LootItems != null))
{
_gameLootItems.Clear();
for (int i = 0; i < Main.GameWorld.LootItems.Count; i++)
{
LootItem lootItem = Main.GameWorld.LootItems.GetByIndex(i);
if (!GameUtils.IsLootItemValid(lootItem) || (Vector3.Distance(Main.MainCamera.transform.position, lootItem.transform.position) > Settings.DrawLootItemsDistance))
continue;
_gameLootItems.Add(new GameLootItem(lootItem));
}
_nextLootItemCacheTime = (Time.time + CacheLootItemsInterval);
}
}
foreach (GameLootItem gameLootItem in _gameLootItems)
gameLootItem.RecalculateDynamics();
}
private void OnGUI()
{
if (Settings.DrawLootItems)
{
foreach (var gameLootItem in _gameLootItems)
{
if (!GameUtils.IsLootItemValid(gameLootItem.LootItem) || !gameLootItem.IsOnScreen || gameLootItem.Distance > Settings.DrawLootItemsDistance)
continue;
string lootItemName = $"{gameLootItem.LootItem.Item.ShortName.Localized()} [{gameLootItem.FormattedDistance}]";
if (gameLootItem.LootItem.Item.Template.Rarity == ELootRarity.Common)
Render.DrawString(new Vector2(gameLootItem.ScreenPosition.x - 50f, gameLootItem.ScreenPosition.y), lootItemName, CommonColor);
if (gameLootItem.LootItem.Item.Template.Rarity == ELootRarity.Rare)
Render.DrawString(new Vector2(gameLootItem.ScreenPosition.x - 50f, gameLootItem.ScreenPosition.y), lootItemName, RareColor);
if (gameLootItem.LootItem.Item.Template.Rarity == ELootRarity.Superrare)
Render.DrawString(new Vector2(gameLootItem.ScreenPosition.x - 50f, gameLootItem.ScreenPosition.y), lootItemName, SuperRareColor);
if (gameLootItem.LootItem.Item.Template.QuestItem)
Render.DrawString(new Vector2(gameLootItem.ScreenPosition.x - 50f, gameLootItem.ScreenPosition.y), lootItemName, QuestColor);
}
}
}
}
}

View file

@ -0,0 +1,70 @@
using System;
using System.Collections.Generic;
using System.Reflection;
using Comfort.Common;
using EFT;
using EFT.Interactive;
using EscapeFromTarkovCheat.Data;
using EscapeFromTarkovCheat.Utils;
using JsonType;
using UnityEngine;
namespace EscapeFromTarkovCheat.Feauters.ESP
{
public class LootableContainerESP : MonoBehaviour
{
private static readonly float CacheLootItemsInterval = 100;
private float _nextLootContainerCacheTime;
private List<GameLootContainer> _gameLootContainers;
private static readonly Color LootableContainerColor = new Color(1f, 0.2f, 0.09f);
public void Start()
{
_gameLootContainers = new List<GameLootContainer>();
}
public void Update()
{
if (!Settings.DrawLootableContainers)
return;
if (Time.time >= _nextLootContainerCacheTime)
{
if ((Main.GameWorld != null) && (Main.GameWorld.LootItems != null))
{
_gameLootContainers.Clear();
foreach (LootableContainer lootableContainer in FindObjectsOfType<LootableContainer>())
{
if (!GameUtils.IsLootableContainerValid(lootableContainer) || (Vector3.Distance(Main.MainCamera.transform.position, lootableContainer.transform.position) > Settings.DrawLootableContainersDistance))
continue;
_gameLootContainers.Add(new GameLootContainer(lootableContainer));
}
_nextLootContainerCacheTime = (Time.time + CacheLootItemsInterval);
}
}
foreach (GameLootContainer gameLootContainer in _gameLootContainers)
gameLootContainer.RecalculateDynamics();
}
public void OnGUI()
{
if (!Settings.DrawLootableContainers)
return;
foreach (var gameLootContainer in _gameLootContainers)
{
if (!GameUtils.IsLootableContainerValid(gameLootContainer.LootableContainer) || !gameLootContainer.IsOnScreen || gameLootContainer.Distance > Settings.DrawLootableContainersDistance)
continue;
//EFT.InventoryLogic.Item rootItem = gameLootContainer.LootableContainer.ItemOwner.RootItem;
//rootItem.Template.Name.Localized();
string lootItemName = $"{gameLootContainer.LootableContainer.name} [{gameLootContainer.FormattedDistance}]";
Render.DrawString(new Vector2(gameLootContainer.ScreenPosition.x - 50f, gameLootContainer.ScreenPosition.y), lootItemName, LootableContainerColor);
}
}
}
}

View file

@ -0,0 +1,191 @@
using EFT;
using EscapeFromTarkovCheat.Data;
using EscapeFromTarkovCheat.Utils;
using System;
using System.Collections.Generic;
using UnityEngine;
namespace EscapeFromTarkovCheat.Feauters.ESP
{
public class PlayerESP : MonoBehaviour
{
private static readonly Color _playerColor = Color.cyan;
private static readonly Color _botColor = Color.yellow;
private static readonly Color _healthColor = Color.green;
private static readonly Color _bossColor = Color.red;
private static readonly Color _cultistLeader = Color.red;
private static readonly Color _cultistGuard = Color.red;
private static readonly Color _guardColor = Color.red;
private static readonly Color _skeletonColor = Color.cyan;
private static readonly HashSet<string> BossNames = new HashSet<string>
{
"Killa",
"Reshala",
"Sanitar",
"Glukhar",
"Shturman",
"Tagilla",
"Knight",
"BirdEye",
"Zryachiy",
"Big Pipe",
"Kaban"
};
// Token: 0x0200001D RID: 29
public enum PlayerType
{
SCAV,
PLAYERSCAV,
PLAYER,
TEAMMATE,
FOLLOWER,
BOSS
}
public static bool IsBossByName(string playerName)
{
return PlayerESP.BossNames.Contains(playerName);
}
public static string PlayerName(Player player, ref PlayerESP.PlayerType playerType)
{
if (player.Profile.Info.RegistrationDate > 0)
{
if (player.Profile.Info.Side == EPlayerSide.Savage)
{
playerType = PlayerESP.PlayerType.PLAYERSCAV;
return "player";
}
playerType = PlayerESP.PlayerType.PLAYER;
return player.Profile.Info.Side.ToString() + " [" + player.Profile.Info.Level.ToString() + "]";
}
if (player.Profile.Info.Settings.Role.ToString().IndexOf("boss") != -1)
{
playerType = PlayerESP.PlayerType.BOSS;
return "BOSS";
}
if (player.Profile.Info.Settings.Role.ToString().IndexOf("follower") != -1)
{
playerType = PlayerESP.PlayerType.FOLLOWER;
return "Follower";
}
if (player.Profile.Info.Settings.Role.ToString().ToLower().IndexOf("pmcbot") != -1)
{
playerType = PlayerESP.PlayerType.SCAV;
return "Raider";
}
playerType = PlayerESP.PlayerType.SCAV;
return "";
}
private void DrawPlayerName(GamePlayer gamePlayer, ref Color color)
{
string text = "";
WildSpawnType role = gamePlayer.Player.Profile.Info.Settings.Role;
if (gamePlayer.IsAI)
{
text = $"{LocalisationManager.GetString(Settings.Language, StringKey.DATA_PLAYERTYPE_BOT)} [{gamePlayer.FormattedDistance}]";
color = PlayerESP._botColor;
}
else
{
text = $"{gamePlayer.Player.Profile.Info.Nickname} [{gamePlayer.FormattedDistance}]";
color = PlayerESP._playerColor;
}
if (gamePlayer.Player.Profile.Info.Settings.IsFollower())
{
text = $"{LocalisationManager.GetString(Settings.Language, StringKey.DATA_PLAYERTYPE_GUARD)}-{gamePlayer.Player.Profile.Info.Nickname} [{gamePlayer.FormattedDistance}]";
color = PlayerESP._guardColor;
}
if (gamePlayer.Player.Profile.Info.Settings.IsBoss())
{
switch (role)
{
case WildSpawnType.sectantPriest:
text = $"{gamePlayer.Player.Profile.Info.Nickname} [{gamePlayer.FormattedDistance}]";
color = PlayerESP._cultistLeader;
break;
case WildSpawnType.sectantWarrior:
text = $"{gamePlayer.Player.Profile.Info.Nickname} [{gamePlayer.FormattedDistance}]";
color = PlayerESP._cultistGuard;
break;
case WildSpawnType.pmcBEAR:
text = $"{LocalisationManager.GetString(Settings.Language, StringKey.DATA_PLAYERTYPE_BEAR)} [{gamePlayer.FormattedDistance}]";
color = PlayerESP._playerColor;
break;
case WildSpawnType.pmcUSEC:
text = $"{LocalisationManager.GetString(Settings.Language, StringKey.DATA_PLAYERTYPE_USEC)} [{gamePlayer.FormattedDistance}]";
color = PlayerESP._playerColor;
break;
case WildSpawnType.pmcBot:
text = $"{LocalisationManager.GetString(Settings.Language, StringKey.DATA_PLAYERTYPE_PMC)} [{gamePlayer.FormattedDistance}]";
color = PlayerESP._playerColor;
break;
default:
text = $"{LocalisationManager.GetString(Settings.Language, StringKey.DATA_PLAYERTYPE_BOSS)}-{gamePlayer.Player.Profile.Info.Nickname} [{gamePlayer.FormattedDistance}]";
color = PlayerESP._bossColor;
break;
}
}
Vector2 vector = GUI.skin.GetStyle(text).CalcSize(new GUIContent(text));
Render.DrawString(new Vector2(gamePlayer.ScreenPosition.x - vector.x / 2f, gamePlayer.HeadScreenPosition.y - 20f), text, color, true);
}
private void DrawPlayerHealth(GamePlayer gamePlayer, float boxPositionY, float boxHeight, float boxWidth)
{
if (!gamePlayer.Player.HealthController.IsAlive)
return;
float current = gamePlayer.Player.HealthController.GetBodyPartHealth(EBodyPart.Common, false).Current;
float maximum = gamePlayer.Player.HealthController.GetBodyPartHealth(EBodyPart.Common, false).Maximum;
float healthBarHeight = GameUtils.Map(current, 0f, maximum, 0f, boxHeight);
Render.DrawLine(new Vector2(gamePlayer.ScreenPosition.x - boxWidth / 2f - 3f, boxPositionY + boxHeight - healthBarHeight),
new Vector2(gamePlayer.ScreenPosition.x - boxWidth / 2f - 3f, boxPositionY + boxHeight), 3f, PlayerESP._healthColor);
}
public void OnGUI()
{
if (!Settings.DrawPlayers)
return;
if (Main.notReady())
return;
foreach (GamePlayer gamePlayer in Main.GamePlayers)
{
if (!gamePlayer.IsOnScreen)
continue;
if (gamePlayer.Distance > Settings.DrawPlayersDistance)
continue;
if (gamePlayer.Player == Main.LocalPlayer)
continue;
Color color = gamePlayer.IsAI ? PlayerESP._botColor : PlayerESP._playerColor;
float boxPositionY = (gamePlayer.HeadScreenPosition.y - 10f);
float boxHeight = (Math.Abs(gamePlayer.HeadScreenPosition.y - gamePlayer.ScreenPosition.y) + 10f);
float boxWidth = (boxHeight * 0.65f);
if (Settings.DrawPlayerBox)
Render.DrawBox(gamePlayer.ScreenPosition.x - boxWidth / 2f, boxPositionY, boxWidth, boxHeight, color);
if (Settings.DrawPlayerSkeletons)
PlayerSkeletons.DrawSkeleton(new GamePlayer(gamePlayer.Player), _skeletonColor);
if (Settings.DrawPlayerHealth)
DrawPlayerHealth(gamePlayer, boxPositionY, boxHeight, boxWidth);
if (Settings.DrawPlayerName)
DrawPlayerName(gamePlayer, ref color);
if (Settings.DrawPlayerLine)
Render.DrawLine(new Vector2((float)(Screen.width / 2), (float)Screen.height),
new Vector2(gamePlayer.ScreenPosition.x, gamePlayer.ScreenPosition.y),
1.5f, Color.red);
}
}
}
}

View file

@ -0,0 +1,82 @@
using UnityEngine;
using EscapeFromTarkovCheat.Data;
using EscapeFromTarkovCheat.Utils;
namespace EscapeFromTarkovCheat.Feauters.ESP
{
public static class PlayerSkeletons
{
public static void DrawSkeleton(GamePlayer gamePlayer, Color skeletonColor)
{
if (GameUtils.IsPlayerValid(gamePlayer.Player))
{
// 可视检查 : Visible
// Color skeletonColor = GameUtils.IsPlayerVisible(gamePlayer.Player) ? Color.green : Color.red;
// 头胸腹 : head, neck, chest, stomach
Vector3 headPos = gamePlayer.GetBonePosition(BoneType.HumanHead);
Vector3 neckPos = gamePlayer.GetBonePosition(BoneType.HumanNeck);
Vector3 spinePos = gamePlayer.GetBonePosition(BoneType.HumanSpine3);
Vector3 pelvisPos = gamePlayer.GetBonePosition(BoneType.HumanPelvis);
// 左右手臂 : left arm, right arm
Vector3 leftShoulderPos = gamePlayer.GetBonePosition(BoneType.HumanLCollarbone);
Vector3 leftUpperArmPos = gamePlayer.GetBonePosition(BoneType.HumanLUpperarm);
Vector3 leftElbowPos = gamePlayer.GetBonePosition(BoneType.HumanLForearm1);
Vector3 leftForearmPos = gamePlayer.GetBonePosition(BoneType.HumanLForearm2);
Vector3 leftHandPos = gamePlayer.GetBonePosition(BoneType.HumanLPalm);
Vector3 rightShoulderPos = gamePlayer.GetBonePosition(BoneType.HumanRCollarbone);
Vector3 rightUpperArmPos = gamePlayer.GetBonePosition(BoneType.HumanRUpperarm);
Vector3 rightElbowPos = gamePlayer.GetBonePosition(BoneType.HumanRForearm1);
Vector3 rightForearmPos = gamePlayer.GetBonePosition(BoneType.HumanRForearm2);
Vector3 rightHandPos = gamePlayer.GetBonePosition(BoneType.HumanRPalm);
// 左右腿足 : left leg, right leg
Vector3 leftHipPos = gamePlayer.GetBonePosition(BoneType.HumanLThigh1);
Vector3 leftThigh2Pos = gamePlayer.GetBonePosition(BoneType.HumanLThigh2);
Vector3 leftKneePos = gamePlayer.GetBonePosition(BoneType.HumanLCalf);
Vector3 leftCalfPos = gamePlayer.GetBonePosition(BoneType.HumanLCalf);
Vector3 leftFootPos = gamePlayer.GetBonePosition(BoneType.HumanLFoot);
Vector3 rightHipPos = gamePlayer.GetBonePosition(BoneType.HumanRThigh1);
Vector3 rightThigh2Pos = gamePlayer.GetBonePosition(BoneType.HumanRThigh2);
Vector3 rightKneePos = gamePlayer.GetBonePosition(BoneType.HumanRCalf);
Vector3 rightCalfPos = gamePlayer.GetBonePosition(BoneType.HumanRCalf);
Vector3 rightFootPos = gamePlayer.GetBonePosition(BoneType.HumanRFoot);
// 绘制 : rendering
// 头脖胸 : head, neck, chest
Render.DrawBoneLine(headPos, neckPos, 1.5f, skeletonColor);
Render.DrawBoneLine(neckPos, spinePos, 1.5f, skeletonColor);
Render.DrawBoneLine(spinePos, pelvisPos, 1.5f, skeletonColor);
// 左右手臂 : left arm, right arm
Render.DrawBoneLine(neckPos, leftShoulderPos, 1.5f, skeletonColor);
Render.DrawBoneLine(leftShoulderPos, leftUpperArmPos, 1.5f, skeletonColor);
Render.DrawBoneLine(leftUpperArmPos, leftElbowPos, 1.5f, skeletonColor);
Render.DrawBoneLine(leftElbowPos, leftForearmPos, 1.5f, skeletonColor);
Render.DrawBoneLine(leftForearmPos, leftHandPos, 1.5f, skeletonColor);
Render.DrawBoneLine(neckPos, rightShoulderPos, 1.5f, skeletonColor);
Render.DrawBoneLine(rightShoulderPos, rightUpperArmPos, 1.5f, skeletonColor);
Render.DrawBoneLine(rightUpperArmPos, rightElbowPos, 1.5f, skeletonColor);
Render.DrawBoneLine(rightElbowPos, rightForearmPos, 1.5f, skeletonColor);
Render.DrawBoneLine(rightForearmPos, rightHandPos, 1.5f, skeletonColor);
// 左右腿足 : left leg, right leg
Render.DrawBoneLine(pelvisPos, leftHipPos, 1.5f, skeletonColor);
Render.DrawBoneLine(leftHipPos, leftThigh2Pos, 1.5f, skeletonColor);
Render.DrawBoneLine(leftThigh2Pos, leftKneePos, 1.5f, skeletonColor);
Render.DrawBoneLine(leftKneePos, leftCalfPos, 1.5f, skeletonColor);
Render.DrawBoneLine(leftCalfPos, leftFootPos, 1.5f, skeletonColor);
Render.DrawBoneLine(pelvisPos, rightHipPos, 1.5f, skeletonColor);
Render.DrawBoneLine(rightHipPos, rightThigh2Pos, 1.5f, skeletonColor);
Render.DrawBoneLine(rightThigh2Pos, rightKneePos, 1.5f, skeletonColor);
Render.DrawBoneLine(rightKneePos, rightCalfPos, 1.5f, skeletonColor);
Render.DrawBoneLine(rightCalfPos, rightFootPos, 1.5f, skeletonColor);
}
}
}
}

View file

@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Linq;
using EFT;
using EFT.Counters;
using UnityEngine;
namespace EscapeFromTarkovCheat.Features
{
public static class ExperienceManager
{
public static long current = 0;
public static void SetExperience(Player player, float experience)
{
if (player != null && player.Profile != null)
{
current = Get(player);
player.Profile.EftStats.SessionCounters.SetLong((long)experience, CounterTag.Exp);
current = (long)experience;
Debug.Log(string.Format("Experience set to {0}", experience));
}
}
public static void AddExperience(Player player, float experience)
{
if (player != null && player.Profile != null)
{
current = Get(player);
SetExperience(player, current + experience);
}
}
public static int Get(Player player)
{
if (player != null && player.Profile != null)
{
return player.Profile.EftStats.SessionCounters.GetInt(CounterTag.Exp);
}
return 0;
}
}
}

View file

@ -0,0 +1,226 @@
using EFT;
using EFT.InventoryLogic;
using EscapeFromTarkovCheat.Utils;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace EscapeFromTarkovCheat
{
// Token: 0x02000006 RID: 6
public static class ItemFeatures
{
public static List<Item> collectedItems = new List<Item>();
public static string _searchQuery = "";
public static string _itemStringText = "";
public static string _id = "";
private static int id = 0;
public static string _width = "";
private static int width = 0;
public static string _height = "";
private static int height = 0;
private static float _logTime = Time.time;
public static string ItemStringText
{
get
{
return _itemStringText;
}
}
public static string Id
{
get
{
return _id;
}
}
public static string Width
{
get
{
return _width;
}
}
public static string Height
{
get
{
return _height;
}
}
public static string GetSearchQuery() => _searchQuery;
public static void GetItemsInInventory()
{
GameUtils.AddConsoleLog("GetItemsInInventory called");
collectedItems.Clear();
List<string> itemStrings = new List<string>();
EquipmentSlot[] slots = { EquipmentSlot.Backpack };
if (Main.notReady())
{
GameUtils.AddConsoleLog("You are not in raid.");
return;
}
if (Main.LocalPlayer.Profile == null)
{
GameUtils.AddConsoleLog("The current raid is in the state of loading.");
return;
}
if (Main.LocalPlayer.Profile.Inventory == null)
{
GameUtils.AddConsoleLog("Your Inventory class currently has no instance.");
return;
}
IEnumerable<Item> items = Main.LocalPlayer.Profile.Inventory.GetItemsInSlots(slots);
if (items == null || items.Count() == 0)
{
GameUtils.AddConsoleLog("Your inventory is either empty or not loaded.");
return;
}
GameUtils.AddConsoleLog($"Found {items.Count()} items in backpack");
foreach (Item item in items)
{
if (!GameUtils.IsInventoryItemValid(item))
continue;
if (!item.Name.Localized().ToLower().Contains(_searchQuery.ToLower()))
continue;
itemStrings.Add(item.Name.Localized());
collectedItems.Add(item);
GameUtils.AddConsoleLog($"Added item: {item.Name.Localized()}");
}
_itemStringText = string.Join("\n", itemStrings);
}
public static void Commit()
{
GameUtils.AddConsoleLog("SetItemsInInventory called");
if (collectedItems.Count <= 0)
{
GameUtils.AddConsoleLog("No items in collectedItems");
return;
}
foreach (Item item in collectedItems)
{
if (!item.Name.ToLower().Contains(_searchQuery.ToLower()))
continue;
item.Template._id = _id;
GameUtils.AddConsoleLog($"Set {item.Name} _id to {_id}");
if (int.TryParse(_width, out width)) // 字符串转整数 : Casting string to int
{
item.Template.Width = width;
GameUtils.AddConsoleLog($"Set {item.Name.Localized()} Width to {width}");
}
if (int.TryParse(_height, out height))
{
item.Template.Height = height;
GameUtils.AddConsoleLog($"Set {item.Name.Localized()} Height to {height}");
}
}
}
public static void ResetItemsInInventory()
{
GameUtils.AddConsoleLog("ResetItemsInInventory called");
DupeItemsInInventory(1);
}
public static void DupeItemsInInventory(int count)
{
GameUtils.AddConsoleLog($"DupeItemsInInventory with argument {count} called");
if (collectedItems.Count <= 0)
{
GameUtils.AddConsoleLog("No items in collectedItems");
return;
}
foreach (Item item in collectedItems)
{
item.StackObjectsCount = count;
GameUtils.AddConsoleLog($"Duped {item.Name.Localized()} stack to {count}");
}
}
public static void DupeDollarsEuros()
{
DupeItemsInInventory(50000);
}
public static void DupeRubles()
{
DupeItemsInInventory(400000);
}
public static void SetInventoryFoundInRaid()
{
GameUtils.AddConsoleLog("FoundInRaidInventory called");
if (Main.notReady())
{
GameUtils.AddConsoleLog("You are not in raid.");
return;
}
if (Main.LocalPlayer.Profile == null)
{
GameUtils.AddConsoleLog("The current raid is in the state of loading.");
return;
}
if (Main.LocalPlayer.Profile.Inventory == null)
{
GameUtils.AddConsoleLog("Your Inventory class currently has no instance.");
return;
}
IEnumerable<Item> items = Main.LocalPlayer.Profile.Inventory.GetPlayerItems(EPlayerItems.All);
if (items == null || items.Count() == 0)
{
GameUtils.AddConsoleLog("Your inventory is either empty or not loaded.");
return;
}
GameUtils.AddConsoleLog($"Found {items.Count()} items in inventory");
foreach (Item item in items)
{
if (!GameUtils.IsInventoryItemValid(item))
continue;
item.SpawnedInSession = true;
GameUtils.AddConsoleLog($"Set {item.Name.Localized()} to SpawnedInSession");
}
}
public static void SetSearchQuery(string searchQuery)
{
_searchQuery = searchQuery;
if (Time.time > _logTime && Settings.debug)
{
GameUtils.AddConsoleLog($"Search query set to: {searchQuery}");
_logTime = Time.time + 1f;
}
}
public static void UpdateValues(string id, string width, string height)
{
_id = id;
_width = width;
_height = height;
if (Time.time > _logTime && Settings.debug)
{
GameUtils.AddConsoleLog($"New values set: {id}, {width}, {height}");
_logTime = Time.time + 1f;
}
}
}
}

View file

@ -0,0 +1,239 @@
using EFT.Interactive;
using UnityEngine.UI;
using UnityEngine;
namespace EscapeFromTarkovCheat.Features
{
public enum Skill {
STRENGTH,
STRESSRESISTANCE,
MAGDRILLS,
MELEE,
HIDEOUTMANAGEMENT,
CRAFTING,
HEAVYVESTS,
LIGHTVESTS,
LMG,
ASSAULT,
PISTOL,
PERCEPTION,
SNIPER,
SNIPING,
ENDURANCE,
THROWING,
CHARISMA,
HEALTH,
VITALITY,
METABOLISM,
IMMUNITY,
SURGERY,
INTELLECT,
ATTENTION,
REVOLVER,
SHOTGUN,
HMG,
DMR,
AIMDRILLS,
SEARCH,
WEAPONTREATMENT,
TROUBLESHOOTING,
COVERTMOVEMENT,
SMG
}
public class Skills
{
public void MaxAll()
{
if (Main.notReady())
return;
Main.LocalPlayer.Skills.Strength.SetLevel(51);
Main.LocalPlayer.Skills.StressResistance.SetLevel(51);
Main.LocalPlayer.Skills.MagDrills.SetLevel(51);
Main.LocalPlayer.Skills.Melee.SetLevel(51);
Main.LocalPlayer.Skills.HideoutManagement.SetLevel(51);
Main.LocalPlayer.Skills.Crafting.SetLevel(51);
Main.LocalPlayer.Skills.HeavyVests.SetLevel(51);
Main.LocalPlayer.Skills.LightVests.SetLevel(51);
Main.LocalPlayer.Skills.LMG.SetLevel(51);
Main.LocalPlayer.Skills.Assault.SetLevel(51);
Main.LocalPlayer.Skills.Pistol.SetLevel(51);
Main.LocalPlayer.Skills.Perception.SetLevel(51);
Main.LocalPlayer.Skills.Sniper.SetLevel(51);
Main.LocalPlayer.Skills.Sniping.SetLevel(51);
Main.LocalPlayer.Skills.Endurance.SetLevel(51);
Main.LocalPlayer.Skills.Throwing.SetLevel(51);
Main.LocalPlayer.Skills.Charisma.SetLevel(51);
Main.LocalPlayer.Skills.Health.SetLevel(51);
Main.LocalPlayer.Skills.Vitality.SetLevel(51);
Main.LocalPlayer.Skills.Metabolism.SetLevel(51);
Main.LocalPlayer.Skills.Immunity.SetLevel(51);
Main.LocalPlayer.Skills.Intellect.SetLevel(51);
Main.LocalPlayer.Skills.Attention.SetLevel(51);
Main.LocalPlayer.Skills.Revolver.SetLevel(51);
Main.LocalPlayer.Skills.Shotgun.SetLevel(51);
Main.LocalPlayer.Skills.HMG.SetLevel(51);
Main.LocalPlayer.Skills.DMR.SetLevel(51);
Main.LocalPlayer.Skills.AimDrills.SetLevel(51);
Main.LocalPlayer.Skills.Search.SetLevel(51);
Main.LocalPlayer.Skills.WeaponTreatment.SetLevel(51);
Main.LocalPlayer.Skills.TroubleShooting.SetLevel(51);
Main.LocalPlayer.Skills.CovertMovement.SetLevel(51);
Main.LocalPlayer.Skills.SMG.SetLevel(51);
Main.LocalPlayer.Skills.Surgery.SetLevel(51);
}
public int Get(Skill skill) {
if (Main.GameWorld == null) return 0;
switch (skill)
{
case Skill.STRENGTH:
return Main.LocalPlayer.Skills.Strength.Level;
case Skill.STRESSRESISTANCE:
return Main.LocalPlayer.Skills.StressResistance.Level;
case Skill.MAGDRILLS:
return Main.LocalPlayer.Skills.MagDrills.Level;
case Skill.MELEE:
return Main.LocalPlayer.Skills.Melee.Level;
case Skill.HIDEOUTMANAGEMENT:
return Main.LocalPlayer.Skills.HideoutManagement.Level;
case Skill.CRAFTING:
return Main.LocalPlayer.Skills.Crafting.Level;
case Skill.HEAVYVESTS:
return Main.LocalPlayer.Skills.HeavyVests.Level;
case Skill.LIGHTVESTS:
return Main.LocalPlayer.Skills.LightVests.Level;
case Skill.LMG:
return Main.LocalPlayer.Skills.LMG.Level;
case Skill.ASSAULT:
return Main.LocalPlayer.Skills.Assault.Level;
case Skill.PISTOL:
return Main.LocalPlayer.Skills.Pistol.Level;
case Skill.PERCEPTION:
return Main.LocalPlayer.Skills.Perception.Level;
case Skill.SNIPER:
return Main.LocalPlayer.Skills.Sniper.Level;
case Skill.SNIPING:
return Main.LocalPlayer.Skills.Sniping.Level;
case Skill.ENDURANCE:
return Main.LocalPlayer.Skills.Endurance.Level;
case Skill.THROWING:
return Main.LocalPlayer.Skills.Throwing.Level;
case Skill.CHARISMA:
return Main.LocalPlayer.Skills.Charisma.Level;
case Skill.HEALTH:
return Main.LocalPlayer.Skills.Health.Level;
case Skill.VITALITY:
return Main.LocalPlayer.Skills.Vitality.Level;
case Skill.METABOLISM:
return Main.LocalPlayer.Skills.Metabolism.Level;
case Skill.IMMUNITY:
return Main.LocalPlayer.Skills.Immunity.Level;
case Skill.COVERTMOVEMENT:
return Main.LocalPlayer.Skills.CovertMovement.Level;
case Skill.INTELLECT:
return Main.LocalPlayer.Skills.Intellect.Level;
case Skill.ATTENTION:
return Main.LocalPlayer.Skills.Attention.Level;
case Skill.REVOLVER:
return Main.LocalPlayer.Skills.Revolver.Level;
case Skill.SHOTGUN:
return Main.LocalPlayer.Skills.Shotgun.Level;
case Skill.HMG:
return Main.LocalPlayer.Skills.HMG.Level;
case Skill.DMR:
return Main.LocalPlayer.Skills.DMR.Level;
case Skill.AIMDRILLS:
return Main.LocalPlayer.Skills.AimDrills.Level;
case Skill.SEARCH:
return Main.LocalPlayer.Skills.Search.Level;
case Skill.WEAPONTREATMENT:
return Main.LocalPlayer.Skills.WeaponTreatment.Level;
case Skill.TROUBLESHOOTING:
return Main.LocalPlayer.Skills.TroubleShooting.Level;
case Skill.SURGERY:
return Main.LocalPlayer.Skills.Surgery.Level;
case Skill.SMG:
return Main.LocalPlayer.Skills.SMG.Level;
default:
return 0;
}
}
public void Commit(Skill skill, int level) {
if (Main.notReady()) return;
switch (skill)
{
case Skill.STRENGTH:
if (Main.LocalPlayer.Skills.Strength.Level != level) Main.LocalPlayer.Skills.Strength.SetLevel(level); break;
case Skill.STRESSRESISTANCE:
if (Main.LocalPlayer.Skills.StressResistance.Level != level) Main.LocalPlayer.Skills.StressResistance.SetLevel(level); break;
case Skill.MAGDRILLS:
if (Main.LocalPlayer.Skills.MagDrills.Level != level) Main.LocalPlayer.Skills.MagDrills.SetLevel(level); break;
case Skill.MELEE:
if (Main.LocalPlayer.Skills.Melee.Level != level) Main.LocalPlayer.Skills.Melee.SetLevel(level); break;
case Skill.HIDEOUTMANAGEMENT:
if (Main.LocalPlayer.Skills.HideoutManagement.Level != level) Main.LocalPlayer.Skills.HideoutManagement.SetLevel(level); break;
case Skill.CRAFTING:
if (Main.LocalPlayer.Skills.Crafting.Level != level) Main.LocalPlayer.Skills.Crafting.SetLevel(level); break;
case Skill.HEAVYVESTS:
if (Main.LocalPlayer.Skills.HeavyVests.Level != level) Main.LocalPlayer.Skills.HeavyVests.SetLevel(level); break;
case Skill.LIGHTVESTS:
if (Main.LocalPlayer.Skills.LightVests.Level != level) Main.LocalPlayer.Skills.LightVests.SetLevel(level); break;
case Skill.LMG:
if (Main.LocalPlayer.Skills.LMG.Level != level) Main.LocalPlayer.Skills.LMG.SetLevel(level); break;
case Skill.ASSAULT:
if (Main.LocalPlayer.Skills.Assault.Level != level) Main.LocalPlayer.Skills.Assault.SetLevel(level); break;
case Skill.PISTOL:
if (Main.LocalPlayer.Skills.Pistol.Level != level) Main.LocalPlayer.Skills.Pistol.SetLevel(level); break;
case Skill.PERCEPTION:
if (Main.LocalPlayer.Skills.Perception.Level != level) Main.LocalPlayer.Skills.Perception.SetLevel(level); break;
case Skill.SNIPER:
if (Main.LocalPlayer.Skills.Sniper.Level != level) Main.LocalPlayer.Skills.Sniper.SetLevel(level); break;
case Skill.SNIPING:
if (Main.LocalPlayer.Skills.Sniping.Level != level) Main.LocalPlayer.Skills.Sniping.SetLevel(level); break;
case Skill.ENDURANCE:
if (Main.LocalPlayer.Skills.Endurance.Level != level) Main.LocalPlayer.Skills.Endurance.SetLevel(level); break;
case Skill.THROWING:
if (Main.LocalPlayer.Skills.Throwing.Level != level) Main.LocalPlayer.Skills.Throwing.SetLevel(level); break;
case Skill.CHARISMA:
if (Main.LocalPlayer.Skills.Charisma.Level != level) Main.LocalPlayer.Skills.Charisma.SetLevel(level); break;
case Skill.HEALTH:
if (Main.LocalPlayer.Skills.Health.Level != level) Main.LocalPlayer.Skills.Health.SetLevel(level); break;
case Skill.VITALITY:
if (Main.LocalPlayer.Skills.Vitality.Level != level) Main.LocalPlayer.Skills.Vitality.SetLevel(level); break;
case Skill.METABOLISM:
if (Main.LocalPlayer.Skills.Metabolism.Level != level) Main.LocalPlayer.Skills.Metabolism.SetLevel(level); break;
case Skill.IMMUNITY:
if (Main.LocalPlayer.Skills.Immunity.Level != level) Main.LocalPlayer.Skills.Immunity.SetLevel(level); break;
case Skill.COVERTMOVEMENT:
if (Main.LocalPlayer.Skills.CovertMovement.Level != level) Main.LocalPlayer.Skills.CovertMovement.SetLevel(level); break;
case Skill.INTELLECT:
if (Main.LocalPlayer.Skills.Intellect.Level != level) Main.LocalPlayer.Skills.Intellect.SetLevel(level); break;
case Skill.ATTENTION:
if (Main.LocalPlayer.Skills.Attention.Level != level) Main.LocalPlayer.Skills.Attention.SetLevel(level); break;
case Skill.REVOLVER:
if (Main.LocalPlayer.Skills.Revolver.Level != level) Main.LocalPlayer.Skills.Revolver.SetLevel(level); break;
case Skill.SHOTGUN:
if (Main.LocalPlayer.Skills.Shotgun.Level != level) Main.LocalPlayer.Skills.Shotgun.SetLevel(level); break;
case Skill.HMG:
if (Main.LocalPlayer.Skills.HMG.Level != level) Main.LocalPlayer.Skills.HMG.SetLevel(level); break;
case Skill.DMR:
if (Main.LocalPlayer.Skills.DMR.Level != level) Main.LocalPlayer.Skills.DMR.SetLevel(level); break;
case Skill.AIMDRILLS:
if (Main.LocalPlayer.Skills.AimDrills.Level != level) Main.LocalPlayer.Skills.AimDrills.SetLevel(level); break;
case Skill.SEARCH:
if (Main.LocalPlayer.Skills.Search.Level != level) Main.LocalPlayer.Skills.Search.SetLevel(level); break;
case Skill.WEAPONTREATMENT:
if (Main.LocalPlayer.Skills.WeaponTreatment.Level != level) Main.LocalPlayer.Skills.WeaponTreatment.SetLevel(level); break;
case Skill.TROUBLESHOOTING:
if (Main.LocalPlayer.Skills.TroubleShooting.Level != level) Main.LocalPlayer.Skills.TroubleShooting.SetLevel(level); break;
case Skill.SURGERY:
if (Main.LocalPlayer.Skills.Surgery.Level != level) Main.LocalPlayer.Skills.Surgery.SetLevel(level); break;
case Skill.SMG:
if (Main.LocalPlayer.Skills.SMG.Level != level) Main.LocalPlayer.Skills.SMG.SetLevel(level); break;
default:
break;
}
}
}
}

View file

@ -0,0 +1,29 @@
using System;
using EscapeFromTarkovCheat.Utils;
using UnityEngine;
namespace EscapeFromTarkovCheat.Features.Misc
{
public class SpeedHack : MonoBehaviour
{
public void Update()
{
if (Main.GameWorld != null && Settings.SpeedHack)
{
this.Enable();
}
}
private void Enable()
{
if (Main.LocalPlayer == null && Main.MainCamera == null)
{
return;
}
if (Input.GetKey(KeyCode.LeftShift))
{
Main.LocalPlayer.Transform.position += Settings.SpeedAddition * Time.deltaTime * Main.MainCamera.transform.forward;
}
}
}
}

View file

@ -0,0 +1,25 @@

using EFT.InventoryLogic;
using EscapeFromTarkovCheat.Feauters.ESP;
using UnityEngine;
namespace EscapeFromTarkovCheat
{
public class Loader
{
public static GameObject HookObject;
public static void Load()
{
HookObject = new GameObject();
HookObject.AddComponent<Main>();
Object.DontDestroyOnLoad(HookObject);
}
public static void Unload()
{
Object.Destroy(HookObject);
}
}
}

View file

@ -0,0 +1,23 @@
using EscapeFromTarkovCheat.Data;
using System.Collections.Generic;
namespace EscapeFromTarkovCheat
{
public static class LocalisationManager
{
static List<LocalisationData> data = new List<LocalisationData>();
public static void Initialize() {
data.Add(new LocalisationData(Locale.ENGLISH));
data.Add(new LocalisationData(Locale.CHINESE));
}
public static string GetString(Locale locale, StringKey key) {
foreach (LocalisationData data in data) {
if (data.locale == locale)
return data.GetByKey(key);
}
return $"INVALID_LANGUAGE_{locale}";
}
}
}

View file

@ -0,0 +1,416 @@
using System;
using System.Collections.Generic;
using Comfort.Common;
using EFT;
using EFT.Interactive;
using EFT.InputSystem;
using EscapeFromTarkovCheat.Data;
using EscapeFromTarkovCheat.Feauters;
using EscapeFromTarkovCheat.Feauters.ESP;
using EscapeFromTarkovCheat.Utils;
using UnityEngine;
using System.Security.Cryptography;
using EscapeFromTarkovCheat.Features.Misc;
using System.Diagnostics;
using EscapeFromTarkovCheat.Features;
using System.Linq;
using System.ComponentModel.Design;
namespace EscapeFromTarkovCheat
{
public class Main : MonoBehaviour
{
public static List<GamePlayer> GamePlayers = new List<GamePlayer>();
public static Player LocalPlayer;
public static GameWorld GameWorld;
public static Camera MainCamera;
public static Skills skills = new Skills();
private float _nextPlayerCacheTime;
private static readonly float _cachePlayersInterval = 4f;
// Stamina BEGIN
private float _aimDrainRate;
private float _aimRangeFinderDrainRate;
private float _sprintDrainRate;
private float _jumpConsumption;
private float _proneConsumption;
private Vector3 _aimConsumptionByPose;
private Vector3 _overweightConsumptionByPose;
private Vector2 _crouchConsumption;
private Vector2 _standupConsumption;
private Vector2 _walkConsumption;
private float _oxygenRestoration;
private float _exhaustedMeleeSpeed;
private float _baseRestorationRate;
private bool _staminaExhaustionCausesJiggle;
private bool _staminaExhaustionRocksCamera;
private bool _staminaExhaustionStartsBreathSound;
private bool _isConfigured = false;
// Stamina END
public void Awake()
{
GameObject hookObject = new GameObject();
// MAIN
hookObject.AddComponent<Menu.UI.Menu>();
// ESP
hookObject.AddComponent<PlayerESP>();
hookObject.AddComponent<ItemESP>();
hookObject.AddComponent<LootableContainerESP>();
hookObject.AddComponent<ExfiltrationPointsESP>();
// AIMBOT
hookObject.AddComponent<Aimbot>();
// MISC
hookObject.AddComponent<SpeedHack>();
DontDestroyOnLoad(hookObject);
LocalisationManager.Initialize();
}
public static bool notReady() {
return Singleton<GameWorld>.Instance == null || // Not in raid
Singleton<GameWorld>.Instance.RegisteredPlayers == null || // Not yet loaded
Camera.main == null; // Counting down
}
public static void KillEverything()
{
var gameWorld = Singleton<GameWorld>.Instance;
if (gameWorld == null) return;
foreach (var player in gameWorld.AllAlivePlayersList.Where(players => !players.IsYourPlayer))
{
player.ActiveHealthController.Kill(EDamageType.Bullet);
}
}
public static void TeleportLoot()
{
var targetPosition = GameUtils.GetTargetPosition();
var lootItems = FindObjectsOfType<LootItem>()
.Where(GameUtils.IsGroundLoot)
.Where(GameUtils.IsInteractableLoot)
.Select(lootItem => new GameLootItem(lootItem))
.ToList();
int itemCount = lootItems.Count;
float radius = 2.0f;
float additionalSpacing = 1f;
for (int i = 0; i < itemCount; i++)
{
var angle = i * Mathf.PI * 2 / itemCount;
var x = Mathf.Cos(angle) * (radius + (i * additionalSpacing / itemCount));
var z = Mathf.Sin(angle) * (radius + (i * additionalSpacing / itemCount));
lootItems[i].LootItem.transform.position = new Vector3(targetPosition.x + x, targetPosition.y, targetPosition.z + z);
}
}
public static void TeleportAllEnemies()
{
if (notReady())
return;
var targetPosition = GameUtils.GetTargetPosition();
foreach (var player in GameWorld.AllAlivePlayersList.Where(x => !x.IsYourPlayer))
{
player.Teleport(targetPosition);
}
}
private void RefreshData()
{
if (Time.time < _nextPlayerCacheTime)
return;
if (notReady())
return;
GameWorld = Singleton<GameWorld>.Instance;
MainCamera = Camera.main;
_nextPlayerCacheTime = (Time.time + _cachePlayersInterval);
}
private void RefreshPlayers()
{
if (notReady())
return;
GamePlayers.Clear();
foreach (Player player in GameWorld.RegisteredPlayers)
{
if (player.IsYourPlayer)
{
LocalPlayer = player;
continue;
}
if (!GameUtils.IsPlayerAlive(player) || (Vector3.Distance(MainCamera.transform.position, player.Transform.position) > Settings.DrawPlayersDistance))
continue;
GamePlayers.Add(new GamePlayer(player));
}
foreach (GamePlayer gamePlayer in GamePlayers)
gamePlayer.RecalculateDynamics();
}
public static void UnlockAllDoors() {
if (notReady())
return;
foreach (var door in FindObjectsOfType<Door>())
{
if (door.DoorState == EDoorState.Open)
continue;
if (Vector3.Distance(door.transform.position, LocalPlayer.Position) > 20f)
continue;
door.DoorState = EDoorState.Shut;
}
}
public static void Heal() {
if (notReady())
return;
if (LocalPlayer.PlayerHealthController == null)
return;
if (LocalPlayer.PlayerHealthController.IsBodyPartBroken(EBodyPart.Head))
LocalPlayer.PlayerHealthController.RestoreBodyPart(EBodyPart.Head, 1);
if (LocalPlayer.PlayerHealthController.IsBodyPartBroken(EBodyPart.LeftArm))
LocalPlayer.PlayerHealthController.RestoreBodyPart(EBodyPart.LeftArm, 1);
if (LocalPlayer.PlayerHealthController.IsBodyPartBroken(EBodyPart.RightArm))
LocalPlayer.PlayerHealthController.RestoreBodyPart(EBodyPart.RightArm, 1);
if (LocalPlayer.PlayerHealthController.IsBodyPartBroken(EBodyPart.LeftLeg))
LocalPlayer.PlayerHealthController.RestoreBodyPart(EBodyPart.LeftLeg, 1);
if (LocalPlayer.PlayerHealthController.IsBodyPartBroken(EBodyPart.RightLeg))
LocalPlayer.PlayerHealthController.RestoreBodyPart(EBodyPart.RightLeg, 1);
if (LocalPlayer.PlayerHealthController.IsBodyPartBroken(EBodyPart.Chest))
LocalPlayer.PlayerHealthController.RestoreBodyPart(EBodyPart.Chest, 1);
if (LocalPlayer.PlayerHealthController.IsBodyPartBroken(EBodyPart.Stomach))
LocalPlayer.PlayerHealthController.RestoreBodyPart(EBodyPart.Stomach, 1);
LocalPlayer.PlayerHealthController.RestoreFullHealth();
LocalPlayer.PlayerHealthController.ChangeHealth(EBodyPart.Head, LocalPlayer.PlayerHealthController.GetBodyPartHealth(EBodyPart.Head).Maximum, default);
LocalPlayer.PlayerHealthController.ChangeHealth(EBodyPart.Stomach, LocalPlayer.PlayerHealthController.GetBodyPartHealth(EBodyPart.Stomach).Maximum, default);
LocalPlayer.PlayerHealthController.ChangeHealth(EBodyPart.Chest, LocalPlayer.PlayerHealthController.GetBodyPartHealth(EBodyPart.Chest).Maximum, default);
LocalPlayer.PlayerHealthController.ChangeHealth(EBodyPart.LeftLeg, LocalPlayer.PlayerHealthController.GetBodyPartHealth(EBodyPart.LeftLeg).Maximum, default);
LocalPlayer.PlayerHealthController.ChangeHealth(EBodyPart.RightLeg, LocalPlayer.PlayerHealthController.GetBodyPartHealth(EBodyPart.RightLeg).Maximum, default);
LocalPlayer.PlayerHealthController.ChangeHealth(EBodyPart.LeftArm, LocalPlayer.PlayerHealthController.GetBodyPartHealth(EBodyPart.LeftArm).Maximum, default);
LocalPlayer.PlayerHealthController.ChangeHealth(EBodyPart.RightArm, LocalPlayer.PlayerHealthController.GetBodyPartHealth(EBodyPart.RightArm).Maximum, default);
LocalPlayer.PlayerHealthController.ChangeHealth(EBodyPart.Head, 9999, default);
LocalPlayer.PlayerHealthController.ChangeHealth(EBodyPart.Stomach, 9999, default);
LocalPlayer.PlayerHealthController.ChangeHealth(EBodyPart.Chest, 9999, default);
LocalPlayer.PlayerHealthController.ChangeHealth(EBodyPart.LeftLeg, 9999, default);
LocalPlayer.PlayerHealthController.ChangeHealth(EBodyPart.RightLeg, 9999, default);
LocalPlayer.PlayerHealthController.ChangeHealth(EBodyPart.LeftArm, 9999, default);
LocalPlayer.PlayerHealthController.ChangeHealth(EBodyPart.RightArm, 9999, default);
}
private void GodMode() {
if (notReady())
return;
if (LocalPlayer.ActiveHealthController == null)
return;
if (LocalPlayer.ActiveHealthController.DamageCoeff != -1f)
{
LocalPlayer.ActiveHealthController.SetDamageCoeff(-1f);
LocalPlayer.ActiveHealthController.RemoveNegativeEffects(EBodyPart.Common);
LocalPlayer.ActiveHealthController.RestoreFullHealth();
LocalPlayer.ActiveHealthController.ChangeEnergy(999f);
LocalPlayer.ActiveHealthController.ChangeHydration(999f);
LocalPlayer.ActiveHealthController.DoPermanentHealthBoost(25f);
LocalPlayer.ActiveHealthController.RemoveMedEffect();
}
if (LocalPlayer.ActiveHealthController.FallSafeHeight != 9999999f)
{
LocalPlayer.ActiveHealthController.FallSafeHeight = 9999999f;
}
}
private void GodMode_OnDisable()
{
if (notReady())
return;
if (LocalPlayer.ActiveHealthController == null)
return;
LocalPlayer.ActiveHealthController.SetDamageCoeff(1f);
LocalPlayer.ActiveHealthController.FallSafeHeight = 1f;
LocalPlayer.ActiveHealthController.ChangeEnergy(100f);
LocalPlayer.ActiveHealthController.ChangeHydration(100f);
LocalPlayer.ActiveHealthController.RemoveMedEffect();
LocalPlayer.ActiveHealthController.DoPermanentHealthBoost(0f);
}
private void Stamina_Configure() {
if (notReady())
return;
if (LocalPlayer.Physical == null)
return;
if (LocalPlayer.Physical.StaminaParameters == null)
return;
var parameters = LocalPlayer.Physical.StaminaParameters;
_aimDrainRate = parameters.AimDrainRate;
_aimRangeFinderDrainRate = parameters.AimRangeFinderDrainRate;
_sprintDrainRate = parameters.SprintDrainRate;
_jumpConsumption = parameters.JumpConsumption;
_proneConsumption = parameters.ProneConsumption;
_aimConsumptionByPose = parameters.AimConsumptionByPose;
_overweightConsumptionByPose = parameters.OverweightConsumptionByPose;
_crouchConsumption = parameters.CrouchConsumption;
_standupConsumption = parameters.StandupConsumption;
_walkConsumption = parameters.WalkConsumption;
_oxygenRestoration = parameters.OxygenRestoration;
_exhaustedMeleeSpeed = parameters.ExhaustedMeleeSpeed;
_baseRestorationRate = parameters.BaseRestorationRate;
_staminaExhaustionCausesJiggle = parameters.StaminaExhaustionCausesJiggle;
_staminaExhaustionRocksCamera = parameters.StaminaExhaustionRocksCamera;
_staminaExhaustionStartsBreathSound = parameters.StaminaExhaustionStartsBreathSound;
_isConfigured = true;
}
private void Stamina() {
if (notReady())
return;
if (LocalPlayer.Physical == null)
return;
if (LocalPlayer.Physical.StaminaParameters == null)
return;
var parameters = LocalPlayer.Physical.StaminaParameters;
if (!_isConfigured)
Stamina_Configure();
LocalPlayer.PlayerHealthController.SetStaminaCoeff(3000000);
parameters.AimDrainRate = 0f;
parameters.AimRangeFinderDrainRate = 0f;
parameters.SprintDrainRate = 0f;
parameters.JumpConsumption = 0f;
parameters.ProneConsumption = 0f;
parameters.AimConsumptionByPose = Vector3.zero;
parameters.OverweightConsumptionByPose = Vector3.zero;
parameters.CrouchConsumption = Vector2.zero;
parameters.StandupConsumption = Vector2.zero;
parameters.WalkConsumption = Vector2.zero;
parameters.OxygenRestoration = 10000f;
parameters.ExhaustedMeleeSpeed = 10000f;
parameters.BaseRestorationRate = parameters.Capacity;
parameters.StaminaExhaustionCausesJiggle = false;
parameters.StaminaExhaustionRocksCamera = false;
parameters.StaminaExhaustionStartsBreathSound = false;
}
private void Stamina_OnDisable() {
if (notReady())
return;
if (LocalPlayer.Physical == null)
return;
if (LocalPlayer.Physical.StaminaParameters == null)
return;
var parameters = LocalPlayer.Physical.StaminaParameters;
parameters.AimDrainRate = _aimDrainRate;
parameters.AimRangeFinderDrainRate = _aimRangeFinderDrainRate;
parameters.SprintDrainRate = _sprintDrainRate;
parameters.JumpConsumption = _jumpConsumption;
parameters.ProneConsumption = _proneConsumption;
parameters.AimConsumptionByPose = _aimConsumptionByPose;
parameters.OverweightConsumptionByPose = _overweightConsumptionByPose;
parameters.CrouchConsumption = _crouchConsumption;
parameters.StandupConsumption = _standupConsumption;
parameters.WalkConsumption = _walkConsumption;
parameters.OxygenRestoration = _oxygenRestoration;
parameters.ExhaustedMeleeSpeed = _exhaustedMeleeSpeed;
parameters.BaseRestorationRate = _baseRestorationRate;
parameters.StaminaExhaustionCausesJiggle = _staminaExhaustionCausesJiggle;
parameters.StaminaExhaustionRocksCamera = _staminaExhaustionRocksCamera;
parameters.StaminaExhaustionStartsBreathSound = _staminaExhaustionStartsBreathSound;
}
public static void IncreaseTraderStanding()
{
if (notReady())
return;
foreach (KeyValuePair<string, Profile.TraderInfo> info in LocalPlayer.Profile.TradersInfo)
{
string traderId = info.Key;
Profile.TraderInfo traderInfo = info.Value;
traderInfo.Init(traderId, LocalPlayer.Profile.Info);
traderInfo.SetStanding(traderInfo.Standing + 0.10000000149011612);
}
}
public static void CallAirdrop(bool takeNearbyPoint = false, Vector3 position = default(Vector3))
{
if (notReady())
return;
GameWorld.InitAirdrop(takeNearbyPoint, position);
}
public void Update()
{
RefreshData();
if (Settings.DrawPlayers)
RefreshPlayers();
if (Input.GetKeyDown(Settings.UnlockDoors))
UnlockAllDoors();
if (Input.GetKeyDown(Settings.InstaHeal))
Heal();
if (Settings.GodMode)
{
Heal();
GodMode();
}
else
GodMode_OnDisable();
if (Settings.Stamina)
Stamina();
else
Stamina_OnDisable();
if (Input.GetKeyDown(Settings.KillSwitch))
KillEverything();
if (Input.GetKeyDown(Settings.TpLoots))
TeleportLoot();
if (Input.GetKeyDown(Settings.IncreaseTraderStandingKey))
IncreaseTraderStanding();
if (Input.GetKeyDown(Settings.CallAirdrop))
CallAirdrop(false, default(Vector3));
if (Input.GetKeyDown(Settings.TpEnemies))
TeleportAllEnemies();
}
}
}

View file

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("EscapeFromTarkovCheat")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("EscapeFromTarkovCheat")]
[assembly: AssemblyCopyright("Copyright © UnknownCheats 2024")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("c1c426a1-efc3-4c83-972c-eca557571328")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0.0")]
[assembly: AssemblyFileVersion("1.2.0.0")]

View file

@ -0,0 +1,305 @@
using System;
using System.Runtime.InteropServices;
using EscapeFromTarkovCheat;
using EscapeFromTarkovCheat.Utils;
using UnityEngine;
using EscapeFromTarkovCheat.Data;
using EscapeFromTarkovCheat.Features;
internal enum MENUS {
MAIN,
PLAYER,
ITEM,
AIMBOT,
MISC,
SKILLS,
ITEMS
}
namespace Menu.UI
{
public class Menu : MonoBehaviour
{
private Rect _mainWindow;
private Rect _playerVisualWindow;
private Rect _miscVisualWindow;
private Rect _aimbotVisualWindow;
private Rect _miscWindow;
private Rect _skillsWindow;
private Rect _itemsWindow;
Vector2 skillsScrollPosition = Vector2.zero;
private bool _visible = true;
private bool _playerEspVisualVisible;
private bool _miscVisualVisible;
private bool _aimbotVisualVisible;
private bool _miscVisible;
private bool _skillsVisible;
private bool _itemsVisible;
private string[] languageNames = { "English", "中文" };
private int selectedIndex = 0;
Vector2 basePoint = new Vector2(20, 60);
private void Start()
{
AllocConsoleHandler.Open();
_mainWindow = new Rect(basePoint.x, basePoint.y, 250f, 300f);
_playerVisualWindow = new Rect(basePoint.x, basePoint.y + _mainWindow.height, 250f, 200f);
_miscVisualWindow = new Rect(basePoint.x, _playerVisualWindow.yMin + _playerVisualWindow.height, 250f, 180f);
_aimbotVisualWindow = new Rect(basePoint.x, _miscVisualWindow.yMin + _miscVisualWindow.height, 250f, 150f);
_miscWindow = new Rect(basePoint.x + _mainWindow.width, basePoint.y, 350f, 360f);
_skillsWindow = new Rect(basePoint.x + _mainWindow.width, basePoint.y + _miscWindow.height, 250f, 550f);
_itemsWindow = new Rect(basePoint.x + _mainWindow.width + _miscWindow.width, basePoint.y, 250f, 150f);
GameUtils.AddConsoleLog("Initialized.");
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Insert))
_visible = !_visible;
if (Input.GetKeyDown(KeyCode.Delete))
Loader.Unload();
}
private void OnGUI()
{
if (!_visible)
return;
_mainWindow = GUILayout.Window((int)MENUS.MAIN, _mainWindow, RenderUi, LocalisationManager.GetString(Settings.Language, StringKey.MAIN_TITLE));
if (_playerEspVisualVisible)
_playerVisualWindow = GUILayout.Window(((int)MENUS.PLAYER), _playerVisualWindow, RenderUi, LocalisationManager.GetString(Settings.Language, StringKey.MENU_PLAYER_VISUAL_TITLE));
if (_miscVisualVisible)
_miscVisualWindow = GUILayout.Window((int)MENUS.ITEM, _miscVisualWindow, RenderUi, LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISC_VISUAL_TITLE));
if (_aimbotVisualVisible)
_aimbotVisualWindow = GUILayout.Window((int)MENUS.AIMBOT, _aimbotVisualWindow, RenderUi, LocalisationManager.GetString(Settings.Language, StringKey.MENU_AIMBOT_TITLE));
if (_miscVisible)
_miscWindow = GUILayout.Window((int)MENUS.MISC, _miscWindow, RenderUi, LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISCELLANEOUS_TITLE));
if (_skillsVisible)
_skillsWindow = GUILayout.Window((int)MENUS.SKILLS, _skillsWindow, RenderUi, LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_TITLE));
if (_itemsVisible)
_itemsWindow = GUILayout.Window((int)MENUS.ITEMS, _itemsWindow, RenderUi, LocalisationManager.GetString(Settings.Language, StringKey.MENU_ITEMS_TITLE));
}
private Locale FromGUI(int selection) {
switch (selection) {
case 0: return Locale.ENGLISH;
case 1: return Locale.CHINESE;
default: return Locale.ENGLISH;
}
}
private void RenderUi(int id)
{
switch (id)
{
case (int)MENUS.MAIN:
selectedIndex = GUILayout.Toolbar(selectedIndex, languageNames);
Settings.Language = FromGUI(selectedIndex);
GUILayout.Label(LocalisationManager.GetString(Settings.Language, StringKey.MENU_MAIN_DESC_TOGGLE));
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_MAIN_BUTTON_PLAYER_VISUAL)))
_playerEspVisualVisible = !_playerEspVisualVisible;
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_MAIN_BUTTON_MISC_VISUAL)))
_miscVisualVisible = !_miscVisualVisible;
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_MAIN_BUTTON_AIMBOT)))
_aimbotVisualVisible = !_aimbotVisualVisible;
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_MAIN_BUTTON_MISCELLANEOUS)))
_miscVisible = !_miscVisible;
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_MAIN_BUTTON_SKILLS)))
_skillsVisible = !_skillsVisible;
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_MAIN_BUTTON_ITEMS)))
_itemsVisible = !_itemsVisible;
if (GUILayout.Button("BAN"))
{
EFT.UI.PreloaderUI.Instance.ShowPveLoadingScreen();
EFT.UI.PreloaderUI.Instance.ShowErrorScreen("ERROR", "229\n\n\n", Application.Quit);
EFT.UI.PreloaderUI.Instance.ShowCriticalErrorScreen("验证错误", "授权发生错误", EFT.UI.ErrorScreen.EButtonType.QuitButton, 30f, Application.Quit, Application.Quit);
}
break;
case (int)MENUS.PLAYER:
Settings.DrawPlayers = GUILayout.Toggle(Settings.DrawPlayers, LocalisationManager.GetString(Settings.Language, StringKey.MENU_PLAYER_VISUAL_DRAWPLAYERS));
Settings.DrawPlayerBox = GUILayout.Toggle(Settings.DrawPlayerBox, LocalisationManager.GetString(Settings.Language, StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_BOX));
Settings.DrawPlayerName = GUILayout.Toggle(Settings.DrawPlayerName, LocalisationManager.GetString(Settings.Language, StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_NAME));
Settings.DrawPlayerLine = GUILayout.Toggle(Settings.DrawPlayerLine, LocalisationManager.GetString(Settings.Language, StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_LINE));
Settings.DrawPlayerHealth = GUILayout.Toggle(Settings.DrawPlayerHealth, LocalisationManager.GetString(Settings.Language, StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_HEALTH));
Settings.DrawPlayerSkeletons = GUILayout.Toggle(Settings.DrawPlayerSkeletons, LocalisationManager.GetString(Settings.Language, StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_SKELETON));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_RANGE)} {(int)Settings.DrawPlayersDistance} m");
Settings.DrawPlayersDistance = GUILayout.HorizontalSlider(Settings.DrawPlayersDistance, 0f, 2000f);
break;
case (int)MENUS.ITEM:
Settings.DrawLootItems = GUILayout.Toggle(Settings.DrawLootItems, LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISC_VISUAL_DRAWLOOTITEMS));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISC_VISUAL_LOOTITEMRANGE)} {(int)Settings.DrawLootItemsDistance} m");
Settings.DrawLootItemsDistance = GUILayout.HorizontalSlider(Settings.DrawLootItemsDistance, 0f, 1000f);
Settings.DrawLootableContainers = GUILayout.Toggle(Settings.DrawLootableContainers, LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISC_VISUAL_DRAWCONTAINERS));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISC_VISUAL_CONTAINERRANGE)} {(int)Settings.DrawLootableContainersDistance} m");
Settings.DrawLootableContainersDistance = GUILayout.HorizontalSlider(Settings.DrawLootableContainersDistance, 0f, 1000f);
Settings.DrawExfiltrationPoints = GUILayout.Toggle(Settings.DrawExfiltrationPoints, LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISC_VISUAL_DRAWEP));
break;
case (int)MENUS.AIMBOT:
Settings.Aimbot = GUILayout.Toggle(Settings.Aimbot, LocalisationManager.GetString(Settings.Language, StringKey.MENU_AIMBOT_TOGGLE));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_AIMBOT_SMOOTH)} {(int)Settings.AimbotSmooth} m");
Settings.AimbotSmooth = GUILayout.HorizontalSlider(Settings.AimbotSmooth, 0f, 100);
Settings.AimbotDrawFOV = GUILayout.Toggle(Settings.AimbotDrawFOV, LocalisationManager.GetString(Settings.Language, StringKey.MENU_AIMBOT_DRAWFOV));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_AIMBOT_FOVRANGE)} {(int)Settings.AimbotFOV} m");
Settings.AimbotFOV = GUILayout.HorizontalSlider(Settings.AimbotFOV, 0f, 180);
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_AIMBOT_AIMINGRANGE)} {(int)Settings.AimbotRange} m");
Settings.AimbotRange = GUILayout.HorizontalSlider(Settings.AimbotRange, 0f, 1000f);
Settings.VisibleOnly = GUILayout.Toggle(Settings.VisibleOnly, LocalisationManager.GetString(Settings.Language, StringKey.MENU_AIMBOT_VISIBLEONLY));
Settings.SilentAim = GUILayout.Toggle(Settings.SilentAim, LocalisationManager.GetString(Settings.Language, StringKey.MENU_AIMBOT_SILENT));
Settings.NoRecoil = GUILayout.Toggle(Settings.NoRecoil, LocalisationManager.GetString(Settings.Language, StringKey.MENU_AIMBOT_NORECOIL));
break;
case (int)MENUS.MISC:
Settings.GodMode = GUILayout.Toggle(Settings.GodMode, LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISCELLANEOUS_GODMODE));
Settings.Stamina = GUILayout.Toggle(Settings.Stamina, LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISCELLANEOUS_STAMINA));
Settings.SpeedHack = GUILayout.Toggle(Settings.SpeedHack, LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISCELLANEOUS_SPEEDHACK));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISCELLANEOUS_SPEEDHACK_ADDITION)} {(int)Settings.SpeedAddition} m/s");
Settings.SpeedAddition = GUILayout.HorizontalSlider(Settings.SpeedAddition, 2.5f, 10f);
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISCELLANEOUS_BUTTON_ADDXP)))
ExperienceManager.AddExperience(Main.LocalPlayer, Settings.ExperienceAmount);
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISCELLANEOUS_XPINRAID)} {((Main.GameWorld != null) ? ExperienceManager.Get(Main.LocalPlayer) : 0)}");
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISCELLANEOUS_XPADDITION)} {Settings.ExperienceAmount}");
Settings.ExperienceAmount = GUILayout.HorizontalSlider(Settings.ExperienceAmount, 5000f, 100000f);
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISCELLANEOUS_BUTTON_KILL)))
Main.KillEverything();
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISCELLANEOUS_BUTTON_TPENEMIES)))
Main.TeleportAllEnemies();
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISCELLANEOUS_BUTTON_TRADERSTANDING)))
Main.IncreaseTraderStanding();
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISCELLANEOUS_BUTTON_HEAL)))
Main.Heal();
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_MISCELLANEOUS_BUTTON_UNLOCK)))
Main.UnlockAllDoors();
break;
case (int)MENUS.SKILLS:
GUIStyle redlabel = new GUIStyle(GUI.skin.label);
redlabel.normal.textColor = Color.red;
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_BUTTON_MAXALL)))
Main.skills.MaxAll();
if (Main.notReady())
GUILayout.Label(LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_HINT_INRAID), redlabel);
skillsScrollPosition = GUILayout.BeginScrollView(skillsScrollPosition, GUILayout.Width(250), GUILayout.Height(500));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_STRENGTH)} Lv. {Main.skills.Get(Skill.STRENGTH)}");
Main.skills.Commit(Skill.STRENGTH, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.STRENGTH), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_STRESSRESIST)} Lv. {Main.skills.Get(Skill.STRESSRESISTANCE)}");
Main.skills.Commit(Skill.STRESSRESISTANCE, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.STRESSRESISTANCE), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_MAGDRILLS)} Lv. {Main.skills.Get(Skill.MAGDRILLS)}");
Main.skills.Commit(Skill.MAGDRILLS, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.MAGDRILLS), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_MELEE)} Lv. {Main.skills.Get(Skill.MELEE)}");
Main.skills.Commit(Skill.MELEE, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.MELEE), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_HIDEOUT)} Lv. {Main.skills.Get(Skill.HIDEOUTMANAGEMENT)}");
Main.skills.Commit(Skill.HIDEOUTMANAGEMENT, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.HIDEOUTMANAGEMENT), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_CRAFTING)} Lv. {Main.skills.Get(Skill.CRAFTING)}");
Main.skills.Commit(Skill.CRAFTING, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.CRAFTING), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_HEAVYVESTS)} Lv. {Main.skills.Get(Skill.HEAVYVESTS)}");
Main.skills.Commit(Skill.HEAVYVESTS, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.HEAVYVESTS), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_LIGHTVESTS)} Lv. {Main.skills.Get(Skill.LIGHTVESTS)}");
Main.skills.Commit(Skill.LIGHTVESTS, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.LIGHTVESTS), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_LMG)} Lv. {Main.skills.Get(Skill.LMG)}");
Main.skills.Commit(Skill.LMG, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.LMG), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_ASSAULT)} Lv. {Main.skills.Get(Skill.ASSAULT)}");
Main.skills.Commit(Skill.ASSAULT, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.ASSAULT), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_PISTOL)} Lv. {Main.skills.Get(Skill.PISTOL)}");
Main.skills.Commit(Skill.PISTOL, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.PISTOL), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_PERCEPTION)} Lv. {Main.skills.Get(Skill.PERCEPTION)}");
Main.skills.Commit(Skill.PERCEPTION, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.PERCEPTION), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_SNIPER)} Lv. {Main.skills.Get(Skill.SNIPER)}");
Main.skills.Commit(Skill.SNIPER, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.SNIPER), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_SNIPING)} Lv. {Main.skills.Get(Skill.SNIPING)}");
Main.skills.Commit(Skill.SNIPING, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.SNIPING), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_ENDURANCE)} Lv. {Main.skills.Get(Skill.ENDURANCE)}");
Main.skills.Commit(Skill.ENDURANCE, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.ENDURANCE), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_THROWING)} Lv. {Main.skills.Get(Skill.THROWING)}");
Main.skills.Commit(Skill.THROWING, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.THROWING), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_CHARISMA)} Lv. {Main.skills.Get(Skill.CHARISMA)}");
Main.skills.Commit(Skill.CHARISMA, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.CHARISMA), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_HEALTH)} Lv. {Main.skills.Get(Skill.HEALTH)}");
Main.skills.Commit(Skill.HEALTH, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.HEALTH), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_VITALITY)} Lv. {Main.skills.Get(Skill.VITALITY)}");
Main.skills.Commit(Skill.VITALITY, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.VITALITY), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_METABOLISM)} Lv. {Main.skills.Get(Skill.METABOLISM)}");
Main.skills.Commit(Skill.METABOLISM, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.METABOLISM), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_IMMUNITY)} Lv. {Main.skills.Get(Skill.IMMUNITY)}");
Main.skills.Commit(Skill.IMMUNITY, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.IMMUNITY), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_SURGERY)} Lv. {Main.skills.Get(Skill.SURGERY)}");
Main.skills.Commit(Skill.SURGERY, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.SURGERY), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_INTELLECT)} Lv. {Main.skills.Get(Skill.INTELLECT)}");
Main.skills.Commit(Skill.INTELLECT, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.INTELLECT), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_ATTENTION)} Lv. {Main.skills.Get(Skill.ATTENTION)}");
Main.skills.Commit(Skill.ATTENTION, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.ATTENTION), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_REVOLVER)} Lv. {Main.skills.Get(Skill.REVOLVER)}");
Main.skills.Commit(Skill.REVOLVER, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.REVOLVER), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_SHOTGUN)} Lv. {Main.skills.Get(Skill.SHOTGUN)}");
Main.skills.Commit(Skill.SHOTGUN, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.SHOTGUN), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_HMG)} Lv. {Main.skills.Get(Skill.HMG)}");
Main.skills.Commit(Skill.HMG, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.HMG), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_DMR)} Lv. {Main.skills.Get(Skill.DMR)}");
Main.skills.Commit(Skill.DMR, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.DMR), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_AIMDRILLS)} Lv. {Main.skills.Get(Skill.AIMDRILLS)}");
Main.skills.Commit(Skill.AIMDRILLS, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.AIMDRILLS), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_SEARCH)} Lv. {Main.skills.Get(Skill.SEARCH)}");
Main.skills.Commit(Skill.SEARCH, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.SEARCH), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_WEAPONTREATMENT)} Lv. {Main.skills.Get(Skill.WEAPONTREATMENT)}");
Main.skills.Commit(Skill.WEAPONTREATMENT, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.WEAPONTREATMENT), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_TROUBLESHOOTING)} Lv. {Main.skills.Get(Skill.TROUBLESHOOTING)}");
Main.skills.Commit(Skill.TROUBLESHOOTING, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.TROUBLESHOOTING), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_COVERTMOVEMENT)} Lv. {Main.skills.Get(Skill.COVERTMOVEMENT)}");
Main.skills.Commit(Skill.COVERTMOVEMENT, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.COVERTMOVEMENT), 0f, 51f));
GUILayout.Label($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_SKILLS_SMG)} Lv. {Main.skills.Get(Skill.SMG)}");
Main.skills.Commit(Skill.SMG, (int)GUILayout.HorizontalSlider(Main.skills.Get(Skill.SMG), 0f, 51f));
GUILayout.EndScrollView();
break;
case (int)MENUS.ITEMS:
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_ITEMS_BUTTON_TPLOOTS)))
Main.TeleportLoot();
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_ITEMS_BUTTON_AIRDROP)))
Main.CallAirdrop(false, default(Vector3));
GUILayout.Label($"--- {LocalisationManager.GetString(Settings.Language, StringKey.MENU_ITEMS_INVEDITOR_TITLE)} ---");
GUILayout.Label(LocalisationManager.GetString(Settings.Language, StringKey.MENU_ITEMS_INVEDITOR_SEARCH));
ItemFeatures.SetSearchQuery(GUILayout.TextField(ItemFeatures.GetSearchQuery()));
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_ITEMS_INVEDITOR_GET)))
ItemFeatures.GetItemsInInventory();
GUILayout.Label(LocalisationManager.GetString(Settings.Language, StringKey.MENU_ITEMS_INVEDITOR_STRINGS));
GUILayout.TextArea(ItemFeatures.ItemStringText, new GUILayoutOption[]{GUILayout.Height(100f)});
GUILayout.Label(LocalisationManager.GetString(Settings.Language, StringKey.MENU_ITEMS_INVEDITOR_CHANGES));
ItemFeatures.UpdateValues(
GUILayout.TextField(ItemFeatures.Id),
GUILayout.TextField(ItemFeatures.Width),
GUILayout.TextField(ItemFeatures.Height)
);
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_ITEMS_INVEDITOR_BUTTON_COMMIT)))
ItemFeatures.Commit();
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_ITEMS_INVEDITOR_BUTTON_SETFIR)))
ItemFeatures.SetInventoryFoundInRaid();
GUILayout.Label($"--- {LocalisationManager.GetString(Settings.Language, StringKey.MENU_ITEMS_INVEDITOR_DUPE_TITLE)} ---");
if (GUILayout.Button($"{LocalisationManager.GetString(Settings.Language, StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_SETSTACK)}{(int)Settings.dupeStackCount}"))
ItemFeatures.DupeItemsInInventory((int)Settings.dupeStackCount);
Settings.dupeStackCount = GUILayout.HorizontalSlider(Settings.dupeStackCount, 1f, 100f);
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_RESETSTACK)))
ItemFeatures.ResetItemsInInventory();
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_SETSTACK_FASTRUBLE)))
ItemFeatures.DupeRubles();
if (GUILayout.Button(LocalisationManager.GetString(Settings.Language, StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_SETSTACK_FASTEUROUSD)))
ItemFeatures.DupeDollarsEuros();
break;
}
GUI.DragWindow();
}
}
}

View file

@ -0,0 +1,30 @@
using System;
using System.IO;
using System.Runtime.InteropServices;
using UnityEngine;
//Credits myshmeh
namespace EscapeFromTarkovCheat.Utils
{
public static class AllocConsoleHandler
{
[DllImport("Kernel32.dll")]
private static extern bool AllocConsole();
[DllImport("msvcrt.dll")]
public static extern int system(string cmd);
public static void Open()
{
AllocConsole();
Console.SetOut(new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = true });
Application.logMessageReceivedThreaded += (condition, stackTrace, type) => Console.WriteLine(condition + " " + stackTrace);
}
public static void ClearAllocConsole()
{
system("CLS");
}
}
}

View file

@ -0,0 +1,165 @@
using EscapeFromTarkovCheat.Utils;
using System;
using System.Linq;
using UnityEngine;
namespace EscapeFromTarkovCheat.Utils
{
public enum BoneType
{
Empty = 0,
IKController,
Mesh,
Vest_0,
Vest_1,
backpack,
backpack_0,
backpack_1,
backpack_2,
razgruz,
razgruz_0,
razgruz_1,
razgruz_2,
Root_Joint,
HumanPelvis,
HumanLThigh1,
HumanLThigh2,
HumanLCalf,
HumanLFoot,
HumanLToe,
HumanRThigh1,
HumanRThigh2,
HumanRCalf,
HumanRFoot,
HumanRToe,
Bear_Feet,
USEC_Feet,
BEAR_feet_1,
weapon_holster_pistol,
HumanSpine1,
HumanGear1,
HumanGear2,
HumanGear3,
HumanGear4,
HumanGear4_1,
HumanGear5,
HumanSpine2,
HumanSpine3,
IK_S_LForearm1,
IK_S_LForearm2,
IK_S_LForearm3,
IK_S_LPalm,
IK_S_LDigit11,
IK_S_LDigit12,
IK_S_LDigit13,
IK_S_LDigit21,
IK_S_LDigit22,
IK_S_LDigit23,
IK_S_LDigit31,
IK_S_LDigit32,
IK_S_LDigit33,
IK_S_LDigit41,
IK_S_LDigit42,
IK_S_LDigit43,
IK_S_LDigit51,
IK_S_LDigit52,
IK_S_LDigit53,
XYZ,
LCollarbone_anim,
RCollarbone_anim,
RCollarbone_anim_XYZ,
Weapon_root_3rd_anim,
Weapon_root_3rd_anim_XYZ_1,
Bend_Goal_Left,
Bend_Goal_Right,
Bend_Goal_Right_XYZ_1,
HumanRibcage,
IK_LForearm1,
IK_LForearm2,
IK_LForearm3,
IK_LPalm,
IK_LDigit11,
IK_LDigit12,
IK_LDigit13,
IK_LDigit21,
IK_LDigit22,
IK_LDigit23,
IK_LDigit31,
IK_LDigit32,
IK_LDigit33,
IK_LDigit41,
IK_LDigit42,
IK_LDigit43,
IK_LDigit51,
IK_LDigit52,
IK_LDigit53,
Camera_animated,
CameraContainer,
Cam,
HumanLCollarbone,
HumanLUpperarm,
HumanLForearm1,
HumanLForearm2,
HumanLForearm3,
HumanLPalm,
HumanLDigit11,
HumanLDigit12,
HumanLDigit13,
HumanLDigit21,
HumanLDigit22,
HumanLDigit23,
HumanLDigit31,
HumanLDigit32,
HumanLDigit33,
HumanLDigit41,
HumanLDigit42,
HumanLDigit43,
HumanLDigit51,
HumanLDigit52,
HumanLDigit53,
HumanRCollarbone,
HumanRUpperarm,
HumanRForearm1,
HumanRForearm2,
HumanRForearm3,
HumanRPalm,
HumanRDigit11,
HumanRDigit12,
HumanRDigit13,
HumanRDigit21,
HumanRDigit22,
HumanRDigit23,
HumanRDigit31,
HumanRDigit32,
HumanRDigit33,
HumanRDigit41,
HumanRDigit42,
HumanRDigit43,
HumanRDigit51,
HumanRDigit52,
HumanRDigit53,
Weapon_root,
HumanNeck,
HumanHead,
HumanBackpack,
weapon_holster,
weapon_holster1,
Camera_animated_3rd
}
public static class BonesType
{
public static Vector3 GetBonePosition(BoneType boneType)
{
var player = Main.LocalPlayer;
if (player == null || player.PlayerBody == null || player.PlayerBody.SkeletonRootJoint == null)
return Vector3.zero;
var bone = player.PlayerBody.SkeletonRootJoint.Bones.ElementAtOrDefault((int)boneType).Value;
if (bone == null)
return Vector3.zero;
return GameUtils.WorldPointToScreenPoint(bone.position);
}
}
}

View file

@ -0,0 +1,161 @@
using System;
using System.Linq;
using Diz.Skinning;
using EFT;
using EFT.Interactive;
using EFT.InventoryLogic;
using EFT.UI;
using UnityEngine;
namespace EscapeFromTarkovCheat.Utils
{
public static class GameUtils
{
public static float Map(float value, float sourceFrom, float sourceTo, float destinationFrom, float destinationTo)
{
return (value - sourceFrom) / (sourceTo - sourceFrom) * (destinationTo - destinationFrom) + destinationFrom;
}
public static bool IsPlayerValid(Player player)
{
return player != null && player.Transform != null && player.PlayerBones != null && player.PlayerBones.transform != null;
}
public static bool IsExfiltrationPointValid(ExfiltrationPoint lootItem)
{
return lootItem != null;
}
public static bool IsLootItemValid(LootItem lootItem)
{
return lootItem != null && lootItem.Item != null && lootItem.Item.Template != null;
}
public static bool IsLootableContainerValid(LootableContainer lootableContainer)
{
return lootableContainer != null && lootableContainer.Template != null;
}
public static bool IsPlayerAlive(Player player)
{
if (!IsPlayerValid(player))
return false;
if (player.HealthController == null)
return false;
return player.HealthController.IsAlive;
}
public static bool IsPlayerVisible(Player player)
{
if (player == null || Camera.main == null)
return false;
// 可视检查部位
BifacialTransform[] pointsToCheck = {
player.PlayerBones.Head,
player.PlayerBones.Spine3,
player.PlayerBones.Pelvis
};
foreach (BifacialTransform point in pointsToCheck)
{
if (point == null)
continue;
// 射线方向
Vector3 direction = point.position - Camera.main.transform.position;
// 射线检测
if (!Physics.Raycast(Camera.main.transform.position, direction, out RaycastHit hit, direction.magnitude))
{
continue;
}
// 射线命中
if (hit.collider.gameObject == player.gameObject)
{
return true;
}
}
return false;
}
public static Vector3 WorldPointToScreenPoint(Vector3 worldPoint)
{
Vector3 screenPoint = Main.MainCamera.WorldToScreenPoint(worldPoint);
screenPoint.y = Screen.height - screenPoint.y;
return screenPoint;
}
public static bool IsScreenPointVisible(Vector3 screenPoint)
{
return screenPoint.z > 0.01f && screenPoint.x > -5f && screenPoint.y > -5f && screenPoint.x < Screen.width && screenPoint.y < Screen.height;
}
public static Vector3 GetBonePosByID(Player player, int id)
{
Vector3 result;
try
{
result = SkeletonBonePos(player.PlayerBones.AnimatedTransform.Original.gameObject.GetComponent<PlayerBody>().SkeletonRootJoint, id);
}
catch (Exception)
{
result = Vector3.zero;
}
return result;
}
public static Vector3 GetBonePosByEID(Player player, BoneType eid)
{
Vector3 result;
try
{
result = SkeletonBonePos(player.PlayerBones.AnimatedTransform.Original.gameObject.GetComponent<PlayerBody>().SkeletonRootJoint, (int)eid);
}
catch (Exception)
{
result = Vector3.zero;
}
return result;
}
public static Vector3 SkeletonBonePos(Skeleton skeleton, int id)
{
return skeleton.Bones.ElementAt(id).Value.position;
}
public static void AddConsoleLog(string log)
{
if (PreloaderUI.Instantiated)
ConsoleScreen.Log(log);
}
public static Vector3 GetTargetPosition()
{
var centerPosition = Main.LocalPlayer.Transform.position;
if (Main.LocalPlayer.HandsController is Player.FirearmController firearmController)
{
if (Physics.Raycast(new Ray(firearmController.Fireport.position, firearmController.WeaponDirection), out RaycastHit hit, float.MaxValue))
{
centerPosition = hit.point;
}
}
return centerPosition;
}
public static bool IsGroundLoot(LootItem lootItem)
{
return lootItem.GetComponent<Corpse>() == null;
}
public static bool IsInteractableLoot(LootItem lootItem)
{
var collider = lootItem.GetComponent<Collider>();
return collider != null && collider.enabled;
}
public static bool IsInventoryItemValid(Item item)
{
return item != null && item.Template != null;
}
}
}

View file

@ -0,0 +1,158 @@
/**
* Render class Credit to ZAT from Unknowncheats
* https://www.unknowncheats.me/forum/members/562321.html
*/
using System.Collections.Generic;
using UnityEngine;
namespace EscapeFromTarkovCheat.Utils
{
public static class Render
{
public static Material DrawMaterial = new Material(Shader.Find("Hidden/Internal-Colored"));
public static GUIStyle StringStyle { get; set; } = new GUIStyle(GUI.skin.label);
private class RingArray
{
public Vector2[] Positions { get; private set; }
public RingArray(int numSegments)
{
Positions = new Vector2[numSegments];
var stepSize = 360f / numSegments;
for (int i = 0; i < numSegments; i++)
{
var rad = Mathf.Deg2Rad * stepSize * i;
Positions[i] = new Vector2(Mathf.Sin(rad), Mathf.Cos(rad));
}
}
}
private static Dictionary<int, RingArray> ringDict = new Dictionary<int, RingArray>();
public static Color Color
{
get { return GUI.color; }
set { GUI.color = value; }
}
public static void DrawLine(Vector2 from, Vector2 to, float thickness, Color color)
{
Color = color;
DrawLine(from, to, thickness);
}
public static void DrawLine(Vector2 from, Vector2 to, float thickness)
{
var delta = (to - from).normalized;
var angle = Mathf.Atan2(delta.y, delta.x) * Mathf.Rad2Deg;
GUIUtility.RotateAroundPivot(angle, from);
DrawBox(from, Vector2.right * (from - to).magnitude, thickness, false);
GUIUtility.RotateAroundPivot(-angle, from);
}
public static void DrawBox(float x, float y, float w, float h, Color color)
{
DrawLine(new Vector2(x, y), new Vector2(x + w, y), 1f, color);
DrawLine(new Vector2(x, y), new Vector2(x, y + h), 1f,color);
DrawLine(new Vector2(x + w, y), new Vector2(x + w, y + h), 1f, color);
DrawLine(new Vector2(x, y + h), new Vector2(x + w, y + h), 1f, color);
}
public static void DrawBox(Vector2 position, Vector2 size, float thickness, Color color, bool centered = true)
{
Color = color;
DrawBox(position, size, thickness, centered);
}
public static void DrawBox(Vector2 position, Vector2 size, float thickness, bool centered = true)
{
var upperLeft = centered ? position - size / 2f : position;
GUI.DrawTexture(new Rect(position.x, position.y, size.x, thickness), Texture2D.whiteTexture);
GUI.DrawTexture(new Rect(position.x, position.y, thickness, size.y), Texture2D.whiteTexture);
GUI.DrawTexture(new Rect(position.x + size.x, position.y, thickness, size.y), Texture2D.whiteTexture);
GUI.DrawTexture(new Rect(position.x, position.y + size.y, size.x + thickness, thickness), Texture2D.whiteTexture);
}
public static void DrawCross(Vector2 position, Vector2 size, float thickness, Color color)
{
Color = color;
DrawCross(position, size, thickness);
}
public static void DrawCross(Vector2 position, Vector2 size, float thickness)
{
GUI.DrawTexture(new Rect(position.x - size.x / 2f, position.y, size.x, thickness), Texture2D.whiteTexture);
GUI.DrawTexture(new Rect(position.x, position.y - size.y / 2f, thickness, size.y), Texture2D.whiteTexture);
}
public static void DrawDot(Vector2 position, Color color)
{
Color = color;
DrawDot(position);
}
public static void DrawDot(Vector2 position)
{
DrawBox(position - Vector2.one, Vector2.one * 2f, 1f);
}
public static void DrawString(Vector2 position, string label, Color color, bool centered = true)
{
Color = color;
DrawString(position, label, centered);
}
public static void DrawString(Vector2 position, string label, bool centered = true)
{
var content = new GUIContent(label);
var size = StringStyle.CalcSize(content);
var upperLeft = centered ? position - size / 2f : position;
GUI.Label(new Rect(upperLeft, size), content);
}
public static void DrawCircle(Vector2 position, float radius, int numSides, bool centered = true, float thickness = 1f)
{
DrawCircle(position, radius, numSides, Color.white, centered, thickness);
}
public static void DrawCircle(Vector2 position, float radius, int numSides, Color color, bool centered = true, float thickness = 1f)
{
RingArray arr;
if (ringDict.ContainsKey(numSides))
arr = ringDict[numSides];
else
arr = ringDict[numSides] = new RingArray(numSides);
var center = centered ? position : position + Vector2.one * radius;
for (int i = 0; i < numSides - 1; i++)
DrawLine(center + arr.Positions[i] * radius, center + arr.Positions[i + 1] * radius, thickness, color);
DrawLine(center + arr.Positions[0] * radius, center + arr.Positions[arr.Positions.Length - 1] * radius, thickness, color);
}
public static void DrawSnapline(Vector3 worldpos, Color color)
{
Vector3 pos = Main.MainCamera.WorldToScreenPoint(worldpos);
pos.y = Screen.height - pos.y;
GL.PushMatrix();
GL.Begin(1);
DrawMaterial.SetPass(0);
GL.Color(color);
GL.Vertex3(Screen.width / 2, Screen.height, 0f);
GL.Vertex3(pos.x, pos.y, 0f);
GL.End();
GL.PopMatrix();
}
public static void DrawBoneLine(Vector2 from, Vector2 to, float thickness, Color color)
{
Color = color;
DrawBoneLine(from, to, thickness);
}
public static void DrawBoneLine(Vector2 from, Vector2 to, float thickness)
{
var delta = (to - from).normalized;
var angle = Mathf.Atan2(delta.y, delta.x) * Mathf.Rad2Deg;
GUIUtility.RotateAroundPivot(angle, from);
DrawBox(from, Vector2.right * (from - to).magnitude, thickness, false);
GUIUtility.RotateAroundPivot(-angle, from);
}
}
}

View file

@ -0,0 +1,68 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using EFT.Visual;
using EscapeFromTarkovCheat.Data;
using EscapeFromTarkovCheat.Feauters;
using UnityEngine;
namespace EscapeFromTarkovCheat.Utils
{
class Settings
{
// Locales
internal static Locale Language = Locale.ENGLISH;
// ESP
// Players
internal static bool DrawPlayers = true;
internal static bool DrawPlayerName = true;
internal static bool DrawPlayerHealth = false;
internal static bool DrawPlayerBox = true;
internal static bool DrawPlayerLine = true;
internal static bool DrawPlayerSkeletons = true;
internal static float DrawPlayersDistance = 200f;
// Loot
internal static bool DrawLootItems = false;
internal static float DrawLootItemsDistance = 300f;
internal static bool DrawLootableContainers = false;
internal static float DrawLootableContainersDistance = 10f;
internal static bool DrawExfiltrationPoints = true;
// Aimbot
internal static bool Aimbot = true;
internal static bool VisibleOnly = false;
internal static bool SilentAim = false;
internal static float AimbotSmooth = 50f;
internal static bool AimbotDrawFOV = true;
internal static float AimbotFOV = 10f;
internal static float AimbotRange = 200f;
internal static bool NoRecoil = true;
// Miscellaneous
internal static bool GodMode = true;
internal static bool Stamina = true;
internal static bool SpeedHack = false;
internal static float SpeedAddition = 2.5f;
internal static float ExperienceAmount = 10000f;
// Items
internal static float dupeStackCount = 2;
// Key Bindings
internal static KeyCode InstaHeal = KeyCode.Keypad1;
internal static KeyCode KillSwitch = KeyCode.Keypad2;
internal static KeyCode TpLoots = KeyCode.Keypad3;
internal static KeyCode UnlockDoors = KeyCode.Keypad4;
internal static KeyCode IncreaseTraderStandingKey = KeyCode.Keypad5;
internal static KeyCode CallAirdrop = KeyCode.Keypad6;
internal static KeyCode TpEnemies = KeyCode.Keypad7;
internal static KeyCode AimbotKey = KeyCode.Mouse1;
// Switches
internal static bool debug = true;
}
}