首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能检查球员是否已经在另一张桌子/房间里了?- Lua

我怎样才能检查球员是否已经在另一张桌子/房间里了?- Lua
EN

Stack Overflow用户
提问于 2021-11-20 16:37:52
回答 1查看 117关注 0票数 0

我有一个名为:Rooms的表/字典,当客户想要加入一个房间时,我检查房间UID是否匹配:Rooms[i]["UID"] == Data,如果UID匹配,我检查播放机是否已经在房间中,如果没有,我会将播放机添加到他们想要加入的特定房间,但我有一些问题。

代码语言:javascript
复制
local Rooms = {
    [1] = {
        ["Name"] = "test1",
        ["Players"] = {},
        ["UID"] = game:GetService("HttpService"):GenerateGUID(true)
    },
    [2] = {
        ["Name"] = "test2",
        ["Players"] = {},
        ["UID"] = game:GetService("HttpService"):GenerateGUID(true)
    }
}
代码语言:javascript
复制
RemoteEvent.OnServerEvent:Connect(function(Player, Key, Data)
    if Key == "Join" then
        for i = 1, #Rooms do
            if Rooms[i]["UID"] == Data then
                if #Rooms[i]["Players"] > 0 then
                    for a = 1, #Rooms[i]["Players"] do
                        if Rooms[a]["Players"][a] == Player then
                            print("You are already in the room")
                        else
                            RemoteEvent:FireClient(Player, "Success")
                            table.insert(Rooms[a]["Players"], Player)
                        end
                    end
                else
                    RemoteEvent:FireClient(Player, "Success")
                    table.insert(Rooms[i]["Players"], Player)
                end             
            end
        end
    end
end)

现在的问题是,我的代码允许播放器加入两个房间。例如:播放器加入房间[1],并再次尝试加入房间[1],它打印:You are already in the room;这是完美的工作!,但问题是,当玩家想要移动到房间时,它不会检查播放器是否已经在另一个房间了。

TL;DR:

  • Player加入房间1.
  • Output:播放器加入房间1.
  • Player加入房间1 again.
  • Output:你已经在room.
  • Player加入房间2.
  • Output (错误):播放器加入了2.

房间

播放机不应该加入2号房间,因为他们还没有离开1号房间,但是我怎样才能检查玩家是不是在另一个房间呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-21 07:49:02

试试这个:

代码语言:javascript
复制
RemoteEvent.OnServerEvent:Connect(function(Player, Key, Data)
    if Key == "Join" then
        local targetRoomNum = nil
        for i, room in pairs(Rooms) do
            if room["UID"] == Data then
                targetRoomNum = i
            end

            for _, playerInRoom in pairs(room["Players"]) do
                if playerInRoom == Player then
                    print("You are already in a room")
                    return
                end
            end
        end
        
        if targetRoomNum then
            RemoteEvent:FireClient(Player, "Success")
            table.insert(Rooms[targetRoomNum]["Players"], Player)
        else
            print("No room found")
        end  
    end
end)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70047861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档