2
具體來說,這是用於Garry的Mod,但我認爲這個問題不太重要。我想要做的是獲得一名玩家,並將其價值設置爲另一個隨機玩家(因此每個玩家都有一個隨機「目標」)。我想不重複地做到這一點,所以一名球員不會被分配到他們自己。爲了更好地說明:Lua - 從表中獲取一個值並將其分配給另一個不重複
到圖像唯一的區別是,我想每個玩家將被分配給另一隨機播放器,因此更像PLAYER1 =>播放器5,播放器3 =>播放器2等
這是我此刻的代碼,但是這總是會留下一人鬆綁:
validTargets = {}
TargetList = {}
local Swap = function(array, index1, index2)
array[index1], array[index2] = array[index2], array[index1]
end
GetShuffle = function(numelems)
local shuffle = {}
for i = 1, numelems do
shuffle[#shuffle + 1] = i
end
for ii = 1, numelems do
Swap(shuffle, ii, math.random(ii, numelems))
end
return shuffle
end
function assignTargets()
local shuffle = GetShuffle(#playing)
for k,v in ipairs(shuffle) do
TargetList[k] = v
end
SyncTargets()
end
function SyncTargets()
for k,v in pairs(TargetList) do
net.Start("sendTarget")
net.WriteEntity(v)
net.Send(k)
end
end
好的,我有點小白。你能幫我在我自己的例子中使用它嗎? –
假設你想每次更新'TargetList','assignTargets'函數和你的'assignTargets'做同樣的事情:在你調用'assignTargets'之後,'TargetList'將會被新的隨機洗牌玩家分配所填充。 –
所以我只是堅持這個而不是我的代碼?我需要改變什麼嗎?對不起 - 超級noob在這裏。 –