private void btnRefreshCharacterInventory_Click(object sender, EventArgs e) { if (BotMain.IsRunning) { return; } cacheItems.Clear(); flowLayout_OutPut.Controls.Clear(); try { using (ZetaDia.Memory.SaveCacheState()) { ZetaDia.Memory.DisableCache(); ZetaDia.Actors.Update(); flowLayout_OutPut.Controls.Add(new UserControlDebugEntry( String.Format("Total Items Found {0}", ZetaDia.Me.Inventory.Backpack.Count()))); #region Character Inventory Items foreach (var o in ZetaDia.Me.Inventory.Backpack) { try { CacheACDItem item = new CacheACDItem(o); flowLayout_OutPut.Controls.Add(new UserControlDebugEntry(item.ToString())); } catch (Exception ex) { flowLayout_OutPut.Controls.Add(new UserControlDebugEntry(ex.Message)); } } #endregion } } catch (Exception ex) { } flowLayout_OutPut.Focus(); }
internal static RunStatus GilesOptimisedSalvage(object ret) { if (FunkyGame.GameIsInvalid) { ActionsChecked = false; FunkyTownRunPlugin.DBLog.InfoFormat("[Funky] Town Run Behavior Failed! (Not In Game/Invalid Actor/misc)"); return(RunStatus.Failure); } DiaUnit objBlacksmith = ZetaDia.Actors.GetActorsOfType <DiaUnit>(true).FirstOrDefault <DiaUnit>(u => u.Name.StartsWith(SalvageName)); Vector3 vectorPlayerPosition = ZetaDia.Me.Position; Vector3 vectorSalvageLocation = Vector3.Zero; //Normal distance we use to move to specific location before moving to NPC float _distanceRequired = CurrentAct != Act.A5 ? 50f : 14f; //Act 5 we want short range only! if (Vector3.Distance(vectorPlayerPosition, SafetySalvageLocation) <= 2.5f) { MovedToSafetyLocation = true; } if (objBlacksmith == null || (!MovedToSafetyLocation && objBlacksmith.Distance > _distanceRequired)) { vectorSalvageLocation = SafetySalvageLocation; } else { //MovedToSafetyLocation = true; vectorSalvageLocation = objBlacksmith.Position; } //if (vectorSalvageLocation == Vector3.Zero) // Character.FindActByLevelID(Bot.Character.Data.CurrentWorldDynamicID); //Wait until we are not moving if (FunkyGame.Hero.IsMoving) { return(RunStatus.Running); } float iDistanceFromSell = Vector3.Distance(vectorPlayerPosition, vectorSalvageLocation); //Out-Of-Range... if (objBlacksmith == null || iDistanceFromSell > 12f)//|| !GilesCanRayCast(vectorPlayerPosition, vectorSalvageLocation, Zeta.Internals.SNO.NavCellFlags.AllowWalk)) { Navigator.PlayerMover.MoveTowards(vectorSalvageLocation); return(RunStatus.Running); } if (!UIElements.SalvageWindow.IsVisible) { objBlacksmith.Interact(); return(RunStatus.Running); } if (!UIElements.InventoryWindow.IsVisible) { Backpack.InventoryBackPackToggle(true); return(RunStatus.Running); } //Delays... (so we don't salvage everything in record time) if (!Delay.Test(1.15)) { return(RunStatus.Running); } if (UIElements.SalvageAllWrapper.IsVisible) { if (UI.Game.Dialog_Confirmation_OK.IsVisible) { UI.Game.Dialog_Confirmation_OK.Click(); return(RunStatus.Running); } if (UI.Game.SalvageAllNormal.IsEnabled && UI.Game.SalvageAllNormal.IsVisible && bShouldSalvageAllNormal && townRunItemCache.SalvageItems.Any(i => i.IsSalvagable && i.ThisQuality < ItemQuality.Magic1) && !bSalvageAllNormal) { //UI.Game.SalvageAllNormal.Click(); Logger.DBLog.DebugFormat("[FunkyTownRun] Salvaging All Normal Items"); ZetaDia.Me.Inventory.SalvageItemsOfRarity(SalvageRarity.Normal); bSalvageAllNormal = true; var removalList = townRunItemCache.SalvageItems.Where(i => i.IsSalvagable && i.ThisQuality < ItemQuality.Magic1).ToList(); foreach (var cacheAcdItem in removalList) { LogSalvagedItem(cacheAcdItem); } townRunItemCache.SalvageItems = townRunItemCache.SalvageItems.Except(removalList).ToList(); return(RunStatus.Running); } if (UI.Game.SalvageAllMagical.IsEnabled && UI.Game.SalvageAllMagical.IsVisible && bShouldSalvageAllMagical && townRunItemCache.SalvageItems.Any(i => i.IsSalvagable && i.ThisQuality < ItemQuality.Rare4) && !bSalvageAllMagic) { //UI.Game.SalvageAllMagical.Click(); FunkyTownRunPlugin.DBLog.DebugFormat("[FunkyTownRun] Salvaging All Magical Items"); ZetaDia.Me.Inventory.SalvageItemsOfRarity(SalvageRarity.Magic); bSalvageAllMagic = true; var removalList = townRunItemCache.SalvageItems.Where(i => i.IsSalvagable && i.ThisQuality < ItemQuality.Rare4).ToList(); foreach (var cacheAcdItem in removalList) { LogSalvagedItem(cacheAcdItem); } townRunItemCache.SalvageItems = townRunItemCache.SalvageItems.Except(removalList).ToList(); return(RunStatus.Running); } if (UI.Game.SalvageAllRare.IsEnabled && UI.Game.SalvageAllRare.IsVisible && bShouldSalvageAllRare && townRunItemCache.SalvageItems.Any(i => i.IsSalvagable && i.ThisQuality < ItemQuality.Legendary) && !bSalvageAllRare) { //UI.Game.SalvageAllRare.Click(); FunkyTownRunPlugin.DBLog.DebugFormat("[FunkyTownRun] Salvaging All Rare Items"); ZetaDia.Me.Inventory.SalvageItemsOfRarity(SalvageRarity.Rare); bSalvageAllRare = true; var removalList = townRunItemCache.SalvageItems.Where(i => i.IsSalvagable && i.ThisQuality < ItemQuality.Legendary).ToList(); foreach (var cacheAcdItem in removalList) { LogSalvagedItem(cacheAcdItem); } townRunItemCache.SalvageItems = townRunItemCache.SalvageItems.Except(removalList).ToList(); return(RunStatus.Running); } UpdateSalvageItemList(); } if (townRunItemCache.SalvageItems.Count > 0) { CacheACDItem thisitem = townRunItemCache.SalvageItems.FirstOrDefault(); if (thisitem != null && thisitem.ACDItem != null) { LogSalvagedItem(thisitem); FunkyTownRunPlugin.DBLog.DebugFormat("[FunkyTownRun] Salvaging Individual Item {0}", thisitem.ToString()); ZetaDia.Me.Inventory.SalvageItem(thisitem.ThisDynamicID); } townRunItemCache.SalvageItems.Remove(thisitem); if (townRunItemCache.SalvageItems.Count > 0) { thisitem = townRunItemCache.SalvageItems.FirstOrDefault(); if (thisitem != null) { return(RunStatus.Running); } } else { Delay.Reset(); return(RunStatus.Running); } } return(RunStatus.Success); }