Exemple #1
0
        public void SendCharacterEnteredMap(ZoneCharacter character)
        {
            //we send all players in region to character
            var characters = GetCharactersInRegion(character.MapSector);

            using (var packet = Handler7.SpawnMultiPlayer(characters, character))
            {
                character.Client.SendPacket(packet);
                if (character.Mount != null)
                {
                    character.Mounting(character.Mount.Handle, true);
                }
            }

            //we send character to all players in region
            using (var packet = Handler7.SpawnSinglePlayer(character))
            {
                foreach (var charinmap in characters)
                {
                    if (charinmap == character)
                    {
                        continue;
                    }
                    charinmap.Client.SendPacket(packet);
                }
            }

            //we send moblist and NPC to local character
            var npcs     = Objects.Values.Where(o => o is Npc);
            var monsters =
                GetObjectsBySectors(character.MapSector.SurroundingSectors).Where(o => o is Mob);

            var obj = new List <MapObject>(npcs);

            obj.AddRange(monsters);
            if (obj.Count > 0)
            {
                for (var i = 0; i < obj.Count; i += 255)
                {
                    using (var packet = Handler7.MultiObjectList(obj, i, i + Math.Min(255, obj.Count - i)))
                    {
                        character.Client.SendPacket(packet);
                    }
                }
            }

            //we send all drops to the character
            using (var spawndrops = Handler7.ShowDrops(GetDropsBySectors(character.MapSector.SurroundingSectors)))
            {
                character.Client.SendPacket(spawndrops);
            }
        }