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

Removing a part makes script not work?

Asked by
FiredDusk 1466 Moderation Voter
8 years ago

I have a tool in starter pack and in that tool I have a part named "Handle" also, a script that has:

r = game:service("RunService")


Tool = script.Parent

local equalizingForce = 236 / 1.2 -- amount of force required to levitate a mass
local gravity = .30 -- things float at > 1

local ghostEffect = nil
local massCon1 = nil
local massCon2 = nil


local head = nil
function recursiveGetLift(node)
    local m = 0
    local c = node:GetChildren()
    if (node:FindFirstChild("Head") ~= nil) then head = node:FindFirstChild("Head") end -- nasty hack to detect when your parts get blown off

    for i=1,#c do
        if c[i].className == "Part" then    
            if (head ~= nil and (c[i].Position - head.Position).magnitude < 10) then -- GROSS
                if c[i].Name == "Handle" then
                    m = m + (c[i]:GetMass() * equalizingForce * 1) -- hack that makes hats weightless, so different hats don't change your jump height
                else
                    m = m + (c[i]:GetMass() * equalizingForce * gravity)
                end
            end
        end
        m = m + recursiveGetLift(c[i])
    end
    return m
end


function onMassChanged(child, char)
    print("Mass changed:" .. child.Name .. "    " .. char.Name)
    if (ghostEffect ~= nil) then
        ghostEffect.force = Vector3.new(0, recursiveGetLift(char) ,0)
    end
end



function UpdateGhostState(isUnequipping)

    if isUnequipping == true then
        ghostEffect:Remove()
        ghostEffect = nil
        massCon1:disconnect()
        massCon2:disconnect()
    else
        if ghostEffect == nil then
            local char = Tool.Parent
            if char == nil then return end
            ghostEffect = Instance.new("BodyForce")
            ghostEffect.Name = "GravityCoilEffect"
            ghostEffect.force = Vector3.new(0, recursiveGetLift(char) ,0)
            ghostEffect.Parent = char.Head
            ghostChar = char
            massCon1 = char.ChildAdded:connect(function(child)  onMassChanged(child, char) end)
            massCon2 = char.ChildRemoved:connect(function(child)  onMassChanged(child, char) end)
        end
    end


end



function onEquipped()
    UpdateGhostState(false)
end

function onUnequipped()
    UpdateGhostState(true)
end


script.Parent.Equipped:connect(onEquipped)
script.Parent.Unequipped:connect(onUnequipped)

When I delete the handle, the script does not work :/

Help needed! Thanks.

1 answer

Log in to vote
2
Answered by 8 years ago

Every tool needs a handle, unless you make a tool through a script, or unless it's a hopperbin. Removing a Handle from a regular tool it almost like trying to give 100 HP to a player with no Torso.(I'm sure I'm right but Correct me if I'm wrong)

Ad

Answer this question