
KeylessUniversal

local char = game:GetService("Players").LocalPlayer.Character
function isthere(folder)
local a ={}
for i,v in pairs(workspace:GetChildren()) do
if v:IsA("Folder") and v.Name == folder then
table.insert(a, v)
end
end
if#a==0 then
return false
else
return true
end
end
local Filter1
if isthere("Filter") == false then
local Filter = Instance.new("Folder", workspace)
Filter.Name = "Filter"
Filter1 = Filter
else
Filter1 = workspace:WaitForChild("Filter")
end
local Map1
if isthere("Map") == false then
local Map = Instance.new("Folder", workspace)
Map.Name = "Map"
Map1 = Map
else
Map1 = workspace:WaitForChild("Map")
end
local ActivePlayers1
if isthere("ActivePlayers") == false then
local ActivePlayers = Instance.new("Folder", workspace)
ActivePlayers.Name = "ActivePlayers"
ActivePlayers1 = ActivePlayers
else
ActivePlayers1 = workspace:WaitForChild("ActivePlayers")
end
Grips = {
Up = CFrame.new(0, 0, -1.70000005, 0, 0, 1, 1, 0, 0, 0, 1, 0),
Out = CFrame.new(0, 0, -1.70000005, 0, 1, 0, 1, -0, 0, 0, 0, -1)
};
-------- coroutine ---
coroutine.wrap(function()
while task.wait(1) do
for i,v in pairs(game:GetService("Workspace"):GetDescendants()) do
if v:IsA("Humanoid") and v.Parent:IsA("Model") then
v.Parent.Parent = workspace.ActivePlayers
end
end
end
end)()
-----------
--------- FUNCTIONS -------------------
function FindBestAngle(p1, p2, p3)
local v1 = RaycastParams.new();
v1.FilterType = Enum.RaycastFilterType.Blacklist;
v1.FilterDescendantsInstances = { p1, workspace.Filter, p3, table.unpack(p2.Humanoid:GetAccessories()), workspace.Map };
local v2 = {};
table.insert(v2, { workspace:Raycast(p1["Right Arm"].Position, p1.PrimaryPart.CFrame.LookVector * 10, v1), 0 });
table.insert(v2, { workspace:Raycast(p1["Right Arm"].Position, (p1.PrimaryPart.CFrame * CFrame.Angles(0, -0.017453292519943295, 0)).LookVector.Unit * 10, v1), -1 });
table.insert(v2, { workspace:Raycast(p1["Right Arm"].Position, (p1.PrimaryPart.CFrame * CFrame.Angles(0, 0.017453292519943295, 0)).LookVector.Unit * 10, v1), 1 });
table.insert(v2, { workspace:Raycast(p1["Right Arm"].Position, (p1.PrimaryPart.CFrame * CFrame.Angles(0, 0.03490658503988659, 0)).LookVector.Unit * 10, v1), 2 });
table.insert(v2, { workspace:Raycast(p1["Right Arm"].Position, (p1.PrimaryPart.CFrame * CFrame.Angles(0, -0.03490658503988659, 0)).LookVector.Unit * 10, v1), -2 });
workspace.Filter:ClearAllChildren();
local v3 = math.huge;
local v4 = 0;
for v5, v6 in pairs(v2) do
if v6[1] then
local l__Magnitude__7 = (p1["Right Arm"].Position - v6[1].Position).Magnitude;
if l__Magnitude__7 < v3 then
v3 = l__Magnitude__7;
v4 = v6[2];
local l__Position__8 = v6.Position;
end;
end;
end;
return v4;
end;
function GetClosestPart(p7, p8)
local v7 = nil;
local v8 = math.huge;
for v9, v10 in pairs(p8:GetChildren()) do
if v10:IsA("BasePart") then
local v11 = Vector3.new(0, 0, 0);
if v10.Name == "Right Arm" then
v11 = p8.PrimaryPart.CFrame.LookVector * 3;
end;
local l__Magnitude__12 = (p7 - (v10.Position + v11)).Magnitude;
if l__Magnitude__12 < v8 then
v8 = l__Magnitude__12;
v7 = v10;
end;
end;
end;
return v7;
end
function GetDistance(p5, p6)
return (p5.PrimaryPart.Position - p6.PrimaryPart.Position).Magnitude;
end
function GetClosestEnemy(p4)
local v2 = nil;
local v3 = math.huge;
for v4, v5 in pairs(workspace.ActivePlayers:GetChildren()) do
if v5 ~= p4 then
local l__Magnitude__6 = (v5.PrimaryPart.Position - p4.PrimaryPart.Position).Magnitude;
if l__Magnitude__6 < v3 then
v3 = l__Magnitude__6;
v2 = v5;
end;
end;
end;
return v2;
end
function GetRetreatDirection(p9, p10, p11)
local v13 = p9.PrimaryPart.Position - p10.PrimaryPart.Position;
local v14 = RaycastParams.new();
v14.FilterType = Enum.RaycastFilterType.Blacklist;
v14.FilterDescendantsInstances = { workspace.ActivePlayers };
local v15 = -135;
local v16 = 0;
local v17 = nil;
for v18 = 1, 10 do
local v19 = workspace:Raycast(p9.PrimaryPart.Position, (CFrame.lookAt(p9.PrimaryPart.Position, p9.PrimaryPart.Position + v13) * CFrame.Angles(0, math.rad(v15), 0)).LookVector * p11, v14);
if v19 then
local l__Magnitude__20 = (v19.Position - p10.PrimaryPart.Position).Magnitude;
if v16 < l__Magnitude__20 then
v17 = v19.Position;
v16 = l__Magnitude__20;
end;
end;
v15 = v15 + 27;
end;
return v17;
end
function SideCast(p12)
local v21 = RaycastParams.new();
v21.FilterType = Enum.RaycastFilterType.Blacklist;
v21.FilterDescendantsInstances = { workspace.ActivePlayers };
local v22 = 0;
for v23 = 1, 10 do
local v24 = workspace:Raycast(p12.PrimaryPart.Position, (p12.PrimaryPart.CFrame * CFrame.Angles(0, math.rad(v22), 0)).LookVector * 8, v21);
v22 = v22 + 36;
if v24 then
return v24;
end;
end;
end
----------------------- AI CODE
function Ai(p1)
local l__Humanoid__7 = p1.Humanoid;
local l__PrimaryPart__8 = p1.PrimaryPart;
local v9 = p1:FindFirstChildOfClass("Tool");
if not v9 then
while true do
v9 = p1:FindFirstChildOfClass("Tool");
wait();
if v9 then
break;
end;
end;
end;
local v10 = 0;
local v11 = 0;
local v12 = 0;
local v13 = false;
while p1.PrimaryPart and l__Humanoid__7.Health > 0 do
v10 = v10 + game:GetService("RunService").RenderStepped:Wait();
local v14 = GetClosestEnemy(p1);
if v14 and v14.Humanoid.Health > 0 then
local v15 = GetClosestPart(v9.Handle.Position, v14);
local v16 = v14:FindFirstChildOfClass("Tool");
local v17 = false;
if v16 and v16.Grip == Grips.Out then
if v13 == false then
v12 = v10;
end;
v13 = true;
end;
if v9.Grip ~= Grips.Out then
v17 = true;
end;
local v18 = v14.Humanoid.Health < p1.Humanoid.Health;
local l__Position__19 = p1.PrimaryPart.Position;
local l__Position__20 = v14.PrimaryPart.Position;
local v21 = math.sqrt((l__Position__19.X - l__Position__20.X) ^ 2 + (l__Position__19.Z - l__Position__20.Z) ^ 2);
local v22 = GetDistance(p1, v14);
local v23 = math.abs(v14.PrimaryPart.Position.Y - p1.PrimaryPart.Position.Y) < 3;
local l__Position__24 = v14.PrimaryPart.Position;
if v13 and v17 and v23 and v22 > 6 and v16 then
local l__Position__25 = l__PrimaryPart__8.Position;
local v26 = v16.Handle.Position + v14.PrimaryPart.CFrame.LookVector * v16.Handle.Size.Y * 2.2;
p1:SetPrimaryPartCFrame(CFrame.lookAt(l__Position__25, v26 - Vector3.new(0, v26.Y - l__Position__25.Y, 0)) * CFrame.Angles(0, 0.30543261909900765, 0));
else
if v9.Parent ~= p1 then
p1:EquipTool(v9)
end;
v9.Parent = p1;
p1:SetPrimaryPartCFrame(CFrame.lookAt(l__PrimaryPart__8.Position, v15.Position - Vector3.new(0, v15.Position.Y - l__PrimaryPart__8.Position.Y, 0)) * CFrame.Angles(0, 0.30543261909900765, 0));
local v27 = 0;
local v28 = v27;
for v29 = 1, 10 do
v27 = v27 + FindBestAngle(p1, v14, v16);
if v28 == v27 then
if v18 then
local v30 = v27 + math.random(-10, 10);
else
v30 = v27 + math.random(-2, 2);
end;
p1:SetPrimaryPartCFrame(CFrame.lookAt(l__PrimaryPart__8.Position, v15.Position - Vector3.new(0, v15.Position.Y - l__PrimaryPart__8.Position.Y, 0)) * CFrame.Angles(0, math.rad(17.5 + v30), 0));
break;
end;
v28 = v27;
p1:SetPrimaryPartCFrame(CFrame.lookAt(l__PrimaryPart__8.Position, v15.Position - Vector3.new(0, v15.Position.Y - l__PrimaryPart__8.Position.Y, 0)) * CFrame.Angles(0, math.rad(17.5 + v27), 0));
end;
end;
local v31 = ((p1.PrimaryPart.Position - v14.PrimaryPart.Position).Unit - v14.Humanoid.MoveDirection).Magnitude < 1;
if v13 then
local v32 = 8;
else
v32 = 7;
end;
if v31 then
local v33 = 2;
else
v33 = 0;
end;
local v34 = v32 + v33;
if v9.Enabled and v9.Grip == Grips.Up then
v11 = v10;
end;
if v16 and not v16.Enabled and v10 - v12 > 0.1 and not (v10 - v12 < 0.2) and v10 - v11 > 0.05 then
v34 = v34 - 2;
end;
if v10 - v11 > 0.5 then
v34 = v34 + 2;
end;
if v21 < 15 then
v9:Activate();
end;
if v22 > 8 and p1.Humanoid.Health < v14.Humanoid.Health then
v34 = v34 + 10;
end;
local v35 = -v14.PrimaryPart.CFrame.RightVector;
if v18 and v23 then
v35 = v35 * 3;
v34 = 2;
end;
if SideCast(v14) or v9.Grip == Grips.Up then
v35 = Vector3.new(0, 0, 0);
end;
local v36 = l__Position__24 - (l__Position__24 - l__PrimaryPart__8.Position).Unit * v34 + v35;
if v18 then
end;
if v22 < v34 then
if GetRetreatDirection(p1, v14, 10) and v31 then
l__Humanoid__7:MoveTo((GetRetreatDirection(p1, v14, 100)));
else
l__Humanoid__7:MoveTo(v36);
end;
else
l__Humanoid__7:MoveTo(v36);
end;
end;
end;
end;
------------------------
Ai(char)



Is this purpose to be a gui or something because nothing happens
Yo can someone respond with a guide on how to consistently get it too work it works sometimes then the next its just broken
can you make a kill aura for Wave Sword Bots Game? And also anti cheat
it doesnt work it only moves my character no moving but changing it to like camera on different side my character it doesnt do anything else