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)

PlayerConnectフックを使用していないことに注意してください。そこにはプレイヤーの名前があるだけなので、私はそれを使用しませんでしたが、完全なプレイヤー オブジェクトが必要です。

Soure: 私の経験と GMod Wiki

注:例で使用されている SteamID はすべて私自身の有効なアカウントです | コードはテストテストではありません。期待どおりに動作しない場合はコメントしてください

于 2015-06-22T12:35:39.343 に答える