Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
Workspace = :()
LocalPlayer = Players.LocalPlayer
Character = LocalPlayer.Character LocalPlayer.CharacterAdded:()
HRP = Character:()
MAX_BLOCKS =
DETECT_RADIUS =
WANDER_RADIUS =
INTERACT_DIST =
spawnableParts = {}
_, obj (Workspace:())
obj:() obj.CanCollide obj:(Character)
.(spawnableParts, obj)
(part)
s = part.Size *
offset = .(
.(-s.X, s.X),
.(-s.Y, s.Y),
.(-s.Z, s.Z)
)
part.Position + offset
wanderers = {}
(atPlayerPosition)
spawnPos
atPlayerPosition .() <
spawnPos = HRP.Position + .(,,)
part = spawnableParts[.(,#spawnableParts)]
spawnPos = (part)
model = .(, Workspace)
model.Name =
model:(, )
root = .(, model)
root.Name =
root.Size = .(,,)
root.CFrame = .(spawnPos)
root.Anchored =
root.CanCollide =
humanoid = .(, model)
humanoid.WalkSpeed =
humanoid.JumpPower =
model.PrimaryPart = root
humanoid.Died:(()
model:()
.(, ()
#wanderers < MAX_BLOCKS
()
)
)
.(wanderers, model)
.(()
#wanderers < MAX_BLOCKS
()
.()
)
.(()
i = #wanderers, , -
w = wanderers[i]
w.Parent w.PrimaryPart w:()
.(wanderers, i)
root = w.PrimaryPart
hum = w:()
dist = (root.Position - HRP.Position).Magnitude
dist < DETECT_RADIUS
root.CFrame = .(root.Position, HRP.Position)
hum:(HRP.Position + .(
.(-,), , .(-,)
))
wanderTarget = root.Position + .(
.(-WANDER_RADIUS,WANDER_RADIUS),
,
.(-WANDER_RADIUS,WANDER_RADIUS)
)
hum:(wanderTarget)
_, other (wanderers)
other ~= w w:()
other.PrimaryPart other:()
od = (root.Position - other.PrimaryPart.Position).Magnitude
od < INTERACT_DIST
w:(, )
other:(, )
.(()
root.CFrame = .(root.Position, other.PrimaryPart.Position)
other.PrimaryPart.CFrame = .(
other.PrimaryPart.Position,
root.Position
)
.()
w:(, )
other:(, )
)
.()
)
Pet block Simple Lag warning