示例#1
0
        static public void StoreBuyList(PacketReader p, PacketHandlerEventArgs args)
        {
            Assistant.Serial serial = p.ReadUInt32();
            ushort           gump   = p.ReadUInt16();

            Assistant.Mobile vendor = Assistant.World.FindMobile(serial);
            if (vendor == null)
            {
                return;
            }

            Assistant.Item pack = vendor.GetItemOnLayer(Layer.ShopBuy);
            if (pack == null || pack.Contains == null || pack.Contains.Count <= 0)
            {
                return;
            }
            Vendor.LastVendor  = vendor;
            Vendor.LastBuyList = pack.Contains;
        }
示例#2
0
        internal static void ApplyColor(Assistant.Mobile m)
        {
            if (m.IsGhost)             // Non eseguire azione se fantasma
            {
                return;
            }

            int color = 0;

            if (m.Poisoned)
            {
                color = (int)HighLightColor.Poison;
            }
            else if (m.Paralized)
            {
                color = (int)HighLightColor.Paralized;
            }
            else if (m.Blessed)             // Mortal
            {
                color = (int)HighLightColor.Mortal;
            }
            else if (m == World.Player && Player.BuffsExist("Bload Oath (curse)"))
            {
                color = (int)HighLightColor.BloodOath;
            }
            else
            {
                Decolorize(m);
                return;
            }

            // Apply color for valid flag
            foreach (Layer l in m_colorized_layer)
            {
                Assistant.Item i = m.GetItemOnLayer(l);
                if (i == null)
                {
                    continue;
                }

                Assistant.Client.Instance.SendToClient(new EquipmentItem(i, (ushort)color, m.Serial));
            }
        }
示例#3
0
 /// <summary>
 /// Returns the Item associated with a Mobile Layer.
 /// </summary>
 /// <param name="layer">
 /// Layers:
 ///    Layername
 ///    RightHand
 ///    LeftHand
 ///    Shoes
 ///    Pants
 ///    Shirt
 ///    Head
 ///    Gloves
 ///    Ring
 ///    Neck
 ///    Waist
 ///    InnerTorso
 ///    Bracelet
 ///    MiddleTorso
 ///    Earrings
 ///    Arms
 ///    Cloak
 ///    OuterTorso
 ///    OuterLegs
 ///    InnerLegs
 /// </param>
 /// <returns>Item for the layer. Return null if not found or Layer invalid.</returns>
 public Item GetItemOnLayer(string layer)
 {
     Assistant.Layer assistantLayer = GetAssistantLayer(layer);
     if (assistantLayer != Assistant.Layer.Invalid)
     {
         Assistant.Item assistantItem = m_AssistantMobile.GetItemOnLayer(assistantLayer);
         if (assistantItem == null)
         {
             return(null);
         }
         else
         {
             RazorEnhanced.Item enhancedItem = new RazorEnhanced.Item(assistantItem);
             return(enhancedItem);
         }
     }
     else
     {
         return(null);
     }
 }
        private float GetAttribute(string attributename)
        {
            float attributevalue = 0;

            foreach (Layer l in m_layer_props)
            {
                Assistant.Item itemtocheck = m_mobile.GetItemOnLayer(l);
                if (itemtocheck == null)                 // Slot vuoto
                {
                    continue;
                }

                if (!itemtocheck.PropsUpdated)
                {
                    RazorEnhanced.Items.WaitForProps(itemtocheck.Serial, 1000);
                }

                attributevalue = attributevalue + RazorEnhanced.Items.GetPropValue(itemtocheck.Serial, attributename);
            }
            return(attributevalue);
        }
示例#5
0
        internal static void Decolorize(Assistant.Mobile m)
        {
            if (m.IsGhost)             // Non eseguire azione se fantasma
            {
                return;
            }

            foreach (Layer l in m_colorized_layer)
            {
                Assistant.Item i = m.GetItemOnLayer(l);
                if (i == null)
                {
                    continue;
                }

                if (i.ItemID == 0x204E && i.Hue == 0x08FD)                 // Death Shround
                {
                    i.ItemID = 0x1F03;
                }

                Assistant.Client.Instance.SendToClient(new EquipmentItem(i, i.Hue, m.Serial));
            }
        }
示例#6
0
        private static void DisplayBuy(PacketReader p, PacketHandlerEventArgs args)
        {
            if (!Engine.MainWindow.BuyCheckBox.Checked)             // Filtro disabilitato
            {
                return;
            }

            Assistant.Serial serial = p.ReadUInt32();
            ushort           gump   = p.ReadUInt16();

            Assistant.Mobile vendor = Assistant.World.FindMobile(serial);
            if (vendor == null)
            {
                return;
            }

            Assistant.Item pack = vendor.GetItemOnLayer(Layer.ShopBuy);
            if (pack == null || pack.Contains == null || pack.Contains.Count <= 0)
            {
                return;
            }

            int total = 0;
            int cost  = 0;
            List <Assistant.VendorBuyItem> buyList = new List <Assistant.VendorBuyItem>();           // Lista definita altrove (non rimuovere se si fa pulizia in giro)

            for (int i = 0; i < pack.Contains.Count; i++)
            {
                if (pack.Contains[i] == null)
                {
                    continue;
                }

                List <BuyAgent.BuyAgentItem> items = Settings.BuyAgent.ItemsRead(m_listname);

                foreach (BuyAgentItem buyItem in items)                 // Scansione item presenti in lista agent item
                {
                    if (!buyItem.Selected)
                    {
                        continue;
                    }

                    if (buyItem.Graphics != pack.Contains[i].ItemID || !RazorEnhanced.BuyAgent.ColorCheck(buyItem.Color, pack.Contains[i].Hue))
                    {
                        continue;
                    }

                    if (pack.Contains[i].Amount >= buyItem.Amount)                     // Caso che il vendor abbia piu' item di quelli richiesti
                    {
                        AddLog("Item match: 0x" + buyItem.Graphics.ToString("X4") + " - Amount: " + pack.Contains[i].Amount + " - Buyed: " + buyItem.Amount);
                        buyList.Add(new VendorBuyItem(pack.Contains[i].Serial, buyItem.Amount, pack.Contains[i].Price));
                        total += buyItem.Amount;
                        cost  += pack.Contains[i].Price * buyItem.Amount;
                    }
                    else                     // Caso che il vendor ne abbia di meno (Li compro tutti)
                    {
                        AddLog("Item match: 0x" + buyItem.Graphics.ToString("X4") + " - Amount: " + pack.Contains[i].Amount + " - Buyed: " + pack.Contains[i].Amount);
                        buyList.Add(new VendorBuyItem(pack.Contains[i].Serial, pack.Contains[i].Amount, pack.Contains[i].Price));
                        total += pack.Contains[i].Amount;
                        cost  += pack.Contains[i].Price * pack.Contains[i].Amount;
                    }
                }
            }

            if (buyList.Count <= 0)
            {
                return;
            }

            args.Block = true;
            Assistant.Client.Instance.SendToServer(new VendorBuyResponse(serial, buyList));

            string message = "Enhanced Buy Agent: bought " + total.ToString() + " items for " + cost.ToString() + " gold coins";

            World.Player.Journal.Enqueue(new RazorEnhanced.Journal.JournalEntry(message, "System", 1, "Vendor", vendor.Serial));                      // Journal buffer
            World.Player.SendMessage(message);
            AddLog("Bought " + total.ToString() + " items for " + cost.ToString() + " gold coins");
        }