0

我一直在尝试为我的 Garry's Mod 服务器编写一个白名单插件。我对LUA相当陌生,因此非常感谢任何帮助。我有一个想法,但我不知道如何搜索它。说我有一张桌子

local Table = { Player1, Player2, Player3 }
hook.Add( "PlayerConect", "Connect", function(ply)
       if ply:Nick() != Table then
       ply:Kick( "Reason here" )
   end
end)

据我所知,这是怎么做的。谢谢你有时间。

4

2 回答 2

1

我不熟悉 Garry's Mod,但如果您只需要检查玩家的昵称是否在表中,您可以这样做:

local Table = { "Player1", "Player2", "Player3" }
hook.Add( "PlayerConect", "Connect", function(ply)
     local notfound = true
     -- iterate through all elements in the table
     for index, nick in ipairs(Table) do
       if ply:Nick() == nick then
         notfound = false
         break
       end
     end
     if notfound then ply:Kick( "Reason here" ) end
end)

如果您使用稍微不同的表来保存球员的昵称,那么检查将变得更简单(Table现在用作哈希表):

local Table = { Player1 = true, Player2 = true, Player3 = true }
hook.Add( "PlayerConect", "Connect", function(ply)
     -- check if the nick is present in the table
     if not Table[ply:Nick()] then ply:Kick( "Reason here" ) end
end)
于 2015-02-24T06:35:17.707 回答
0

制作列入白名单的 SteamID 的表格(不要使用名称!它们不是唯一的)

local WhitelistedIDs = {
  ["STEAM_0:0:52031589"] = true,
  ["STEAM_0:0:109379505"] = true,
  ["STEAM_0:0:115441745"] = true
}

然后写你的代码它应该是这样的

hook.Add( "PlayerInitialSpawn", "MyAwesomeWhitelist", function( --[[ Player ]] player)
if (~WhitelistedIDs[player::SteamID()]) then
   player:Kick( "Sorry! You are not Whitelisted!" )
end)

请注意,我没有使用PlayerConnectHook。我没有使用它,因为我们只有玩家的名字,但我们需要一个完整的玩家对象。

酸:我的经验和 GMod Wiki

注意:示例中使用的 SteamID 都是我自己的有效帐户 | 代码不是testest,如果某些东西没有按预期工作,请评论

于 2015-06-22T12:35:39.343 回答