Пример #1
0
    private void DisconnetPlayer(NetIncomingMessage incmsg)
    {
        string   playerName = incmsg.ReadString();
        World    w          = serverCore.GetWorld();
        DataBase db         = serverCore.GetDataBase();

        for (int i = 0; i < w.ships.Count; i++)
        {
            if (w.ships[i].shipName.Equals(playerName))
            {
                incmsg.SenderConnection.Disconnect("bye");
                //System.Threading.Thread.Sleep(100);
                ServerCore.LogAdd(playerName + " disconnected.");

                if (ServerCore.GetServerCore().GetServer().ConnectionsCount != 0)
                {
                    NetOutgoingMessage outmsg = serverCore.CreateMessage();
                    outmsg.Write((byte)PacketType.Disconnect);
                    outmsg.Write(playerName);
                    ServerPacketSender.SendMessageToAll(outmsg);
                }
                db.SaveUser(playerName, w.ships[i]);
                w.ships.RemoveAt(i);
                i--;
                break;
            }
        }
    }
Пример #2
0
    private void Connect(string playerName, NetIncomingMessage incmsg)
    {
        World    w  = serverCore.GetWorld();
        DataBase db = serverCore.GetDataBase();

        if (!serverCore.isDedicated())
        {
            db.Login(playerName, "test", false);
        }
        bool playerRefhresh = true;

        for (int i = 0; i < w.ships.Count; i++)
        {
            if (w.ships[i].shipName.Equals(playerName))
            {
                NetOutgoingMessage outmsg = serverCore.CreateMessage();
                outmsg.Write((byte)PacketType.Deny);
                ServerPacketSender.SendMessageTo(outmsg, incmsg.SenderConnection);
                System.Threading.Thread.Sleep(100);
                incmsg.SenderConnection.Disconnect("bye");
                playerRefhresh = false;
                break;
            }
        }
        if (playerRefhresh == true)
        {
            //System.Threading.Thread.Sleep(100);
            int[] components = db.GetUserComponents(playerName);//{ 1, 1, 1, 1, 1, 1, 1 };
            if (components != null && components[0] != 0 && components[1] != 0)
            {
                byte[]     b   = db.GetUserHangar(playerName);
                ShipType   st  = (ShipType)b[0];
                Faction    f   = (Faction)b[1];
                Vector2    pos = f == Faction.Human ? new Vector2(0, 1500) : f == Faction.Enemy ? new Vector2(-1500, -500) : new Vector2(1500, -500);
                ShipPlayer s   = new ShipPlayer(pos, pos, f, st, components, w, 0, 0);
                s.shipName = playerName;
                GunSlot[] gs = db.GetUserGuns(playerName, s);
                s.AddGuns(gs);
                ServerPacketSender.SendAllShips(w, incmsg.SenderConnection);
                //timersToSendNpcs.Add(0);
                //netConnections.Add(incmsg.SenderConnection);
                ServerPacketSender.SendAllNpcs(w, incmsg.SenderConnection);
                w.ships.Add(s);
                ServerPacketSender.SendNewPlayer(s, false);
                ServerCore.LogAdd(playerName + " connected.");
            }
            else
            {
                ServerPacketSender.SendOpenGui(GuiType.SelectFaction, incmsg.SenderConnection);
            }
        }
    }
Пример #3
0
    public static void UpdatePlayers(World w, DataBase db)
    {
        for (int i = 0; i < w.ships.Count; i++)
        {
            w.ships[i].timeOut++;
            NetOutgoingMessage outmsg = server.CreateMessage();
            outmsg.Write((byte)PacketType.Move);
            outmsg.Write(w.ships[i].shipName);
            outmsg.Write(w.ships[i].Position.X);
            outmsg.Write(w.ships[i].Position.Y);
            outmsg.Write(w.ships[i].Rotation);
            outmsg.Write(w.ships[i].velocity.X);
            outmsg.Write(w.ships[i].velocity.Y);
            outmsg.Write(w.ships[i].hull);
            outmsg.Write(w.ships[i].shield);
            ServerPacketSender.SendMessageToAll(outmsg);
            if (w.ships[i].timeOut > 180)
            {
                ServerCore.LogAdd(w.ships[i].shipName + " is timed out.");
                //System.Threading.Thread.Sleep(100);

                if (server.ConnectionsCount != 0)
                {
                    outmsg = server.CreateMessage();

                    outmsg.Write((byte)PacketType.Disconnect);
                    outmsg.Write(w.ships[i].shipName);

                    SendMessageToAll(outmsg);
                }
                db.SaveUser(w.ships[i].shipName, w.ships[i]);
                w.ships.RemoveAt(i);
                i--;
                break;
            }
        }
    }
Пример #4
0
    private void ConfrimSelect(NetIncomingMessage incmsg)
    {
        string      playerName = incmsg.ReadString();
        World       w          = serverCore.GetWorld();
        DataBase    db         = serverCore.GetDataBase();
        ConfrimType ct         = (ConfrimType)incmsg.ReadByte();
        int         xpos       = serverCore.random.Next(2) == 0 ? 750 : -750;
        int         ypos       = serverCore.random.Next(2) == 0 ? 750 : -750;

        if (ct == ConfrimType.SelectFaction)
        {
            Faction   f          = (Faction)incmsg.ReadByte();
            ShipType  st         = 0;
            Vector2   pos        = Vector2.Zero;
            GunSlot[] gs         = new GunSlot[2];
            int[]     components = { 1, 1, 0, 0, 0, 0, 0 };
            if (f == Faction.Civilian)
            {
                st  = ShipType.CivSmall1;
                pos = new Vector2(1500, -500);
            }
            else if (f == Faction.Enemy)
            {
                st  = ShipType.EnemySmall1;
                pos = new Vector2(-1500, -500);
            }
            else if (f == Faction.Human)
            {
                st  = ShipType.HumanSmall1;
                pos = new Vector2(0, 1500);
            }
            ShipPlayer s = new ShipPlayer(pos, pos, f, st, components, w, 0, 0);
            s.shipName = playerName;
            if (f == Faction.Civilian)
            {
                for (int i = 0; i < 2; i++)
                {
                    gs[i] = new GunSlot(GunType.GausSmall, s);
                }
            }
            else if (f == Faction.Enemy)
            {
                for (int i = 0; i < 2; i++)
                {
                    gs[i] = new GunSlot(GunType.LaserSmall, s);
                }
            }
            else if (f == Faction.Human)
            {
                for (int i = 0; i < 2; i++)
                {
                    gs[i] = new GunSlot(GunType.PlasmSmall, s);
                }
            }
            s.jumpX = xpos;
            s.jumpY = ypos;
            s.AddGuns(gs);
            //timersToSendNpcs.Add(0);
            //netConnections.Add(incmsg.SenderConnection);
            ServerPacketSender.SendAllNpcs(w, incmsg.SenderConnection);
            w.ships.Add(s);
            ServerPacketSender.SendNewPlayer(s, false);
            ServerCore.LogAdd(playerName + " connected.");
            db.SaveUser(playerName, s);
        }
    }