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

Script gets stuck when firing a client remotefunction when player dies, why is this?

Asked by 3 years ago

So i am currently making a script which involves the server getting some information about the players mouse, it all works as intended until the player dies. When the player dies the script that fires the remotefunction that gives the mousedata, never gets the mousedata and just gets stuck. Does anybody know why this happens?

Here is the function in the main that needs the mousedata script:

local rs = game:GetService("ReplicatedStorage")
local remotes = rs:WaitForChild("Remotes")
local telekinesisCooldown = 3
local deBounces = {["abilityCooldown"] = false, ["toggleCooldown"] = false}

game:GetService("Players").PlayerAdded:Connect(function(plr)
    local playerFolder = Instance.new("Folder", rs:WaitForChild("ActiveAbilities"))
    playerFolder.Name = plr.Name

    local deBounceFolder = Instance.new("Folder", rs:WaitForChild("deBounce"))
    deBounceFolder.Name = plr.Name

    for debounceName, value in pairs(deBounces) do
        local deBounceBool = Instance.new("BoolValue", deBounceFolder)
        deBounceBool.Name = debounceName
    end

    local telekinesisActive = Instance.new("BoolValue", playerFolder)
    telekinesisActive.Name = script.Name
end)

local function setPos(mouseData, plr)

    repeat
        mouseData[1] = plr.PlayerGui.givemouseData:InvokeClient(plr)[1]

        if mouseData[2] ~= nil then
            mouseData[2].Position = mouseData[1]
        end

    until not rs.ActiveAbilities[mouseData[3].Name][script.Name].Value or plr.Character.Humanoid.Health <= 0

end

remotes.telekinesis.OnServerEvent:Connect(function(plr)
    local deBounce = rs.deBounce[plr.Name].abilityCooldown
    if plr.Character then
        if plr.Character.telekinesis.Value and not deBounce.Value then

            deBounce.Value = true
            local playerMouseData = plr.PlayerGui.givemouseData:InvokeClient(plr) -- This is where it gets stuck
            local partToMove = playerMouseData[2]

            print(playerMouseData[2])
            if playerMouseData[2] ~= "void" and playerMouseData[2] ~= nil then
                game:GetService("Chat"):Chat(plr.Character.Head, "Etativel", "Red")
                setPos(playerMouseData, plr)
            end

            wait(telekinesisCooldown)
            deBounce.Value = false

        end
    end
end)

And here is the localscript sending the mousedata:

local player = game:GetService("Players").LocalPlayer
local mouse = player:GetMouse()
local giveData = player.PlayerGui:WaitForChild("givemouseData")

giveData.OnClientInvoke = function()
    local mouseData = {mouse.hit.Position, mouse.Target, game:GetService("Players").LocalPlayer}
    return mouseData
end

Answer this question