SHOW:
|
|
- or go back to the newest paste.
| 1 | ||
| 2 | --Converted with ttyyuu12345's model to script plugin v4 | |
| 3 | function sandbox(var,func) | |
| 4 | local env = getfenv(func) | |
| 5 | local newenv = setmetatable({},{
| |
| 6 | __index = function(self,k) | |
| 7 | if k=="script" then | |
| 8 | return var | |
| 9 | else | |
| 10 | return env[k] | |
| 11 | end | |
| 12 | end, | |
| 13 | }) | |
| 14 | setfenv(func,newenv) | |
| 15 | return func | |
| 16 | end | |
| 17 | cors = {}
| |
| 18 | mas = Instance.new("Model",game:GetService("Lighting"))
| |
| 19 | Model0 = Instance.new("Model")
| |
| 20 | Part1 = Instance.new("Part")
| |
| 21 | Script2 = Instance.new("Script")
| |
| 22 | Script3 = Instance.new("Script")
| |
| 23 | Part4 = Instance.new("Part")
| |
| 24 | Script5 = Instance.new("Script")
| |
| 25 | Script6 = Instance.new("Script")
| |
| 26 | Model0.Name = "Virus" | |
| 27 | Model0.Parent = mas | |
| 28 | Part1.Name = "Virus" | |
| 29 | Part1.Parent = Model0 | |
| 30 | Part1.BrickColor = BrickColor.new("White")
| |
| 31 | Part1.Reflectance = 0.30000001192093 | |
| 32 | Part1.Rotation = Vector3.new(-27.9899998, 36.0999985, 27.0699997) | |
| 33 | Part1.RotVelocity = Vector3.new(-6.34935331, 5.27814245, -3.93103671) | |
| 34 | Part1.Velocity = Vector3.new(-4.65570545, -4.12282896, -6.32679892) | |
| 35 | Part1.FormFactor = Enum.FormFactor.Symmetric | |
| 36 | Part1.Shape = Enum.PartType.Ball | |
| 37 | Part1.Size = Vector3.new(1, 1, 1) | |
| 38 | Part1.CFrame = CFrame.new(-24.7388802, 0.50001502, -52.1741333, 0.719474196, -0.367776006, 0.589150012, 0.155742109, 0.912116408, 0.379193962, -0.676831782, -0.181064844, 0.713522434) | |
| 39 | Part1.BottomSurface = Enum.SurfaceType.Smooth | |
| 40 | Part1.TopSurface = Enum.SurfaceType.Smooth | |
| 41 | Part1.Color = Color3.new(0.94902, 0.952941, 0.952941) | |
| 42 | Part1.Position = Vector3.new(-24.7388802, 0.50001502, -52.1741333) | |
| 43 | Part1.Orientation = Vector3.new(-22.2799988, 39.5499992, 9.68999958) | |
| 44 | Part1.Color = Color3.new(0.94902, 0.952941, 0.952941) | |
| 45 | Script2.Name = "VirusScript" | |
| 46 | Script2.Parent = Part1 | |
| 47 | table.insert(cors,sandbox(Script2,function() | |
| 48 | wait(1) | |
| 49 | coroutine.resume(coroutine.create(function() | |
| 50 | ||
| 51 | end)) | |
| 52 | ||
| 53 | script.Parent.Touched:connect(function(hit) | |
| 54 | if hit == nil then return end | |
| 55 | if hit.Parent == nil or hit.Name == "Virus" or hit:FindFirstChild("InfectedScript") ~= nil then return end
| |
| 56 | local s = script.InfectedScript:clone() | |
| 57 | local t = script:clone() | |
| 58 | t.Disabled = true | |
| 59 | t.Parent = s | |
| 60 | s.Disabled = false | |
| 61 | s.Parent = hit | |
| 62 | script.Parent:Remove() | |
| 63 | end) | |
| 64 | ||
| 65 | function attack(what) | |
| 66 | while what ~= nil and what:FindFirstChild("InfectedScript") == nil and what.Parent ~= nil do
| |
| 67 | script.Parent.CFrame = CFrame.new(script.Parent.Position,what.Position) | |
| 68 | script.Parent.Velocity = script.Parent.CFrame.lookVector*20 | |
| 69 | wait(0.1) | |
| 70 | end | |
| 71 | GetTarget() | |
| 72 | end | |
| 73 | ||
| 74 | function find(w) | |
| 75 | if #w:GetChildren() == 0 then return end | |
| 76 | for _,v in pairs(w:GetChildren()) do | |
| 77 | if v.Name ~= "Virus" and v:FindFirstChild("VirusScript") == nil then
| |
| 78 | if v.className == "Part" then | |
| 79 | table.insert(a,v) | |
| 80 | end | |
| 81 | find(v) | |
| 82 | end | |
| 83 | end | |
| 84 | end | |
| 85 | ||
| 86 | function GetTarget() | |
| 87 | a = {}
| |
| 88 | find(game.Workspace) | |
| 89 | ||
| 90 | if #a == 0 then script.Parent:Remove() script.Disabled = true end | |
| 91 | ||
| 92 | min = 99999 | |
| 93 | target = nil | |
| 94 | ||
| 95 | for _,v in pairs(a) do | |
| 96 | if (script.Parent.Position-v.Position).magnitude < min and v.Name ~= "Virus" and v:FindFirstChild("InfectedScript") == nil then
| |
| 97 | min = (script.Parent.Position-v.Position).magnitude | |
| 98 | target = v | |
| 99 | end | |
| 100 | end | |
| 101 | ||
| 102 | if target == nil then script.Parent:Remove() script.Disabled = true end | |
| 103 | ||
| 104 | attack(target) | |
| 105 | end | |
| 106 | ||
| 107 | GetTarget() | |
| 108 | ||
| 109 | end)) | |
| 110 | Script3.Name = "InfectedScript" | |
| 111 | Script3.Parent = Script2 | |
| 112 | Script3.Disabled = true | |
| 113 | table.insert(cors,sandbox(Script3,function() | |
| 114 | script.Parent.BrickColor=BrickColor.new("White")
| |
| 115 | wait(math.ceil(script.Parent.Size.magnitude)/2) | |
| 116 | ||
| 117 | function find(w) | |
| 118 | if #w:GetChildren() == 0 then return end | |
| 119 | for _,v in pairs(w:GetChildren()) do | |
| 120 | if v:FindFirstChild("InfectedScript") == nil and v:FindFirstChild("VirusScript") == nil then
| |
| 121 | if v.className == "Part" then | |
| 122 | table.insert(a,v) | |
| 123 | end | |
| 124 | find(v) | |
| 125 | end | |
| 126 | end | |
| 127 | end | |
| 128 | ||
| 129 | a = {}
| |
| 130 | find(game.Workspace) | |
| 131 | if #a == 0 then script.Parent:Remove() script.Disabled = true end | |
| 132 | ||
| 133 | num = 0 | |
| 134 | ||
| 135 | for _,v in pairs(game.Workspace:GetChildren()) do | |
| 136 | if v.Name == "Virus" and v:FindFirstChild("VirusScript") ~= nil then
| |
| 137 | num = num+1 | |
| 138 | end | |
| 139 | end | |
| 140 | ||
| 141 | if num < 20 then | |
| 142 | siz = math.ceil(script.Parent.Size.magnitude/6) | |
| 143 | if siz < 2 then siz = 2 | |
| 144 | elseif siz > 10 then siz = 10 | |
| 145 | end | |
| 146 | else | |
| 147 | siz = 1 | |
| 148 | end | |
| 149 | ||
| 150 | for i = 1, siz do | |
| 151 | local p = Instance.new("Part")
| |
| 152 | p.Name = "Virus" | |
| 153 | p.BrickColor=BrickColor.new("White")
| |
| 154 | p.Shape = "Ball" | |
| 155 | p.Reflectance = 0.3 | |
| 156 | p.BottomSurface = 0 | |
| 157 | p.TopSurface = 0 | |
| 158 | p.Size = Vector3.new(1,1,1) | |
| 159 | p.Velocity = Vector3.new(math.random(-20,20),math.random(-20,20),math.random(-20,20)) | |
| 160 | p.CFrame = CFrame.new(script.Parent.Position) | |
| 161 | ||
| 162 | local b = Instance.new("BodyForce")
| |
| 163 | b.force = Vector3.new(0,p:GetMass()*186.4,0) | |
| 164 | b.Parent = p | |
| 165 | ||
| 166 | local s = script.VirusScript:clone() | |
| 167 | s.Disabled = false | |
| 168 | s.Parent = p | |
| 169 | ||
| 170 | p.Parent = game.Workspace | |
| 171 | end | |
| 172 | ||
| 173 | script.Parent:Remove() | |
| 174 | ||
| 175 | end)) | |
| 176 | Part4.Name = "Virus" | |
| 177 | Part4.Parent = Model0 | |
| 178 | Part4.BrickColor = BrickColor.new("White")
| |
| 179 | Part4.Reflectance = 0.30000001192093 | |
| 180 | Part4.Rotation = Vector3.new(90, 90, 0) | |
| 181 | Part4.FormFactor = Enum.FormFactor.Symmetric | |
| 182 | Part4.Shape = Enum.PartType.Ball | |
| 183 | Part4.Size = Vector3.new(1, 1, 1) | |
| 184 | Part4.CFrame = CFrame.new(-25.2599964, 1.22126997, -51.6800079, 0, 0, 1, 1, 0, 0, 0, 1, 0) | |
| 185 | Part4.BottomSurface = Enum.SurfaceType.Smooth | |
| 186 | Part4.TopSurface = Enum.SurfaceType.Smooth | |
| 187 | Part4.Color = Color3.new(0.94902, 0.952941, 0.952941) | |
| 188 | Part4.Position = Vector3.new(-25.2599964, 1.22126997, -51.6800079) | |
| 189 | Part4.Orientation = Vector3.new(0, 90, 90) | |
| 190 | Part4.Color = Color3.new(0.94902, 0.952941, 0.952941) | |
| 191 | Script5.Name = "VirusScript" | |
| 192 | Script5.Parent = Part4 | |
| 193 | table.insert(cors,sandbox(Script5,function() | |
| 194 | wait(1) | |
| 195 | coroutine.resume(coroutine.create(function() | |
| 196 | ||
| 197 | end)) | |
| 198 | ||
| 199 | script.Parent.Touched:connect(function(hit) | |
| 200 | if hit == nil then return end | |
| 201 | if hit.Parent == nil or hit.Name == "Virus" or hit:FindFirstChild("InfectedScript") ~= nil then return end
| |
| 202 | local s = script.InfectedScript:clone() | |
| 203 | local t = script:clone() | |
| 204 | t.Disabled = true | |
| 205 | t.Parent = s | |
| 206 | s.Disabled = false | |
| 207 | s.Parent = hit | |
| 208 | script.Parent:Remove() | |
| 209 | end) | |
| 210 | ||
| 211 | function attack(what) | |
| 212 | while what ~= nil and what:FindFirstChild("InfectedScript") == nil and what.Parent ~= nil do
| |
| 213 | script.Parent.CFrame = CFrame.new(script.Parent.Position,what.Position) | |
| 214 | script.Parent.Velocity = script.Parent.CFrame.lookVector*20 | |
| 215 | wait(0.1) | |
| 216 | end | |
| 217 | GetTarget() | |
| 218 | end | |
| 219 | ||
| 220 | function find(w) | |
| 221 | if #w:GetChildren() == 0 then return end | |
| 222 | for _,v in pairs(w:GetChildren()) do | |
| 223 | if v.Name ~= "Virus" and v:FindFirstChild("VirusScript") == nil then
| |
| 224 | if v.className == "Part" then | |
| 225 | table.insert(a,v) | |
| 226 | end | |
| 227 | find(v) | |
| 228 | end | |
| 229 | end | |
| 230 | end | |
| 231 | ||
| 232 | function GetTarget() | |
| 233 | a = {}
| |
| 234 | find(game.Workspace) | |
| 235 | ||
| 236 | if #a == 0 then script.Parent:Remove() script.Disabled = true end | |
| 237 | ||
| 238 | min = 99999 | |
| 239 | target = nil | |
| 240 | ||
| 241 | for _,v in pairs(a) do | |
| 242 | if (script.Parent.Position-v.Position).magnitude < min and v.Name ~= "Virus" and v:FindFirstChild("InfectedScript") == nil then
| |
| 243 | min = (script.Parent.Position-v.Position).magnitude | |
| 244 | target = v | |
| 245 | end | |
| 246 | end | |
| 247 | ||
| 248 | if target == nil then script.Parent:Remove() script.Disabled = true end | |
| 249 | ||
| 250 | attack(target) | |
| 251 | end | |
| 252 | ||
| 253 | GetTarget() | |
| 254 | ||
| 255 | end)) | |
| 256 | Script6.Name = "InfectedScript" | |
| 257 | Script6.Parent = Script5 | |
| 258 | Script6.Disabled = true | |
| 259 | table.insert(cors,sandbox(Script6,function() | |
| 260 | script.Parent.BrickColor=BrickColor.new("White")
| |
| 261 | wait(math.ceil(script.Parent.Size.magnitude)/2) | |
| 262 | ||
| 263 | function find(w) | |
| 264 | if #w:GetChildren() == 0 then return end | |
| 265 | for _,v in pairs(w:GetChildren()) do | |
| 266 | if v:FindFirstChild("InfectedScript") == nil and v:FindFirstChild("VirusScript") == nil then
| |
| 267 | if v.className == "Part" then | |
| 268 | table.insert(a,v) | |
| 269 | end | |
| 270 | find(v) | |
| 271 | end | |
| 272 | end | |
| 273 | end | |
| 274 | ||
| 275 | a = {}
| |
| 276 | find(game.Workspace) | |
| 277 | if #a == 0 then script.Parent:Remove() script.Disabled = true end | |
| 278 | ||
| 279 | num = 0 | |
| 280 | ||
| 281 | for _,v in pairs(game.Workspace:GetChildren()) do | |
| 282 | if v.Name == "Virus" and v:FindFirstChild("VirusScript") ~= nil then
| |
| 283 | num = num+1 | |
| 284 | end | |
| 285 | end | |
| 286 | ||
| 287 | if num < 20 then | |
| 288 | siz = math.ceil(script.Parent.Size.magnitude/6) | |
| 289 | if siz < 2 then siz = 2 | |
| 290 | elseif siz > 10 then siz = 10 | |
| 291 | end | |
| 292 | else | |
| 293 | siz = 1 | |
| 294 | end | |
| 295 | ||
| 296 | for i = 1, siz do | |
| 297 | local p = Instance.new("Part")
| |
| 298 | p.Name = "Virus" | |
| 299 | p.BrickColor=BrickColor.new("White")
| |
| 300 | p.Shape = "Ball" | |
| 301 | p.Reflectance = 0.3 | |
| 302 | p.BottomSurface = 0 | |
| 303 | p.TopSurface = 0 | |
| 304 | p.Size = Vector3.new(1,1,1) | |
| 305 | p.Velocity = Vector3.new(math.random(-20,20),math.random(-20,20),math.random(-20,20)) | |
| 306 | p.CFrame = CFrame.new(script.Parent.Position) | |
| 307 | ||
| 308 | local b = Instance.new("BodyForce")
| |
| 309 | b.force = Vector3.new(0,p:GetMass()*186.4,0) | |
| 310 | b.Parent = p | |
| 311 | ||
| 312 | local s = script.VirusScript:clone() | |
| 313 | s.Disabled = false | |
| 314 | s.Parent = p | |
| 315 | ||
| 316 | p.Parent = game.Workspace | |
| 317 | end | |
| 318 | ||
| 319 | script.Parent:Remove() | |
| 320 | ||
| 321 | end)) | |
| 322 | for i,v in pairs(mas:GetChildren()) do | |
| 323 | v.Parent = workspace | |
| 324 | pcall(function() v:MakeJoints() end) | |
| 325 | end | |
| 326 | mas:Destroy() | |
| 327 | for i,v in pairs(cors) do | |
| 328 | spawn(function() | |
| 329 | pcall(v) | |
| 330 | end) | |
| 331 | end |