Beruflich Dokumente
Kultur Dokumente
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.
]]
local required = {
mousemoverel, drawing, readfile, writefile, appendfile,
game.HttpGet, game.GetObjects
}
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)
table.insert(connections, con)
return con
end
local event = {}
local utility = {}
local serializer = {}
local settings = {}
local aimbot = {}
local visuals = {}
local crosshair = {}
local esp = {}
local boxes = {}
local tracers = {}
local run = {}
local ah8 = {enabled = true;}
function event.new(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
connections[n] = nil
end
return disconnect
end
do
--/ Utility : To make it easier for me to edit
return false
end
local shit = false
function utility.isvisible(char, root, max, ...)
local pos = root.Position
if shit or max > 4 then
local parts = badraycastnotevensure(pos, {mycharacter, ...,
camera, char, root})
return parts == 0
else
local camp = camera.CFrame.p
local dist = (camp - pos).Magnitude
local hitt = 0
local hit = raycast(raynew(camp, (pos - camp).unit * dist),
{mycharacter, ..., camera}, function(hit)
local hashes = {}
function utility.getClosestMouseTarget(settings)
local closest, temp = nil, settings.fov or math.huge
local plr
local distance =
utility.getDistanceFromMouse(part:GetRenderCFrame().p)
if temp <= distance then
legal = false
end
if legal then
if settings.checkifalive then
local isalive =
utility.isalive(character, part)
if not isalive then
legal = false
end
end
end
if legal then
local visible = true
if settings.ignorewalls == false then
local vis = utility.isvisible(character,
part, (settings.maxobscuringparts 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?
if part then
local visible = true
if settings.ignorewalls == false then
local vis, p =
utility.isvisible(character, part, (settings.maxobscuringparts or 0))
if p <= (settings.maxobscuringparts or
0) then
visible = vis
end
end
if visible then
local distance = (myroot.Position -
part.Position).Magnitude
if temp > distance then
temp = distance
closest = part
end
end
end
end
end
end
end
spawn(function()
while ah8 and ah8.enabled 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 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)()
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
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 l = 0
while p <= length do
l = l + 1
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 = Vector3.new(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 = CFrame.new(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 = Color3.new(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()
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
function settings:Save()
local savesettings = settings:GetAll() or {}
local new = mergetab(savesettings, settings.saved)
local js = serialize(new)
writefile(settings.fileName, js)
end
function settings:GetAll()
if not existsFile(settings.fileName) then
return
end
local fileContents = readfile(settings.fileName)
local data
pcall(function()
data = deserialize(fileContents)
end)
return data
end
function settings:Load()
if not existsFile(settings.fileName) then
return
end
local fileContents = readfile(settings.fileName)
local data
pcall(function()
data = deserialize(fileContents)
end)
if data then
data = mergetab(settings.saved, data)
end
settings.saved = data
return data
end
settings:Load()
spawn(function()
while ah8 and ah8.enabled do
settings:Save()
wait(5)
end
end)
end
-- Aiming aim bot aim aim stuff bot
do
--/ Aimbot
aimbot_settings.ignorewalls = settings:Get("aimbot.ignorewalls",
true)
aimbot_settings.maxobscuringparts =
settings:Get("aimbot.maxobscuringparts", 0)
aimbot.fovshow = aimbot_settings.fovenabled.Value
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 Value.Value
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 v.Set then
v:Set(value)
return
end
end
end
rawset(self, index, value)
end; -- ew
})
if aimbot.presstoenable then
aimbot.fovshow = true
else
aimbot.fovshow = enabled == true
end
function aimbot.step()
if completeStop or aimbot.enabled == 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 target then
aimAt(target:GetRenderCFrame().Position)
-- hot or not?
end
end
function aimbot:End()
completeStop = true
target = nil
end
end
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
do
--/ Crosshair
local crosshair_settings = {}
crosshair_settings.enabled = settings:Get("crosshair.enabled",
false)
crosshair_settings.size = settings:Get("crosshair.size", 40)
crosshair_settings.thickness = settings:Get("crosshair.thickness",
1)
crosshair_settings.color = Color3.fromRGB(255,0,0)
crosshair_settings.transparency =
settings:Get("crosshair.transparency", .1)
local crossHor
local crossVer
local camera = workspace.CurrentCamera
local vpSize = camera.ViewportSize
local self = {
Visible = true;
Transparency = (1 - crosshair.transparency);
Thickness = crosshair.thickness;
Color = crosshair.color;
}
if self.Visible then
local vpSize = camera.ViewportSize/2
local size = crosshair.size/2
local x,y = vpSize.X, vpSize.Y
crossHor = h
crossVer = v
end
crossHor.Visible = visible
crossVer.Visible = visible
if visible then
local vpSize = camera.ViewportSize / 2
local size = crosshair.size/2
local x,y = vpSize.X, vpSize.Y
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
crosshair.enabled = false
end
crosshair.step = updateCrosshair
--function crosshair.step()
-- updateCrosshair()
--end
end
do
--/ Tracers
local tracers_settings = {}
tracers_settings.enabled = settings:Get("tracers.enabled", false)
tracers_settings.origin = v2new(camera.ViewportSize.X/2,
camera.ViewportSize.Y)
tracers_settings.frommouse = settings:Get("tracers.frommouse",
false)
tracers_settings.transparency = .6
tracers_settings.thickness = 1.5
tracers_settings.showteam = settings:Get("tracers.showteam", false)
tracers_settings.drawdistance = settings:Get("tracers.drawdistance",
4000)
tracers_settings.showvisible = settings:Get("tracers.showvisible",
true)
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 Value.Value
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 v.Set then
v:Set(value)
return
end
end
end
rawset(self, index, value)
end;
})
if drawn[player] then
return drawn[player]
--tracers:Remove(player)
end
local a = newdrawing("Line", {
Color = tracers.enemycolor;
Thickness = tracers.thickness;
Transparency = 1 - tracers.transparency;
Visible = false;
})
drawn[player] = a
return a
end
if dist then
if dist > tracers.drawdistance then
return tracers:Remove(player)
end
end
local line
if drawn[player] ~= nil then
line = drawn[player]
elseif onscreen then
line = drawTemplate(player)
end
if line then
if onscreen then
line.From = tracers.origin
line.To = v2new(screenpos.X, screenpos.Y)
local color
if isteam == false and tracers.showvisible then
if utility.isvisible(character, root, 0) then
color = tracers.visiblecolor
else
color = isteam and tracers.teamcolor or
tracers.enemycolor
end
else
color = isteam and tracers.teamcolor or
tracers.enemycolor
end
line.Color = color
end
line.Visible = onscreen
end
--return line
end
function tracers:Hide(player)
if completeStop then return 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("esp.enabled", false)
esp_settings.showteam = settings:Get("esp.showteam", false)
esp_settings.yoffset = settings:Get("esp.yoffset", 0)
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 Value.Value
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 v.Set then
v:Set(value)
return
end
end
end
rawset(self, index, value)
end;
})
local unpack = unpack
local findFirstChild = Instance.new("Part").FindFirstChild
local worldToViewportPoint = camera.WorldToViewportPoint
local getBoundingBox = Instance.new("Model").GetBoundingBox
local getExtentsSize = Instance.new("Model").GetExtentsSize
local drawn = {}
local completeStop = false
if dist then
if dist > esp.drawdistance then
return esp:Remove(player)
end
end
if oesp then
oesp.Visible = isvis
if isvis then
oesp.Position = v2new(where.X, where.Y)
local color
if isteam == false and esp.showvisible then
if utility.isvisible(character, root, 0) then
color = esp.visiblecolor
else
color = isteam and esp.teamcolor or
esp.enemycolor
end
else
color = isteam and esp.teamcolor or esp.enemycolor
end
oesp.Color = color
oesp.Center = esp.centertext
oesp.Size = esp.size
oesp.Outline = esp.outline
oesp.Transparency = (1 - esp.transparency)
local texts = {
player.Name,
}
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("boxes.enabled", false)
boxes_settings.transparency = settings:Get("boxes.transparency", .2)
boxes_settings.thickness = settings:Get("boxes.thickness", 1.5)
boxes_settings.showteam = settings:Get("boxes.showteam", false)
boxes_settings.thirddimension = settings:Get("boxes.thirddimension",
false)
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 Value.Value
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 v.Set then
v:Set(value)
return
end
end
end
rawset(self, index, value)
end;
})
if drawn[player] then
if #drawn[player] == amount then
return drawn[player]
end
boxes:Remove(player)
end
local props = {
Visible = true;
Transparency = 1 - boxes.transparency;
Thickness = boxes.thickness;
Color = boxes.color;
}
local a = {}
for i = 1,amount or 4 do
a[i] = newdrawing("Line", props)
end
drawn[player] = {unpack(a)}
return unpack(a)
end
local color
if isteam == false and boxes.showvisible then
if utility.isvisible(character, root, 0) then
color = boxes.visiblecolor
else
color = isteam and boxes.teamcolor or boxes.enemycolor
end
else
color = isteam and boxes.teamcolor or boxes.enemycolor
end
line.Visible = vis
if vis then
line.From = from
line.To = to
line.Color = color
end
end
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
--
--
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
local credits
local circle
local hashes = {}
function visuals.step()
--if visuals.enabled ~= true then return clearDrawn() end
if completeStop then return end
if esp.enabled then
esp.offset = cfnew(0, esp.yoffset, 0)
end
if esp.enabled then
profilebegin("esp.draw")
esp:Draw(v, character, root, humanoid,
onscreen, isteam, dist)
profileend("esp.draw")
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 ah8.enabled 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
run.dt = 0
run.time = tick()
local engine = {
{
name = 'visuals.step',
func = visuals.step
};
}
local heartengine = {
{
name = 'aimbot.step',
func = aimbot.step
};
}
local whilerender = {
}
run.onstep = {}
run.onthink = {}
run.onrender = {}
function run.wait()
wait(renderstep)
end
profilebegin(v.name)
local suc, err = pcall(v.func, run.dt)
profileend(v.name)
if not suc then
warn("AH8_ERROR (RENDERSTEPPED) : Failed to run " ..
v.name .. "! " .. tostring(err))
engine[i] = nil
end
end
profileend(rstname)
end)
profilebegin(v.name)
local suc, err = pcall(v.func, delta)
profileend(v.name)
if not suc then
warn("AH8_ERROR (HEARTBEAT) : Failed to run " ..
v.name .. "! " .. tostring(err))
end
end
profileend(hbtname)
end)
profilebegin(stpname)
profilebegin(v.name)
local suc, err = pcall(v.func, delta)
profileend(v.name)
if not suc then
warn("AH8_ERROR (STEPPED) : Failed to run " .. v.name ..
"! " .. tostring(err))
end
end
profileend(stpname)
end)
end
do
--/ Main or something I am not sure what I am writing anymore
settings:Save()
ah8.enabled = true
function ah8:close()
spawn(function() pcall(visuals.End, visuals) end)
spawn(function() pcall(aimbot.End, aimbot) end)
spawn(function() pcall(hud.End, 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
AimbotToggle:AddKeybind({
Text = "keybind",
Current = aimbot.keybind,
}, function(new)
aimbot.keybind = new.Name
end)
AimbotToggle:AddToggle({
Text = "Press To Enable",
State = aimbot.presstoenable,
}, function(state)
aimbot.presstoenable = state
end)
AimbotToggle:AddToggle({
Text = "Lock To Target",
State = aimbot.locktotarget,
}, function(state)
aimbot.locktotarget = state
end)
AimbotToggle:AddToggle({
Text = "Check If Alive",
State = aimbot.checkifalive,
}, function(state)
aimbot.checkifalive = state
end)
-- settings stuff
local AimbotSettings = Aiming:AddCategory({
Text = "Settings",
})
AimbotSettings:AddSlider({
Text = "Sensitivity",
Current = aimbot.sensitivity
}, {0.01, 10, 0.01}, function(new)
aimbot.sensitivity = new
end)
AimbotSettings:AddToggle({
Text = "Ignore Team",
State = aimbot.ignoreteam
}, function(new)
aimbot.ignoreteam = new
end)
AimbotSettings:AddToggle({
Text = "Ignore Walls",
State = aimbot.ignorewalls
}, function(new)
aimbot.ignorewalls = new
end)
AimbotSettings:AddSlider({
Text = "Max Obscuring Parts",
Current = aimbot.maxobscuringparts,
}, {0, 50, 1}, function(new)
aimbot.maxobscuringparts = new
end)
FieldOfView:AddSlider({
Text = "Radius",
Current = aimbot.fovsize,
}, {1, 1000, 1}, function(new)
aimbot.fovsize = new
end)
FieldOfView:AddSlider({
Text = "Sides",
Current = aimbot.fovsides,
}, {6, 40, 1}, function(new)
aimbot.fovsides = new
end)
FieldOfView:AddSlider({
Text = "Thickness",
Current = aimbot.fovthickness,
}, {0.1, 50, 0.1}, function(new)
aimbot.fovthickness = new
end)
local Visuals = hud:AddTab({
Text = "Visuals"
})
Visuals:AddToggle({
Text = "Enabled",
State = visuals.enabled,
}, function(new)
visuals.enabled = new
end)
Boxes:AddToggle({
Text = "Visible check",
State = boxes.showvisible,
}, function(new)
boxes.showvisible = new
end)
Boxes:AddToggle({
Text = "Show Team",
State = boxes.showteam,
}, function(new)
boxes.showteam = new
end)
Boxes:AddToggle({
Text = "3d",
State = boxes.thirddimension,
}, function(new)
boxes.thirddimension = new
end)
Boxes:AddSlider({
Text = "Draw Distance",
Current = boxes.drawdistance,
}, {5,10000,5}, function(new)
boxes.drawdistance = new
end)
Boxes:AddSlider({
Text = "3d distance",
Current = boxes.dist3d,
}, {5,10000,5}, function(new)
boxes.dist3d = new
end)
Esp:AddToggle({
Text = "Visible check",
State = esp.showvisible,
}, function(new)
esp.showvisible = new
end)
Esp:AddSlider({
Text = "Size",
Current = esp.size,
}, {1, 100, 1}, function(new)
esp.size = new
end)
Esp:AddSlider({
Text = "Transparency",
Current = esp.transparency
}, {0, 1, 0.01}, function(new)
esp.transparency = new
end)
Esp:AddSlider({
Text = "Draw Distance",
Current = esp.drawdistance
}, {5,10000,5}, function(new)
esp.drawdistance = new
end)
Esp:AddSlider({
Text = "Offset",
Current = esp.yoffset,
}, {-50, 50, 0.01}, function(new)
esp.yoffset = new
end)
Esp:AddToggle({
Text = "Center Text",
State = esp.centertext
}, function(new)
esp.centertext = new
end)
Esp:AddToggle({
Text = "Outline",
State = esp.outline,
}, function(new)
esp.outline = new
end)
Esp:AddToggle({
Text = "Show Team",
State = esp.showteam
}, function(new)
esp.showteam = new
end)
Tracers:AddToggle({
Text = "Visible check",
State = tracers.showvisible,
}, function(new)
tracers.showvisible = new
end)
Tracers:AddToggle({
Text = "Show Team",
State = tracers.showteam
}, function(new)
tracers.showteam = new
end)
Tracers:AddToggle({
Text = "From Mouse",
State = tracers.frommouse,
}, function(new)
tracers.frommouse = new
end)
Tracers:AddSlider({
Text = "Draw Distance",
Current = tracers.drawdistance,
}, {5,10000,5}, function(new)
tracers.drawdistance = new
end)
Crosshair:AddSlider({
Text = "Size",
Current = crosshair.size,
}, {1,2000,1}, function(new)
crosshair.size = new
end)
Crosshair:AddSlider({
Text = "Thickness",
Current = crosshair.thickness
}, {1,50,1}, function(new)
crosshair.thickness = new
end)
Crosshair:AddSlider({
Text = "Transparency",
Current = crosshair.transparency
}, {0,1,0.01}, function(new)
crosshair.transparency = new
end)
Hud:AddLabel({
Text = "Ugly ui I know shut up"
})
Hud:AddButton({
Text = "Exit"
}, function()
ah8:close()
end)