예제 #1
0
        public void UpdateDoor(DoorInformation newDoor, int charId)
        {
            Program.MainForm.LogDebug("UPDATING DOOR: " + charId);
            var member = GetById(charId);

            if (member != null)
            {
                member.door = newDoor;
                int idx = GetCharacterSlot(member);
                ForAllMembers(m => { if (m.GetChannel() == member.GetChannel())
                                     {
                                         m.SendPacket(PartyPacket.UpdateDoor(newDoor, (byte)idx));
                                     }
                              });
            }
        }
예제 #2
0
        private void UpdateAllDoors()
        {
            var mems  = members.Where(m => m != null);
            var doors = mems.Select(m => m.door);

            foreach (var door in doors.ToList())
            {
                var doorOwner = GetById(door.OwnerId);
                foreach (var m in mems.ToList())
                {
                    var idx = (byte)GetCharacterSlot(door.OwnerId);
                    if (m.GetMap() == door.DstMap && m.GetChannel() == doorOwner.GetChannel())
                    {
                        m.SendPacket(PartyPacket.UpdateDoor(door, idx));
                    }
                }
            }
        }