Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How do i convert this from using magnitude to GetPartsInPart?

Asked by 1 year ago

How do I change this from using magnitude, to using GetPartsInPart? I need the Add functions to work when inside the part, and the remove after you exit the part.

wait(1)
local Players = game:GetService("Players")
local part = script.Parent
local PG = script:WaitForChild("PlanetGravity")
local ID = script:WaitForChild("GravityID")
local Radius = 20

if ID.Value == 0 then
    ID.Value = math.random(5000,10000)
    PG.Value = ID.Value
end

function CloneAdd(plr)
    local Gravity = plr.Character:FindFirstChild(PG.Name)
    if not Gravity and plr:DistanceFromCharacter(part.Position) < Radius then
        PG:Clone().Parent = plr.Character
    end
end


function CloneRemove(plr)
    local Gravity = plr.Character:FindFirstChild(PG.Name)
    if Gravity.Value == PG.Value and plr:DistanceFromCharacter(part.Position) > Radius  then
        Gravity:Destroy()
    end
end

--Shuttle Addition
if (_G.all_Gateships == nil) then
    _G["all_Gateships"] = {}
end
ALL = _G.all_Gateships
shared["all_Gateships"] = _G.all_Gateships

--Models Addition
if (_G.all_Models == nil) then
    _G["all_Models"] = {}
end
ALLMODELS = _G.all_Models
shared["all_Models"] = _G.all_Models

function CloneAddShuttle(shuttle)
    local Gravity = shuttle:FindFirstChild(PG.Name)
    if not Gravity and (shuttle.Engine.Position-script.parent.Position).magnitude < Radius then
        PG:Clone().Parent = shuttle
    end
end
function CloneRemoveShuttle(shuttle)
    local Gravity = shuttle:FindFirstChild(PG.Name)
    if Gravity.Value == PG.Value and (shuttle.Engine.Position-script.parent.Position).magnitude > Radius  then
        Gravity:Destroy()
    end
end

function CloneAddModel(model)
    local Gravity = model:FindFirstChild(PG.Name)
    if not Gravity and (model.Handle.Position-script.parent.Position).magnitude < Radius then
        PG:Clone().Parent = model
    end
end
function CloneRemoveModel(model)
    local Gravity = model:FindFirstChild(PG.Name)
    if Gravity.Value == PG.Value and (model.Handle.Position-script.parent.Position).magnitude > Radius  then
        Gravity:Destroy()
    end
end

while true do
    wait(0.05)      
    for _,plr in pairs(game.Players:GetPlayers()) do
        if plr.Character then
            local Gravity = plr.Character:FindFirstChild(PG.Name)
            if not Gravity and plr:DistanceFromCharacter(part.Position) < Radius then
                CloneAdd(plr)
            elseif Gravity and Gravity.Value == PG.Value and plr:DistanceFromCharacter(part.Position) > Radius  then
                CloneRemove(plr)
            end
        end
    end
    for i = 1, #ALL do
        local Gravity = ALL[i].Model:FindFirstChild(PG.Name)
        if not Gravity and (ALL[i].Model.Engine.Position-part.Position).magnitude < Radius then
            CloneAddShuttle(ALL[i].Model)
        elseif Gravity and Gravity.Value == PG.Value and (ALL[i].Model.Engine.Position-part.Position).magnitude > Radius then
            CloneRemoveShuttle(ALL[i].Model)
        end
    end
    for i = 1, #ALLMODELS do
        local Gravity = ALLMODELS[i]:FindFirstChild(PG.Name)
        if not Gravity and (ALLMODELS[i].Handle.Position-part.Position).magnitude < Radius then
            CloneAddModel(ALLMODELS[i])
        elseif Gravity and Gravity.Value == PG.Value and (ALLMODELS[i].Handle.Position-part.Position or ALLMODELS[i].Handle.Position-part.Position).magnitude > Radius then
            CloneRemoveModel(ALLMODELS[i])
        end
    end
end

Answer this question