SoybeenJoin Date: 2010-02-17 Post Count: 21462 |
I think my place has been infected by a 4D Being script. Essentially it clones itself into every model in my place, and I cannot find where it lives to remove it.
All research I've done on the "4D Being" led to a dead end.
Could someone who's dealt with the 4D being, or knows what it is, give me pointers on how best to combat it? |
|
cntkillmeJoin Date: 2008-04-07 Post Count: 49450 |
It's a script that is cloning it.
Run this and see what doesn't look right (in studio)
local scripts = {}
function a(b)
for i,v in next, b:GetChildren() do
if v:IsA("BaseScript") then scripts[#scripts + 1] = v:GetFullName() end
a(v)
end
end
for i,v in next, scripts do
print(i .. ")", v)
end |
|
cntkillmeJoin Date: 2008-04-07 Post Count: 49450 |
Forgot to call it...
local scripts = {}
function a(b)
for i,v in next, b:GetChildren() do
if v:IsA("BaseScript") then scripts[#scripts + 1] = v:GetFullName() end
a(v)
end
end
a(workspace)
for i,v in next, scripts do
print(i .. ")", v)
end |
|
SoybeenJoin Date: 2010-02-17 Post Count: 21462 |
I assume you wanted me to put that code in a script, inside of the Workspace.
It didn't actually print anything in the output.
If it helps, 4D Being puts something in the output. This essentially fills my output window, and it takes forever to scroll up and down.
21:26:57.066 - Workspace.Model.Script.4D Being.AntiVirus:92: attempt to call global 'ScanForViruses' (a nil value)
21:26:57.067 - Script 'Workspace.Model.Script.4D Being.AntiVirus', Line 92
21:26:57.067 - stack end
21:26:57.067 - Something unexpectedly tried to set the parent of Script to 4D Being while trying to set the parent of Script. Current parent is Model.
21:26:57.068 - Workspace.Model.Script.4D Being.AntiVirus:92: attempt to call global 'ScanForViruses' (a nil value)
21:26:57.068 - Script 'Workspace.Model.Script.4D Being.AntiVirus', Line 92
21:26:57.069 - stack end |
|
cntkillmeJoin Date: 2008-04-07 Post Count: 49450 |
No, just in the command bar in studio. You will see all scripts that exist in workspace, which is where it is. This should work if that didn't
local scripts = {}
function a(b)
for i,v in next, b:GetChildren() do
if v:IsA("Script") then scripts[#scripts + 1] = v:GetFullName() end
a(v)
end
end
a(workspace)
for i,v in next, scripts do
print(i, "=", v)
end |
|
SoybeenJoin Date: 2010-02-17 Post Count: 21462 |
Oh thank you. I actually didn't see the second post you made when I replied to the first one.
I'll search through and see if anything looks fishy; thanks. |
|
SoybeenJoin Date: 2010-02-17 Post Count: 21462 |
Found something already:
127) Workspace.Model.4D Being.Script
128) Workspace.Model.4D Being.Script.4D Being.Wildfire
129) Workspace.Model.4D Being.Script.4D Being.AntiVirus
130) Workspace.4D Being.Script
131) Workspace.4D Being.Script.4D Being.Wildfire
132) Workspace.4D Being.Script.4D Being.AntiVirus
The only problem is that I have dozens and dozens of models in the Workspace with the name "Model". It would take me hours to find this particular one.
How could I remove these 6 items by using the Command Bar? |
|
cntkillmeJoin Date: 2008-04-07 Post Count: 49450 |
Here:
local scripts = {}
function a(b)
for i,v in next, b:GetChildren() do
if v:IsA("Script") then scripts[#scripts + 1] = v:GetFullName() end
a(v)
end
end
a(workspace)
for i = 127, 132 do
scripts[i]:Destroy()
end
for i,v in next, scripts do
print(i, "=", v)
end |
|
SoybeenJoin Date: 2010-02-17 Post Count: 21462 |
21:45:31.295 - local scripts = {}
function a(b)
for i,v in next, b:GetChi:12: attempt to call method 'Destroy' (a nil value)
21:45:31.295 - Script 'local scripts = {}
function a(b)
for i,v in next, b:GetChi', Line 12
21:45:31.296 - stack end |
|
cntkillmeJoin Date: 2008-04-07 Post Count: 49450 |
Just do this:
local scripts = {}
function a(b)
for i,v in next, b:GetChildren() do
if v:IsA("Script") then scripts[#scripts + 1] = v:GetFullName() end
a(v)
end
end
a(workspace)
for i,v in next, scripts do
if v.Name:find("4D") then v:Destroy() else
print(i, "=", v) end
end |
|
SoybeenJoin Date: 2010-02-17 Post Count: 21462 |
I've put that in the output, but unfortunately it's giving me an error:
21:50:49.910 - local scripts = {}
function a(b)
for i,v in next, b:GetChi:12: attempt to index field 'Name' (a nil value)
21:50:49.911 - Script 'local scripts = {}
function a(b)
for i,v in next, b:GetChi', Line 12
21:50:49.911 - stack end |
|
cntkillmeJoin Date: 2008-04-07 Post Count: 49450 |
Oops, just realized why
local scripts = {}
function a(b)
for i,v in next, b:GetChildren() do
if v:IsA("Script") then scripts[#scripts + 1] = v end
a(v)
end
end
a(workspace)
for i,v in next, scripts do
if v.Name:find("4D") then v:Destroy() else
print(i, "=", v:GetFullName()) end
end |
|
|
|
SoybeenJoin Date: 2010-02-17 Post Count: 21462 |
@Cntkill:
I've tried that, and it did not give me an error in the output, however it didn't remove the 4D Being.
I think there's more to it than meets the eye. |
|
cntkillmeJoin Date: 2008-04-07 Post Count: 49450 |
It was meant to remove the scripts. Here:
local scripts = {}
function a(b)
for i,v in next, b:GetChildren() do
if v.Name:find("4D") then v:Destroy() end
a(v)
end
end
a(workspace) |
|
SoybeenJoin Date: 2010-02-17 Post Count: 21462 |
Beautiful! This works as far as I can tell.
Thank you Cntkillme for your large help.
-- Soybeen |
|
mjgh06Join Date: 2013-07-01 Post Count: 38 |
I know I am late on this but wanted to add some info -
I have been using a lot of free models and most have viruses written in them - 4D, You Got Owned, Infected, even a Vaccine virus etc.... I have learned to go to Studio and open the starter Flat Terrain. There I check one model at a time before ever using it in my place. There it is easy to check - just delete all the bs and then save the model to your inventory w/o the virus scripts before using. Delete the original from your inventory so you don't use the infected one.
I know it doesn't help with yours already infected, but will help prevent it in the future. |
|
WaffloidJoin Date: 2011-07-14 Post Count: 1606 |
space = game.Workspace
function KillViruses(names)
if names == nil then
names = {"Virus";"Vaccine","AntiVirus";"Fire";"N0ISE";"[N0ISESCRIPT]","Virus script.","Double Click";"Hint Script";"4D Being";"WildFire";"AI"}
end
function Recurse(part)
for i,v in pairs(part:GetChildren()) do
print(v)
for _,name in pairs(names) do
if name:lower() == v.Name:lower() then -- kills virus
v:Destroy()
end
if v then
Recurse(v)
end
end
end
end
function CheckOnCreation(Obj)
for _,name in pairs(names) do
if Obj.Name:lower() == name:lower() then
Obj:Destroy()
end
end
end
game.Workspace.ChildAdded:connect(CheckOnCreation)
Recurse(space)
space.Name = "Workspace"
end
KillViruses()
I always knew this'd come in handy.
Just put this in your game. As long as the script doesn't crash the game automatticaly using a while true do end then it'll
~Swagilitious and not Nutricious~ |
|
|
I have easy way to get rid of virus scripts.
You need to know name of virus script though.
Make sure your output window is opened.
Put this into your command bar:
game:findFirstChild("4D Being",true):Destroy()
Spam "Enter" key until it starts to return error. |
|