the initial commit to the repo.
This commit is contained in:
parent
025c032b8c
commit
1b757591b9
264 changed files with 21882 additions and 0 deletions
41
EscapeFromTarkovCheat.sln
Normal file
41
EscapeFromTarkovCheat.sln
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.14.36414.22 d17.14
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EscapeFromTarkovCheat", "EscapeFromTarkovCheat\EscapeFromTarkovCheat.csproj", "{C1C426A1-EFC3-4C83-972C-ECA557571328}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "stupid.solutions", "stoopid.raw\stupid.solutions.csproj", "{110FDB00-FE8A-FE52-3071-717628A366E4}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{C1C426A1-EFC3-4C83-972C-ECA557571328}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
|
{C1C426A1-EFC3-4C83-972C-ECA557571328}.Debug|Any CPU.Build.0 = Debug|x64
|
||||||
|
{C1C426A1-EFC3-4C83-972C-ECA557571328}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{C1C426A1-EFC3-4C83-972C-ECA557571328}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{C1C426A1-EFC3-4C83-972C-ECA557571328}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{C1C426A1-EFC3-4C83-972C-ECA557571328}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{C1C426A1-EFC3-4C83-972C-ECA557571328}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{C1C426A1-EFC3-4C83-972C-ECA557571328}.Release|x64.Build.0 = Release|x64
|
||||||
|
{110FDB00-FE8A-FE52-3071-717628A366E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{110FDB00-FE8A-FE52-3071-717628A366E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{110FDB00-FE8A-FE52-3071-717628A366E4}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{110FDB00-FE8A-FE52-3071-717628A366E4}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{110FDB00-FE8A-FE52-3071-717628A366E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{110FDB00-FE8A-FE52-3071-717628A366E4}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{110FDB00-FE8A-FE52-3071-717628A366E4}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{110FDB00-FE8A-FE52-3071-717628A366E4}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {CAD679E5-CE6D-4BA5-87D6-7B9A31569F44}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
155
EscapeFromTarkovCheat/Data/GameExfiltrationPoint.cs
Normal file
155
EscapeFromTarkovCheat/Data/GameExfiltrationPoint.cs
Normal 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
45
EscapeFromTarkovCheat/Data/GameLootContainer.cs
Normal file
45
EscapeFromTarkovCheat/Data/GameLootContainer.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
43
EscapeFromTarkovCheat/Data/GameLootItem.cs
Normal file
43
EscapeFromTarkovCheat/Data/GameLootItem.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
75
EscapeFromTarkovCheat/Data/GamePlayer.cs
Normal file
75
EscapeFromTarkovCheat/Data/GamePlayer.cs
Normal 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);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
8
EscapeFromTarkovCheat/Data/Locale.cs
Normal file
8
EscapeFromTarkovCheat/Data/Locale.cs
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
namespace EscapeFromTarkovCheat.Data
|
||||||
|
{
|
||||||
|
public enum Locale
|
||||||
|
{
|
||||||
|
ENGLISH,
|
||||||
|
CHINESE
|
||||||
|
}
|
||||||
|
}
|
||||||
266
EscapeFromTarkovCheat/Data/LocalisationData.cs
Normal file
266
EscapeFromTarkovCheat/Data/LocalisationData.cs
Normal 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}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
125
EscapeFromTarkovCheat/Data/StringKey.cs
Normal file
125
EscapeFromTarkovCheat/Data/StringKey.cs
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
138
EscapeFromTarkovCheat/EscapeFromTarkovCheat.csproj
Normal file
138
EscapeFromTarkovCheat/EscapeFromTarkovCheat.csproj
Normal 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>
|
||||||
121
EscapeFromTarkovCheat/Features/Aimbot.cs
Normal file
121
EscapeFromTarkovCheat/Features/Aimbot.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
100
EscapeFromTarkovCheat/Features/ESP/ExfiltrationPointsESP.cs
Normal file
100
EscapeFromTarkovCheat/Features/ESP/ExfiltrationPointsESP.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
81
EscapeFromTarkovCheat/Features/ESP/ItemESP.cs
Normal file
81
EscapeFromTarkovCheat/Features/ESP/ItemESP.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
70
EscapeFromTarkovCheat/Features/ESP/LootableContainerESP.cs
Normal file
70
EscapeFromTarkovCheat/Features/ESP/LootableContainerESP.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
191
EscapeFromTarkovCheat/Features/ESP/PlayerESP.cs
Normal file
191
EscapeFromTarkovCheat/Features/ESP/PlayerESP.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
82
EscapeFromTarkovCheat/Features/ESP/PlayerSkeletons.cs
Normal file
82
EscapeFromTarkovCheat/Features/ESP/PlayerSkeletons.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
41
EscapeFromTarkovCheat/Features/ExperienceManager.cs
Normal file
41
EscapeFromTarkovCheat/Features/ExperienceManager.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
226
EscapeFromTarkovCheat/Features/ItemFeatures.cs
Normal file
226
EscapeFromTarkovCheat/Features/ItemFeatures.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
239
EscapeFromTarkovCheat/Features/Skills.cs
Normal file
239
EscapeFromTarkovCheat/Features/Skills.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
29
EscapeFromTarkovCheat/Features/SpeedHack.cs
Normal file
29
EscapeFromTarkovCheat/Features/SpeedHack.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
25
EscapeFromTarkovCheat/Loader.cs
Normal file
25
EscapeFromTarkovCheat/Loader.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
23
EscapeFromTarkovCheat/LocalisationManager.cs
Normal file
23
EscapeFromTarkovCheat/LocalisationManager.cs
Normal 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}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
416
EscapeFromTarkovCheat/Main.cs
Normal file
416
EscapeFromTarkovCheat/Main.cs
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
36
EscapeFromTarkovCheat/Properties/AssemblyInfo.cs
Normal file
36
EscapeFromTarkovCheat/Properties/AssemblyInfo.cs
Normal 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")]
|
||||||
305
EscapeFromTarkovCheat/UI/Menu.cs
Normal file
305
EscapeFromTarkovCheat/UI/Menu.cs
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
30
EscapeFromTarkovCheat/Utils/AllocConsoleHandler.cs
Normal file
30
EscapeFromTarkovCheat/Utils/AllocConsoleHandler.cs
Normal 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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
165
EscapeFromTarkovCheat/Utils/BoneType.cs
Normal file
165
EscapeFromTarkovCheat/Utils/BoneType.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
161
EscapeFromTarkovCheat/Utils/GameUtils.cs
Normal file
161
EscapeFromTarkovCheat/Utils/GameUtils.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
158
EscapeFromTarkovCheat/Utils/Render.cs
Normal file
158
EscapeFromTarkovCheat/Utils/Render.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
68
EscapeFromTarkovCheat/Utils/Settings.cs
Normal file
68
EscapeFromTarkovCheat/Utils/Settings.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
Managed/Accessibility.dll
Normal file
BIN
Managed/Accessibility.dll
Normal file
Binary file not shown.
BIN
Managed/AmplifyMotion.dll
Normal file
BIN
Managed/AmplifyMotion.dll
Normal file
Binary file not shown.
BIN
Managed/AnimationSystem.Recording.dll
Normal file
BIN
Managed/AnimationSystem.Recording.dll
Normal file
Binary file not shown.
BIN
Managed/AnimationSystem.Types.dll
Normal file
BIN
Managed/AnimationSystem.Types.dll
Normal file
Binary file not shown.
BIN
Managed/Assembly-CSharp-firstpass.dll
Normal file
BIN
Managed/Assembly-CSharp-firstpass.dll
Normal file
Binary file not shown.
BIN
Managed/Assembly-CSharp.dll
Normal file
BIN
Managed/Assembly-CSharp.dll
Normal file
Binary file not shown.
BIN
Managed/Autodesk.Fbx.dll
Normal file
BIN
Managed/Autodesk.Fbx.dll
Normal file
Binary file not shown.
BIN
Managed/BSG.Unity.Wires.dll
Normal file
BIN
Managed/BSG.Unity.Wires.dll
Normal file
Binary file not shown.
BIN
Managed/Cinemachine.dll
Normal file
BIN
Managed/Cinemachine.dll
Normal file
Binary file not shown.
BIN
Managed/Coffee.SoftMaskForUGUI.dll
Normal file
BIN
Managed/Coffee.SoftMaskForUGUI.dll
Normal file
Binary file not shown.
BIN
Managed/Comfort.Unity.dll
Normal file
BIN
Managed/Comfort.Unity.dll
Normal file
Binary file not shown.
BIN
Managed/Comfort.dll
Normal file
BIN
Managed/Comfort.dll
Normal file
Binary file not shown.
BIN
Managed/CommonExtensions.dll
Normal file
BIN
Managed/CommonExtensions.dll
Normal file
Binary file not shown.
BIN
Managed/DOTween.Modules.dll
Normal file
BIN
Managed/DOTween.Modules.dll
Normal file
Binary file not shown.
BIN
Managed/DOTween.dll
Normal file
BIN
Managed/DOTween.dll
Normal file
Binary file not shown.
BIN
Managed/DissonanceVoip.dll
Normal file
BIN
Managed/DissonanceVoip.dll
Normal file
Binary file not shown.
BIN
Managed/FbxBuildTestAssets.dll
Normal file
BIN
Managed/FbxBuildTestAssets.dll
Normal file
Binary file not shown.
BIN
Managed/FilesChecker.dll
Normal file
BIN
Managed/FilesChecker.dll
Normal file
Binary file not shown.
BIN
Managed/ItemComponent.Types.dll
Normal file
BIN
Managed/ItemComponent.Types.dll
Normal file
Binary file not shown.
BIN
Managed/ItemTemplate.Types.dll
Normal file
BIN
Managed/ItemTemplate.Types.dll
Normal file
Binary file not shown.
BIN
Managed/JBooth.MicroSplat.Core.dll
Normal file
BIN
Managed/JBooth.MicroSplat.Core.dll
Normal file
Binary file not shown.
BIN
Managed/LibraryLoaderUtility.dll
Normal file
BIN
Managed/LibraryLoaderUtility.dll
Normal file
Binary file not shown.
BIN
Managed/Meta.XR.Audio.dll
Normal file
BIN
Managed/Meta.XR.Audio.dll
Normal file
Binary file not shown.
BIN
Managed/Microsoft.CSharp.dll
Normal file
BIN
Managed/Microsoft.CSharp.dll
Normal file
Binary file not shown.
BIN
Managed/Mono.Data.Sqlite.dll
Normal file
BIN
Managed/Mono.Data.Sqlite.dll
Normal file
Binary file not shown.
BIN
Managed/Mono.Posix.dll
Normal file
BIN
Managed/Mono.Posix.dll
Normal file
Binary file not shown.
BIN
Managed/Mono.Security.dll
Normal file
BIN
Managed/Mono.Security.dll
Normal file
Binary file not shown.
BIN
Managed/Mono.WebBrowser.dll
Normal file
BIN
Managed/Mono.WebBrowser.dll
Normal file
Binary file not shown.
BIN
Managed/NLog.dll
Normal file
BIN
Managed/NLog.dll
Normal file
Binary file not shown.
BIN
Managed/Newtonsoft.Json.UnityConverters.dll
Normal file
BIN
Managed/Newtonsoft.Json.UnityConverters.dll
Normal file
Binary file not shown.
BIN
Managed/Newtonsoft.Json.dll
Normal file
BIN
Managed/Newtonsoft.Json.dll
Normal file
Binary file not shown.
BIN
Managed/Novell.Directory.Ldap.dll
Normal file
BIN
Managed/Novell.Directory.Ldap.dll
Normal file
Binary file not shown.
BIN
Managed/Sirenix.OdinInspector.Attributes.dll
Normal file
BIN
Managed/Sirenix.OdinInspector.Attributes.dll
Normal file
Binary file not shown.
BIN
Managed/Sirenix.Serialization.Config.dll
Normal file
BIN
Managed/Sirenix.Serialization.Config.dll
Normal file
Binary file not shown.
BIN
Managed/Sirenix.Serialization.dll
Normal file
BIN
Managed/Sirenix.Serialization.dll
Normal file
Binary file not shown.
BIN
Managed/Sirenix.Utilities.dll
Normal file
BIN
Managed/Sirenix.Utilities.dll
Normal file
Binary file not shown.
BIN
Managed/System.ComponentModel.Composition.dll
Normal file
BIN
Managed/System.ComponentModel.Composition.dll
Normal file
Binary file not shown.
BIN
Managed/System.ComponentModel.DataAnnotations.dll
Normal file
BIN
Managed/System.ComponentModel.DataAnnotations.dll
Normal file
Binary file not shown.
BIN
Managed/System.Configuration.dll
Normal file
BIN
Managed/System.Configuration.dll
Normal file
Binary file not shown.
BIN
Managed/System.Core.dll
Normal file
BIN
Managed/System.Core.dll
Normal file
Binary file not shown.
BIN
Managed/System.Data.DataSetExtensions.dll
Normal file
BIN
Managed/System.Data.DataSetExtensions.dll
Normal file
Binary file not shown.
BIN
Managed/System.Data.dll
Normal file
BIN
Managed/System.Data.dll
Normal file
Binary file not shown.
BIN
Managed/System.Design.dll
Normal file
BIN
Managed/System.Design.dll
Normal file
Binary file not shown.
BIN
Managed/System.DirectoryServices.dll
Normal file
BIN
Managed/System.DirectoryServices.dll
Normal file
Binary file not shown.
BIN
Managed/System.Drawing.Design.dll
Normal file
BIN
Managed/System.Drawing.Design.dll
Normal file
Binary file not shown.
BIN
Managed/System.Drawing.dll
Normal file
BIN
Managed/System.Drawing.dll
Normal file
Binary file not shown.
BIN
Managed/System.EnterpriseServices.dll
Normal file
BIN
Managed/System.EnterpriseServices.dll
Normal file
Binary file not shown.
BIN
Managed/System.IO.Compression.FileSystem.dll
Normal file
BIN
Managed/System.IO.Compression.FileSystem.dll
Normal file
Binary file not shown.
BIN
Managed/System.IO.Compression.dll
Normal file
BIN
Managed/System.IO.Compression.dll
Normal file
Binary file not shown.
BIN
Managed/System.IO.Hashing.dll
Normal file
BIN
Managed/System.IO.Hashing.dll
Normal file
Binary file not shown.
BIN
Managed/System.Memory.dll
Normal file
BIN
Managed/System.Memory.dll
Normal file
Binary file not shown.
BIN
Managed/System.Net.Http.dll
Normal file
BIN
Managed/System.Net.Http.dll
Normal file
Binary file not shown.
BIN
Managed/System.Numerics.dll
Normal file
BIN
Managed/System.Numerics.dll
Normal file
Binary file not shown.
BIN
Managed/System.Runtime.CompilerServices.Unsafe.dll
Normal file
BIN
Managed/System.Runtime.CompilerServices.Unsafe.dll
Normal file
Binary file not shown.
BIN
Managed/System.Runtime.Serialization.Formatters.Soap.dll
Normal file
BIN
Managed/System.Runtime.Serialization.Formatters.Soap.dll
Normal file
Binary file not shown.
BIN
Managed/System.Runtime.Serialization.dll
Normal file
BIN
Managed/System.Runtime.Serialization.dll
Normal file
Binary file not shown.
BIN
Managed/System.Runtime.dll
Normal file
BIN
Managed/System.Runtime.dll
Normal file
Binary file not shown.
BIN
Managed/System.Security.dll
Normal file
BIN
Managed/System.Security.dll
Normal file
Binary file not shown.
BIN
Managed/System.ServiceModel.Internals.dll
Normal file
BIN
Managed/System.ServiceModel.Internals.dll
Normal file
Binary file not shown.
BIN
Managed/System.Transactions.dll
Normal file
BIN
Managed/System.Transactions.dll
Normal file
Binary file not shown.
BIN
Managed/System.Web.ApplicationServices.dll
Normal file
BIN
Managed/System.Web.ApplicationServices.dll
Normal file
Binary file not shown.
BIN
Managed/System.Web.Services.dll
Normal file
BIN
Managed/System.Web.Services.dll
Normal file
Binary file not shown.
BIN
Managed/System.Web.dll
Normal file
BIN
Managed/System.Web.dll
Normal file
Binary file not shown.
BIN
Managed/System.Windows.Forms.dll
Normal file
BIN
Managed/System.Windows.Forms.dll
Normal file
Binary file not shown.
BIN
Managed/System.Xml.Linq.dll
Normal file
BIN
Managed/System.Xml.Linq.dll
Normal file
Binary file not shown.
BIN
Managed/System.Xml.dll
Normal file
BIN
Managed/System.Xml.dll
Normal file
Binary file not shown.
BIN
Managed/System.dll
Normal file
BIN
Managed/System.dll
Normal file
Binary file not shown.
BIN
Managed/Unity.AI.Navigation.dll
Normal file
BIN
Managed/Unity.AI.Navigation.dll
Normal file
Binary file not shown.
BIN
Managed/Unity.Burst.Unsafe.dll
Normal file
BIN
Managed/Unity.Burst.Unsafe.dll
Normal file
Binary file not shown.
BIN
Managed/Unity.Burst.dll
Normal file
BIN
Managed/Unity.Burst.dll
Normal file
Binary file not shown.
BIN
Managed/Unity.Collections.LowLevel.ILSupport.dll
Normal file
BIN
Managed/Unity.Collections.LowLevel.ILSupport.dll
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue