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; }
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)); } }
/// <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); }
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)); } }
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"); }