我有一个名为: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;这是完美的工作!,但问题是,当玩家想要移动到房间时,它不会检查播放器是否已经在另一个房间了。
TL;DR:
房间
播放机不应该加入2号房间,因为他们还没有离开1号房间,但是我怎样才能检查玩家是不是在另一个房间呢?
发布于 2021-11-21 07:49:02
试试这个:
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)https://stackoverflow.com/questions/70047861
复制相似问题