@@ -27,36 +27,38 @@ protected override void OnConnected()
2727 {
2828 if ( ( ( Server ) Server ) . ConnectedPlayers >= Alibi . Server . ServerConfiguration . MaxPlayers )
2929 {
30- Send ( new AOPacket ( "BD" , "Max players has been reached." ) ) ;
30+ Send ( new AOPacket ( "BD" , "Not a real ban: Max players has been reached." ) ) ;
3131 Task . Delay ( 500 ) ;
3232 Disconnect ( ) ;
33+ return ;
3334 }
3435
3536 _banCheckTime = DateTime . Now ;
3637
3738 var ip = ( ( IPEndPoint ) Socket . RemoteEndPoint ) . Address ;
3839 if ( Alibi . Server . ServerConfiguration . Advertise && ip . Equals ( Alibi . Server . MasterServerIp ) )
3940 Alibi . Server . Logger . Log ( LogSeverity . Info , " Probed by master server." , true ) ;
40- if ( ( ( Server ) Server ) . ClientsConnected . Count ( c => Equals ( c . IpAddress , ip ) )
41- > Alibi . Server . ServerConfiguration . MaxMultiClients )
41+ if ( ! IPAddress . IsLoopback ( ip ) && ( ( Server ) Server ) . ClientsConnected . Count ( c => ip . ToString ( ) == c . IpAddress . ToString ( ) )
42+ >= Alibi . Server . ServerConfiguration . MaxMultiClients )
4243 {
43- Send ( new AOPacket ( "BD" , $ "Can't have more than " +
44+ Send ( new AOPacket ( "BD" , $ "Not a real ban: Can't have more than " +
4445 $ "{ Alibi . Server . ServerConfiguration . MaxMultiClients } clients at a time.") ) ;
4546 Task . Delay ( 500 ) ;
4647 Disconnect ( ) ;
48+ return ;
4749 }
4850 Client = new Client ( ( Server ) Server , this , ip ) ;
4951 Client . LastAlive = DateTime . Now ;
5052 Client . KickIfBanned ( ) ;
51-
53+
5254 // fuck fantaencrypt
53- SendAsync ( new AOPacket ( "decryptor" , "NOENCRYPT" ) ) ;
55+ Send ( new AOPacket ( "decryptor" , "NOENCRYPT" ) ) ;
5456 }
5557
5658 protected override void OnDisconnected ( )
5759 {
5860 ( ( Server ) Server ) . ClientsConnected . Remove ( Client ) ;
59- if ( Client . Connected )
61+ if ( Client != null && Client . Connected )
6062 {
6163 ( ( Server ) Server ) . ConnectedPlayers -- ;
6264 ( ( Area ) Client . Area ) ! . PlayerCount -- ;
@@ -79,7 +81,9 @@ protected override void OnReceived(byte[] buffer, long offset, long size)
7981 string [ ] packets = msg . Split ( "%" , StringSplitOptions . RemoveEmptyEntries ) ;
8082 foreach ( var packet in packets )
8183 {
82- if ( Client . HardwareId == null && ! packet . StartsWith ( "HI#" ) )
84+ if ( Client . HardwareId == null
85+ && ! packet . StartsWith ( "HI#" )
86+ && ! packet . StartsWith ( "WSIP#" ) )
8387 return ;
8488 if ( DateTime . Now . CompareTo ( _banCheckTime . AddSeconds
8589 ( Alibi . Server . ServerConfiguration . RateLimitResetTime ) ) >= 0 )
0 commit comments