diff --git a/src/game/g_net.pas b/src/game/g_net.pas
index 391e09c520a6f6513ecfe6c52a9377c2009a4bc8..63b1270d9653e1306b34b7249f38e3ee554a6f86 100644 (file)
--- a/src/game/g_net.pas
+++ b/src/game/g_net.pas
Peer: pENetPeer;
Player: Word;
RequestedFullUpdate: Boolean;
+ WaitForFirstSpawn: Boolean; // set to `true` in server, used to spawn a player on first full state request
RCONAuth: Boolean;
Voted: Boolean;
Transfer: TNetFileTransfer; // only one transfer may be active
NetClients[N].Used := True;
NetClients[N].ID := N;
NetClients[N].RequestedFullUpdate := False;
+ NetClients[N].WaitForFirstSpawn := False;
NetClients[N].RCONAuth := False;
NetClients[N].Voted := False;
NetClients[N].Player := 0;
NetPeer := nil;
NetHost := nil;
- NetMPeer := nil;
- NetMHost := nil;
+ g_Net_Slist_Disconnect(false); // do not spam console
NetMyID := -1;
NetPlrUID1 := -1;
NetPlrUID2 := -1;
end;
clearNetClients(false); // don't clear array
- if (NetMPeer <> nil) and (NetMHost <> nil) then g_Net_Slist_Disconnect;
+ if (g_Net_Slist_IsConnectionActive) then g_Net_Slist_Disconnect;
if NetPongSock <> ENET_SOCKET_NULL then
enet_socket_destroy(NetPongSock);
TC^.Peer := nil;
TC^.Player := 0;
TC^.RequestedFullUpdate := False;
+ TC^.WaitForFirstSpawn := False;
TC^.NetOut[NET_UNRELIABLE].Free();
TC^.NetOut[NET_RELIABLE].Free();