public static void Broadcast(WorldConnector pConnector, InterPacket pPacket) { int packetlenght; byte[] packet; string charname; if (!pPacket.TryReadString(out charname, 16)) return; if (!pPacket.TryReadInt(out packetlenght)) return; if (!pPacket.TryReadBytes(packetlenght, out packet)) return; ZoneClient pClient = ClientManager.Instance.GetClientByCharName(charname); if (pClient == null) return; using (var ipacket = new InterPacket(InterHeader.SendBroiadCastList)) { List<ZoneCharacter> Sender = pClient.Character.Map.GetCharactersBySectors(pClient.Character.MapSector.SurroundingSectors); if (Sender.Count == 0) return; ipacket.WriteInt(packetlenght); ipacket.WriteBytes(packet); ipacket.WriteInt(Sender.Count); foreach (var character in Sender) { ipacket.WriteString(character.Name,16); } pConnector.SendPacket(ipacket); } }
public static void GetList(ZoneConnection pConnection, InterPacket pPacket) { int count, packetlenght; byte[] SendPacket; if (!pPacket.TryReadInt(out packetlenght)) return; if (!pPacket.TryReadBytes(packetlenght, out SendPacket)) return; if (!pPacket.TryReadInt(out count)) return; for (int i = 0; i < count; i++) { string charname; if(!pPacket.TryReadString(out charname,16)) return; WorldClient client= ClientManager.Instance.GetClientByCharname(charname); if(client !=null) using (var packet = new FiestaLib.Networking.Packet()) { packet.WriteBytes(SendPacket); client.SendPacket(packet); Log.WriteLine(LogLevel.Debug, "Send borcast to {0}", charname); } } }