This project represents a collection of visuals / wall hacks (Tracers, ESP, Boxes, Head Dots, Chams & Crosshair). This script is also undetected because it uses Synapse X's Drawing Library. It has modulized support for NPCs & parts and it offers a very simple and easy to use wrapping and unwrapping system.
This project's source is optimized, organized and simplified to the maximal level to be executive, fast, stable and precise.
This project is in beta testing, feel free to create pull requests (you will get credited), issues or just contact me on any of my linked platforms.
This project has been inspired from AirHub which has an improved version of my old examplery discontinued wall hack script. It has a CS:GO-styled look which looks beautiful for fps games.
This project is used in the new AirHub V2 where you can use and edit the configuration through a GUI (it also includes a really fast Aimbot).
This project has been written and tested with and only with Synapse X however, I will attempt my best to modulize support for every exploit. So far, the required functions for this module to run will be listed below:
Dependencies (required functions & libraries):
-
Libraries:
- Drawing
- Drawing.new (function)
- Drawing.Fonts (table)
- debug
- debug.getupvalue (function)
- Drawing
-
Functions:
- getgenv
- getrawmetatable
- gethiddenproperty
This project also uses Exunys' Config Library as a way of storing user settings, meaning, your script executor must support the dependencies for the module if you want the configuration storing & loading functions in the ESP module to function.
This project is completely free and open sourced. But, that does not mean you own rights to it. Read this document for more information. You can re-use / stitch this script or any system of this project into any of your repositories, as long as you credit the developer Exunys.
14/04/2023
- [v1.0b] First (BETA) release
15/04/2023
18/04/2023
19/04/2023
Restart
interactive method, added new core function for getting the local users's positions and more... 31/08/2023
If you are using Solara, please be aware that Solara uses the Roblox GUI objects as drawing elements instead of Direct2D, meaning you are unsafe.
This also comes with performance detriments that do not match the pre-set standards and expectations as with other previous exploits.
Sadly enough an important parameter to remember is that for this module to execute at all it goes through 2 stages of degrading (removing the optimizations that aren't supported by Solara).
The best version "Original.lua" is of course actually the best in performance results.
To this vulnerability I will answer simply to every person with poor judgement saying that the ESP is laggy / bad / terrible or whatever argument they have coming their way, that it is not my fault rather the Solara development team's.
A solution to this mess is to toggle off the ESP visual for the module to work smoothly.
ExunysDeveloperESP.Properties.ESP = false
The documentation for the interactive functions of this module can be found by clicking here or at the following link:
More detailed information for this project will be documented by time in this README.md document.
First of all, to implement the module in your script's environment you must use the function loadstring
like below:
local ESPLibrary = loadstring(game:HttpGet("https://github.com/raw/Exunys/Exunys-ESP/main/src/ESP.lua"))()
-- ESPLibrary and ExunysDeveloperESP is equivalent
The code above loads the module's environment in your script executor's global environment meaning it will be achivable across every script.
The identificator for the environment is ExunysDeveloperESP
which is a table that has configurable settings and interactive user functions.
The table loaded into the exploit's global environment by the module has a metatable set to it with a __call metamethod, meaning you can call the table which would wrap every player in the game and render a crosshair.
ExunysDeveloperESP()
-- or
loadstring(game:HttpGet("https://github.com/raw/Exunys/Exunys-ESP/main/src/ESP.lua"))()()
This is equivalent to the Load
function (which would be more optimized and faster).
ExunysDeveloperESP.Load()
This module has customizable settings for every drawing property and other miscellaneous properties with unique functions. You can see the configurable settings below.
The script's configurable settings
getgenv().ExunysDeveloperESP = {
DeveloperSettings = {
Path = "Exunys Developer/Exunys ESP/Configuration.cfg",
UnwrapOnCharacterAbsence = false,
UpdateMode = "RenderStepped",
TeamCheckOption = "TeamColor",
RainbowSpeed = 1, -- Bigger = Slower
WidthBoundary = 1.5 -- Smaller Value = Bigger Width
},
Settings = {
Enabled = true,
PartsOnly = false,
TeamCheck = false,
AliveCheck = true,
LoadConfigOnLaunch = true,
EnableTeamColors = false,
TeamColor = Color3.fromRGB(170, 170, 255)
},
Properties = {
ESP = {
Enabled = true,
RainbowColor = false,
RainbowOutlineColor = false,
Offset = 10,
Color = Color3.fromRGB(255, 255, 255),
Transparency = 1,
Size = 14,
Font = DrawingFonts.System, -- UI, System, Plex, Monospace
OutlineColor = Color3.fromRGB(0, 0, 0),
Outline = true,
DisplayDistance = true,
DisplayHealth = false,
DisplayName = false,
DisplayDisplayName = true,
DisplayTool = true
},
Tracer = {
Enabled = true,
RainbowColor = false,
RainbowOutlineColor = false,
Position = 1, -- 1 = Bottom; 2 = Center; 3 = Mouse
Transparency = 1,
Thickness = 1,
Color = Color3.fromRGB(255, 255, 255),
Outline = true,
OutlineColor = Color3.fromRGB(0, 0, 0)
},
HeadDot = {
Enabled = true,
RainbowColor = false,
RainbowOutlineColor = false,
Color = Color3.fromRGB(255, 255, 255),
Transparency = 1,
Thickness = 1,
NumSides = 30,
Filled = false,
OutlineColor = Color3.fromRGB(0, 0, 0),
Outline = true
},
Box = {
Enabled = true,
RainbowColor = false,
RainbowOutlineColor = false,
Color = Color3.fromRGB(255, 255, 255),
Transparency = 1,
Thickness = 1,
Filled = false,
OutlineColor = Color3.fromRGB(0, 0, 0),
Outline = true
},
HealthBar = {
Enabled = true,
RainbowOutlineColor = false,
Offset = 4,
Blue = 100,
Position = 3, -- 1 = Top; 2 = Bottom; 3 = Left; 4 = Right
Thickness = 1,
Transparency = 1,
OutlineColor = Color3.fromRGB(0, 0, 0),
Outline = true
},
Chams = {
Enabled = false, -- Keep disabled, broken, WIP...
RainbowColor = false,
Color = Color3.fromRGB(255, 255, 255),
Transparency = 0.2,
Thickness = 1,
Filled = true
},
Crosshair = {
Enabled = true,
RainbowColor = false,
RainbowOutlineColor = false,
TStyled = false,
Position = 1, -- 1 = Mouse; 2 = Center
Size = 12,
GapSize = 6,
Rotation = 0,
Rotate = false,
RotateClockwise = true,
RotationSpeed = 5,
PulseGap = false,
PulsingStep = 10,
PulsingSpeed = 5,
PulsingBounds = {4, 8}, -- {...}[1] => GapSize Min; {...}[2] => GapSize Max
Color = Color3.fromRGB(0, 255, 0),
Thickness = 1,
Transparency = 1,
OutlineColor = Color3.fromRGB(0, 0, 0),
Outline = true,
CenterDot = {
Enabled = true,
RainbowColor = false,
RainbowOutlineColor = false,
Radius = 2,
Color = Color3.fromRGB(0, 255, 0),
Transparency = 1,
Thickness = 1,
NumSides = 60,
Filled = false,
OutlineColor = Color3.fromRGB(0, 0, 0),
Outline = true
}
}
}
-- The rest is core data for the functionality of the module...
}
Previews
(Crosshair with factory settings)
d4209590921119d9c7f6e263674fc32e.mp4
The settings for the video above:
ExunysDeveloperESP.RenderCrosshair()
ExunysDeveloperESP.DeveloperSettings.RainbowSpeed = 2.5
local CrosshairProperties = ExunysDeveloperESP.Properties.Crosshair
CrosshairProperties.RainbowColor = true
CrosshairProperties.Position = 2
CrosshairProperties.Size = 18
CrosshairProperties.Thickness = 2
CrosshairProperties.Rotate = true
CrosshairProperties.RotateClockwise = false
CrosshairProperties.RotationSpeed = 10
CrosshairProperties.PulseGap = true
CrosshairProperties.PulsingBounds = {0, 24}
CrosshairProperties.CenterDot.Color = Color3.fromHex("#FFFFFF")
Wrapping objects:
<string> Hash | ExunysDeveloperESP:WrapObject(<Instance> Object[, <string> Pseudo Name, <table> Allowed Visuals, <uint> Distance])
Unwrapping objects:
<void> | ExunysDeveloperESP.UnwrapObject(<Instance/string> Object / Hash)
It is more recommended you store & parse hashes (given from the WrapObject function) for unwrapping for more precise results.
For players, the function WrapObject
will only wrap & work on the parsed player object (class type: "Player") if the player has a character achievable by OBJECT.Character
.
Code example
for Index, Value in next, workspace.Landmines:GetChildren() do
local Part = Value:IsA("Model") and gethiddenproperty(Value, "PrimaryPart")
if not Part then
continue
end
local Hash = ExunysDeveloperESP:WrapObject(Part, "Landmine "..Index, {Tracer = false})
task.delay(3, function()
ExunysDeveloperESP.UnwrapObject(Hash)
end)
end
a4ffe0c4a95812a3984f9d6bfa0da89c.mp4
These 2 functions also apply to players & NPCs (anything with a character).
Code example
ExunysDeveloperESP:WrapObject(workspace.Dummys.Dummy, "Dumb Dummy")
-- The object parsed in the first parameter is a model that has an R15 character rig and a humanoid (which is a dependance)