【问题标题】:How to make a base system? -- Roblox Lua如何制作基础系统? -- Roblox Lua
【发布时间】:2022-01-24 02:06:12
【问题描述】:

我正在尝试创建一个系统,当玩家加入时,他们会获得一个基地,然后其他玩家就无法使用该基地。

这是我在脚本的父模块中的模块:

local Functions = {}

function Functions.findOpenBase(plr)
    local bases = workspace.Bases
    for i,v in pairs(bases:GetChildren()) do
        if v:IsA("Part") then
            print("Searching..")
            if plr.alreadyOwnsBase.Value == false then
                if v.Owner.Value ~= nil then
                    print("Base found!")
                    v.Owner.Value = plr.Name
                    plr.alreadyOwnsBase.Value = true
                else
                    warn("error")
                    plr:Kick("error finding base, Please Rejoin.")
                end
            end
        else
            print("cannot claim another base")
        end
    end
end

return Functions

然后这是我的处理程序脚本:

local module = require(script.Functions)

game.Players.PlayerAdded:Connect(function(plr)
    local alreadyOwnsBase = Instance.new("BoolValue", plr)
    alreadyOwnsBase.Name = "alreadyOwnsBase"
    alreadyOwnsBase.Value = false
    if plr then
        module.findOpenBase(plr)
        print(plr.Name)
    end
end)

有什么解决办法吗?

【问题讨论】:

  • 错误是2个玩家加入时只有一个被分配了一个基地

标签: lua roblox


【解决方案1】:

对我来说,脚本中的模块:

local Functions = {}
function Functions.findOpenBase(plr)
    -- check it first.
    if plr.alreadyOwnsBase.Value == false then
        local bases = workspace.Bases
        for i,v in pairs(bases:GetChildren()) do
            print("Searching..")
            if v:IsA("Part") then
                if v.Owner.Value ~= nil then
                    print("Base found!")
                    v.Owner.Value = plr.Name
                    plr.alreadyOwnsBase.Value = true
                    -- get it, jump the loop
                    break
                end
            else
                print("cannot claim another base")
            end
        end
    end
    -- and plr.alreadyOwnsBase.Value is the flag of the result
    if plr.alreadyOwnsBase.Value == false then
        warn("error")
        plr:Kick("error finding base, Please Rejoin.")
    end
end

return Functions

和处理程序脚本:

local module = require(script.Functions)

game.Players.PlayerAdded:Connect(function(plr)
    local alreadyOwnsBase = Instance.new("BoolValue", plr)
    alreadyOwnsBase.Name = "alreadyOwnsBase"
    alreadyOwnsBase.Value = false
    if plr then
        module.findOpenBase(plr)
        -- check the flag
        if plr.alreadyOwnsBase.Value then
            print(plr.Name)
        end
    end
end)

【讨论】:

  • 那行不通
  • 所以,当你跑到plr:Kick("errorfinding base, Please Rejoin.")时,你应该创建一个新的base。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
  • 2013-04-04
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多