0% found this document useful (0 votes)
3K views45 pages

AimHot v8

The document contains code for an open source aimbot script called AimHot v8, including functions for events, utilities, and settings. It declares variables, connects events, and loads a HUD UI. The main script contains sections for aimbot, visuals, crosshairs, ESP boxes, and tracers, and enables the script on load.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3K views45 pages

AimHot v8

The document contains code for an open source aimbot script called AimHot v8, including functions for events, utilities, and settings. It declares variables, connects events, and loads a HUD UI. The main script contains sections for aimbot, visuals, crosshairs, ESP boxes, and tracers, and enables the script on load.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

--[[

AimHot v8, Herrtt#3868

I decided to make it open source for all the new scripters out there
(including me), don't ripoff or claim this as your own.
When I get time I will comment a lot of the stuff here.

]]

-- Extremly bad code starts below here

local DEBUG_MODE = false -- warnings, prints and profiles dont change


idiot thanks

-- Ok I declare some variables here for micro optimization. I might


declare again in the blocks because I am lazy to check here
local game, workspace = game, workspace

local cf, v3, v2, udim2 = CFrame, Vector3, Vector2, UDim2


local string, math, table, Color3, tonumber, tostring = string, math,
table, Color3, tonumber, tostring

local cfnew = [Link]


local cf0 = cfnew()

local v3new = [Link]


local v30 = v3new()

local v2new = [Link]


local v20 = v2new()

local setmetatable = setmetatable


local getmetatable = getmetatable

local type, typeof = type, typeof

local Instance = Instance

local drawing = Drawing or drawing

local mousemoverel = mousemoverel or (Input and [Link])

local readfile = readfile


local writefile = writefile
local appendfile = appendfile

local warn, print = DEBUG_MODE and warn or function() end, DEBUG_MODE


and print or function() end

local required = {
mousemoverel, drawing, readfile, writefile, appendfile,
[Link], [Link]
}
for i,v in pairs(required) do
if v == nil then
warn("Your exploit is not supported (may consider purchasing a
better one?)!")
return -- Only pros return in top-level function
end
end

local servs
servs = setmetatable(
{
Get = function(self, serv)
if servs[serv] then return servs[serv] end
local s = game:GetService(serv)
if s then servs[serv] = s end
return s
end;
}, {
__index = function(self, index)
local s = game:GetService(index)
if s then servs[index] = s end
return s
end;
})

local connections = {}
local function bindEvent(event, callback) -- Let me disconnect in peace
local con = event:Connect(callback)
[Link](connections, con)
return con
end

local players = [Link]


local runservice = [Link]
local http = [Link]
local uis = [Link]

local function jsonEncode(t)


return http:JSONEncode(t)
end
local function jsonDecode(t)
return http:JSONDecode(t)
end

local function existsFile(name)


return pcall(function()
return readfile(name)
end)
end

local function mergetab(a,b)


local c = a
for i,v in pairs(b) do
c[i] = v
end
return c
end
local locpl = [Link]
local mouse = locpl:GetMouse()
local camera = [Link]

local findFirstChild = [Link]


local findFirstChildOfClass = [Link]
local isDescendantOf = [Link]

local mycharacter = [Link]


local myroot = mycharacter and findFirstChild(mycharacter,
"HumanoidRootPart") or mycharacter and [Link]
bindEvent([Link], function(char)
mycharacter = char
wait(.1)
myroot = mycharacter and findFirstChild(mycharacter,
"HumanoidRootPart") or [Link]
end)
bindEvent([Link], function()
mycharacter = nil
myroot = nil
end)

-- Just to check another aimhot instance is running and close it


local uid = tick() .. [Link](1,100000) .. [Link](1,100000)
if shared.ah8 and [Link] and [Link]~=uid then
shared.ah8:close() end

-- Main shitty script should start below here

warn("AH8_MAIN : Running script...")

local event = {}
local utility = {}
local serializer = {}

local settings = {}

local hud = loadstring(game:HttpGet("[Link]


DEBUG_MODE == false and true or DEBUG_MODE == true and false))() -- Ugly
ui do not care

local aimbot = {}

local visuals = {}

local crosshair = {}
local esp = {}
local boxes = {}
local tracers = {}

local run = {}
local ah8 = {enabled = true;}

local visiblekids = {} -- no need to check twice each frame yes? todo :(


-- Some libraries
do
--/ Events : custom event system, bindables = gay

local type = type;


local coroutine = coroutine;
local create = [Link];
local resume = [Link];

local function spawn(f, ...)


resume(create(f), ...)
end

function [Link](t)
local self = t or {}

local n = 0
local connections = {}
function self:connect(func)
if type(func) ~= "function" then return end

n = n + 1
local my = n
connections[n] = func

local connected = true


local function disconnect()
if connected ~= true then return end
connected = false

connections[n] = nil
end

return disconnect
end

local function fire(...)


for i,v in pairs(connections) do
v(...)
end
end

return fire, self


end
end

do
--/ Utility : To make it easier for me to edit

local getPlayers = [Link]


local getPartsObscuringTarget = [Link]
local worldToViewportPoint = [Link]
local worldToScreenPoint = [Link]
local raynew = [Link]
local findPartOnRayWithIgnoreList =
[Link]
local findPartOnRay = [Link]

local function raycast(ray, ignore, callback)


local ignore = ignore or {}

local hit, pos, normal, material =


findPartOnRayWithIgnoreList(workspace, ray, ignore)
while hit and callback do
local Continue, _ignore = callback(hit)
if not Continue then
break
end
if _ignore then
[Link](ignore, _ignore)
else
[Link](ignore, hit)
end
hit, pos, normal, material =
findPartOnRayWithIgnoreList(workspace, ray, ignore)
end
return hit, pos, normal, material
end

local function badraycastnotevensure(pos, ignore) -- 1 ray > 1


obscuringthing | 100 rays < 1 obscuring thing
local hitparts = getPartsObscuringTarget(camera, {pos}, ignore
or {})
return hitparts
end

function [Link](_1, _2)


if _1 == nil then return end
local Char, RoootPart
if _2 ~= nil then
Char, RootPart = _1,_2
else
Char = _1.Character
RootPart = Char and (Char:FindFirstChild("HumanoidRootPart")
or [Link])
end

if Char and RootPart then


local Human = findFirstChildOfClass(Char, "Humanoid")
if RootPart and Human then
if [Link] > 0 then
return true
end
elseif RootPart and isDescendantOf(Char, game) then
return true
end
end

return false
end
local shit = false
function [Link](char, root, max, ...)
local pos = [Link]
if shit or max > 4 then
local parts = badraycastnotevensure(pos, {mycharacter, ...,
camera, char, root})

return parts == 0
else
local camp = [Link].p
local dist = (camp - pos).Magnitude

local hitt = 0
local hit = raycast(raynew(camp, (pos - camp).unit * dist),
{mycharacter, ..., camera}, function(hit)

if [Link] ~= false then-- [Link] ~= 1


then¨
hitt = hitt + 1
return hitt < max
end

if isDescendantOf(hit, char) then


return
end
return true
end)

return hit == nil and true or isDescendantOf(hit, char),


hitt
end
end
function [Link](player, p1)
local p0 = p1 or locpl
return ([Link]~=nil and [Link]==[Link]) and
[Link] == false or false
end
function [Link](position)
local screenpos, vis = worldToViewportPoint(camera, position)
if vis and screenpos.Z > 0 then
return (v2new(mouse.X, mouse.Y) - v2new(screenpos.X,
screenpos.Y)).Magnitude
end
return [Link]
end

local hashes = {}
function [Link](settings)
local closest, temp = nil, [Link] or [Link]
local plr

for i,v in pairs(getPlayers(players)) do


if (locpl ~= v and ([Link]==true and
[Link](v)==false or [Link] == false)) then
local character = [Link]-- or
[Link](v)
if character and isDescendantOf(character, game) == true
then
local hash = hashes[v]
local part = hash or findFirstChild(character,
[Link] or "HumanoidRootPart") or findFirstChild(character,
"HumanoidRootPart") or [Link]
if hash == nil then hashes[v] = part end
if part then
local legal = true

local distance =
[Link](part:GetRenderCFrame().p)
if temp <= distance then
legal = false
end

if legal then
if [Link] then
local isalive =
[Link](character, part)
if not isalive then
legal = false
end
end
end

if legal then
local visible = true
if [Link] == false then
local vis = [Link](character,
part, ([Link] or 0))
if not vis then
legal = false
end
end
end

if legal then
temp = distance
closest = part
plr = v
end
end
end
end
end -- who doesnt love 5 ends in a row?

return closest, temp, plr


end
function [Link](settings)

local closest, temp = nil, [Link]


--local myroot = mycharacter and (findFirstChild(mycharacter,
[Link] or "HumanoidRootPart") or findFirstChild(mycharacter,
"HumanoidRootPart"))
if myroot then
for i,v in pairs(getPlayers(players)) do
if (locpl ~= v) and ([Link]==true and
[Link](v)==false or [Link] == false) then
local character = [Link]-- or
[Link](v)
if character then
local hash = hashes[v]
local part = hash or findFirstChild(character,
[Link] or "HumanoidRootPart") or findFirstChild(character,
"HumanoidRootPart")
if hash == nil then hashes[v] = part end

if part then
local visible = true
if [Link] == false then
local vis, p =
[Link](character, part, ([Link] or 0))
if p <= ([Link] or
0) then
visible = vis
end
end

if visible then
local distance = ([Link] -
[Link]).Magnitude
if temp > distance then
temp = distance
closest = part
end
end
end
end
end
end
end

return closest, temp


end

spawn(function()
while ah8 and [Link] do
for i,v in pairs(hashes) do
hashes[i] = nil
wait()
end
wait(4)
--hashes = {}
end
end)
end

local serialize
local deserialize
do
--/ Serializer : garbage : slow as fuck

local function hex_encode(IN, len)


local B,K,OUT,I,D=16,"0123456789ABCDEF","",0,nil
while IN>0 do
I=I+1
IN,D=[Link](IN/B), IN%B+1
OUT=[Link](K,D,D)..OUT
end
if len then
OUT = ('0'):rep(len - #OUT) .. OUT
end
return OUT
end
local function hex_decode(IN)
return tonumber(IN, 16)
end

local types = {
["nil"] = "0";
["boolean"] = "1";
["number"] = "2";
["string"] = "3";
["table"] = "4";

["Vector3"] = "5";
["CFrame"] = "6";
["Instance"] = "7";

["Color3"] = "8";
}
local rtypes = (function()
local a = {}
for i,v in pairs(types) do
a[v] = i
end
return a
end)()

local typeof = typeof or type


local function encode(t, ...)
local type = typeof(t)
local s = types[type]
local c = ''
if type == "nil" then
c = types[type] .. "0"
elseif type == "boolean" then
local t = t == true and '1' or '0'
c = s .. t
elseif type == "number" then
local new = tostring(t)
local len = #new
c = s .. len .. "." .. new
elseif type == "string" then
local new = t
local len = #new
c = s .. len .. "." .. new
elseif type == "Vector3" then
local x,y,z = tostring(t.X), tostring(t.Y),
tostring(t.Z)
local new = hex_encode(#x, 2) .. x ..
hex_encode(#y, 2) .. y .. hex_encode(#z, 2) .. z
c = s .. new
elseif type == "CFrame" then
local a = {t:GetComponents()}
local new = ''
for i,v in pairs(a) do
local l = tostring(v)
new = new .. hex_encode(#l, 2) .. l
end
c = s .. new
elseif type == "Color3" then
local a = {t.R, t.G, t.B}
local new = ''
for i,v in pairs(a) do
local l = tostring(v)
new = new .. hex_encode(#l, 2) .. l
end
c = s .. new
elseif type == "table" then
return serialize(t, ...)
end
return c
end
local function decode(t, extra)
local p = 0
local function read(l)
l = l or 1
p = p + l
return t:sub(p-l + 1, p)
end
local function get(a)
local k = ""
while p < #t do
if t:sub(p+1,p+1) == a then
break
else
k = k .. read()
end
end
return k
end
local type = rtypes[read()]
local c

if type == "nil" then


read()
elseif type == "boolean" then
local d = read()
c = d == "1" and true or false
elseif type == "number" then
local length = tonumber(get("."))
local d = read(length+1):sub(2,-1)
c = tonumber(d)
elseif type == "string" then
local length = tonumber(get(".")) --read()
local d = read(length+1):sub(2,-1)
c = d
elseif type == "Vector3" then
local function getnext()
local length = hex_decode(read(2))
local a = read(tonumber(length))
return tonumber(a)
end
local x,y,z = getnext(),getnext(),getnext()
c = [Link](x, y, z)
elseif type == "CFrame" then
local a = {}
for i = 1,12 do
local l = hex_decode(read(2))
local b = read(tonumber(l))
a[i] = tonumber(b)
end
c = [Link](unpack(a))
elseif type == "Instance" then
local pos = hex_decode(read(2))
c = extra[tonumber(pos)]
elseif type == "Color3" then
local a = {}
for i = 1,3 do
local l = hex_decode(read(2))
local b = read(tonumber(l))
a[i] = tonumber(b)
end
c = [Link](unpack(a))
end
return c
end

function serialize(data, p)
if data == nil then return end
local type = typeof(data)
if type == "table" then
local extra = {}
local s = types[type]
local new = ""
local p = p or 0
for i,v in pairs(data) do
local i1,v1
local t0,t1 = typeof(i), typeof(v)

local a,b
if t0 == "Instance" then
p = p + 1
extra[p] = i
i1 = types[t0] .. hex_encode(p, 2)
else
i1, a = encode(i, p)
if a then
for i,v in pairs(a) do
extra[i] = v
end
end
end

if t1 == "Instance" then
p = p + 1
extra[p] = v
v1 = types[t1] .. hex_encode(p, 2)
else
v1, b = encode(v, p)
if b then
for i,v in pairs(b) do
extra[i] = v
end
end
end
new = new .. i1 .. v1
end
return s .. #new .. "." .. new, extra
elseif type == "Instance" then
return types[type] .. hex_encode(1, 2), {data}
else
return encode(data), {}
end
end

function deserialize(data, extra)


if data == nil then return end
extra = extra or {}

local type = rtypes[data:sub(1,1)]


if type == "table" then

local p = 0
local function read(l)
l = l or 1
p = p + l
return data:sub(p-l + 1, p)
end
local function get(a)
local k = ""
while p < #data do
if data:sub(p+1,p+1) == a then
break
else
k = k .. read()
end
end
return k
end

local length = tonumber(get("."):sub(2, -1))


read()
local new = {}

local l = 0
while p <= length do
l = l + 1

local function getnext()


local i
local t = read()
local type = rtypes[t]

if type == "nil" then


i = decode(t .. read())
elseif type == "boolean" then
i = decode(t .. read())
elseif type == "number" then
local l = get(".")

local dc = t .. l .. read()
local a = read(tonumber(l))
dc = dc .. a

i = decode(dc)
elseif type == "string" then
local l = get(".")
local dc = t .. l .. read()
local a = read(tonumber(l))
dc = dc .. a

i = decode(dc)
elseif type == "Vector3" then
local function getnext()
local length =
hex_decode(read(2))
local a =
read(tonumber(length))
return tonumber(a)
end
local x,y,z =
getnext(),getnext(),getnext()
i = [Link](x, y, z)
elseif type == "CFrame" then
local a = {}
for i = 1,12 do
local l =
hex_decode(read(2))
local b =
read(tonumber(l)) -- why did I decide to do this
a[i] = tonumber(b)
end
i = [Link](unpack(a))
elseif type == "Instance" then
local pos =
hex_decode(read(2))
i = extra[tonumber(pos)]
elseif type == "Color3" then
local a = {}
for i = 1,3 do
local l =
hex_decode(read(2))
local b =
read(tonumber(l))
a[i] = tonumber(b)
end
i = [Link](unpack(a))
elseif type == "table" then
local l = get(".")
local dc = t .. l .. read() .. read(tonumber(l))
i = deserialize(dc, extra)
end
return i
end
local i = getnext()
local v = getnext()

new[(typeof(i) ~= "nil" and i or l)] = v


end

return new
elseif type == "Instance" then
local pos = tonumber(hex_decode(data:sub(2,3)))
return extra[pos]
else
return decode(data, extra)
end
end
end

-- great you have come a far way now stop before my horrible scripting
will infect you moron

do
--/ Settings

-- TODO: Other datatypes.


[Link] = "AimHot_v8_settings.txt" -- Lovely
[Link] = {}

function settings:Get(name, default)


local self = {}
local value = [Link][name]
if value == nil and default ~= nil then
value = default
[Link][name] = value
end
[Link] = value
function self:Set(val)
[Link] = val
[Link][name] = val
end
return self --value or default
end

function settings:Set(name, value)


local r = [Link][name]
[Link][name] = value
return r
end

function settings:Save()
local savesettings = settings:GetAll() or {}
local new = mergetab(savesettings, [Link])
local js = serialize(new)

writefile([Link], js)
end

function settings:GetAll()
if not existsFile([Link]) then
return
end
local fileContents = readfile([Link])

local data
pcall(function()
data = deserialize(fileContents)
end)
return data
end

function settings:Load()
if not existsFile([Link]) then
return
end
local fileContents = readfile([Link])

local data
pcall(function()
data = deserialize(fileContents)
end)

if data then
data = mergetab([Link], data)
end
[Link] = data
return data
end
settings:Load()

spawn(function()
while ah8 and [Link] do
settings:Save()
wait(5)
end
end)
end
-- Aiming aim bot aim aim stuff bot

do
--/ Aimbot

-- Do I want to make this decent?


local aimbot_settings = {}
aimbot_settings.ignoreteam = settings:Get("[Link]", true)
aimbot_settings.sensitivity = settings:Get("[Link]", .5)
aimbot_settings.locktotarget = settings:Get("[Link]",
true)
aimbot_settings.checkifalive = settings:Get("[Link]",
true)

aimbot_settings.ignorewalls = settings:Get("[Link]",
true)
aimbot_settings.maxobscuringparts =
settings:Get("[Link]", 0)

aimbot_settings.enabled = settings:Get("[Link]", false)


aimbot_settings.keybind = settings:Get("[Link]",
"MouseButton2")
aimbot_settings.presstoenable = settings:Get("[Link]",
true)

aimbot_settings.fovsize = settings:Get("[Link]", 400)


aimbot_settings.fovenabled = settings:Get("[Link]", true)
aimbot_settings.fovsides = settings:Get("[Link]", 10)
aimbot_settings.fovthickness = settings:Get("[Link]",
1)

[Link] = aimbot_settings.[Link]

setmetatable(aimbot, {
__index = function(self, index)
if aimbot_settings[index] ~= nil then
local Value = aimbot_settings[index]
if typeof(Value) == "table" then
return typeof(Value) == "table" and [Link]
else
return Value
end
end
warn(("AH8_ERROR : AimbotSettings : Tried to index
%s"):format(tostring(index)))
end;
__newindex = function(self, index, value)
if typeof(value) ~= "function" then
if aimbot_settings[index] then
local v = aimbot_settings[index]
if typeof(v) ~= "table" then
aimbot_settings[index] = value
return
elseif [Link] then
v:Set(value)
return
end
end
end
rawset(self, index, value)
end; -- ew
})

local worldToScreenPoint = [Link] -- why did I


start this
local target, _, closestplr = nil, nil, nil;
local completeStop = false

local enabled = false


bindEvent([Link], function(key,gpe)
if [Link] == false then return end

if [Link] then
[Link] = true
else
[Link] = enabled == true
end

local keyc = [Link] == [Link] and


[Link] or [Link]
if [Link] == [Link] then
if [Link] then
enabled = true
[Link] = true
else
enabled = not enabled
[Link] = enabled == true
end
end
end)
bindEvent([Link], function(key)
if [Link] == false then enabled = false [Link] =
false end
if [Link] then
[Link] = true
else
[Link] = enabled == true
end

local keyc = [Link] == [Link] and


[Link] or [Link]
if [Link] == [Link] then
if [Link] then
enabled = false
end
end
end)

local function calculateTrajectory()


-- my math is a bit rusty atm
end

local function aimAt(vector)


if completeStop then return end
local newpos = worldToScreenPoint(camera, vector)
mousemoverel((newpos.X - mouse.X) * [Link],
(newpos.Y - mouse.Y) * [Link])
end

function [Link]()
if completeStop or [Link] == false or enabled == false
or mycharacter == nil or isDescendantOf(mycharacter, game) == false then
if target or closestplr then
target, closestplr, _ = nil, nil, _
end
return
end

if [Link] == true then


if target == nil or isDescendantOf(target, game) == false or
closestplr == nil or [Link] == nil or [Link] ==
nil or isDescendantOf([Link], game) == false then
target, _, closestplr =
[Link]({ -- closest to mouse or camera mode later
just wait
ignoreteam = [Link];
ignorewalls = [Link];
maxobscuringparts = [Link];
name = 'Head';
fov = [Link];
checkifalive = [Link];
-- mode = "mouse";
})
else
--target = target
local stop = false
if stop == false and not ([Link]==true and
[Link](closestplr)==false or [Link] == false) then
stop = true
end
local visible = true

if stop == false and [Link] == false then


local vis = [Link]([Link], target,
([Link] or 0))
if not vis then
stop = true
end
end

if stop == false and [Link] then


local isalive = [Link](character, part)
if not isalive then
stop = true
end
end
if stop then
-- getClosestTarget({mode = "mouse"}) later
target, _, closestplr =
[Link]({
ignoreteam = [Link];
ignorewalls = [Link];
maxobscuringparts = [Link];
name = 'Head';
fov = [Link];
checkifalive = [Link];
})
end
end
else
target = [Link]({
ignoreteam = [Link];
ignorewalls = [Link];
maxobscuringparts = [Link];
name = 'Head';
fov = [Link];
checkifalive = [Link];
})
end

if target then
aimAt(target:GetRenderCFrame().Position)
-- hot or not?
end
end

function aimbot:End()
completeStop = true
target = nil
end
end

-- Mostly visuals below here


local clearDrawn, newdrawing
do
--/ Drawing extra functions

local insert = [Link]


local newd = [Link]

local drawn = {}
function clearDrawn() -- who doesnt love drawing library
for i,v in pairs(drawn) do
pcall(function() v:Remove() end)
drawn[i] = nil
end
drawn = {}
end

function newdrawing(class, props)


--if [Link] ~= true then
-- return
--end
local new = newd(class)
for i,v in pairs(props) do
new[i] = v
end
insert(drawn, new)
return new
end
end

do
--/ Crosshair
local crosshair_settings = {}
crosshair_settings.enabled = settings:Get("[Link]",
false)
crosshair_settings.size = settings:Get("[Link]", 40)
crosshair_settings.thickness = settings:Get("[Link]",
1)
crosshair_settings.color = [Link](255,0,0)
crosshair_settings.transparency =
settings:Get("[Link]", .1)

setmetatable(crosshair, { -- yes I know it is easier ways to add


this but that requires effort
__index = function(self, index)
if crosshair_settings[index] ~= nil then
local Value = crosshair_settings[index]
if typeof(Value) == "table" then
return typeof(Value) == "table" and [Link]
else
return Value
end
end
warn(("AH8_ERROR : CrosshairSettings : Tried to index
%s"):format(tostring(index)))
end;
__newindex = function(self, index, value)
if typeof(value) ~= "function" then
if crosshair_settings[index] then
local v = crosshair_settings[index]
if typeof(v) ~= "table" then
crosshair_settings[index] = value
return
elseif [Link] then
v:Set(value)
return
end
end
end
rawset(self, index, value)
end;
})

local crossHor
local crossVer
local camera = [Link]
local vpSize = [Link]

local completeStop = false


local function drawCrosshair()
if completeStop then return crosshair:Remove() end
if crossHor ~= nil or crossVer ~= nil then
return
end

local self = {
Visible = true;
Transparency = (1 - [Link]);
Thickness = [Link];
Color = [Link];
}

if [Link] ~= true then


[Link] = false
end
local h,v = newdrawing("Line", self), newdrawing("Line", self)

if [Link] then
local vpSize = [Link]/2
local size = [Link]/2
local x,y = vpSize.X, vpSize.Y

[Link] = v2new(x - size, y)


[Link] = v2new(x + size, y)

[Link] = v2new(x, y - size)


[Link] = v2new(x, y + size)
end

crossHor = h
crossVer = v
end

local function updateCrosshair() -- no reason at all to update this


each frame
-- I will replace with [Link] later
if completeStop then return end

if crossHor == nil or crossVer == nil then


return drawCrosshair()
end

local visible = [Link]

[Link] = visible
[Link] = visible

if visible then
local vpSize = [Link] / 2
local size = [Link]/2
local x,y = vpSize.X, vpSize.Y

local color = [Link]


[Link] = color
[Link] = color

local trans = (1 - [Link])


[Link] = trans
[Link] = trans

local thick = [Link]


[Link] = thick
[Link] = thick

[Link] = v2new(x - size, y)


[Link] = v2new(x + size, y)

[Link] = v2new(x, y - size)


[Link] = v2new(x, y + size)
end
end

function crosshair:Remove()
if crossHor ~= nil then
crossHor:Remove()
crossHor = nil
end
if crossVer ~= nil then
crossVer:Remove()
crossVer = nil
end
end

function crosshair:End()
completeStop = true
if crossHor ~= nil then
crossHor:Remove()
crossHor = nil
end
if crossVer ~= nil then
crossVer:Remove()
crossVer = nil
end
[Link] = false
end

[Link] = updateCrosshair
--function [Link]()
-- updateCrosshair()
--end
end

do
--/ Tracers
local tracers_settings = {}
tracers_settings.enabled = settings:Get("[Link]", false)
tracers_settings.origin = v2new([Link].X/2,
[Link].Y)
tracers_settings.frommouse = settings:Get("[Link]",
false)
tracers_settings.transparency = .6
tracers_settings.thickness = 1.5
tracers_settings.showteam = settings:Get("[Link]", false)

tracers_settings.drawdistance = settings:Get("[Link]",
4000)
tracers_settings.showvisible = settings:Get("[Link]",
true)

tracers_settings.enemycolor = [Link](255,7,58) -- 238,38,37,


255,0,13, 255,7,58
tracers_settings.teamcolor = [Link](121,255,97) --
121,255,97, 57,255,20
tracers_settings.visiblecolor = [Link](0, 141, 255)

setmetatable(tracers, {
__index = function(self, index)
if tracers_settings[index] ~= nil then
local Value = tracers_settings[index]
if typeof(Value) == "table" then
return typeof(Value) == "table" and [Link]
else
return Value
end
end
warn(("AH8_ERROR : TracersSettings : Tried to index
%s"):format(tostring(index)))
end;
__newindex = function(self, index, value)
if typeof(value) ~= "function" then
if tracers_settings[index] then
local v = tracers_settings[index]
if typeof(v) ~= "table" then
tracers_settings[index] = value
return
elseif [Link] then
v:Set(value)
return
end
end
end
rawset(self, index, value)
end;
})

local worldToViewportPoint = [Link]

local completeStop = false


local drawn = {}

local function drawTemplate(player)


if completeStop then return end

if drawn[player] then
return drawn[player]
--tracers:Remove(player)
end

local a = newdrawing("Line", {
Color = [Link];
Thickness = [Link];
Transparency = 1 - [Link];
Visible = false;
})
drawn[player] = a
return a
end

function tracers:Draw(player, character, root, humanoid, onscreen,


isteam, dist, screenpos)
if completeStop then return end

if [Link] ~= true then return tracers:Remove(player)


end
if character == nil then return tracers:Remove(player) end

if [Link]~=true and isteam then return


tracers:Remove(player) end

if root == nil then return tracers:Remove(player) end

if dist then
if dist > [Link] then
return tracers:Remove(player)
end
end

local screenpos = worldToViewportPoint(camera, [Link])

local line
if drawn[player] ~= nil then
line = drawn[player]
elseif onscreen then
line = drawTemplate(player)
end
if line then
if onscreen then
[Link] = [Link]
[Link] = v2new(screenpos.X, screenpos.Y)

local color
if isteam == false and [Link] then
if [Link](character, root, 0) then
color = [Link]
else
color = isteam and [Link] or
[Link]
end
else
color = isteam and [Link] or
[Link]
end

[Link] = color
end
[Link] = onscreen
end
--return line
end

function tracers:Hide(player)
if completeStop then return end

local line = drawn[player]


if line then
[Link] = false
end
end

function tracers:Remove(player)
if drawn[player] ~= nil then
drawn[player]:Remove()
drawn[player] = nil
end
end

function tracers:RemoveAll()
for i,v in pairs(drawn) do
pcall(function()
v:Remove()
end)
drawn[i] = nil
end
drawn = {}
end
function tracers:End()
completeStop = true
for i,v in pairs(drawn) do
pcall(function()
v:Remove()
end)
drawn[i] = nil
end
drawn = {}
end
end

do
--/ ESP
local esp_settings = {}
esp_settings.enabled = settings:Get("[Link]", false)
esp_settings.showteam = settings:Get("[Link]", false)

esp_settings.teamcolor = [Link](57,255,20) -- 121,255,97,


57,255,20
esp_settings.enemycolor = [Link](255,7,58) -- 238,38,37,
255,0,13, 255,7,58
esp_settings.visiblecolor = [Link](0, 141, 255)

esp_settings.size = settings:Get("[Link]", 16)


esp_settings.centertext = settings:Get("[Link]", true)
esp_settings.outline = settings:Get("[Link]", true)
esp_settings.transparency = settings:Get("[Link]", 0.1)

esp_settings.drawdistance = settings:Get("[Link]", 1500)

esp_settings.showvisible = settings:Get("[Link]", true)

esp_settings.yoffset = settings:Get("[Link]", 0)

esp_settings.showhealth = settings:Get("[Link]", true)


esp_settings.showdistance = settings:Get("[Link]", true)

setmetatable(esp, {
__index = function(self, index)
if esp_settings[index] ~= nil then
local Value = esp_settings[index]
if typeof(Value) == "table" then
return typeof(Value) == "table" and [Link]
else
return Value
end
end
warn(("AH8_ERROR : EspSettings : Tried to index
%s"):format(tostring(index)))
end;
__newindex = function(self, index, value)
if typeof(value) ~= "function" then
if esp_settings[index] then
local v = esp_settings[index]
if typeof(v) ~= "table" then
esp_settings[index] = value
return
elseif [Link] then
v:Set(value)
return
end
end
end
rawset(self, index, value)
end;
})
local unpack = unpack
local findFirstChild = [Link]("Part").FindFirstChild
local worldToViewportPoint = [Link]
local getBoundingBox = [Link]("Model").GetBoundingBox
local getExtentsSize = [Link]("Model").GetExtentsSize

local floor = [Link]


local insert = [Link]
local concat = [Link]

local drawn = {}
local completeStop = false

local function drawTemplate(player)


if completeStop then return end
if drawn[player] then return drawn[player] end

local obj = newdrawing("Text", {


Text = "n/a",
Size = [Link],
Color = [Link],
Center = [Link],
Outline = [Link],
Transparency = (1 - [Link]),
})
return obj
end

function esp:Draw(player, character, root, humanoid, onscreen,


isteam, dist)
if completeStop then return end
if character == nil then return esp:Remove(player) end
if root == nil then return esp:Remove(player) end
if [Link]~=true and isteam then return esp:Remove(player)
end

if dist then
if dist > [Link] then
return esp:Remove(player)
end
end

local where, isvis = worldToViewportPoint(camera, ([Link] *


[Link]).p);
--if not isvis then return esp:Remove(player) end

local oesp = drawn[player]


if oesp == nil then
oesp = drawTemplate(player)
drawn[player] = oesp
end

if oesp then
[Link] = isvis
if isvis then
[Link] = v2new(where.X, where.Y)

local color
if isteam == false and [Link] then
if [Link](character, root, 0) then
color = [Link]
else
color = isteam and [Link] or
[Link]
end
else
color = isteam and [Link] or [Link]
end

[Link] = color

[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
[Link] = (1 - [Link])

local texts = {
[Link],
}

local b = humanoid and [Link] and


("%s/%s"):format(floor([Link] + .5), floor([Link] +
.5))
if b then
insert(texts, b)
end
local c = dist and [Link] and
("%s"):format(floor(dist + .5))
if c then
insert(texts, c)
end

local text = "[ " .. concat(texts, " | ") .. " ]"


[Link] = text
end
end
end

function esp:Remove(player)
local data = drawn[player]
if data ~= nil then
data:Remove()
drawn[player] = nil
end
end

function esp:RemoveAll()
for i,v in pairs(drawn) do
pcall(function() v:Remove() end)
drawn[i] = nil
end
end

function esp:End()
completeStop = true
esp:RemoveAll()
end
end

do
--/ Boxes

local boxes_settings = {}
boxes_settings.enabled = settings:Get("[Link]", false)
boxes_settings.transparency = settings:Get("[Link]", .2)
boxes_settings.thickness = settings:Get("[Link]", 1.5)
boxes_settings.showteam = settings:Get("[Link]", false)

boxes_settings.teamcolor = [Link](57,255,20) -- 121,255,97,


57,255,20
boxes_settings.enemycolor = [Link](255,7,58) -- 238,38,37,
255,0,13, 255,7,58
boxes_settings.visiblecolor = [Link](0, 141, 255)

boxes_settings.thirddimension = settings:Get("[Link]",
false)

boxes_settings.showvisible = settings:Get("[Link]", true)

boxes_settings.dist3d = settings:Get("boxes.dist3d", 1000)


boxes_settings.drawdistance = settings:Get("[Link]",
4000)
boxes_settings.color = [Link](255, 50, 50)

setmetatable(boxes, {
__index = function(self, index)
if boxes_settings[index] ~= nil then
local Value = boxes_settings[index]
if typeof(Value) == "table" then
return typeof(Value) == "table" and [Link]
else
return Value
end
end
warn(("AH8_ERROR : BoxesSettings : Tried to index
%s"):format(tostring(index)))
end;
__newindex = function(self, index, value)
if typeof(value) ~= "function" then
if boxes_settings[index] then
local v = boxes_settings[index]
if typeof(v) ~= "table" then
boxes_settings[index] = value
return
elseif [Link] then
v:Set(value)
return
end
end
end
rawset(self, index, value)
end;
})

local unpack = unpack


local findFirstChild = [Link]("Part").FindFirstChild
local worldToViewportPoint = [Link]
local worldToScreenPoint = [Link]
local getBoundingBox = [Link]("Model").GetBoundingBox
local getExtentsSize = [Link]("Model").GetExtentsSize

local completeStop = false


local drawn = {}
local function drawTemplate(player, amount)
if completeStop then return end

if drawn[player] then
if #drawn[player] == amount then
return drawn[player]
end
boxes:Remove(player)
end

local props = {
Visible = true;
Transparency = 1 - [Link];
Thickness = [Link];
Color = [Link];
}

local a = {}
for i = 1,amount or 4 do
a[i] = newdrawing("Line", props)
end

drawn[player] = {unpack(a)}
return unpack(a)
end

function boxes:Draw(player, character, root, humanoid, onscreen,


isteam, dist) -- No skid plox
if completeStop then return end
if character == nil then return boxes:Remove(player) end
if root == nil then return boxes:Remove(player) end
if not onscreen then return boxes:Remove(player) end
if [Link] == false and isteam then return
boxes:Remove(player) end

local _3dimension = [Link]


if dist ~= nil then
if dist > [Link] then
return boxes:Remove(player)
elseif _3dimension and dist > boxes.dist3d then
_3dimension = false
end
end

local color
if isteam == false and [Link] then
if [Link](character, root, 0) then
color = [Link]
else
color = isteam and [Link] or [Link]
end
else
color = isteam and [Link] or [Link]
end

local function updateLine(line, from, to, vis)


if line == nil then return end

[Link] = vis
if vis then
[Link] = from
[Link] = to
[Link] = color
end
end

--size = ... lastsize--, v3new(5,8,0)


--getBoundingBox(character)--]] [Link],
getExtentsSize(character)--]] -- Might change this later idk + idc
if _3dimension then

local tlb, trb, blb, brb, tlf, trf, blf, brf, tlf0, trf0,
blf0, brf0
if drawn[player] == nil or #drawn[player] ~= 12 then
tlb, trb, blb, brb, tlf, trf ,blf, brf, tlf0, trf0,
blf0, brf0 = drawTemplate(player, 12)
else
tlb, trb, blb, brb, tlf, trf ,blf, brf, tlf0, trf0,
blf0, brf0 = unpack(drawn[player])
end

local pos, size = [Link], [Link]--lastsize--,


v3new(5,8,0)

local topleftback, topleftbackvisible =


worldToViewportPoint(camera, (pos * cfnew(-size.X, size.Y, size.Z)).p);
local toprightback, toprightbackvisible =
worldToViewportPoint(camera, (pos * cfnew(size.X, size.Y, size.Z)).p);
local btmleftback, btmleftbackvisible =
worldToViewportPoint(camera, (pos * cfnew(-size.X, -size.Y, size.Z)).p);
local btmrightback, btmrightbackvisible =
worldToViewportPoint(camera, (pos * cfnew(size.X, -size.Y, size.Z)).p);

local topleftfront, topleftfrontvisible =


worldToViewportPoint(camera, (pos * cfnew(-size.X, size.Y, -size.Z)).p);
local toprightfront, toprightfrontvisible =
worldToViewportPoint(camera, (pos * cfnew(size.X, size.Y, -size.Z)).p);
local btmleftfront, btmleftfrontvisible =
worldToViewportPoint(camera, (pos * cfnew(-size.X, -size.Y,
-size.Z)).p);
local btmrightfront, btmrightfrontvisible =
worldToViewportPoint(camera, (pos * cfnew(size.X, -size.Y, -size.Z)).p);

local topleftback = v2new(topleftback.X, topleftback.Y)


local toprightback = v2new(toprightback.X, toprightback.Y)
local btmleftback = v2new(btmleftback.X, btmleftback.Y)
local btmrightback = v2new(btmrightback.X, btmrightback.Y)

local topleftfront = v2new(topleftfront.X, topleftfront.Y)


local toprightfront = v2new(toprightfront.X,
toprightfront.Y)
local btmleftfront = v2new(btmleftfront.X, btmleftfront.Y)
local btmrightfront = v2new(btmrightfront.X,
btmrightfront.Y)

-- pls don't copy this bad code


updateLine(tlb, topleftback, toprightback,
topleftbackvisible)
updateLine(trb, toprightback, btmrightback,
toprightbackvisible)
updateLine(blb, btmleftback, topleftback,
btmleftbackvisible)
updateLine(brb, btmleftback, btmrightback,
btmrightbackvisible)

--

updateLine(brf, btmrightfront, btmleftfront,


btmrightfrontvisible)
updateLine(tlf, topleftfront, toprightfront,
topleftfrontvisible)
updateLine(trf, toprightfront, btmrightfront,
toprightfrontvisible)
updateLine(blf, btmleftfront, topleftfront,
btmleftfrontvisible)

--

updateLine(brf0, btmrightfront, btmrightback,


btmrightfrontvisible)
updateLine(tlf0, topleftfront, topleftback,
topleftfrontvisible)
updateLine(trf0, toprightfront, toprightback,
toprightfrontvisible)
updateLine(blf0, btmleftfront, btmleftback,
btmleftfrontvisible)
return
else

local tl, tr, bl, br


if drawn[player] == nil or #drawn[player] ~= 4 then
tl, tr, bl, br = drawTemplate(player, 4)
else
tl, tr, bl, br = unpack(drawn[player])
end

local pos, size = [Link], [Link]

local topleft, topleftvisible = worldToViewportPoint(camera,


(pos * cfnew(-size.X, size.Y, 0)).p);
local topright, toprightvisible =
worldToViewportPoint(camera, (pos * cfnew(size.X, size.Y, 0)).p);
local btmleft, btmleftvisible = worldToViewportPoint(camera,
(pos * cfnew(-size.X, -size.Y, 0)).p);
local btmright, btmrightvisible =
worldToViewportPoint(camera, (pos * cfnew(size.X, -size.Y, 0)).p);

local topleft = v2new(topleft.X, topleft.Y)


local topright = v2new(topright.X, topright.Y)
local btmleft = v2new(btmleft.X, btmleft.Y)
local btmright = v2new(btmright.X, btmright.Y)

updateLine(tl, topleft, topright, topleftvisible)


updateLine(tr, topright, btmright, toprightvisible)
updateLine(bl, btmleft, topleft, btmleftvisible)
updateLine(br, btmleft, btmright, btmrightvisible)
return
end

-- I have never been more bored when doing 3d boxes.


end

function boxes:Remove(player)
local data = drawn[player]
if data == nil then return end

if data then
for i,v in pairs(data) do
v:Remove()
data[i] = nil
end
end
drawn[player] = nil
end

function boxes:RemoveAll()
for i,v in pairs(drawn) do
pcall(function()
for i2,v2 in pairs(v) do
v2:Remove()
v[i] = nil
end
end)
drawn[i] = nil
end
drawn = {}
end

function boxes:End()
completeStop = true
for i,v in pairs(drawn) do
for i2,v2 in pairs(v) do
pcall(function()
v2:Remove()
v[i2] = nil
end)
end
drawn[i] = nil
end
drawn = {}
end
end

do
--/ Visuals

[Link] = settings:Get("[Link]", true)

local getPlayers = [Link]

local credits
local circle

local completeStop = false


bindEvent([Link], function(p)
if completeStop then return end
tracers:Remove(p)
boxes:Remove(p)
esp:Remove(p)
end)

local profilebegin = DEBUG_MODE and [Link] or function()


end
local profileend = DEBUG_MODE and [Link] or function() end

local unpack = unpack


local findFirstChild = [Link]("Part").FindFirstChild
local worldToViewportPoint = [Link]

local function remove(p)


esp:Remove(p)
boxes:Remove(p)
tracers:Remove(p)
end

local hashes = {}
function [Link]()
--if [Link] ~= true then return clearDrawn() end
if completeStop then return end

local viewportsize = [Link]


if credits == nil then
credits = newdrawing("Text", {
Text = "AimHot v8, Herrtt#3868"; -- yes now be happy
this is free
Color = [Link](255,255,255);
Size = 25.0;
Transparency = .8;
Position = v2new(viewportsize.X/8, 6);
Outline = true;
Visible = true;
})
else
[Link] = v2new(viewportsize.X/8, 6);
end

if [Link] and [Link] and [Link] then


profilebegin("[Link]")
if circle == nil then
circle = newdrawing("Circle", {
Position = v2new(mouse.X, mouse.Y+36),
Radius = [Link],
Color = [Link](240,240,240),
Thickness = [Link],
Filled = false,
Transparency = .8,
NumSides = [Link],
Visible = [Link];
})
else
if [Link] then
[Link] = v2new(mouse.X, mouse.Y+36)
[Link] = [Link]
[Link] = [Link]
[Link] = [Link]
end
[Link] = [Link]
end
profileend("[Link]")
elseif circle ~= nil then
circle:Remove()
circle = nil
end

if [Link] and [Link] then


profilebegin("[Link]")
[Link]()
profileend("[Link]")
else
crosshair:Remove()
end

if [Link] and ([Link] or [Link] or


[Link]) then
profilebegin("[Link]")
if [Link] then
[Link] = v2new(mouse.X, mouse.Y+36) -- thanks
roblox
else
[Link] = v2new(viewportsize.X/2, viewportsize.Y)
end
profileend("[Link]")

if [Link] then
[Link] = cfnew(0, [Link], 0)
end

for i,v in pairs(getPlayers(players)) do


if (v~=locpl) then
local character = [Link]
if character and isDescendantOf(character, game) ==
true then
local root = hashes[v] or
findFirstChild(character, "HumanoidRootPart") or [Link]
local humanoid =
findFirstChildOfClass(character, "Humanoid")
if root then
local screenpos, onscreen =
worldToViewportPoint(camera, [Link])
local dist = myroot and ([Link] -
[Link]).Magnitude
local isteam = ([Link]~=nil and
[Link]==[Link]) and not [Link] or false

if [Link] then -- Profilebegin is


life
profilebegin("[Link]")
boxes:Draw(v, character, root, humanoid,
onscreen, isteam, dist)
profileend("[Link]")
else
boxes:Remove(v)
end
if [Link] then
profilebegin("[Link]")
tracers:Draw(v, character, root,
humanoid, onscreen, isteam, dist, screenpos)
profileend("[Link]")
else
tracers:Remove(v)
end

if [Link] then
profilebegin("[Link]")
esp:Draw(v, character, root, humanoid,
onscreen, isteam, dist)
profileend("[Link]")
else
esp:Remove(v)
end
else
remove(v)
end
else
remove(v)
end
end
end
else
-- mhm
tracers:RemoveAll()
boxes:RemoveAll()
esp:RemoveAll()
crosshair:Remove()
end
end

function visuals:End()
completeStop = true
crosshair:End()
boxes:End()
tracers:End()
esp:End()

clearDrawn()
end

spawn(function()
while ah8 and [Link] do -- I dont know why I am doing this
for i,v in pairs(hashes) do
hashes[i] = nil
wait()
end
wait(3)
end
end)
end

-- Ok yes
do
--/ Run

local pcall = pcall;


local tostring = tostring;
local warn = warn;
local debug = debug;
local profilebegin = DEBUG_MODE and [Link] or function()
end
local profileend = DEBUG_MODE and [Link] or function() end

local renderstep = [Link]


local heartbeat = [Link]
local stepped = [Link]
local wait = [Link]

[Link] = 0
[Link] = tick()

local engine = {
{
name = '[Link]',
func = [Link]
};
}
local heartengine = {
{
name = '[Link]',
func = [Link]
};
}
local whilerender = {
}

[Link] = {}
[Link] = {}
[Link] = {}
function [Link]()
wait(renderstep)
end

local fireonstep = [Link]([Link])


local fireonthink = [Link]([Link])
local fireonrender = [Link]([Link])

local rstname = "[Link]"


bindEvent(renderstep, function(delta)
profilebegin(rstname)
local ntime = tick()
[Link] = ntime - [Link]
[Link] = ntime

for i,v in pairs(engine) do

profilebegin([Link])
local suc, err = pcall([Link], [Link])
profileend([Link])
if not suc then
warn("AH8_ERROR (RENDERSTEPPED) : Failed to run " ..
[Link] .. "! " .. tostring(err))
engine[i] = nil
end
end

profileend(rstname)
end)

local hbtname = "[Link]"


bindEvent(heartbeat, function(delta)
profilebegin(hbtname)

for i,v in pairs(heartengine) do

profilebegin([Link])
local suc, err = pcall([Link], delta)
profileend([Link])
if not suc then
warn("AH8_ERROR (HEARTBEAT) : Failed to run " ..
[Link] .. "! " .. tostring(err))
end
end

profileend(hbtname)
end)

local stpname = "[Link]"


bindEvent(stepped, function(delta)

profilebegin(stpname)

for i,v in pairs(whilerender) do

profilebegin([Link])
local suc, err = pcall([Link], delta)
profileend([Link])
if not suc then
warn("AH8_ERROR (STEPPED) : Failed to run " .. [Link] ..
"! " .. tostring(err))
end
end

profileend(stpname)
end)
end

do
--/ Main or something I am not sure what I am writing anymore
settings:Save()

[Link] = true
function ah8:close()
spawn(function() pcall([Link], visuals) end)
spawn(function() pcall([Link], aimbot) end)
spawn(function() pcall([Link], hud) end)
spawn(function()
for i,v in pairs(connections) do
pcall(function() v:Disconnect() end)
end
end)
ah8 = nil
shared.ah8 = nil -- k

settings:Save()
end

shared.ah8 = ah8

local players = game:GetService("Players")


local loc = [Link]
bindEvent([Link], function(p)
if p == loc then
settings:Save()
end
end)
end

-- I didn't think this ui lib through


local Aiming = hud:AddTab({
Text = "Aiming",
})

local AimbotToggle = Aiming:AddToggleCategory({


Text = "Aimbot",
State = [Link],
}, function(state)
[Link] = state
end)

AimbotToggle:AddKeybind({
Text = "keybind",
Current = [Link],
}, function(new)
[Link] = [Link]
end)

AimbotToggle:AddToggle({
Text = "Press To Enable",
State = [Link],
}, function(state)
[Link] = state
end)

AimbotToggle:AddToggle({
Text = "Lock To Target",
State = [Link],
}, function(state)
[Link] = state
end)

AimbotToggle:AddToggle({
Text = "Check If Alive",
State = [Link],
}, function(state)
[Link] = state
end)

-- settings stuff
local AimbotSettings = Aiming:AddCategory({
Text = "Settings",
})

AimbotSettings:AddSlider({
Text = "Sensitivity",
Current = [Link]
}, {0.01, 10, 0.01}, function(new)
[Link] = new
end)

AimbotSettings:AddToggle({
Text = "Ignore Team",
State = [Link]
}, function(new)
[Link] = new
end)

AimbotSettings:AddToggle({
Text = "Ignore Walls",
State = [Link]
}, function(new)
[Link] = new
end)

AimbotSettings:AddSlider({
Text = "Max Obscuring Parts",
Current = [Link],
}, {0, 50, 1}, function(new)
[Link] = new
end)

local FieldOfView = Aiming:AddToggleCategory({


Text = "fov",
State = [Link],
}, function(state)
[Link] = state
end)

FieldOfView:AddSlider({
Text = "Radius",
Current = [Link],
}, {1, 1000, 1}, function(new)
[Link] = new
end)

FieldOfView:AddSlider({
Text = "Sides",
Current = [Link],
}, {6, 40, 1}, function(new)
[Link] = new
end)

FieldOfView:AddSlider({
Text = "Thickness",
Current = [Link],
}, {0.1, 50, 0.1}, function(new)
[Link] = new
end)
local Visuals = hud:AddTab({
Text = "Visuals"
})

Visuals:AddToggle({
Text = "Enabled",
State = [Link],
}, function(new)
[Link] = new
end)

local Boxes = Visuals:AddToggleCategory({


Text = "Boxes",
State = [Link],
}, function(new)
[Link] = new
end)

Boxes:AddToggle({
Text = "Visible check",
State = [Link],
}, function(new)
[Link] = new
end)

Boxes:AddToggle({
Text = "Show Team",
State = [Link],
}, function(new)
[Link] = new
end)

Boxes:AddToggle({
Text = "3d",
State = [Link],
}, function(new)
[Link] = new
end)

Boxes:AddSlider({
Text = "Draw Distance",
Current = [Link],
}, {5,10000,5}, function(new)
[Link] = new
end)

Boxes:AddSlider({
Text = "3d distance",
Current = boxes.dist3d,
}, {5,10000,5}, function(new)
boxes.dist3d = new
end)

local Esp = Visuals:AddToggleCategory({


Text = "Esp",
State = [Link],
}, function(new)
[Link] = new
end)

Esp:AddToggle({
Text = "Visible check",
State = [Link],
}, function(new)
[Link] = new
end)

Esp:AddSlider({
Text = "Size",
Current = [Link],
}, {1, 100, 1}, function(new)
[Link] = new
end)

Esp:AddSlider({
Text = "Transparency",
Current = [Link]
}, {0, 1, 0.01}, function(new)
[Link] = new
end)

Esp:AddSlider({
Text = "Draw Distance",
Current = [Link]
}, {5,10000,5}, function(new)
[Link] = new
end)

Esp:AddSlider({
Text = "Offset",
Current = [Link],
}, {-50, 50, 0.01}, function(new)
[Link] = new
end)

Esp:AddToggle({
Text = "Center Text",
State = [Link]
}, function(new)
[Link] = new
end)

Esp:AddToggle({
Text = "Outline",
State = [Link],
}, function(new)
[Link] = new
end)

Esp:AddToggle({
Text = "Show Team",
State = [Link]
}, function(new)
[Link] = new
end)

local Tracers = Visuals:AddToggleCategory({


Text = "Tracers",
State = [Link],
}, function(new)
[Link] = new
end)

Tracers:AddToggle({
Text = "Visible check",
State = [Link],
}, function(new)
[Link] = new
end)

Tracers:AddToggle({
Text = "Show Team",
State = [Link]
}, function(new)
[Link] = new
end)

Tracers:AddToggle({
Text = "From Mouse",
State = [Link],
}, function(new)
[Link] = new
end)

Tracers:AddSlider({
Text = "Draw Distance",
Current = [Link],
}, {5,10000,5}, function(new)
[Link] = new
end)

local Crosshair = Visuals:AddToggleCategory({


Text = "Crosshair",
State = [Link],
}, function(new)
[Link] = new
end)

Crosshair:AddSlider({
Text = "Size",
Current = [Link],
}, {1,2000,1}, function(new)
[Link] = new
end)

Crosshair:AddSlider({
Text = "Thickness",
Current = [Link]
}, {1,50,1}, function(new)
[Link] = new
end)

Crosshair:AddSlider({
Text = "Transparency",
Current = [Link]
}, {0,1,0.01}, function(new)
[Link] = new
end)

local Hud = hud:AddTab({


Text = "Hud",
})

[Link] = settings:Get("[Link]", "RightAlt").Value


Hud:AddKeybind({
Text = "Toggle",
Current = [Link],
}, function(new)
settings:Set("[Link]", [Link])
[Link] = [Link]
end)

Hud:AddLabel({
Text = "Ugly ui I know shut up"
})

Hud:AddButton({
Text = "Exit"
}, function()
ah8:close()
end)

warn("AH8_MAIN : Reached end of script")

You might also like