如何让lua在while循环中停止if循环?

这是一个非常难以提出的问题,因为我无法将所有内容都纳入问题,但我可以解释这个问题 . 我的游戏逻辑/游戏脚本基本上是:

function game()
-- stuff
end

while true do
    while players < 2 do
     -- tell player to invite more players and all that jazz
    end

    if players >= 2 then
       game()
    end
end

(这只是伪代码,我为了简单起见忽略了wait()和Roblox API之类的东西,因为这个想法仍然相同,但我认为这个问题对于一般的编程来说已经足够了)

现在,在我的“游戏”功能中,当玩家准备好(即不在菜单等中)时,它会将所有准备好的玩家传送到游戏所在的位置 . 不幸的是,由于'game()'一直在运行,所以玩家不断地一次又一次地传送,并且它不会停止 . 即使'game()'一直在运行,我也不确定如何制作它只是传送它们一次 .

以下是简单解释的远程传送代码,无需了解Roblox API:

if #ready >= 2 then -- if the players in the list 'ready' (the players that are ready to start the game) 
    print(player.Name .. " moved") -- show which player is moved
    player:MoveTo(--place where the game is)) -- actually move the player
end

问题在于,由于'game()'一直在运行,所以玩家不断地移动到游戏所在的位置(使他们无法移动) . 在所有球员都被移动后,我如何让Lua停止移动球员?我尝试使用for循环,但由于'game()'正在重复,因此也一直在重复 . 我希望任何知识渊博的人都能理解这一点 .

回答(1)

2 years ago

在我看来,你想要保持两个列表:目前正在播放,并希望发挥 .

我不确定你想要的是什么逻辑(人们可以加入正在进行的游戏吗?),但基本的想法是你只在希望玩的玩家列表上运行游戏,而不是玩家目前在玩 .