Ad
Log in to vote
0

attempt to index nil with 'Character'?

Asked by 7 days ago

Another day, another scripting error... I've been touching up a script for the past few days. It's supposed to weld a part onto the player that touches a hazard. This, of course, has resulted in a lot of bugs with the script. This time, the char (Character) variable doesn't want to work. whenever I step on the hazard, it plays the correct animation through the player's humanoid, but it doesn't changed the walkspeed to 0 nor does it go through with the welding functions. I am at my wit's end trying to fix this and just about to give up. Can you guys help me?

Local script (In StarterCharacter)

local puddle = game.Workspace.GooClusterMPE.Puddle
puddle.Touched:Connect(function(touch)
    local plr = game.Players:GetPlayerFromCharacter(touch.Parent)
    local char = plr.Character or plr.CharacterAdded:wait()
    if plr.Team == game.Teams.Humans then
        local animation = game.Workspace.Anims.Animation
        local animtrack = char.Humanoid:LoadAnimation(animation)
        local sound = game.Workspace.Sound
        char.Humanoid.WalkSpeed = 0
        game.Players.LocalPlayer.Team = game.Teams.Infected
        animtrack:Play()
        local repStore = game:GetService("ReplicatedStorage")
        local Human = touch.Parent
        local sound = game.Workspace.Sound
        sound:Play()
        --repStore.Transfurs.MPEGoo:FireServer(plr,char)
        char.Humanoid.WalkSpeed = 16
    end
end)
game.Players.LocalPlayer.Character.Humanoid.Died:Connect(function(touch)
    local plr = game.Players:GetPlayerFromCharacter(touch.Parent)
    plr.Team = game.Teams.Humans
end)

Server Script (In ServerScriptService)

game.ReplicatedStorage.Transfurs.MPEGoo.OnServerEvent:Connect(function(plr,char)
    local messyArmL = game.ServerStorage.MessyLimb:Clone()
    local messyArmR = game.ServerStorage.MessyLimb:Clone()
    local messyLegL = game.ServerStorage.MessyLimb:Clone()
    local messyLegR = game.ServerStorage.MessyLimb:Clone()
    local messyTorso = game.ServerStorage.MessyTorso:Clone()
    local ArmL = char["Left Arm"]
    local ArmR = char["Right Arm"]
    local LegL = char["Left Leg"]
    local LegR = char["Right Leg"]
    local Torso = char["Torso"]

    --Left Arm
    local weldAL = Instance.new("WeldConstraint")
    weldAL.Part0 = ArmL
    weldAL.Part1 = messyArmL
    weldAL.Parent = ArmL
    messyArmL.Position = ArmL.Position
    messyArmL.Orientation = ArmL.Orientation
    messyArmL.Parent = game.Workspace
    messyArmL.Color = Color3.new(1, 1, 1)
    --Right Arm
    local weldRA = Instance.new("WeldConstraint")
    weldRA.Part0 = ArmR
    weldRA.Part1 = messyArmR
    weldRA.Parent = ArmR
    messyArmR.Position = ArmR.Position
    messyArmR.Orientation = ArmR.Orientation
    messyArmR.Parent = game.Workspace
    messyArmR.Color = Color3.new(1, 1, 1)
    --Left Leg
    local weldLL = Instance.new("WeldConstraint")
    weldLL.Part0 = LegL
    weldLL.Part1 = messyLegL
    weldLL.Parent = LegL
    messyLegL.Position = LegL.Position
    messyLegL.Orientation = LegL.Orientation
    messyLegL.Parent = game.Workspace
    messyLegL.Color = Color3.new(1, 1, 1)
    --Right Arm
    local weldRL = Instance.new("WeldConstraint")
    weldRL.Part0 = LegR
    weldRL.Part1 = messyLegR
    weldRL.Parent = LegR
    messyLegR.Position = LegR.Position
    messyLegR.Orientation = LegR.Orientation
    messyLegR.Parent = game.Workspace
    messyLegR.Color = Color3.new(1, 1, 1)
    --Torso
    local weldT = Instance.new("WeldConstraint")
    weldT.Part0 = Torso
    weldT.Part1 = messyTorso
    weldT.Parent = Torso
    messyTorso.Position = Torso.Position
    messyTorso.Orientation = Torso.Orientation
    messyTorso.Parent = game.Workspace
    messyTorso.Color = Color3.new(1, 1, 1)
    --Head
    local NewHead = game.ServerStorage.massproducedgoo:Clone()
    local OldHead = char.Head
    local headweld = Instance.new("Weld")
    headweld.Parent = game.Workspace
    headweld.Part0 = OldHead
    headweld.Part1 = NewHead.Headroot
    NewHead:MoveTo(OldHead.Position)
    NewHead.Parent = game.Workspace
    OldHead.Color = Color3.new(1, 1, 1)

    messyLegL.Transparency = 1
    messyLegR.Transparency = 1
    messyTorso.Transparency = 1
    messyArmL.Transparency = 1
    messyArmR.Transparency = 1
    wait(0.25)
    messyLegL.Transparency = 0.75
    messyLegR.Transparency = 0.75
    wait(0.25)
    messyLegL.Transparency = 0.5
    messyLegR.Transparency = 0.5
    wait(0.25)
    messyLegL.Transparency = 0.25
    messyLegR.Transparency = 0.25
    wait(0.25)
    messyLegL.Transparency = 0
    messyLegR.Transparency = 0
    wait(0.1)
    messyArmL.Transparency = 0.75
    messyArmR.Transparency = 0.75
    wait(0.25)
    messyArmR.Transparency = 0.5
    messyArmL.Transparency = 0.5
    wait(0.25)
    messyArmR.Transparency = 0.25
    messyArmL.Transparency = 0.25
    wait(0.25)
    messyArmR.Transparency = 0
    messyArmL.Transparency = 0
    messyTorso.Transparency = 1
    wait(0.1)
    messyTorso.Transparency = 0.75
    wait(0.25)
    messyTorso.Transparency = 0.5
    wait(0.25)
    messyTorso.Transparency = 0.25
    wait(0.25)
    messyTorso.Transparency = 0
end)
1
1. Your FireServer is commented out, so of course it won't run. 2. You're setting the humanoid's walkspeed right back to 16 after setting it to 0, so it won't noticeably change. 3. When you use FireServer, there is no need to add the player as an argument, because that is done automatically. ThatPreston 354 — 7d
0
I got it to fire the event and weld without problem, but now the event fires on all clients, causing the part to clone and weld to them. Crimsonknightzone 38 — 7d

Answer this question