You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Roblox技术问题:如何确保至少两名玩家并随机选取不同两人

解决Roblox游戏中选取两名不同玩家并检查玩家数量的问题

修改后的完整代码

local PlayersService = game:GetService("Players")
local status = game.ReplicatedStorage.Status

while true do
    -- 每次循环获取最新玩家列表,避免玩家变动导致数据失效
    local players = PlayersService:GetPlayers()
    
    -- 等待玩家数量达标
    while #players < 2 do
        status.Value = "等待更多玩家加入..."
        wait(1)
        players = PlayersService:GetPlayers()
    end

    -- 倒计时流程,中途玩家不足则中断
    local countdownAborted = false
    for i = 10, 0, -1 do
        status.Value = "Starting in "..i
        wait(1)
        if #PlayersService:GetPlayers() < 2 then
            countdownAborted = true
            break
        end
    end

    -- 如果倒计时被中断,直接进入下一轮循环
    if countdownAborted then
        continue
    end

    -- 再次确认玩家数量
    players = PlayersService:GetPlayers()
    if #players < 2 then
        continue
    end

    -- 随机选取两名不同的玩家
    local player1 = players[math.random(1, #players)]
    -- 筛选出除player1外的其他玩家
    local remainingPlayers = {}
    for _, player in ipairs(players) do
        if player ~= player1 then
            table.insert(remainingPlayers, player)
        end
    end
    local player2 = remainingPlayers[math.random(1, #remainingPlayers)]

    print("Player 1 is "..tostring(player1.Name))
    print("Player 2 is "..tostring(player2.Name))
end

核心修改说明

  • 实时更新玩家列表:把获取玩家列表的操作放进循环内部,确保每次都能拿到当前服务器里的最新玩家数据,不会因为有人中途加入或退出导致列表过时。
  • 多层玩家数量校验:
    • 倒计时前先卡住等待,直到至少有2名玩家,同时更新状态提示玩家;
    • 倒计时过程中持续检查玩家数量,一旦人数不足就中断倒计时,重新等待;
    • 倒计时结束后再做最后一次校验,避免最后一秒有人退出导致后续操作出错。
  • 杜绝重复选玩家:先随机选出第一个玩家,然后把剩下的玩家单独整理成新列表,再从这个列表里随机选第二个玩家,彻底避免选中同一人的情况。

内容的提问来源于stack exchange,提问作者JMAS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 14:53:24