61 lines
1.7 KiBLFS
Lua
Executable File
61 lines
1.7 KiBLFS
Lua
Executable File
if CLIENT then return end
|
|
|
|
LuaCsClientSideEnforced = {}
|
|
LuaCsClientSideEnforced.KickTimer = 30
|
|
|
|
LuaUserData.RegisterType("Barotrauma.Networking.FileSender")
|
|
|
|
local function IsDownloading(client)
|
|
for key, value in pairs(Game.Server.FileSender.ActiveTransfers) do
|
|
if value.Connection == client.Connection then
|
|
return true
|
|
end
|
|
end
|
|
|
|
return false
|
|
end
|
|
|
|
local clients = {}
|
|
|
|
local function GetOrCreateData(client)
|
|
if not clients[client] then
|
|
clients[client] = {}
|
|
clients[client].HasInstalled = false
|
|
clients[client].KickTimer = 0
|
|
end
|
|
|
|
return clients[client]
|
|
end
|
|
|
|
-- assume every already connected client has already client-side installed
|
|
for _, client in pairs(Client.ClientList) do
|
|
local data = GetOrCreateData(client)
|
|
data.HasInstalled = true
|
|
data.KickTimer = 0
|
|
end
|
|
|
|
Networking.Receive("client_side_enforced", function(message, client)
|
|
local data = GetOrCreateData(client)
|
|
|
|
if data.HasInstalled then return end
|
|
data.HasInstalled = true
|
|
data.KickTimer = 0
|
|
|
|
Logger.Log(TextManager.Get("luacs.svenforced.heartbeat").Value .. client.Name, Color.Green)
|
|
end)
|
|
|
|
Hook.Add("client.connected", "ClientSideEnforced", function (client)
|
|
GetOrCreateData(client)
|
|
end)
|
|
|
|
Hook.Add("think", "ClientSideEnforced", function(client)
|
|
for client, data in pairs(clients) do
|
|
if not data.HasInstalled and not IsDownloading(client) then
|
|
if data.KickTimer > LuaCsClientSideEnforced.KickTimer then
|
|
client.Kick(TextManager.Get("luacs.enforced.kickmessage").Value)
|
|
else
|
|
data.KickTimer = data.KickTimer + 1/60
|
|
end
|
|
end
|
|
end
|
|
end) |