private void UpdateMove(NetIncomingMessage incmsg) { string name = incmsg.ReadString(); World w = serverCore.GetWorld(); for (int i = 0; i < w.ships.Count; i++) { if (w.ships[i].shipName.Equals(name)) { w.ships[i].timeOut = 0; w.ships[i].cursorPosition = new Vector2(incmsg.ReadSingle(), incmsg.ReadSingle()); w.ships[i].isWPress = incmsg.ReadBoolean(); w.ships[i].isSPress = incmsg.ReadBoolean(); w.ships[i].isAPress = incmsg.ReadBoolean(); w.ships[i].isDPress = incmsg.ReadBoolean(); w.ships[i].isXPress = incmsg.ReadBoolean(); w.ships[i].isLeftPress = incmsg.ReadBoolean(); w.ships[i].isRightPress = incmsg.ReadBoolean(); return; } } NetOutgoingMessage outmsg = serverCore.CreateMessage(); outmsg.Write((byte)PacketType.DestroyShip); outmsg.Write(name); ServerPacketSender.SendMessageTo(outmsg, incmsg.SenderConnection); }
// Update is called once per frame //void FixedUpdate() //{ // ServerPacketSender.ProjectilePosition(this); //} public IEnumerator Remove() { yield return(new WaitForSeconds(5f)); ServerPacketSender.DespawnProjectile(this); Despawn(); }
private void UpdateNetwork() { stNet.Restart(); //UpdatePackets(true, null, null); lock (messages) { server.ReadMessages(messages); List <NetIncomingMessage> mss = messages; for (int i = 0; i < mss.Count; i++) { NetIncomingMessage m = mss[i]; switch (m.MessageType) { case NetIncomingMessageType.Data: PacketType pk = (PacketType)m.ReadByte(); packetHandler.ReadPacket(pk, m); //UpdatePackets(false, m, messages); mss.Remove(m); server.Recycle(m); break; } } } //if (timerUpdate++ > 20) { //timerUpdate = 0; } //else if(timerUpdate == 20) { ServerPacketSender.UpdatePlayers(world, db); ServerPacketSender.UpdateNpcs(world); } stNet.Stop(); netTime = stNet.Elapsed; }
public bool Shoot() { if (shootTimer <= 0 && ownerShip.energy >= energyCost) { if (!ownerShip.world.isRemote) { Bullet bp = new Bullet(gunType, ownerShip, Position, Rotation, bulletSpeed, ownerShip.world); ownerShip.energy -= energyCost; effectColor = bp.color; shootTimer = shootTimerMax; ownerShip.world.bullets.Add(bp); ServerPacketSender.CreateBullet(bp); } else { Bullet bp = new Bullet(gunType, ownerShip, Position, Rotation, bulletSpeed, ownerShip.world); effectColor = bp.color; shootTimer = shootTimerMax; ownerShip.energy -= energyCost; randomSize = 1 + (float)core.random.NextDouble() / 4F; randomEffect = (byte)core.random.Next(2); } return(true); } return(false); }
private void Respawn(NetIncomingMessage incmsg) { string playerName = incmsg.ReadString(); DataBase db = serverCore.GetDataBase(); World w = serverCore.GetWorld(); 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); int xpos = serverCore.random.Next(2) == 0 ? 750 : -750; int ypos = serverCore.random.Next(2) == 0 ? 750 : -750; s.jumpX = xpos; s.jumpY = ypos; w.ships.Add(s); ServerPacketSender.SendNewPlayer(s, true); } }
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; } } }
private void Message(NetIncomingMessage incmsg) { NetOutgoingMessage outmsg = serverCore.GetServer().CreateMessage(); outmsg.Write((byte)PacketType.Message); outmsg.Write(incmsg.ReadString()); outmsg.Write(incmsg.ReadString()); ServerPacketSender.SendMessageToAll(outmsg); }
// Start is called before the first frame update public void Init(Vector3 dir) { id = idIndex; idIndex++; Projectiles.Add(id, this); GetComponent <Rigidbody>().AddForce(dir * 300f); ServerPacketSender.SpawnProjectile(this); StartCoroutine(Remove()); }
public static void TimeSync(Packet _packet) { int id = _packet.ReadInt(); long clientTimeStamp = _packet.ReadLong(); int clientLatency = _packet.ReadInt(); //save of the client Server.clients[id].Latency = clientLatency; ServerPacketSender.TimeSync(id, clientTimeStamp, DateTime.UtcNow.Ticks); }
private void Hit(Player hitPlayer, bool head) { Server.clients [this.PlayerID].player.Score += head ? 3 : 1; if (Server.clients.ContainsKey(hitPlayer.ID)) { Console.WriteLine($"Player {Server.clients [ this.PlayerID ].player.Username} hit {hitPlayer.Username} in the {(head ? "head" : "body")} with a fireball"); ServerPacketSender.PlayerScoreUpdated(this.PlayerID, Server.clients [this.PlayerID].player.Score); } }
private void Register(NetIncomingMessage incmsg) { string name = incmsg.ReadString(); string pass = incmsg.ReadString(); string s = serverCore.GetDataBase().Register(name, pass); NetOutgoingMessage outmsg = serverCore.CreateMessage(); outmsg.Write((byte)PacketType.LogRegMsg); outmsg.Write(s); ServerPacketSender.SendMessageTo(outmsg, incmsg.SenderConnection); }
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); } } }
public static void PlayerReadyStateUpdated(Packet _packet) { int clientID = _packet.ReadInt(); bool readyState = _packet.ReadBool(); if (Server.clients.ContainsKey(clientID)) { Server.clients[clientID].player.IsReady = readyState; // Send player ready updated to all other players ServerPacketSender.PlayerReadyStateUpdated(clientID, Server.clients[clientID].player.IsReady); } }
internal static void Configure(Packet _packet) { string messageJSON = _packet.ReadString(); GameserverInstance configuration = JsonConvert.DeserializeObject <GameserverInstance>(messageJSON); Server.GameserverInstance = configuration; Console.WriteLine("Server configuration recieved"); Console.WriteLine("Configuring server.."); Console.WriteLine("Server configured"); Console.WriteLine("\n"); //Send ready state ServerPacketSender.SendReadyState(); }
public void ReadPacket(PacketType pk, NetIncomingMessage incmsg) { switch (pk) { case PacketType.Message: Message(incmsg); break; case PacketType.Respawn: Respawn(incmsg); break; case PacketType.SelectShip: SelectShip(incmsg); break; case PacketType.ConfrimSelect: ConfrimSelect(incmsg); break; case PacketType.Register: Register(incmsg); break; case PacketType.Move: UpdateMove(incmsg); break; case PacketType.Disconnect: DisconnetPlayer(incmsg); break; case PacketType.Login: Login(incmsg); break; case PacketType.Connect: if (!serverCore.isDedicated()) { Connect(incmsg.ReadString(), incmsg); } break; case PacketType.Refresh: NetOutgoingMessage outmsg = serverCore.CreateMessage(); outmsg.Write((byte)PacketType.Refresh); ServerPacketSender.SendMessageTo(outmsg, incmsg.SenderConnection); break; } }
public void SpawnPlayer(string _userName, int score = -1) { player = ServerManager.instance.SpawnPlayer(); if (score < 0) { player.Initialize(id, _userName); Console.WriteLine("New player spawned!"); } else { player.Initialize(id, _userName, score); Console.WriteLine("Existing player spawned!"); } //Send all existing players to the client foreach (var client in Server.clients.Values) { //if player exists if (client.player != null) { //If not this player if (client.id != id) { ServerPacketSender.SpawnPlayer(id, client.player); } } } //Send the new player, to all existing player foreach (var client in Server.clients.Values) { if (client.player != null) { //If not this player if (client.id != id) { ServerPacketSender.SpawnPlayer(client.id, player); } } } //Send all existing fireballs to the connecting player foreach (var fireball in ServerManager.instance.Fireballs.Values) { ServerPacketSender.SpawnFireball(id, fireball); } }
private void Login(NetIncomingMessage incmsg) { string playerName = incmsg.ReadString(); string password = incmsg.ReadString(); string s = serverCore.GetDataBase().Login(playerName, password, serverCore.isDedicated()); if (s.Equals("Успешно")) { Connect(playerName, incmsg); } else { NetOutgoingMessage outmsg = serverCore.CreateMessage(); outmsg.Write((byte)PacketType.LogRegMsg); outmsg.Write(s); ServerPacketSender.SendMessageTo(outmsg, incmsg.SenderConnection); } }
public static void RegisterServer() { TcpClient tcpClient = new TcpClient(_serverManagerIP, _serverManagerPort); ServerManagerTCP = new TCP(); ServerManagerTCP.Connect(tcpClient, PacketHandlers.ServerManagerServer, false); Console.WriteLine("Getting game ID.."); //string gameIdentifier = GetGameID(); string gameIdentifier = "game -" + UnityEngine.Random.Range(0, 10000).ToString(); Console.WriteLine("GameID: " + gameIdentifier); Console.WriteLine("\n"); Console.WriteLine("Creating game instance.."); GameserverInstance = new GameserverInstance() { GameserverID = "", // Read from kubernetes pod Port = ((IPEndPoint)tcpListener.LocalEndpoint).Port, IP = "212.10.51.254" }; if (gameIdentifier.Contains("game-")) { GameserverInstance.GameserverID = gameIdentifier; } else { GameserverInstance.GameserverID = "Default"; } Console.WriteLine("Instance created"); Console.WriteLine($"ServerID {GameserverInstance.GameserverID}"); Console.WriteLine($"Server IP {GameserverInstance.IP}"); Console.WriteLine($"Server Port {GameserverInstance.Port}"); Console.WriteLine("\n"); ServerPacketSender.RegisterServer(); //tcpClient.GetStream().BeginWrite(packet.ToArray(), 0, packet.Length(), null, null); }
public void Connect(TcpClient _client, Dictionary <int, PacketHandler> _packetHandlers, bool isClient = true) { client = _client; client.ReceiveBufferSize = dataBufferSize; packetHandlers = _packetHandlers; stream = client.GetStream(); receiveBuffer = new byte[dataBufferSize]; stream.BeginRead(receiveBuffer, 0, dataBufferSize, ReceiveCallback, null); //Initialize the packet class incomingPacket = new Packet(); if (isClient) { ServerPacketSender.WelcomeMessage(id, "This is a welcome message!"); } }
public void Disconnect() { if (isConnected) { ServerManager.instance.PlayerDisconnected(player); tcp.Disconnected -= Server.DisconnectClient; isConnected = false; ThreadManager.ExecuteOnMainThread(() => { UnityEngine.Object.Destroy(player.gameObject); player = null; }); ServerPacketSender.PlayerDisonnected(id); tcp.Disconnect(); udp.Disconnect(); Debug.Log("Disconnected from server."); } }
private void GunsShoot() { GetGunsMinMaxDis(); FixShipMinMaxDis(); if (gunSlots != null && rotateDifference >= 175 && rotateDifference < 185) { for (int i = 0; i < gunSlots.Length; i++) { if (gunSlots[i] != null) { if (Vector2.Distance(target.Position, Position) <= gunSlots[i].maxDis) { gunSlots[i].Shoot(); ServerPacketSender.SendGunShoot(i, id); } } } } /*if (turretSlots != null) * { * for (int i = 0; i < turretSlots.Length; i++) * { * if (turretSlots[i] != null) * { * turretSlots[i].Shoot(true); * } * } * } * if (rocketSlots != null && target.GetType() != typeof(Asteroid)) * { * for (int i = 0; i < rocketSlots.Length; i++) * { * if (rocketSlots[i] != null) * rocketSlots[i].Shoot(); * } * }*/ }
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; } } }
private void FixedUpdate() { ServerPacketSender.UpdateFireballsCollection(); ServerPacketSender.PlayerPositions(); }
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); } }
private void Control() { Vector2 ShipAcceleration = Vector2.Zero; Vector2 Forcevelocity = Vector2.Zero; String direction = ""; if (world.isRemote && shipName.Equals(core.GetPlayerName()) && core.currentGui == null && core.currentGuiAdd == null && !core.isChat) { RotateToVector(core.inputManager.cursorAdvancedPosition, Vector2.Zero); if (core.inputManager.IsLeftButtonDown() && !core.guiInGame.controlButton.Rect.Contains(new Point((int)core.inputManager.cursor.Position.X, (int)core.inputManager.cursor.Position.Y))) { if (gunSlots != null) { for (int i = 0; i < gunSlots.Length; i++) { if (gunSlots[i] != null) { if (gunSlots[i].Shoot()) { break; } } } } /*if (turretSlots != null) * { * for (int i = 0; i < turretSlots.Length; i++) * { * if (turretSlots[i] != null) * { * if (turretSlots[i].Shoot(false)) * break; * } * } * }*/ } /*if (core.inputManager.IsRightButtonDown()) * { * /*if (rocketSlots != null) * { * for (int i = 0; i < rocketSlots.Length; i++) * { * if (rocketSlots[i] != null) * { * if (rocketSlots[i].Shoot()) * break; * } * } * } * }*/ if (core.inputManager.IsKeyDown(Keys.W)) { ShipAcceleration = new Vector2(-(float)Math.Cos(Rotation), -(float)Math.Sin(Rotation)) / (mass + armorMass); direction = "Up"; ShipEngine(0, cos, cos1, sin, sin1); } else if (core.inputManager.IsKeyDown(Keys.S) && shipInfo.manevering) { ShipAcceleration = new Vector2((float)Math.Cos(Rotation), (float)Math.Sin(Rotation)) / (mass + armorMass); direction = "Down"; ShipEngine(3, cos, cos1, sin, sin1); } else { direction = ""; if (core.inputManager.IsKeyDown(Keys.X)) { float horiz = velocity.X; float vertic = velocity.Y; velocity.X = horiz -= Settings.gravity * 20 * horiz; velocity.Y = vertic -= Settings.gravity * 20 * vertic; if (shipInfo.manevering) { ShipEngine(1, cos, cos1, sin, sin1); ShipEngine(2, cos, cos1, sin, sin1); ShipEngine(3, cos, cos1, sin, sin1); ShipEngine(0, cos, cos1, sin, sin1); } } else { float horiz = velocity.X; float vertic = velocity.Y; velocity.X = horiz -= Settings.gravity * horiz; velocity.Y = vertic -= Settings.gravity * vertic; } } if (core.inputManager.IsKeyDown(Keys.A) && shipInfo.manevering) { Forcevelocity = new Vector2((float)Math.Cos(Rotation + 1.57F), (float)Math.Sin(Rotation + 1.57F)) / (mass + armorMass); ShipEngine(1, cos, cos1, sin, sin1); } else if (core.inputManager.IsKeyDown(Keys.D) && shipInfo.manevering) { Forcevelocity = new Vector2((float)Math.Cos(Rotation - 1.57F), (float)Math.Sin(Rotation - 1.57F)) / (mass + armorMass); ShipEngine(2, cos, cos1, sin, sin1); } } else { RotateToVector(cursorPosition, Vector2.Zero); if (isLeftPress) { if (gunSlots != null) { for (int i = 0; i < gunSlots.Length; i++) { if (gunSlots[i] != null) { if (gunSlots[i].Shoot()) { ServerPacketSender.SendGunShoot(i, shipName); break; } } } } /*if (turretSlots != null) * { * for (int i = 0; i < turretSlots.Length; i++) * { * if (turretSlots[i] != null) * { * if (turretSlots[i].Shoot(false)) * break; * } * } * }*/ } /*if (core.inputManager.IsRightButtonDown()) * { * /*if (rocketSlots != null) * { * for (int i = 0; i < rocketSlots.Length; i++) * { * if (rocketSlots[i] != null) * { * if (rocketSlots[i].Shoot()) * break; * } * } * } * }*/ if (isWPress) { ShipAcceleration = new Vector2(-(float)Math.Cos(Rotation), -(float)Math.Sin(Rotation)) / (mass + armorMass); direction = "Up"; //ServerPacketSender.SendShipEngine(this, 0); ShipEngine(0, cos, cos1, sin, sin1); } else if (isSPress && shipInfo.manevering) { ShipAcceleration = new Vector2((float)Math.Cos(Rotation), (float)Math.Sin(Rotation)) / (mass + armorMass); direction = "Down"; ServerPacketSender.SendShipEngine(this, 3); } else { direction = ""; if (isXPress) { float horiz = velocity.X; float vertic = velocity.Y; velocity.X = horiz -= Settings.gravity * 20 * horiz; velocity.Y = vertic -= Settings.gravity * 20 * vertic; if (shipInfo.manevering) { for (byte i = 0; i < 4; i++) { ServerPacketSender.SendShipEngine(this, i); } } } else { float horiz = velocity.X; float vertic = velocity.Y; velocity.X = horiz -= Settings.gravity * horiz; velocity.Y = vertic -= Settings.gravity * vertic; } } if (isAPress && shipInfo.manevering) { Forcevelocity = new Vector2((float)Math.Cos(Rotation + 1.57F), (float)Math.Sin(Rotation + 1.57F)) / (mass + armorMass); ServerPacketSender.SendShipEngine(this, 1); } else if (isDPress && shipInfo.manevering) { Forcevelocity = new Vector2((float)Math.Cos(Rotation - 1.57F), (float)Math.Sin(Rotation - 1.57F)) / (mass + armorMass); ServerPacketSender.SendShipEngine(this, 2); } } if (ShipAcceleration != Vector2.Zero) { Vector2 newvelocity = velocity + ShipAcceleration; if (newvelocity.Length() > velocity.Length()) { double b; if (direction == "Up") { b = 1 - velocity.LengthSquared() / (maxSpeedFace * maxSpeedFace); } else { b = 1 - velocity.LengthSquared() / (maxSpeedBack * maxSpeedBack); } if (b <= 0) { b = 0; } double lorentz_factor = 1 / Math.Sqrt(b); ShipAcceleration.X /= (float)lorentz_factor; ShipAcceleration.Y /= (float)lorentz_factor; } velocity += ShipAcceleration; if (velocity.Length() > 0) { newvelocity.Normalize(); velocity = newvelocity * velocity.Length(); } } if (Forcevelocity != Vector2.Zero) { Vector2 newvelocity = velocity + Forcevelocity; if (newvelocity.Length() > velocity.Length()) { double b = 1 - velocity.LengthSquared() / (maxSpeedForce * maxSpeedForce); if (b <= 0) { b = 0; } double lorentz_factor = 1 / Math.Sqrt(b); Forcevelocity.X /= (float)lorentz_factor; Forcevelocity.Y /= (float)lorentz_factor; } velocity += Forcevelocity; if (velocity.Length() > 0) { newvelocity.Normalize(); velocity = newvelocity * velocity.Length(); } } }
void Init() { ServerPacketSender.SpawnFireball(this); }
public void Despawn(bool explode) { ServerPacketSender.DespawnFireball(ID, explode); Destroy(this.gameObject); }
private void SpawnShips() { World w = ServerCore.GetServerCore().GetWorld(); if (faction == Faction.Enemy) { if (spawnerType == SpawnerType.Easy) { for (int i = 0; i < maxShips; i++) { Vector2 rndVector = new Vector2(core.random.Next(-500, 500), core.random.Next(-500, 500)) + Position; int[] comp = { 1, 1, 0, 0, 0, 0, 0 }; //r e s a a a a; ShipNPC s = new ShipNPC(rndVector, rndVector, faction, ShipType.EnemySmall1, comp, w, AiSearchType.Around, AiAgressiveType.Attack); GunSlot[] gs = { new GunSlot(GunType.LaserSmall, s), new GunSlot(GunType.LaserSmall, s) }; s.AddGuns(gs); s.cargoSize = s.maxCargoSize; s.crewSize = s.maxCrewSize; s.shipName = "<BOT> Saimon"; s.id = w.GetNpcId(); ships.Add(s); w.shipsNpc.Add(s); ServerPacketSender.SendCreateNpcShip(s); } } } else if (faction == Faction.Human) { if (spawnerType == SpawnerType.Easy) { for (int i = 0; i < maxShips; i++) { Vector2 rndVector = new Vector2(core.random.Next(-500, 500), core.random.Next(-500, 500)) + Position; int[] comp = { 1, 1, 0, 0, 0, 0, 0 }; //r e s a a a a; ShipNPC s = new ShipNPC(rndVector, rndVector, faction, ShipType.HumanSmall1, comp, w, AiSearchType.Around, AiAgressiveType.Attack); GunSlot[] gs = { new GunSlot(GunType.PlasmSmall, s), new GunSlot(GunType.PlasmSmall, s) }; s.AddGuns(gs); s.cargoSize = s.maxCargoSize; s.crewSize = s.maxCrewSize; s.shipName = "<BOT> Human"; s.id = w.GetNpcId(); ships.Add(s); w.shipsNpc.Add(s); ServerPacketSender.SendCreateNpcShip(s); } } } else if (faction == Faction.Civilian) { if (spawnerType == SpawnerType.Easy) { for (int i = 0; i < maxShips; i++) { Vector2 rndVector = new Vector2(core.random.Next(-500, 500), core.random.Next(-500, 500)) + Position; int[] comp = { 1, 1, 0, 0, 0, 0, 0 }; //r e s a a a a; ShipNPC s = new ShipNPC(rndVector, rndVector, faction, ShipType.CivSmall1, comp, w, AiSearchType.Around, AiAgressiveType.Attack); GunSlot[] gs = { new GunSlot(GunType.GausSmall, s), new GunSlot(GunType.GausSmall, s) }; s.AddGuns(gs); s.cargoSize = s.maxCargoSize; s.crewSize = s.maxCrewSize; s.shipName = "<BOT> Engi"; s.id = w.GetNpcId(); ships.Add(s); w.shipsNpc.Add(s); ServerPacketSender.SendCreateNpcShip(s); } } } }