Как вариант поставь dbuggr
https://github.com/oubliette32/DBugR и чекай когда игрок присоединяется, что грузит сервер.
2. Попробйй обновить сервер.
3. Возможно эта ошибка возникает из за плохого интернет соединения, со стороны или сервера или клиента.
Lua:
if ( m_nRetryNumber >= 4 )
{
COM_ExplainDisconnection( true, "Connection failed after %i retries.\n", CL_CONNECTION_RETRIES );
// Host_Disconnect();
Disconnect();
return;
}
Исходник Source Engine.
В кратце, при подключение к серверу он запрашивает информацию у сервера и при каждом неудачной попытке записывает в m_nRetryNumber++ и так до 4 раз.
=ВОТ ЧТО ПИШЕТ DBUGGER ПРИ ЗАХОДЕ И ПРИ ВЫЛЕТЕ С СЕРВЕРА=
local function CheckPlayerStill()
for k,v in ipairs(player.GetAll()) do
if v:GetNWBool("CamoEnabled") then
if v:GetVelocity():Length() <= 1 then
v:SetNoDraw(true)
else
v:SetNoDraw(false)
end
else
v:SetNoDraw(false)
end
end
end
end
nd
or k,v in pairs(ents.GetAll()) do
if not IsValid(v) or v.FPPOwnerID ~= SteamID or v:GetPersistent() then continue end
v:Remove()
nd
PP.DisconnectedPlayers[SteamID] = nil -- Player out of the Disconnect table
d)
k.Add("PlayerDisconnected", "FPP.PlayerDisconnect", FPP.PlayerDisconnect)
PlayerInitialspawn, the props he had left before will now be theirs again
ction FPP.PlayerInitialSpawn(ply)
cal RP = RecipientFilter()
mer.Simple(5, function()
f not IsValid(ply) then return end
P:AddAllPlayers()
P:RemovePlayer(ply)
msg.Start("FPP_CheckBuddy", RP)--Message everyone that a new player has joined
umsg.Entity(ply)
msg.End()
d)
cal entities = {}
FPP.DisconnectedPlayers[ply:SteamID()] then -- Check if the player has rejoined within the auto remove time
or k,v in pairs(ents.GetAll()) do
if IsValid(v) and v.FPPOwnerID == ply:SteamID() then
v:CPPISetOwner(ply)
table.insert(entities, v)
end
nd
d
cal plys = {}
r k,v in pairs(player.GetAll()) do if v ~= ply then table.insert(plys, v) end end
P.recalculateCanTouch(plys, entities)
mer.Simple(0, function() -- wait until the player's usergroup is initialized
f not IsValid(ply) then return end
PP.recalculateCanTouch({ply}, ents.GetAll())
d)
k.Add("PlayerInitialSpawn", "FPP.PlayerInitialSpawn", FPP.PlayerInitialSpawn)
al ENTITY = FindMetaTable("Entity")
al backup = ENTITY.FireBullets
al blockedEffects = {"particleeffect", "smoke", "vortdispel", "helicoptermegabomb"}
ction ENTITY:FireBullets(bullet, ...)
not bullet.TracerName then return backup(self, bullet, ...) end
table.HasValue(blockedEffects, string.lower(bullet.TracerName)) then
ullet.TracerName = ""
d
turn backup(self, bullet, ...)
k.Add("EntityRemoved","jeepWorkaround",function(ent)
Crash workaround, calling IsValid on "Vehicle [DELETED]" will crash the game (gm_mobenix)
string.find(tostring(ent), "DELETED") then
eturn
d
if IsValid(ent) and ent:IsVehicle() and ent.GetPassenger and IsValid(ent:GetPassenger(1)) then
ent:GetPassenger(1):ExitVehicle()