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); }
public Client[] GetClients(Client except) { return Clients.Values.Where(cl => cl != except && cl.Joined).ToArray(); }
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); } }
protected ScriptEventArgs(Client client) { Client = client; Entity = client != null ? client.Entity : null; }