I need to do a wind limit, to where location maximum he can drag (not suck, dragging, suck comming soon), and only the positive X maximum is working, it's not dragging to his center the negative X position and Z position.
The maximum wind to drag is the maxd, accordding the fujita escale.
local force = script.Parent.Parent.Configuration:FindFirstChild("Fujita escale") if force.Value == 0 then local wind = 4 else local wind = force.Value * 100 end script.Parent.Mesh.Scale = Vector3.new((wind * 10) + 700,script.Parent.Mesh.Scale.Y, "-"..(wind * 10) + 700) local maxd = wind / 2 local maxs = wind / 3 contagemdesons = wind / 10 local atual = 1 repeat local clone = script.Tornadowinds:clone() clone.Parent = script.Parent local atual = atual + 1 wait() until contagemdesons - 1 < atual script.Tornadowinds:remove() script.Parent.Sounds.Disabled = false script.Parent.Spin.Disabled = false local childlist = {} local force = script.Parent.Parent.Configuration:FindFirstChild("Fujita escale") if force.Value == 0 then local wind = 25 else local wind = force.Value * 100 end local maxd = wind / 2 local maxs = wind /3 function addlist(child) if child.ClassName == "CornerWedgePart" or child.ClassName == "Flag" or child.ClassName == "FlagStand" or child.ClassName == "Part" or child.ClassName == "Seat" or child.ClassName == "SkateboardPlatform" or child.ClassName == "SpawnLocation" or child.ClassName == "TrussPart" or child.ClassName == "VehicleSeat" or child.ClassName == "WedgePart" then childlist[#childlist + 1] = child end end function getAllChildren(place,table_) for i,v in pairs(place:GetChildren()) do table_[#table_ + 1] = v getAllChildren(v, table_) end end local children = {} getAllChildren(game.Workspace, children) for i = 1, #children do addlist(children[i]) end game.Workspace.ChildAdded:connect(addlist) while true do for i = 1,#childlist do if (((childlist[i].Position.X < (script.Parent.Position.X + maxd) + 1) and (childlist[i].Position.X > (script.Parent.Position.X - maxd) - 1)) and ((childlist[i].Position.Z < (script.Parent.Position.Z + maxd) + 1) and (childlist[i].Position.Z > ((script.Parent.Position.Z - maxd)) - 1))) and (script.Parent.Position.Y - (script.Parent.Size.Y / 2) < childlist[i].Position.Y and script.Parent.Position.Y + (script.Parent.Size.Y / 2) > childlist[i].Position.Y) then --Here is the limit detector, Z and X negative is not working if childlist[i]:FindFirstChild("dragged") == nil then local peso = Instance.new("NumberValue") peso.Parent = childlist[i] peso.Name = "peso" local peso = peso.Value if childlist[i].Material == Enum.Material.Brick then peso = (childlist[i].Size.X + childlist[i].Size.Y + childlist[i].Size.Z) * 43 end if childlist[i].Material == Enum.Material.Concrete then peso = (childlist[i].Size.X + childlist[i].Size.Y + childlist[i].Size.Z) * 50 end if childlist[i].Material == Enum.Material.CorrodedMetal then peso = (childlist[i].Size.X + childlist[i].Size.Y + childlist[i].Size.Z) * 18 end if childlist[i].Material == Enum.Material.DiamondPlate then peso = (childlist[i].Size.X + childlist[i].Size.Y + childlist[i].Size.Z) * 15 end if childlist[i].Material == Enum.Material.Fabric then peso = (childlist[i].Size.X + childlist[i].Size.Y + childlist[i].Size.Z) * 18 end if childlist[i].Material == Enum.Material.Foil then peso = (childlist[i].Size.X + childlist[i].Size.Y + childlist[i].Size.Z) * 24 end if childlist[i].Material == Enum.Material.Granite then peso = (childlist[i].Size.X + childlist[i].Size.Y + childlist[i].Size.Z) * 3 end if childlist[i].Material == Enum.Material.Grass then peso = (childlist[i].Size.X + childlist[i].Size.Y + childlist[i].Size.Z) * 7 end if childlist[i].Material == Enum.Material.Ice then peso = (childlist[i].Size.X + childlist[i].Size.Y + childlist[i].Size.Z) * 24 end if childlist[i].Material == Enum.Material.Marble then peso = (childlist[i].Size.X + childlist[i].Size.Y + childlist[i].Size.Z) * 9 end if childlist[i].Material == Enum.Material.Pebble then peso = (childlist[i].Size.X + childlist[i].Size.Y + childlist[i].Size.Z) * 5 end if childlist[i].Material == Enum.Material.Plastic then peso = (childlist[i].Size.X + childlist[i].Size.Y + childlist[i].Size.Z) * 2 end if childlist[i].Material == Enum.Material.Sand then peso = (childlist[i].Size.X + childlist[i].Size.Y + childlist[i].Size.Z) * 5 end if childlist[i].Material == Enum.Material.Slate then peso = (childlist[i].Size.X + childlist[i].Size.Y + childlist[i].Size.Z) * 24 end if childlist[i].Material == Enum.Material.SmoothPlastic then peso = (childlist[i].Size.X + childlist[i].Size.Y + childlist[i].Size.Z) end if childlist[i].Material == Enum.Material.Wood then peso = (childlist[i].Size.X + childlist[i].Size.Y + childlist[i].Size.Z) * 3 end if wind - (((((script.Parent.Position.X + script.Parent.Position.Z) / 2)) - maxd)) > peso or human ~= nil then local human = childlist[i].Parent:FindFirstChild("Head") local dragger = Instance.new("BodyPosition") dragger.Name = "dragged" dragger.position = Vector3.new(script.Parent.Position) dragger.maxForce = Vector3.new(wind * 100, 0, wind * 100) dragger.Parent = childlist[i] --if peso < wind - ((childlist[i].Position.X - childlist[i].Position.Z) - (script.Parent.Position.X + script.Parent.Position.Z)) then -- i put in it for disable for some time local seat = childlist[i].Parent:GetChildren() local tem = childlist[i].Parent:FindFirstChild("VehicleSeat") if human == nil and tem == nil then childlist[i]:BreakJoints() end --end end end end end wait() -- i can only put wait() here, putting one end up will do the tornado suck 1 per time, and will be bad... :P end