Как вызвать функцию, которая находится в реплицированном хранилище

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

LocalScript (LocalScript) (Игроки ›Player1› PlayerGui ›InsertedObjects› команда ›Россия)

local p = script.Parent.Parent.Parent.Parent.Parent.Name

script.Parent.MouseButton1Click:Connect(function()
    game.Players[p].TeamColor = BrickColor.new("Really blue")
    game.Workspace[p].Humanoid.Health = 0
    script.Parent.Parent.Parent.Enabled = false
    
    local Player = Instance.new("Folder")
    local GameTag = Instance.new("StringValue")
    GameTag.Value = "USA"
    GameTag.Name = "TeamName"


    Player.Name = game.Players:FindFirstChild(p).Name
    script.Parent.Parent.Parent.Parent.Parent.Parent.Parent.ReplicatedStorage.Script(Player, GameTag)

end)

TeamGear (Скрипт) (Рабочая область ›TeamGear)

function onSpawned(plr) 
    if script.Parent.Parent.ReplicatedStorage.Teams[plr.Name].TeamName == "Russia" then
        local tools = script.Parent.Parent.Teams.Russia:GetChildren()
        for _,c in pairs(tools) do 
            c:Clone().Parent = plr.Backpack 
        end 
    end
    if script.Parent.Parent.ReplicatedStorage.Teams[plr.Name].TeamName == "USA" then
        local tools = script.Parent.Parent.Teams.USA:GetChildren()
        for _,c in pairs(tools) do 
            c:Clone().Parent = plr.Backpack 
        end 
    end
end 

Скрипт (Скрипт) (ReplicatedStorage ›Скрипт)

function handleTeams(player, tag)
    player.Parent = script.Parent.Teams
    tag.Parent = player
end

person SnaccOvenFlour    schedule 28.06.2021    source источник


Ответы (1)


Если вы хотите определить сценарий в ReplicatedStorage, который можно вызывать из других сценариев, это должен быть ModuleScript.

Например, если вы хотите иметь сценарий в ReplicatedStorage, который печатает Hello World, вы должны создать ModuleScript (не сценарий) следующим образом:

ReplicatedStorage > ModuleScript

local module = {}

function module.Hello()
    print("Hello, World!")
end

return module

Затем из LocalScript или Script вы можете назвать это так:

local HelloModule = require(game.ReplicatedStorage:WaitForChild("ModuleScript"))
HelloModule.Hello()
person Bemmu    schedule 28.06.2021