private static void OnCommand(string[] args) { foreach (Item item in WorldEx.FindItemsG(0x2006, i => i.Amount == 0x0096 || i.Amount == 0x004D || (i.Hue == 0 && i.Amount == 0x0010))) { WorldEx.SendToClient(new RemoveObject(item)); } }
private static void ContainerContent(Packet p, PacketHandlerEventArgs args) { List <Serial> toRemove = new List <Serial>(); for (ushort count = p.ReadUInt16(); count > 0; count--) { Item item = World.FindItem(p.ReadUInt32()); if (item != null && item.Container == World.Player.Backpack) { foreach (FakeItem fake in items.Values) { if (item.ItemID == fake.OrigID && item.Hue == fake.OrigHue) { if (!fake.List.Contains(item.Serial)) { fake.List.Add(item.Serial); } toRemove.Add(item.Serial); } } } p.Seek(15, SeekOrigin.Current); } if (toRemove.Count > 0) { Resend(); } toRemove.ForEach(s => WorldEx.SendToClient(new RemoveObject(s))); }
private static void CancelArrow(PacketReader p, PacketHandlerEventArgs args) { if (p.Length == 6 && p.ReadUInt16() == 0x7 && p.ReadByte() == 1) { WorldEx.SendToClient(new QuestArrow(false, ushort.MaxValue, ushort.MaxValue)); } }
private static void OnTimer() { timer = null; if (currentSerial.IsValid && currentDmg > 0) { WorldEx.SendToClient(new Damage(currentSerial, currentDmg)); } currentSerial = currentDmg = 0; }
private static void WeaponAbilities_WeaponSwitched() { WorldEx.SendToClient(new ClearAbility()); if ((int)Current > 2) { new ExtCastSpellAction((int)Current, Serial.Zero).Perform(); } Current = MoveType.None; }
private static void Morph(string[] args) { ushort body; if (args.Length > 0 && ushort.TryParse(args[0], out body)) { World.Player.Body = body; WorldEx.SendToClient(new MobileUpdate(World.Player)); } }
private static void OnCommand() { if (timer.Running) { WorldEx.SendToClient(new ToggleMove(403, false)); timer.Stop(); } else { timer.Start(); } }
protected override void OnTick() { if (World.Player.IsGhost || !World.Player.Visible) { WorldEx.SendToClient(new ToggleMove(403, false)); Stop(); } else if (!enabled || i++ > 5) { WorldEx.SendToServer(new CastSpellFromMacro(403)); i = 0; } }
private static void OnProps(Packet p, PacketHandlerEventArgs args) { p.ReadUInt16(); Item item = World.FindItem(p.ReadUInt32()); ushort hue = GetHue(item); if (hue != 0) { Packet packet = new ContainerItem(item); packet.Seek(-2, SeekOrigin.End); packet.Write(hue); WorldEx.SendToClient(packet); } }
private static void MapPlot(PacketReader p, PacketHandlerEventArgs args) { p.ReadUInt32(); if (p.ReadByte() == 1 && p.ReadByte() == 0) { x += (ushort)(p.ReadUInt16() * 2); y += (ushort)(p.ReadUInt16() * 2); Point2D map = new Point2D(x, y); Point2D closest = positions.Aggregate((min, next) => Utility.Distance(map, min) < Utility.Distance(map, next) ? min : next); WorldEx.SendMessage(string.Format("Map opened to {0}, {1}. ({2})", x, y, positions.IndexOf(closest) + 1)); WorldEx.SendToClient(new QuestArrow(true, x, y)); } }
private static void LiftRequest(PacketReader p, PacketHandlerEventArgs args) { Serial serial = p.ReadUInt32(); if (items.ContainsKey(serial)) { lifting = p.ReadUInt16(); args.Block = true; WorldEx.SendToClient(new RemoveObject(serial)); } else { args.Block = PacketHandler.ProcessViewers(liftRequest, p); } }
private static void Event_RemoveObject(Serial serial) { foreach (FakeItem fake in items.Values) { if (fake.List.Remove(serial)) { if (fake.List.Count == 0) { WorldEx.SendToClient(new RemoveObject(fake.Serial)); } else { Resend(); } return; } } }
private static void OnProps(Packet p, PacketHandlerEventArgs args) { p.Seek(5, SeekOrigin.Begin); Item item = World.FindItem(p.ReadUInt32()); if (item == null || item.ItemID != 0x21FC || !keys.ContainsKey(item.Hue)) { return; } if (item.ObjPropList.m_CustomContent.Count == 0) { string color = ColorTranslator.ToHtml(Hues.GetHue(item.Hue).GetColor(30)); item.ObjPropList.Add("<basefont color={0}>{1}", color, keys[item.Hue]); } args.Block = true; WorldEx.SendToClient(item.ObjPropList.BuildPacket()); }
private static void DyeTarget(Serial target, ushort hue) { UOEntity targetObject = WorldEx.GetEntity(target); if (targetObject == null) { return; } Packet packet; if (targetObject is Item) { if (((Item)targetObject).Container is Mobile) { packet = new EquipmentItem((Item)targetObject, hue, ((Mobile)((Item)targetObject).Container).Serial); } else { packet = new ContainerItem((Item)targetObject); packet.Seek(-2, SeekOrigin.End); packet.Write(hue); } } else if (targetObject is Mobile) { Item mount = ((Mobile)targetObject).GetItemOnLayer(Layer.Mount); if (mount != null) { packet = new EquipmentItem(mount, hue, targetObject.Serial); } else { packet = new MobileIncoming((Mobile)targetObject); packet.Seek(15, SeekOrigin.Begin); packet.Write(hue); } } else { return; } WorldEx.SendToClient(packet); }
private static void Resend() { foreach (FakeItem fake in items.Values) { fake.Amount = (ushort)fake.List.Count; fake.Container = World.Player.Backpack; fake.ObjPropList.Remove(1050039); fake.ObjPropList.Remove(1072789); fake.ObjPropList.Add(1050039, "{0}\t{1}", fake.List.Count, fake.Name); fake.ObjPropList.Add(1072789, "{0}", fake.List.Count); if (fake.Amount > 0) { WorldEx.SendToClient(new ContainerItem(fake)); WorldEx.SendToClient(fake.ObjPropList.BuildPacket()); } ConfigEx.SetAttribute(fake.Position.X, "X", "FakeItems", fake.Name); ConfigEx.SetAttribute(fake.Position.Y, "Y", "FakeItems", fake.Name); } }
private static void OnParty(Packet p, PacketHandlerEventArgs args) { p.MoveToData(); if (p.ReadUInt16() != 6 || p.ReadByte() != 7) { return; } Mobile mobile = World.FindMobile(p.ReadUInt32()); if (responseID != 0 && mobile != null && mobile.Notoriety == 2) { WorldEx.SendToServer(new GumpResponse(responseID, gumpID, 1, new int[0], new GumpTextEntry[0])); } else { WorldEx.SendToClient(packet); } responseID = 0; packet = null; }
private static void Loot(Item bag) { if (bag == null) { return; } Item backpack; if (bag != World.Player.Backpack) { backpack = World.FindItem(LootBag.Bag); Clean(backpack, bag.FindItems(i => Looting.Items.Any(l => i.ItemID == l.Graphic && (i.Hue == l.Color || l.Color == 0xFFFF)))); Clean(backpack, bag.FindItems(0x0E34)); //kousky map Clean(backpack, bag.FindItems(0x26B8)); //dusty Clean(backpack, bag.FindItems(0x0E76)); //bagly Clean(backpack, bag.FindItems(0x14F0)); //pska Clean(backpack, bag.FindItems(0x0FAB)); //barvy Clean(backpack, bag.FindItems(0x0DCA, 0x0481)); //bila sit Clean(backpack, bag.FindItems(0x226E, 0x0065)); //kousky sos Clean(backpack, bag.FindItems(0x0F8B, 0x043D)); //moony Clean(backpack, bag.FindItems(0x3155, 0x048D)); //slzy Clean(backpack, bag.FindItems(0x1BC4, 0x0482)); //holy shield Clean(backpack, bag.FindItems(0x0F61, 0x0482)); //holy sword Clean(backpack, bag.FindItems(0x0F87, 0x0000)); //eye of newt Clean(backpack, bag.FindItems(0x1422, 0x0481)); //token Clean(backpack, bag.FindItems(0x1006, 0x0973)); //durab picovina Clean(backpack, bag.FindItems(0x1869, 0x04AE)); //sb Clean(backpack, bag.FindItems(0x0F0E, 0x099F)); //redidlo Clean(backpack, bag.FindItems(0x0EF0, 0x09F0)); //cechy Clean(backpack, bag.FindItems(0x097C, 0x09E2)); //fragmenty Clean(backpack, bag.FindItems(0x26B4, 0x0A11)); //charmy Clean(backpack, bag.FindItems(0x09EC, 0x0265)); //lestidlo 1 Clean(backpack, bag.FindItems(0x09EC, 0x0247)); //lestidlo 2 Clean(backpack, bag.FindItems(0x1877, i => i.Hue != 0)); //draty Clean(backpack, bag.FindItems(0x1F3D, i => i.Hue != 0)); //svitky Clean(backpack, bag.FindItems(IsLevel)); Clean(backpack, bag.FindItems(i => IsShitRunic(i) == null)); if (ConfigEx.GetElement(false, "LootBigDiamonds")) { Clean(backpack, bag.FindItems(IsBigDiamonds)); } foreach (Item item in bag.FindItems(IsSOSCrap)) { WorldEx.SendToClient(new RemoveObject(item.Serial)); } } backpack = World.Player.Backpack; Clean(backpack.FindItem(0x0E3B, 0x0489), bag.FindItems(i => Array.IndexOf(regs, i.ItemID) != -1)); //reagents Clean(backpack.FindItem(0x0E3B, 0x0489), bag.FindItems(0x0E76, i => i.Contains.Count == 0 && !i.IsBlessed())); //empty bags Clean(backpack.FindItem(0x0E79, 0x001A), bag.FindItems(0x0F0E, 0x0000)); //empty bottles Clean(backpack.FindItem(0x0E79, 0x001A), bag.FindItems(0x0C64, 0x0490)); //zoogi vejce Clean(backpack.FindItem(0x0E79, 0x001A), bag.FindItems(0x2808, 0)); //smoke bomb Clean(backpack.FindItem(0x0E79, 0x001A), bag.FindItems(0x0F0B, 0x0367)); //pet res Clean(backpack.FindItem(0x0E79, 0x001A), bag.FindItems(0x0F0B, 0x0774)); //repair Clean(backpack.FindItem(0x2252, 0x08AC), bag.FindItems(0x0EF0, 0x0000)); //silver Item quiver = World.Player.GetItemOnLayer(Layer.MiddleTorso); if (quiver == null || (!quiver.IsQuiver() && !IsQuiverSash(quiver))) { quiver = backpack.FindItem(i => i.IsQuiver() || IsQuiverSash(i)); } Clean(quiver, bag.FindItems(i => i.ItemID == 0x0F3F || i.ItemID == 0x1BFB)); //ammo Item gpBag = World.FindItem(ConfigEx.GetElement <uint>(0, "GPBag")); Clean(gpBag, bag.FindItems(0x0EED, 0x0000, i => i.Container != gpBag)); //gp Item whiteBall = backpack.FindItem(0x0E73, 0x0702, recurse: false); if (whiteBall != null) { Clean(backpack, bag.FindItems(0x0E73, 0x0702, i => i != whiteBall)); } else { Clean(backpack.FindItem(0x0E79, 0x001A), bag.FindItems(0x0E73, 0x0702)); } Item brownBall = backpack.FindItem(0x0E73, 0x0629, recurse: false); if (brownBall != null) { Clean(backpack, bag.FindItems(0x0E73, 0x0629, i => i != brownBall)); } else { Clean(backpack.FindItem(0x0E79, 0x001A), bag.FindItems(0x0E73, 0x0629)); } Item medovina = backpack.FindItem(0x09EC, 0x002C, recurse: false); if (medovina != null) { Clean(backpack, bag.FindItems(0x09EC, 0x002C, i => i != medovina)); } else { Clean(backpack.FindItem(0x0E79, 0x001A), bag.FindItems(0x09EC, 0x002C)); } Clean(backpack.FindItem(0x0E79, 0x0488), bag.FindItems(i => Array.IndexOf(petPlant, i.ItemID) != -1)); //petplant Clean(backpack.FindItem(0x24D7, 0x0556), bag.FindItems(i => (IsFish(i.ItemID) && !IsBigFish(i)) || (i.ItemID == 0x0DCA && i.Hue == 0x08A0))); //fishbag + site Clean(backpack.FindItem(0x09B0, 0x048E), bag.FindItems(IsShitResource)); //food+resources Clean(backpack.FindItem(0x2252, 0x0492), bag.FindItems(0x14EC, 0)); //mapky if (!ConfigEx.GetElement(false, "CleanerSOS")) { Clean(backpack.FindItem(0x22C5, IsSOSBook), bag.FindItems(0x14ED, recurse: false)); //sosky vsechny } else { Clean(backpack.FindItem(0x09B0, 0x048E), bag.FindItems(0x14ED, 0, recurse: false)); //trash obyc Clean(backpack.FindItem(0x22C5, IsSOSBook), bag.FindItems(0x14ED, i => i.Hue != 0, recurse: false)); //uklid ostatni } foreach (Item item in bag.FindItems(0x099F))//flasky se soskama { ActionQueue.DoubleClick(true, item.Serial); } foreach (Item item in backpack.FindItems(0x0ECF, 0)) //kosti { Clean(backpack.FindItem(0x09B0, 0x048E), item.FindItems(0x1EFD, 0x04D1)); Clean(backpack.FindItem(0x09B0, 0x048E), item.FindItems(0x170D, 0x0000)); Clean(backpack.FindItem(0x09B0, 0x048E), item.FindItems(0x1539, 0x045E)); Clean(backpack.FindItem(0x09B0, 0x048E), item.FindItems(0x171B, 0x0006)); Clean(backpack.FindItem(0x09B0, 0x048E), item.FindItems(IsSextant)); } }
private static void ShowPosition(int x, int y) { WorldEx.SendMessage(string.Format("SOS position: {0}, {1} ({2})", x, y, Utility.Distance(World.Player.Position.X, World.Player.Position.Y, x, y))); WorldEx.SendToClient(new QuestArrow(true, (ushort)x, (ushort)y)); }
private void textBox_LinkClicked(object s, LinkClickedEventArgs e) { WorldEx.SendToClient(new LaunchBrowser(e.LinkText)); Engine.MainWindow.BeginInvoke((Action)(() => ChangeFocus(false, false))); }
private static void Hide(bool location, Serial serial, Point3D p, ushort gfxid) { WorldEx.SendToClient(new RemoveObject(serial)); }