/// <summary> /// ptctl packet /// </summary> /// <param name="packet"></param> public void PetMove(PtCtlPacket packet) { string[] packetsplit = packet.PacketEnd.Split(' '); for (int i = 0; i < packet.Amount * 3; i += 3) { if (packetsplit.Count() >= packet.Amount * 3) { int PetId = int.Parse(packetsplit[i]); short PositionX = short.Parse(packetsplit[i + 1]); short PositionY = short.Parse(packetsplit[i + 2]); Mate mate = Session.Character.Mates.FirstOrDefault(s => s.MateTransportId == PetId); if (mate != null) { mate.PositionX = PositionX; mate.PositionY = PositionY; Session.CurrentMapInstance.Broadcast($"mv 2 {PetId} {PositionX} {PositionY} {mate.Monster.Speed}"); } } } /* * packet.Users.ForEach(u => * { * Mate mate = Session.Character.Mates.FirstOrDefault(s => s.MateTransportId == u.UserId); * if (mate != null) * { * mate.PositionX = u.UserX; * mate.PositionY = u.UserY; * Session.CurrentMapInstance.Broadcast($"mv 2 {u.UserId} { u.UserX} { u.UserY} {mate.Monster.Speed}"); * } * }); */ }
/// <summary> /// ptctl packet /// </summary> /// <param name="packet"></param> public void PetMove(PtCtlPacket packet) { string[] packetsplit = packet.PacketEnd.Split(' '); for (int i = 0; i < packet.Amount * 3; i += 3) { if (packetsplit.Length < packet.Amount * 3) { continue; } if (!int.TryParse(packetsplit[i], out int petId)) { return; } if (!short.TryParse(packetsplit[i + 1], out short positionX)) { return; } if (!short.TryParse(packetsplit[i + 2], out short positionY)) { return; } Mate mate = Session.Character.Mates.FirstOrDefault(s => s.MateTransportId == petId); if (mate == null) { continue; } mate.PositionX = positionX; mate.PositionY = positionY; Session.CurrentMapInstance.Broadcast($"mv 2 {petId} {positionX} {positionY} {mate.Monster.Speed}"); } }