【发布时间】:2021-12-30 23:54:59
【问题描述】:
我有一个名为:Rooms 的表格/字典,当客户想要加入房间时,我检查房间 UID 是否匹配:Rooms[i]["UID"] == Data,如果 UID 匹配,我检查玩家是否已经在房间中,如果不是,我将玩家添加到他们想要加入的特定房间,但我遇到了一些问题。
local Rooms = {
[1] = {
["Name"] = "test1",
["Players"] = {},
["UID"] = game:GetService("HttpService"):GenerateGUID(true)
},
[2] = {
["Name"] = "test2",
["Players"] = {},
["UID"] = game:GetService("HttpService"):GenerateGUID(true)
}
}
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;这是完美的工作! 但问题是当玩家想要移动到房间 [2] 时,它不会检查玩家是否已经在另一个房间。
TL;DR:
- 玩家加入房间 [1]。
- 输出:玩家加入了房间 [1]。
- 玩家再次加入房间 [1]。
- 输出:你已经在房间里了。
- 玩家加入房间 [2]。
- 输出(错误):玩家加入了房间 [2]。
玩家不应该加入房间 [2],因为他们没有离开房间 [1],但是我如何检查玩家是否在不同的房间?
【问题讨论】:
-
此代码示例中有什么问题?
-
@Kylaaa 我编辑了我的帖子并添加了额外的信息。