//0x20 private static void OnPlayerUpdate(Packet p) { if (p.ReadUInt() != Player) throw new Exception("OnMobileStatus");//does this happen? movementQueue.Clear(); Player.Graphic = (ushort)(p.ReadUShort() + p.ReadSByte()); Player.Hue = p.ReadUShort(); Player.Flags = (UOFlags)p.ReadByte(); ushort x = p.ReadUShort(); ushort y = p.ReadUShort(); p.Skip(2);//unknown Player.Direction = (Direction)p.ReadByte(); Player.Position = new Position(x, y, p.ReadSByte()); OnPlayerMoved(); Player.ProcessDelta(); }
//0x21 private static void OnMovementRejected(Packet p) { movementQueue.Clear(); p.Skip(1); ushort x = p.ReadUShort(); ushort y = p.ReadUShort(); Player.Direction = (Direction)p.ReadByte(); Player.Position = new Position(x, y, p.ReadSByte()); Player.ProcessDelta(); }
//0x78 private static void OnMobileIncoming(Packet p) { Mobile mobile = GetOrCreateMobile(p.ReadUInt()); mobile.Graphic = p.ReadUShort(); mobile.Position = new Position(p.ReadUShort(), p.ReadUShort(), p.ReadSByte()); mobile.Direction = (Direction)p.ReadByte(); mobile.Hue = p.ReadUShort(); mobile.Flags = (UOFlags)p.ReadByte(); mobile.Notoriety = (Notoriety)p.ReadByte(); uint itemSerial; while ((itemSerial = p.ReadUInt()) != 0) { Item item = GetOrCreateItem(itemSerial); ushort graphic = p.ReadUShort(); item.Layer = (Layer)p.ReadByte(); if (useNewMobileIncoming.Value || (graphic & 0x8000) != 0) item.Hue = p.ReadUShort(); if (useNewMobileIncoming.Value) item.Graphic = graphic; else if (usePostSAChanges.Value) item.Graphic = (ushort)(graphic & 0x7FFF); else item.Graphic = (ushort)(graphic & 0x3FFF); item.Amount = 1; item.Container = mobile; mobile.Items.Add(item); item.ProcessDelta(); Items.Add(item); } mobile.ProcessDelta(); if (Mobiles.Add(mobile)) Mobiles.ProcessDelta(); Items.ProcessDelta(); }
//0x77 private static void OnMobileMoving(Packet p) { Mobile mobile = GetOrCreateMobile(p.ReadUInt()); mobile.Graphic = p.ReadUShort(); mobile.Position = new Position(p.ReadUShort(), p.ReadUShort(), p.ReadSByte()); mobile.Direction = (Direction)p.ReadByte(); mobile.Hue = p.ReadUShort(); mobile.Flags = (UOFlags)p.ReadByte(); mobile.Notoriety = (Notoriety)p.ReadByte(); mobile.ProcessDelta(); if (Mobiles.Add(mobile)) Mobiles.ProcessDelta(); }