Пример #1
0
 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);
 }
Пример #2
0
 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;
 }
Пример #3
0
        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;
        }
Пример #4
0
 public PacketHandler OnBlockChange(PacketType p_type, string CustomPacketType, ref PacketReader packet_reader, PacketHandler _p, ref ClientManager cm)
 {
     return _p;
 }
Пример #5
0
 public void OnPreChunkRequested(ref PacketReader packet_reader, PacketType p_type, ref ClientManager cm)
 {
 }
Пример #6
0
        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;
        }
Пример #7
0
 public Scheduler(ref ClientManager client)
 {
     _client = client;
 }
Пример #8
0
        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);
                }
            }
        }
Пример #9
0
 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);
 }