Ошибка Roblox Studio: Workspace.Driver.OnSeated!: 13: попытка индексировать nil с помощью '' Name '' - PullRequest
0 голосов
/ 01 мая 2020

У меня ошибка с одним из моих скриптов в Roblox Studio. Строка, показывающая, что это проблема, - это строка 13. Сценарий в основном предназначен для сварки, когда кто-то садится на сиденье, и запускает бак GUI (еще один сценарий, который подходит).

seat = script.Parent

function onChildAdded(part)
    if (part.className == "Weld") then
        while true do
local           welde = seat:FindFirstChild("SeatWeld")

            if (welde ~= nil) then
local           sitted = welde.Part1.Parent
            end

            if (sitted.Name ~= script.Parent.Owner.Value) then
                if (script.Parent.Owner.Value == "NoOne") then
                    script.Parent.Owner.Value = sitted.Name
                    print ("sitted steal")
                else
                    print ("stolen!!")
local                   shipstealer = game.Workspace:FindFirstChild(sitted.Name)
                    if (shipstealer ~= nil) then
                        shipstealer.Humanoid.Jump=true
                    end
                end
            end


            wait(0.2)

            if (welde == nil) then
                print("BreakLoop")
                script.Parent.Owner.Value = "NoOne"
            break end
        end
    end
end

--while true do
--  wait(0.5)
--  script.Parent.Parent.Name=script.Parent.Owner.Value .. "'s Ship"
--end
seat.ChildAdded:connect(onChildAdded)

Прошу прощения за плохое сотрудничество или языковые барьеры, которые у меня есть. Я все еще немного новичок здесь.

1 Ответ

0 голосов
/ 01 мая 2020
            if (welde ~= nil) then
local           sitted = welde.Part1.Parent
            end

            if (sitted.Name ~= script.Parent.Owner.Value) then

Поскольку вы объявляете sitted как local, он выходит за рамки end, поэтому он исчезает, когда вы пытаетесь использовать его в этом if, поэтому вы на самом деле используете нет глобальной переменной там. Сделайте это вместо этого:

            local sitted
            if (welde ~= nil) then
                sitted = welde.Part1.Parent
            end

            if (sitted.Name ~= script.Parent.Owner.Value) then

Таким образом, он останется в области действия, пока вы на самом деле не покончили с ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...