Скрипты Roblox, которых больше нет нигде в игре, появляются как дети вновь созданных персонажей - PullRequest
0 голосов
/ 09 декабря 2018

Я использую скрипт из торговой площадки Roblox, который я сильно изменил.Оригинальная версия больше не существует нигде в игре, но выглядит как дитя новых персонажей, хотя у меня нет сценария, который мог бы поместить его туда.Почему это происходит и как мне это исправить?Я не нашел ничего подобного нигде.

Вот оригинальный скрипт:

local mouse = game.Players.LocalPlayer:GetMouse()
local running = false

function getTool()  
    for _, kid in ipairs(script.Parent:GetChildren()) do
        if kid.className == "Tool" then return kid end
    end
    return nil
end


mouse.KeyDown:connect(function (key) -- Run function
    key = string.lower(key)
    if string.byte(key) == 48 then
        running = true
        local keyConnection = mouse.KeyUp:connect(function (key)
            if string.byte(key) == 48 then
                running = false
            end
        end)
        for i = 1,5 do
            game.Workspace.CurrentCamera.FieldOfView = (70+(i*2))
            wait()
        end
        game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = 85
        repeat wait () until running == false
        keyConnection:disconnect()
        game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = 16
        for i = 1,5 do
            game.Workspace.CurrentCamera.FieldOfView = (80-(i*2))
            wait()
        end
    end
end) 

Вот модифицированный скрипт:

wait(1)
local Player = script.Parent
local mouse = game.Players.LocalPlayer:GetMouse()
local running = false
local startSpeed = 10
local Speed = script.Speed
Speed.Value = 10
local Earnings = script.Earnings
Earnings.Value = 25
local Cash = script.Cash
Cash.Value = 10000
local speedUpCost = script.speedUpCost
speedUpCost.Value = 100
local earnUpCost = script.earnUpCost
earnUpCost.Value = 100

game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = Speed.Value

function getTool()  
    for _, kid in ipairs(script.Parent:GetChildren()) do
        if kid.className == "Tool" then return kid end
    end
    return nil
end


mouse.KeyDown:connect(function (key)
    key = string.lower(key)
    if string.byte(key) == 48 then
        running = true
        local keyConnection = mouse.KeyUp:connect(function (key)
            if string.byte(key) == 48 then
                running = false
            end
        end)
        game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = Speed.Value
        repeat wait () until running == false
        keyConnection:disconnect()
        game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = startSpeed
    end
end)

Вот кодЯ использую, чтобы поместить измененный сценарий и некоторые другие в качестве потомков новых персонажей: (Эти другие сценарии не включают исходный сценарий, который я изменил)

function onPlayerEntered(player)
    player.CharacterAdded:connect(function (char)
        local Scripts = script:GetChildren() 
        for i=1,5 do
            local s = Scripts[i]:clone()
            s.Parent = char
            s.Disabled = false
        end     
    end)
end

game.Players.PlayerAdded:connect(onPlayerEntered)

1 Ответ

0 голосов
/ 20 декабря 2018

Не зная, какие скрипты есть в вашем проводнике, похоже, что ваша проблема может быть в вашей функции onPlayerEntered.Вы перебираете 5 безымянных, возможно случайных сценариев и вставляете их в проигрыватель.

В соответствии с https://developer.roblox.com/api-reference/function/Instance/GetChildren, порядок элементов в script:GetChildren() зависит от порядка, в котором их свойство Parentбыл установлен.Вероятно, безопаснее явно клонировать дочерние элементы по имени или выполнить итерацию по длине массива Scripts.

Чтобы отладить это, я мог бы рекомендовать изменить цикл for следующим образом:

local Scripts = script:GetChildren() 
for i=1,#Scripts,1 do
    local s = Scripts[i]:clone()
    s.Parent = char
    s.Disabled = false
    print("Inserting script : ", s.Name, " - ", s:GetFullName())
end

Это должно помочь вам узнать, какие сценарии фактически добавляются.

В качестве альтернативы, вы можете просто добавить нужные сценарии в папку StarterPlayer > StarterPlayerScripts, и они будут автоматически добавлены в проигрыватель, когда игрок присоединится.

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