如何检查玩家是否已经在另一个桌子/房间里? - Lua
2021-11-20 20:39:3
收藏:0
阅读:167
评论:1
我有一个名为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("你已经在这个房间里了")
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]
,它会打印“你已经在这个房间里了”,这很完美! 但是,当玩家想要移动到房间[2]
时,它不会检查玩家是否已经在不同的房间中。
简而言之:
- 玩家加入了房间[1]。
- 输出:玩家加入了房间[1]。
- 玩家再次加入了房间[1]。
- 输出:你已经在这个房间里了。
- 玩家加入了房间[2]。
- 输出(错误):玩家加入了房间[2]。
玩家不应该加入房间[2],因为他们没有离开房间[1],但我该如何检查玩家是否在其他房间中?
原文链接 https://stackoverflow.com/questions/70047861
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
尝试这个:
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("您已经在一个房间中") return end end end if targetRoomNum then RemoteEvent:FireClient(Player, "Success") table.insert(Rooms[targetRoomNum]["Players"], Player) else print("未找到房间") end end end)