public void OnDisconnect(ref PacketReader _pReader, PacketType pt, ref ClientManager _client) { GridServer.player_list[_client.id]._client.Close(); GridServer.player_list[_client.id]._stream.Close(); GridServer.player_list[_client.id] = null; _client.Stop(true); }
public void OnServerListPing(ref PacketReader _pReader, PacketType pt, ref ClientManager _client) { GridServer.player_list[_client.id].WaitToRead = false; DisconnectKick p = new DisconnectKick(PacketType.Disconnect_Kick); p.Reason = "Ping"; p.BuildPacket(); _client.SendPacket(p, _client.id, ref _client, true, false); /*ServerListPingPacket p = new ServerListPingPacket(); p.NumberOfSlots = (int)Config.Configuration["MaxPlayers"]; p.ServerDescription = (string)Config.Configuration["ServerDescription"]; p.NumberOfUsers = GridServer.PlayerCount() - 1; p.BuildPacket(); _client.SendPacket(p, _client.id, ref _client, true, false);*/ //GridServer.player_list[_client.id] = null; //p = null; }
public PacketHandler OnPhysicsHandler(PacketType p_type, string CustomPacketType, ref PacketReader packet_reader, PacketHandler _p, ref ClientManager cm) { base.RunModuleCache(); GridServer.player_list[cm.id].WaitToRead = false; HandlePhysics_start = new ThreadStart(DoPhysics); HandlePhysics = new Thread(HandlePhysics_start); _client = cm; id = cm.id; block = new BlockChangePacket(PacketType.BlockChange); block.BlockType = (byte)((PlayerBlockPlacementPacket)_p).BlockID.s_short; block.Metadata = 0x00; block.X = ((PlayerBlockPlacementPacket)_p).X; block.Y = ((PlayerBlockPlacementPacket)_p).Y; block.Z = ((PlayerBlockPlacementPacket)_p).Z; HandlePhysics.Start(); return _p; }
public PacketHandler OnBlockChange(PacketType p_type, string CustomPacketType, ref PacketReader packet_reader, PacketHandler _p, ref ClientManager cm) { return _p; }
public void OnPreChunkRequested(ref PacketReader packet_reader, PacketType p_type, ref ClientManager cm) { }
public PacketHandler LoginPreChunkHandler(PacketType p_type, string CustomPacketType, ref PacketReader packet_reader, PacketHandler _p, ref ClientManager cm) { base.RunModuleCache(); GridServer.player_list[cm.id].WaitToRead = false; send_start = new ThreadStart(DoChunks); send = new Thread(send_start); pr = packet_reader; _client = cm; id = cm.id; send.Start(); return _p; }
public Scheduler(ref ClientManager client) { _client = client; }
public void SendPacket(PacketHandler p, int id, ref ClientManager cm, bool PingType, bool Waitread) { try { byte[] t_byte = p.GetBytes(); if (PingType == false) { Console.WriteLine("Packet Sent: " + p._packetid.ToString() + " Length: " + t_byte.Length); GridServer.player_list[cm.id]._client.Client.SendBufferSize = t_byte.Length; GridServer.player_list[cm.id]._client.Client.NoDelay = true; GridServer.player_list[cm.id].Send(cm, t_byte); if (GridServer.player_list[cm.id].keep_alive != null) GridServer.player_list[cm.id].keep_alive = DateTime.Now; else { GridServer.player_list[cm.id].keep_alive = new DateTime(); GridServer.player_list[cm.id].keep_alive = DateTime.Now; } GridServer.player_list[cm.id].WaitToRead = Waitread; } else if (PingType == true) { //Console.WriteLine("Packet Sent: " + p._packetid.ToString() + " Length: " + t_byte.Length); byte[] temp = new byte[256]; t_byte.CopyTo(temp, 0); GridServer.player_list[cm.id]._client.Client.SendBufferSize = t_byte.Length; GridServer.player_list[cm.id]._client.Client.NoDelay = true; GridServer.player_list[cm.id].Send(cm, temp); GridServer.player_list[cm.id]._client.Close(); GridServer.player_list[cm.id].Stop(true); } else { Console.WriteLine("Packet Sent: " + p._packetid.ToString() + " Length: " + t_byte.Length); GridServer.player_list[cm.id]._client.Client.SendBufferSize = t_byte.Length; GridServer.player_list[cm.id]._client.Client.NoDelay = true; GridServer.player_list[cm.id].Send(cm, t_byte); GridServer.player_list[cm.id].keep_alive = DateTime.Now; GridServer.player_list[cm.id].WaitToRead = Waitread; } } catch (Exception e) { //Console.WriteLine("ERROR: " + e.Message + "\nSource:" + e.Source + "\nMethod:" + e.TargetSite + "\nData:" + e.Data + "\nStack trace:" + e.StackTrace); if (GridServer.player_list[id] != null) { if (GridServer.player_list[id] != null) { GridServer.player_list[id].Stop(true); } else { this.Stop(true); } } else { this.Stop(true); } } }
public void Send(ClientManager cm, byte[] bytes) { if (cm != null && cm._client != null && cm._client.Connected == true) GridServer.player_list[cm.id]._client.Client.Send(bytes); }