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); } } }
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); } }