// Funzioni di controllo da script /// <summary> /// Reset the Autoloot ignore list. /// </summary> public static void ResetIgnore() { m_IgnoreCorpseList.Clear(); AutoLoot.SerialToGrabList = new ConcurrentQueue <SerialToGrab>(); DragDropManager.AutoLootSerialCorpseRefresh = new ConcurrentQueue <int>(); Scavenger.ResetIgnore(); }
internal static void ExportScavenger(string listname) { SaveFileDialog sd = new SaveFileDialog(); sd.Filter = "Enhanced Razor Export|*.raz"; sd.Title = "Export Scavenger List"; sd.FileName = "SC." + listname + ".raz"; sd.RestoreDirectory = true; if (sd.ShowDialog() == DialogResult.OK) { DataSet m_Dataset = new DataSet(); DataTable scavenger_items = new DataTable("SCAVENGER_ITEMS"); scavenger_items.Columns.Add("List", typeof(string)); scavenger_items.Columns.Add("Item", typeof(RazorEnhanced.Scavenger.ScavengerItem)); m_Dataset.Tables.Add(scavenger_items); m_Dataset.AcceptChanges(); List <Scavenger.ScavengerItem> items = Settings.Scavenger.ItemsRead(listname); foreach (RazorEnhanced.Scavenger.ScavengerItem item in items) { DataRow row = m_Dataset.Tables["SCAVENGER_ITEMS"].NewRow(); row["List"] = listname; row["Item"] = item; m_Dataset.Tables["SCAVENGER_ITEMS"].Rows.Add(row); } try { m_Dataset.RemotingFormat = SerializationFormat.Binary; m_Dataset.SchemaSerializationMode = SchemaSerializationMode.IncludeSchema; Stream stream = File.Create(sd.FileName); GZipStream compress = new GZipStream(stream, CompressionMode.Compress); BinaryFormatter bin = new BinaryFormatter(); bin.Serialize(compress, m_Dataset); compress.Close(); stream.Close(); Scavenger.AddLog("List: " + listname + " exported"); } catch (Exception ex) { Scavenger.AddLog("Export list fail"); Scavenger.AddLog(ex.ToString()); } } else { Scavenger.AddLog("Export list cancelled."); } }
internal static void ProfileChange(string name) { // Salvo parametri di uscita RazorEnhanced.Settings.General.SaveExitData(); PasswordMemory.ProfileChangeInit(); Assistant.Engine.MainWindow.Initializing = true; // Stop timer script if (RazorEnhanced.Scripts.Timer != null) { RazorEnhanced.Scripts.Timer.Close(); } // Stop forzato di tutti i thread agent if (Assistant.Engine.MainWindow.AutolootCheckBox.Checked == true) { Assistant.Engine.MainWindow.AutolootCheckBox.Checked = false; } if (Assistant.Engine.MainWindow.ScavengerCheckBox.Checked == true) { Assistant.Engine.MainWindow.ScavengerCheckBox.Checked = false; } if (Assistant.Engine.MainWindow.OrganizerStop.Enabled == true) { Assistant.Engine.MainWindow.OrganizerStop.PerformClick(); } if (Assistant.Engine.MainWindow.BuyCheckBox.Checked == true) { Assistant.Engine.MainWindow.BuyCheckBox.Checked = false; } if (Assistant.Engine.MainWindow.SellCheckBox.Checked == true) { Assistant.Engine.MainWindow.SellCheckBox.Checked = false; } if (Assistant.Engine.MainWindow.DressStopButton.Enabled == true) { Assistant.Engine.MainWindow.DressStopButton.PerformClick(); } if (Assistant.Engine.MainWindow.BandageHealenableCheckBox.Checked == true) { Assistant.Engine.MainWindow.BandageHealenableCheckBox.Checked = false; } if (Assistant.Engine.MainWindow.DressStopButton.Enabled == true) { Assistant.Engine.MainWindow.DressStopButton.PerformClick(); } // Stop filtri if (Assistant.Engine.MainWindow.AutoCarverCheckBox.Enabled == true) { Assistant.Engine.MainWindow.AutoCarverCheckBox.Checked = false; } if (Assistant.Engine.MainWindow.MobFilterCheckBox.Enabled == true) { Assistant.Engine.MainWindow.MobFilterCheckBox.Checked = false; } // Stop video recorder Assistant.MainForm.StopVideoRecorder(); // Svuoto logbox e reset select index // Assistant.Engine.MainWindow.AutoLootLogBox.Items.Clear(); AutoLoot.AddLog("Profile Changed!"); Assistant.Engine.MainWindow.ScavengerLogBox.Items.Clear(); Scavenger.AddLog("Profile Changed!"); Assistant.Engine.MainWindow.OrganizerLogBox.Items.Clear(); Organizer.AddLog("Profile Changed!"); Assistant.Engine.MainWindow.SellLogBox.Items.Clear(); SellAgent.AddLog("Profile Changed!"); Assistant.Engine.MainWindow.BuyLogBox.Items.Clear(); BuyAgent.AddLog("Profile Changed!"); Assistant.Engine.MainWindow.DressLogBox.Items.Clear(); Dress.AddLog("Profile Changed!"); Assistant.Engine.MainWindow.FriendLogBox.Items.Clear(); Friend.AddLog("Profile Changed!"); Assistant.Engine.MainWindow.RestockLogBox.Items.Clear(); Restock.AddLog("Profile Changed!"); Assistant.Engine.MainWindow.BandageHealLogBox.Items.Clear(); BandageHeal.AddLog("Profile Changed!"); // Cambio file //if (name == "default") // RazorEnhanced.Settings.ProfileFiles = "RazorEnhanced.settings"; //else // RazorEnhanced.Settings.ProfileFiles = "RazorEnhanced." + name + ".settings"; // Rimuovo cache password e disabilito vecchi filtri Assistant.Filters.Filter.DisableAll(); // Chiuto toolbar if (RazorEnhanced.ToolBar.ToolBarForm != null) { RazorEnhanced.ToolBar.ToolBarForm.Close(); } // Chiuto toolbar if (RazorEnhanced.SpellGrid.SpellGridForm != null) { RazorEnhanced.SpellGrid.SpellGridForm.Close(); } // Carico save profilo RazorEnhanced.Settings.Load(name); // Abilito patch UOMod UoMod.ProfileChange(); // Refresh list Assistant.Engine.MainWindow.AutoLootListSelect.SelectedIndex = -1; Assistant.Engine.MainWindow.ScavengerListSelect.SelectedIndex = -1; Assistant.Engine.MainWindow.OrganizerListSelect.SelectedIndex = -1; Assistant.Engine.MainWindow.SellListSelect.SelectedIndex = -1; Assistant.Engine.MainWindow.BuyListSelect.SelectedIndex = -1; Assistant.Engine.MainWindow.DressListSelect.SelectedIndex = -1; Assistant.Engine.MainWindow.FriendListSelect.SelectedIndex = -1; Assistant.Engine.MainWindow.RestockListSelect.SelectedIndex = -1; // Reinizzializzo razor Engine.MainWindow.SafeAction(s => s.LoadSettings()); //Assistant.Engine.MainWindow.LoadSettings(); // Riapro toollbar se le condizioni lo permettono if (RazorEnhanced.Settings.General.ReadBool("AutoopenToolBarCheckBox")) { RazorEnhanced.ToolBar.Open(); } // Riapro la spellgrid se le condizioni lo permettono if (RazorEnhanced.Settings.General.ReadBool("GridOpenLoginCheckBox")) { RazorEnhanced.SpellGrid.Open(); } Assistant.Engine.MainWindow.Initializing = false; SetLast(name); PasswordMemory.ProfileChangeEnd(); if (World.Player != null) // Reinit script timer se cambio profilo avvene da loggati { RazorEnhanced.Scripts.Init(); } }
////////////// AUTOLOOT END ////////////// ////////////// SCAVENGER START ////////////// internal static void ImportScavenger() { DataSet m_Dataset = new DataSet(); DataTable m_DatasetTable = new DataTable(); OpenFileDialog od = new OpenFileDialog(); od.Filter = "Enhanced Razor Export|*.raz"; od.Title = "Import Scavenger List"; od.RestoreDirectory = true; if (od.ShowDialog() == DialogResult.OK) { if (File.Exists(od.FileName)) { try { m_Dataset.RemotingFormat = SerializationFormat.Binary; m_Dataset.SchemaSerializationMode = SchemaSerializationMode.IncludeSchema; Stream stream = File.Open(od.FileName, FileMode.Open); GZipStream decompress = new GZipStream(stream, CompressionMode.Decompress); BinaryFormatter bin = new BinaryFormatter(); m_Dataset = bin.Deserialize(decompress) as DataSet; decompress.Close(); stream.Close(); } catch { Scavenger.AddLog("File is corrupted!"); } } else { Scavenger.AddLog("Unable to access file!"); } if (m_Dataset.Tables.Contains("SCAVENGER_ITEMS")) { m_DatasetTable = m_Dataset.Tables["SCAVENGER_ITEMS"]; if (m_DatasetTable.Rows.Count > 0) { if (RazorEnhanced.Settings.Scavenger.ListExists(m_Dataset.Tables["SCAVENGER_ITEMS"].Rows[0]["List"].ToString())) { Scavenger.AddLog("List: " + m_Dataset.Tables["SCAVENGER_ITEMS"].Rows[0]["List"].ToString() + " already exist"); } else { Scavenger.AddList(m_Dataset.Tables["SCAVENGER_ITEMS"].Rows[0]["List"].ToString()); List <RazorEnhanced.Scavenger.ScavengerItem> itemlist = new List <Scavenger.ScavengerItem>(); foreach (DataRow row in m_Dataset.Tables["SCAVENGER_ITEMS"].Rows) { itemlist.Add((RazorEnhanced.Scavenger.ScavengerItem)row["Item"]); } RazorEnhanced.Settings.Scavenger.ItemInsertFromImport(m_Dataset.Tables["SCAVENGER_ITEMS"].Rows[0]["List"].ToString(), itemlist); RazorEnhanced.Scavenger.InitGrid(); Scavenger.AddLog("List: " + m_Dataset.Tables["SCAVENGER_ITEMS"].Rows[0]["List"].ToString() + " imported!"); } } else { Scavenger.AddLog("This list is empty!"); } } else { Scavenger.AddLog("This file not contain Scavenger data!"); } } else { Scavenger.AddLog("Import list cancelled."); } }
// internal static volatile bool HoldingItem = false; internal static void AutoRun() { if (World.Player == null || !Client.Running) { return; } if (World.Player.IsGhost) { Thread.Sleep(2000); return; } bool lootHidden = RazorEnhanced.Settings.General.ReadBool("AllowHiddenLooting"); if (AutoLootSerialCorpseRefresh.Count > 0 && Assistant.Engine.MainWindow.AutolootCheckBox.Checked && !Targeting.HasTarget && (Player.Visible || lootHidden)) { try { if (AutoLootSerialCorpseRefresh.TryPeek(out int itemserial)) { Assistant.Item item = Assistant.World.FindItem(itemserial); if (item == null) { AutoLootSerialCorpseRefresh.TryDequeue(out itemserial); return; } if (Utility.Distance(World.Player.Position.X, World.Player.Position.Y, item.Position.X, item.Position.Y) <= AutoLoot.MaxRange && CheckZLevel(item.Position.Z, World.Player.Position.Z)) { RazorEnhanced.Items.WaitForContents(Items.FindBySerial(itemserial), 1000); AutoLoot.AddLog("- Refresh Corpse: 0x" + itemserial.ToString("X8")); Thread.Sleep(AutoLoot.AutoLootDelay); if (item.Updated) { AutoLootSerialCorpseRefresh.TryDequeue(out itemserial); } } else { AutoLootSerialCorpseRefresh.TryDequeue(out itemserial); AutoLootSerialCorpseRefresh.Enqueue(itemserial); } } } catch { } } uint lootbag = AutoLoot.GetLootBag(); // at login, backpack is sometimes null if (lootbag != 0) { ProcessLootList(lootbag); } if (ScavengerSerialToGrab.Count > 0 && Assistant.Engine.MainWindow.ScavengerCheckBox.Checked) { try { if (ScavengerSerialToGrab.TryPeek(out int itemserial)) { Assistant.Item item = Assistant.World.FindItem(itemserial); if (item == null) { ScavengerSerialToGrab.TryDequeue(out itemserial); return; } if (item.IsLootableTarget) { ScavengerSerialToGrab.TryDequeue(out itemserial); return; } if (Utility.Distance(World.Player.Position.X, World.Player.Position.Y, item.Position.X, item.Position.Y) <= Scavenger.MaxRange && CheckZLevel(item.Position.Z, World.Player.Position.Z)) { if ((World.Player.MaxWeight - World.Player.Weight) < 5) { RazorEnhanced.Scavenger.AddLog("- Max weight reached, Wait untill free some space"); RazorEnhanced.Misc.SendMessage("SCAVENGER: Max weight reached, Wait untill free some space", true); Thread.Sleep(2000); } else { RazorEnhanced.Scavenger.AddLog("- Item Match found (" + item.Serial.ToString() + ") ... Grabbing"); RazorEnhanced.Items.Move(item.Serial, Convert.ToInt32(Scavenger.GetScavengerBag()), 0); Thread.Sleep(Scavenger.ScavengerDelay); ScavengerSerialToGrab.TryDequeue(out itemserial); } } else { ScavengerSerialToGrab.TryDequeue(out itemserial); ScavengerSerialToGrab.Enqueue(itemserial); } } } catch { } } if (CorpseToCutSerial.Count > 0 && Filters.AutoCarver) { try { if (CorpseToCutSerial.TryPeek(out int itemserial)) { Assistant.Item item = Assistant.World.FindItem(itemserial); if (item == null) { CorpseToCutSerial.TryDequeue(out itemserial); return; } if (Utility.Distance(World.Player.Position.X, World.Player.Position.Y, item.Position.X, item.Position.Y) <= 1 && CheckZLevel(item.Position.Z, World.Player.Position.Z)) { Items.UseItem(Items.FindBySerial(Filters.AutoCarverBlade)); Target.WaitForTarget(1000, true); Target.TargetExecute(item.Serial); Items.Message(item.Serial, 10, "*Cutting*"); CorpseToCutSerial.TryDequeue(out itemserial); Thread.Sleep(RazorEnhanced.Settings.General.ReadInt("ObjectDelay")); } else { CorpseToCutSerial.TryDequeue(out itemserial); CorpseToCutSerial.Enqueue(itemserial); } } } catch { } } Thread.Sleep(250); }