
KeylessUniversal

-- Azion V2 FANMADE by me, Credits to @RobloxScriptCreator, hes the Original CREATOR of the Azion.
local en = game:GetService("Players")
local eo = game:GetService("RunService")
local hb = game:GetService("UserInputService")
local af = en.LocalPlayer
local hc = require(af:WaitForChild("PlayerScripts"):WaitForChild("PlayerModule"))
local ep = hc:GetControls()
local ap = Instance.new("ScreenGui")
ap.Name = "SFAiGui"
ap.ResetOnSpawn = false
ap.IgnoreGuiInset = true
ap.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ap.Parent = af:WaitForChild("PlayerGui")
local l = Instance.new("TextButton")
l.Size = UDim2.new(0, 90, 0, 40)
l.Position = UDim2.new(0, 60, 0.5, 0)
l.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
l.TextColor3 = Color3.fromRGB(255, 255, 255)
l.Text = "AI: OFF"
l.Font = Enum.Font.GothamBold
l.TextSize = 14
l.BorderSizePixel = 0
l.ZIndex = 10
l.Parent = ap
local eq = Instance.new("UICorner"); eq.CornerRadius = UDim.new(0,8); eq.Parent = l
local co = Instance.new("UIStroke"); co.Color = Color3.fromRGB(80,80,80); co.Thickness = 1; co.Parent = l
local di, er, bd = false, nil, nil
l.InputBegan:Connect(function(ab)
if ab.UserInputType == Enum.UserInputType.MouseButton1 or ab.UserInputType == Enum.UserInputType.Touch then
di = true; er = ab.Position; bd = l.Position
ab.Changed:Connect(function()
if ab.UserInputState == Enum.UserInputState.End then di = false end
end)
end
end)
hb.InputChanged:Connect(function(ab)
if di and (ab.UserInputType == Enum.UserInputType.MouseMovement or ab.UserInputType == Enum.UserInputType.Touch) then
local d = ab.Position - er
l.Position = UDim2.new(bd.X.Scale, bd.X.Offset + d.X, bd.Y.Scale, bd.Y.Offset + d.Y)
end
end)
local aq = false
local ar, ah, ai, as
local o, w, j
local be = 0
local at = Vector3.new(0,0,0)
local bf = 0
local bg = nil
local cp = false
local hd = 0.01
local he = 100
local cq = 100
local hf = 20
local bh = nil
local u = Vector3.new(0,0,0)
local cr = Vector3.new(0,0,0)
local au = Vector3.new(0,0,0)
local hg = 0.22
local hh = 0.14
local es = 0.04
local hi = 0.22
local et = 5
local hj = 60
local eu = 0.55
local hk = 0.10
local ev = 5
local hl = 60
local av = nil
local cs = 0
local bi = 0
local hm = 7
local aw = false
local bj = 0
local bk = nil
local hn = 0.28
local ct = 0
local ho = 0.32
local aj = 0
local bl = false
local cu = nil
local bm = 0
local hp = 1.2
local hq = 0.9
local hr = 1.8
local bn = 0
local ax = false
local dj = 0
local ay = 0
local bo = 0
local bp = 0
local ew = 0.75
local ex = 1.80
local hs = 0.06
local ht = 0.18
local ac = 0
local ey = 0
local ez = 0
local fa = 0
local fb = 0
local dk = math.rad(1.8)
local dl = math.rad(1.2)
local dm = 0
local dn = 0
local fc = 0
local fd = 0
local dp = 0
local dq = 0
local cv = nil
local cw = nil
local dr = 0
local hu = 0.045
local hv = 2.5
local bq = {}
local hw = 0.035
local ak = math.pi
local cx = 0
local fe = 10
local br = false
local bs = 0
local bt = 0
local ff = Vector3.new(0,0,0)
local bv = false
local bw = 0
local fg = 1
local ag = nil
local az = 0
local hx = math.rad(50)
local bx = false
local ds = nil
local by = 0
local hy = 0.18
local hz = 0.40
local ia = 6
local ib = 13
local ic = {
{true, 78},
{false, 22},
}
local bz = 0
local dt = Vector3.new(0,0,0)
local id = 0.05
local ie = {
{"left", 30},
{"right", 30},
{"forward", 15},
{"back", 15},
{"diag_fl", 5},
{"diag_fr", 5},
}
local ca = RaycastParams.new()
ca.FilterType = Enum.RaycastFilterType.Exclude
local function e(a, b) return a + math.random() * (b - a) end
local function ig(p) return math.random() < p end
local function m(cy)
local ba = 0
for _, c in ipairs(cy) do ba = ba + c[2] end
local r = math.random() * ba
local du = 0
for _, c in ipairs(cy) do
du = du + c[2]
if r <= du then return c[1] end
end
return cy[#cy][1]
end
local ih = {
{"behind", 38},
{"left", 27},
{"back_left", 19},
{"far_left", 9},
{"chaos", 7},
}
local ii = {
{"random_angle", 9},
{"spin", 5},
{"pool", 78},
}
local fh = {
{Vector3.new(0,0,-1), 40},
{Vector3.new(0,0,1), 20},
{Vector3.new(-1,0,0), 12},
{Vector3.new(1,0,0), 12},
{Vector3.new(-1,0,-1).Unit, 14},
{Vector3.new(1,0,-1).Unit, 14},
{Vector3.new(-1,0,1).Unit, 5},
{Vector3.new(1,0,1).Unit, 5},
}
local ij = {
{0, 68},
{1, 18},
{2, 10},
{3, 4},
}
local fi = {
{55, 15},
{70, 25},
{90, 30},
{110, 20},
{130, 10},
}
local bb = {
{1, 50},
{-1, 50},
}
local ik = {
{true, 22},
{false, 78},
}
local il = {
{true, 10},
{false, 90},
}
local cz = 10
local da = 14
local dv = {}
for i=1,cz do
local cb = (i-1) * (2*math.pi/cz)
dv[i] = Vector3.new(math.cos(cb), 0, math.sin(cb))
end
local fj = {}
local dw = 0
local im = 0.06
local io = 5
local fk = 3
local ip = math.rad(16)
local fl = 0.82
local db = 0.09
local iq = 3.0
local ir = 1.4
local is = 0.8
local it = 0.6
local dc = nil
local cc = 0
local fm = 3.0
local fn = 6.5
local function fo()
ey = e(5.5, 9.5)
ez = e(11.0, 17.0)
fa = e(4.0, 7.5)
fb = e(8.5, 13.5)
dk = math.rad(e(1.2, 2.8))
dl = math.rad(e(0.8, 1.9))
dm = math.random() * 200
dn = math.random() * 200
fc = math.random() * 200
fd = math.random() * 200
dp = e(2.5, 5.5)
dq = math.rad(e(0.6, 1.8))
end
local function fp()
local ad = m(ih)
if ad == "behind" then
ak = math.pi + e(-0.28, 0.28)
elseif ad == "left" then
ak = -math.pi / 2 + e(-0.40, 0.40)
elseif ad == "back_left" then
ak = -(math.pi * 0.72) + e(-0.24, 0.24)
elseif ad == "far_left" then
ak = -(math.pi * 0.88) + e(-0.18, 0.18)
else
ak = e(-math.pi, math.pi)
end
cx = e(0.9, 2.4)
fe = e(7, 15)
end
local function iu(q)
local t = math.clamp((q - et) / (hj - et), 0, 1)
return es + (hi - es) * t + e(-0.008, 0.008)
end
local function iv(q)
local t = math.clamp((q - ev) / (hl - ev), 0, 1)
local b = eu + (hk - eu) * t
return math.clamp(b + e(-0.04, 0.04), 0.05, 0.65)
end
local function iw(f)
ac = ac + f
local h = math.sin(ac * ey + dm) * dk + math.sin(ac * ez + dm * 1.3) * dk * 0.4
local v = math.sin(ac * fa + dn) * dl + math.sin(ac * fb + dn * 0.7) * dl * 0.4
local ix = math.sin(ac * dp + fc) * dq
local iy = math.sin(ac * dp * 0.7 + fd) * dq * 0.5
return h + ix, v + iy
end
local function fq(v, cb)
local c, s = math.cos(cb), math.sin(cb)
return Vector3.new(v.X*c - v.Z*s, 0, v.X*s + v.Z*c)
end
local function iz(al, am)
if al - dw < im then return end
dw = al
ca.FilterDescendantsInstances = am and {o, am} or {o}
for i=1,cz do
local x = workspace:Raycast(j.Position, dv[i]*da, ca)
fj[i] = x and (x.Position - j.Position).Magnitude or da
end
end
local function ja(bc)
local cd, fr = -math.huge, 1
for i=1,cz do
local f = bc:Dot(dv[i])
if f > cd then cd = f; fr = i end
end
return (fj[fr] or da) / da
end
local function jb(bc, ce, dd, cf)
local dx = bc:Dot(ce)
local jc = ja(bc)
local jd = bc:Dot(dd)
local dy = cf and bc:Dot(cf) or 1
return dx*iq + jc*ir + jd*is + dy*it
end
local function fs(ft, cg, cf, fu, ch, dz, dd, q)
if ft <= 0 then return 0, nil end
local fv = fu - cg
local fw = Vector3.new(fv.X, 0, fv.Z)
local ce = fw.Magnitude > 0.01 and fw.Unit or (cf or Vector3.new(0,0,1))
local ea, fx = -math.huge, ce
for b=1, fk do
local je = (b - (fk+1)/2) * ip
local eb = fq(ce, je)
local an = jb(eb, ce, dd, cf)
local jf = fu + ch * db + dz * (0.5 * db * db)
local jg = ch + dz * db
local jh = fs(ft-1, cg, eb, jf, jg, dz, dd, q * fl)
local ba = an + q * fl * jh
if ba > ea then ea = ba; fx = eb end
end
return ea, fx
end
local function ji(cg, am, fy)
local al = tick()
local jj = cv and (fy.Position - cv).Magnitude > hv
if cw and not jj and (al - dr) < hu then
return cw
end
ca.FilterDescendantsInstances = {o, am}
local ec, fz = nil, math.huge
for _, ao in ipairs(am:GetDescendants()) do
if not ao:IsA("BasePart") then continue end
local ch = ao.Position - cg
local q = ch.Magnitude
if q > 600 then continue end
local ed = bq[ao]
local x
if ed and (al - ed.time) < hw then
x = ed.result
else
x = workspace:Raycast(cg, ch, ca)
bq[ao] = {result = x, time = al}
end
local an
if x == nil then
an = q
elseif x.Instance and x.Instance:IsDescendantOf(am) then
an = q * 0.5
else
an = q * 999
end
if an < fz then
fz = an
ec = (x and x.Instance and x.Instance:IsDescendantOf(am)) and x.Position or ao.Position
end
end
for p in pairs(bq) do
if not p.Parent then bq[p] = nil end
end
cv = fy.Position
cw = ec
dr = al
return ec
end
local function jk(de)
if ai then ai:Disconnect(); ai = nil end
if not de then return end
ai = de.Activated:Connect(function()
if cp then return end
cp = true
local c = de.Parent
local k = c and c:FindFirstChild("HumanoidRootPart")
local h = c and c:FindFirstChildOfClass("Humanoid")
if not k or not h or h.Health <= 0 then cp = false return end
local df = h:LoadAnimation(de:FindFirstChildOfClass("Animation") or Instance.new("Animation"))
df:Play()
local ee = OverlapParams.new()
ee.FilterDescendantsInstances = {c}
ee.FilterType = Enum.RaycastFilterType.Exclude
local ae = Instance.new("Part")
ae.Size = Vector3.new(cq, cq, cq)
ae.Shape = Enum.PartType.Ball
ae.CFrame = k.CFrame * CFrame.new(0, 0, -(cq / 2))
ae.Anchored = true; ae.CanCollide = false; ae.Transparency = 1
ae.Parent = workspace
local dx = workspace:GetPartsInPart(ae, ee)
ae:Destroy()
local ga = {}
for _, ao in ipairs(dx) do
local ad = ao:FindFirstAncestorOfClass("Model")
if ad and not ga[ad] then
local ef = ad:FindFirstChildOfClass("Humanoid")
if ef and ef.Health > 0 then
ga[ad] = true
ef:TakeDamage(he)
end
end
end
task.delay(hd, function() cp = false end)
end)
end
local function gb()
o = af.Character
if not o then return false end
w = o:FindFirstChildOfClass("Humanoid")
j = o:FindFirstChild("HumanoidRootPart")
return w ~= nil and j ~= nil
end
local function eg()
task.wait(0.2)
if not gb() then return end
local t = af.Backpack:FindFirstChildOfClass("Tool")
if t then w:EquipTool(t); jk(t) end
end
local function gc()
if ah then ah:Disconnect(); ah = nil end
if not o then return end
local t = o:FindFirstChildOfClass("Tool")
if not t then return end
ah = t.Unequipped:Connect(function()
if aq then eg() end
end)
end
local function jl()
if not j then return nil end
local g = j:FindFirstChild("_SFGyro")
if not g then
g = Instance.new("BodyGyro")
g.Name = "_SFGyro"
g.MaxTorque = Vector3.new(0, 4e5, 0)
g.P = 8e4; g.D = 400
g.CFrame = j.CFrame
g.Parent = j
end
return g
end
local function jm()
if j then
local g = j:FindFirstChild("_SFGyro")
if g then g:Destroy() end
end
end
local function gd()
if not j then return nil end
local ge, cd = nil, math.huge
for _, p in ipairs(en:GetPlayers()) do
if p ~= af and p.Character then
local gf = p.Character:FindFirstChild("HumanoidRootPart")
local gg = p.Character:FindFirstChildOfClass("Humanoid")
if gf and gg and gg.Health > 0 then
local d = (gf.Position - j.Position).Magnitude
if d < cd then cd = d; ge = p.Character end
end
end
end
return ge
end
local function jn(f)
if not aq then return end
if not o or not j or not w then return end
local gh = gd()
if not gh then return end
local eh = gh:FindFirstChild("HumanoidRootPart")
if not eh then return end
bz = bz - f
if bz <= 0 then
bz = id
local gi = Vector3.new(eh.Position.X - j.Position.X, 0, eh.Position.Z - j.Position.Z)
local ci = gi.Magnitude > 0 and gi.Unit or Vector3.new(0,0,1)
local dg = ci:Cross(Vector3.new(0,1,0))
local cj = m(ie)
local aa
if cj == "left" then aa = -dg
elseif cj == "right" then aa = dg
elseif cj == "forward" then aa = ci
elseif cj == "back" then aa = -ci
elseif cj == "diag_fl" then aa = (ci - dg)
else aa = (ci + dg) end
if aa.Magnitude > 0.01 then aa = aa.Unit end
dt = fq(aa, e(-0.12, 0.12))
end
w:Move(dt, false)
end
local function jo(f)
if not gb() then return end
local ck = gd()
if not ck then
w:Move(Vector3.new(0,0,0))
bh = nil
u = Vector3.new(0,0,0)
cr = Vector3.new(0,0,0)
au = Vector3.new(0,0,0)
dc = nil
ag = nil
return
end
local k = ck:FindFirstChild("HumanoidRootPart")
local gj = ck:FindFirstChildOfClass("Humanoid")
if not k then return end
local q = (k.Position - j.Position).Magnitude
local ei = Vector3.new(k.Position.X - j.Position.X, 0, k.Position.Z - j.Position.Z)
local n = ei.Magnitude > 0 and ei.Unit or Vector3.new(0,0,1)
local gk = Vector3.new(0,0,0)
if bh and f > 0 then gk = (k.Position - bh) / f end
bh = k.Position
u = u:Lerp(gk, hg)
local jp = f > 0 and (u - cr) / f or Vector3.new(0,0,0)
cr = u
au = au:Lerp(jp, hh)
local ej = u - n * u:Dot(n)
local jq = ej.X * n.Z - ej.Z * n.X
local gl = jq >= 0 and 1 or -1
if cs ~= 0 and gl ~= cs and ej.Magnitude > 3 then
bi = 1.0
end
cs = gl
bi = math.max(0, bi - f * hm)
local gm = Vector3.new(u.X, 0, u.Z).Magnitude
if not aw and ct > 8 and gm < ct * ho then
aw = true; bj = hn; bk = k.Position
end
ct = gm
if aw then
bj = bj - f
if bj <= 0 then aw = false; bk = nil end
end
local jr = gj and gj.FloorMaterial == Enum.Material.Air
local js = Vector3.new(0, -workspace.Gravity, 0)
local cl = iu(q)
local cm
if aw and bk then
cm = bk
else
cm = k.Position + u * cl + au * (0.5 * cl * cl)
if jr then cm = cm + js * (0.5 * cl * cl) end
end
cx = cx - f
if cx <= 0 then fp() end
local z = Vector3.new(k.CFrame.LookVector.X, 0, k.CFrame.LookVector.Z)
if z.Magnitude < 0.01 then z = -n else z = z.Unit end
local ek = Vector3.new(z.Z, 0, -z.X).Unit
if ag then
local jt = ag.X*z.Z - ag.Z*z.X
local ju = ag.X*z.X + ag.Z*z.Z
local jv = math.atan2(jt, ju)
az = az + jv
if math.abs(az) >= hx then
local jw = az > 0 and 1 or -1
az = 0
if m(ic) then
local jx = -ek
local jy = ek
local gn = jw > 0 and jx or jy
local go = k.Position + gn * e(ia, ib)
local gp = Vector3.new(go.X - j.Position.X, 0, go.Z - j.Position.Z)
ds = gp.Magnitude > 0.5 and gp.Unit or gn
bx = true
by = e(hy, hz)
end
end
end
ag = z
local gq = (-z * math.cos(ak) + ek * math.sin(ak)) * fe
local gr = Vector3.new(k.Position.X + gq.X, j.Position.Y, k.Position.Z + gq.Z)
local gs = Vector3.new(gr.X - j.Position.X, 0, gr.Z - j.Position.Z)
local gt = gs.Magnitude > 0.5 and gs.Unit or n
bt = bt - f
if br then
bs = bs - f
if bs <= 0 then br = false; bt = e(0.6, 1.8) end
elseif bt <= 0 and ig(0.20) then
br = true
bs = e(0.08, 0.22)
ff = (n + Vector3.new(m(bb) * e(0.2, 0.7), 0, 0)).Unit
end
bw = bw - f
if bv and bw <= 0 then bv = false end
by = by - f
if bx and by <= 0 then bx = false end
be = be - f
bf = bf - f
local y
if br then
y = ff
elseif bx then
y = ds
elseif bv then
local jz = Vector3.new(-n.Z, 0, n.X) * fg
y = (n * 0.5 + jz * 0.85).Unit
elseif bf > 0 and bg then
y = bg
else
bg = nil
if be <= 0 then
be = e(0.025, 0.075)
local el = m(ii)
if el == "random_angle" then
local df = e(0, math.pi * 2)
at = Vector3.new(math.cos(df), 0, math.sin(df))
elseif el == "spin" then
bv = true; bw = e(0.15, 0.45)
fg = m(bb)
at = m(fh)
else
at = m(fh)
end
if m(ik) and w.FloorMaterial ~= Enum.Material.Air then
w.Jump = true
end
if m(il) then
local gu = Vector3.new(-n.Z, 0, n.X)
bg = m(bb) > 0 and gu or -gu
bf = e(0.08, 0.38)
end
end
local ka = Vector3.new(n.Z, 0, -n.X)
local dh = n * -at.Z + ka * at.X
if dh.Magnitude > 0.01 then dh = dh.Unit end
local gv = math.clamp((q - 5) / 16, 0, 1)
y = dh * (1 - gv) + gt * gv
if y.Magnitude > 0.01 then y = y.Unit end
end
local gw = Vector3.new(u.X, 0, u.Z)
if gw.Magnitude > 1 and y.Magnitude > 0.1 then
local dy = gw.Unit:Dot(y)
if dy > 0.82 then
aj = aj + hp * f
else
aj = math.max(0, aj - hq * f)
end
end
if aj >= hr and not bl then
bl = true; bm = 0; aj = 0
local gx = Vector3.new(-n.Z, 0, n.X)
cu = m(bb) > 0 and gx or -gx
end
if bl then
y = cu
bm = bm + f
if bm >= e(0.25, 0.52) then bl = false; cu = nil end
end
w:Move(y, false)
bn = bn - f
if bn <= 0 and not ax then
ax = true; ay = 0
dj = e(hs, ht)
bo = m(bb) * math.rad(m(fi))
bp = m(ij)
bn = e(ew, ex)
end
if ax then
ay = ay + f
if ay >= dj then
ax = false
if bp > 0 then
bp = bp - 1
ax = true; ay = 0
dj = e(0.04, 0.13)
bo = m(bb) * math.rad(m(fi))
else
bo = 0
end
end
end
cc = cc - f
if cc <= 0 then
fo()
cc = e(fm, fn)
end
local kb = ji(j.Position, ck, k) or k.Position
local kc = cm - k.Position
local kd = kb + kc
iz(tick(), ck)
local _, gy = fs(io, j.Position, dc, kd, u, au, gt, 1)
dc = gy
local ke = math.min(1, iv(q) + bi * 0.45)
local gz = CFrame.lookAt(j.Position, j.Position + gy * 10)
if not av then av = gz end
av = av:Lerp(gz, ke)
local kf, kg = iw(f)
local kh = av * CFrame.Angles(kg, kf + bo, 0)
local ha = jl()
if ha then ha.CFrame = kh end
if ei.Magnitude <= hf then
local em = o:FindFirstChildOfClass("Tool")
if em and em.Parent == o then
pcall(function() em:Activate() end)
end
end
gc()
end
local function ki()
bh = nil
u = Vector3.new(0,0,0)
cr = Vector3.new(0,0,0)
au = Vector3.new(0,0,0)
cs = 0; bi = 0
aw = false; bj = 0; bk = nil
ct = 0
aj = 0; bl = false; cu = nil; bm = 0
bf = 0; bg = nil
bn = e(ew, ex)
ax = false; bo = 0; ay = 0; bp = 0
cv = nil; cw = nil; dr = 0
bq = {}
av = nil
ac = 0
cc = e(fm, fn)
fo()
fp()
br = false; bs = 0; bt = 0
bv = false; bw = 0
dc = nil
dw = 0
ag = nil; az = 0
bx = false; ds = nil; by = 0
bz = 0; dt = Vector3.new(0,0,0)
end
local function kj(cn)
aq = cn
l.Text = cn and "AI: ON" or "AI: OFF"
l.BackgroundColor3 = cn and Color3.fromRGB(0,170,70) or Color3.fromRGB(35,35,35)
co.Color = cn and Color3.fromRGB(0,220,90) or Color3.fromRGB(80,80,80)
be = 0
ki()
if cn then
ep:Disable()
eg()
if ar then ar:Disconnect() end
ar = eo.Heartbeat:Connect(function(f)
if not aq then return end
pcall(jo, f)
end)
if as then as:Disconnect() end
as = eo.Heartbeat:Connect(function(f)
pcall(jn, f)
end)
else
if ar then ar:Disconnect(); ar = nil end
if as then as:Disconnect(); as = nil end
if ah then ah:Disconnect(); ah = nil end
if ai then ai:Disconnect(); ai = nil end
ep:Enable()
jm()
if w then w:Move(Vector3.new(0,0,0)) end
end
end
l.MouseButton1Click:Connect(function() kj(not aq) end)
af.CharacterAdded:Connect(function(c)
o = c
w = c:WaitForChild("Humanoid")
j = c:WaitForChild("HumanoidRootPart")
if aq then
task.wait(0.05)
eg()
gc()
end
end)
if af.Character then
o = af.Character
w = o:FindFirstChildOfClass("Humanoid")
j = o:FindFirstChild("HumanoidRootPart")
endNo comments yet for this script.



