Exemple #1
0
 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));
     }
 }
Exemple #2
0
        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)));
        }
Exemple #3
0
 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));
     }
 }
Exemple #4
0
 private static void OnTimer()
 {
     timer = null;
     if (currentSerial.IsValid && currentDmg > 0)
     {
         WorldEx.SendToClient(new Damage(currentSerial, currentDmg));
     }
     currentSerial = currentDmg = 0;
 }
Exemple #5
0
 private static void WeaponAbilities_WeaponSwitched()
 {
     WorldEx.SendToClient(new ClearAbility());
     if ((int)Current > 2)
     {
         new ExtCastSpellAction((int)Current, Serial.Zero).Perform();
     }
     Current = MoveType.None;
 }
Exemple #6
0
        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));
            }
        }
Exemple #7
0
 private static void OnCommand()
 {
     if (timer.Running)
     {
         WorldEx.SendToClient(new ToggleMove(403, false));
         timer.Stop();
     }
     else
     {
         timer.Start();
     }
 }
Exemple #8
0
 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;
     }
 }
Exemple #9
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);
            }
        }
Exemple #10
0
 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));
     }
 }
Exemple #11
0
        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);
            }
        }
Exemple #12
0
 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;
         }
     }
 }
Exemple #13
0
        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());
        }
Exemple #14
0
        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);
        }
Exemple #15
0
 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);
     }
 }
Exemple #16
0
        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;
        }
Exemple #17
0
        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));
            }
        }
Exemple #18
0
 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));
 }
Exemple #19
0
 private void textBox_LinkClicked(object s, LinkClickedEventArgs e)
 {
     WorldEx.SendToClient(new LaunchBrowser(e.LinkText));
     Engine.MainWindow.BeginInvoke((Action)(() => ChangeFocus(false, false)));
 }
Exemple #20
0
 private static void Hide(bool location, Serial serial, Point3D p, ushort gfxid)
 {
     WorldEx.SendToClient(new RemoveObject(serial));
 }