Exemple #1
0
        void onClientConnect(IAsyncResult result)
        {
            var tcpClient = clientListener.EndAcceptTcpClient(result);

            string ip = (tcpClient.Client.RemoteEndPoint as IPEndPoint).Address.ToString();

            var clientConnectArgs = new ClientConnectEventArgs(ip);
            if (!Root.ScriptManager.CallEvent("OnClientConnect", clientConnectArgs).Canceled)
            {
                var newClient = new Client(tcpClient, this);
                Clients.Add(newClient.ID, newClient);
            }
            else
            {
                tcpClient.Close();
            }

            clientListener.BeginAcceptTcpClient(onClientConnect, null);
        }
Exemple #2
0
 public Client[] GetClients(Client except)
 {
     return Clients.Values.Where(cl => cl != except && cl.Joined).ToArray();
 }
Exemple #3
0
        public void HandleRecvPacket(int id, Client client)
        {
            if (!PacketParsers.ContainsKey(id))
            {
                Log.Error("Unknown packet: {0} from client {1}", id, client.ID);
                client.Disconnect("Unknown data");
                return;
            }

            Packet.Base message = PacketParsers[id].Invoke(client, this);
            MessageQueue.Enqueue(message);

            if (!(message is Packet.EntityUpdate) &&
                !(message is Packet.UpdateChunk) &&
                !(message is Packet.UpdateSector))
            {
                Log.Info("queueing {0}", message);
            }
        }
Exemple #4
0
 protected ScriptEventArgs(Client client)
 {
     Client = client;
     Entity = client != null ? client.Entity : null;
 }