public void RememberUnit(RememberedUnit rememberedUnit) { MySqlConnection sqlConnection = new MySqlConnection(MysqlConnectionString); sqlConnection.Open(); rememberedUnit.UnitTraitsString = JsonConvert.SerializeObject(rememberedUnit.UnitTraits); StringBuilder sqlQuery = new StringBuilder(); sqlQuery.Append($"INSERT INTO {TABLE_NAME_REMEMBERED_UNITS} (name, x, y, z, zone_id, map_id, traits) "); sqlQuery.Append($"VALUES(\"{rememberedUnit.Name}\","); sqlQuery.Append($"{(int)rememberedUnit.Position.X},"); sqlQuery.Append($"{(int)rememberedUnit.Position.Y},"); sqlQuery.Append($"{(int)rememberedUnit.Position.Z},"); sqlQuery.Append($"{rememberedUnit.ZoneID},"); sqlQuery.Append($"{rememberedUnit.MapID},"); sqlQuery.Append($"\"{rememberedUnit.UnitTraitsString}\") "); sqlQuery.Append("ON DUPLICATE KEY UPDATE;"); try { sqlConnection.Execute(sqlQuery.ToString()); } catch { } finally { sqlConnection.Close(); } }
private void GoToUnitAndRepair(RememberedUnit closestUnit) { Me.Update(); if (Utils.GetDistance(Me.pos, closestUnit.Position) < 3) { SellTrashAtUnit(closestUnit); } else { if (!WaypointQueue.Contains(closestUnit.Position)) { WaypointQueue.Enqueue(closestUnit.Position); } } }
private void ButtonAdd_Click(object sender, RoutedEventArgs e) { UnitToRemmeber = new RememberedUnit { Name = UnitName, ZoneID = ZoneID, MapID = MapID, Position = Position }; UnitToRemmeber.UnitTraits = new List <UnitTrait>(); if (checkboxIsFlightmaster.IsChecked == true) { UnitToRemmeber.UnitTraits.Add(UnitTrait.FLIGHTMASTER); } if (checkboxSellsFood.IsChecked == true) { UnitToRemmeber.UnitTraits.Add(UnitTrait.FOOD); } if (checkboxSellsDrink.IsChecked == true) { UnitToRemmeber.UnitTraits.Add(UnitTrait.DRINK); } if (checkboxIsRepair.IsChecked == true) { UnitToRemmeber.UnitTraits.Add(UnitTrait.REPAIR); } if (checkboxIsVendor.IsChecked == true) { UnitToRemmeber.UnitTraits.Add(UnitTrait.SELL); } if (checkboxIsAuctionmaster.IsChecked == true) { UnitToRemmeber.UnitTraits.Add(UnitTrait.AUCTIONMASTER); } ShouldRemember = true; Close(); }
private void FindClosestRepairNpc() { if (!IGotTheDamnMammoth) { AmeisenLogger.Instance.Log(LogLevel.DEBUG, "Searching for Units to repair equipment...", this); List <RememberedUnit> possibleUnits = AmeisenDBManager.GetRememberedUnits(UnitTrait.SELL); AmeisenLogger.Instance.Log(LogLevel.DEBUG, $"Found {possibleUnits.Count} Units to repair at", this); RememberedUnit closestUnit = null; double lastDistance = 100000; foreach (RememberedUnit unit in possibleUnits) { double currentDistance = Utils.GetDistance(Me.pos, unit.Position); if (currentDistance < lastDistance) { closestUnit = unit; lastDistance = currentDistance; } } if (closestUnit != null) { AmeisenLogger.Instance.Log(LogLevel.DEBUG, $"Unit to sell trash found: {closestUnit.Name}", this); GoToUnitAndRepair(closestUnit); } else { AmeisenLogger.Instance.Log(LogLevel.DEBUG, "No Unit to sell trash found...", this); } } else { AmeisenLogger.Instance.Log(LogLevel.DEBUG, "I got the mammoth to sell trash...", this); if (AmeisenCore.IsOutdoors) { AmeisenCore.CastSpellByName("Traveler's Tundra Mammoth", false); Thread.Sleep(2000); SellTrashAtUnit(null, true); } } }
private void UpdateTargetViews() { labelNameTarget.Content = $"{BotManager.Target.Name} lvl.{BotManager.Target.Level}"; labelTargetHP.Content = $"Health {BotManager.Target.Health} / {BotManager.Target.MaxHealth}"; progressBarHPTarget.Maximum = BotManager.Target.MaxHealth; progressBarHPTarget.Value = BotManager.Target.Health; labelTargetEnergy.Content = $"Energy {BotManager.Target.Energy} / {BotManager.Target.MaxEnergy}"; progressBarEnergyTarget.Maximum = BotManager.Target.MaxEnergy; progressBarEnergyTarget.Value = BotManager.Target.Energy; labelTargetDistance.Content = $"Distance: {Math.Round(BotManager.Target.Distance, 2)}m"; Unit target = BotManager.Target; if (target != null && target.Guid != 0) { if (target.Guid != LastGuid) { target.Update(); RememberedUnit rememberedUnit = BotManager.CheckForRememberedUnit(target.Name, target.ZoneID, target.MapID); if (rememberedUnit != null) { labelRemember.Content = "I know this Unit"; StringBuilder sb = new StringBuilder(); foreach (UnitTrait u in rememberedUnit.UnitTraits) { sb.Append($"{UnitTraitSymbols[u]} "); } labelUnitTraits.Content = sb.ToString(); } else { labelRemember.Content = "I don't know this Unit"; labelUnitTraits.Content = "-"; } LastGuid = target.Guid; } } }
private void SellTrashAtUnit(RememberedUnit unit, bool mammoth = false) { if (mammoth) { AmeisenCore.TargetUnitByName("Gnimo"); } else { AmeisenCore.TargetUnitByName(unit.Name); } if (Target != null) { Target.Update(); AmeisenCore.LuaDoString("InteractUnit(\"target\");"); Thread.Sleep(500); AmeisenCore.SellAllGrayItems(); AmeisenLogger.Instance.Log(LogLevel.DEBUG, "Sold all gray stuff", this); Thread.Sleep(1000); } }
public RememberedUnit CheckForRememberedUnit(string unitname, int zoneID, int mapID) { if (AmeisenDataHolder.IsConnectedToDB) { RememberedUnit unitToReturn = null; MySqlConnection sqlConnection = new MySqlConnection(MysqlConnectionString); sqlConnection.Open(); StringBuilder sqlQuery = new StringBuilder(); sqlQuery.Append($"SELECT * FROM {TABLE_NAME_REMEMBERED_UNITS} "); sqlQuery.Append($"WHERE zone_id = {zoneID} AND "); sqlQuery.Append($"map_id = {mapID} AND "); sqlQuery.Append($"name = \"{unitname}\";"); try { dynamic rawUnit = sqlConnection.Query(sqlQuery.ToString()).FirstOrDefault(); RememberedUnit rememberedUnit = new RememberedUnit { Name = rawUnit.name, ZoneID = rawUnit.zone_id, MapID = rawUnit.map_id, Position = new Vector3(rawUnit.x, rawUnit.y, rawUnit.z), UnitTraitsString = rawUnit.traits }; rememberedUnit.UnitTraits = JsonConvert.DeserializeObject <List <UnitTrait> >(rememberedUnit.UnitTraitsString); unitToReturn = rememberedUnit; } catch { AmeisenLogger.Instance.Log(LogLevel.ERROR, $"Error checking for RememberedUnit: unitName: {unitname}, zoneId: {zoneID}, mapId: {mapID}", this); unitToReturn = null; } finally { sqlConnection.Close(); } return(unitToReturn); } return(null); }
public void RememberUnit(RememberedUnit rememberedUnit) { if (AmeisenDataHolder.IsConnectedToDB) { MySqlConnection sqlConnection = new MySqlConnection(MysqlConnectionString); sqlConnection.Open(); rememberedUnit.UnitTraitsString = JsonConvert.SerializeObject(rememberedUnit.UnitTraits); StringBuilder sqlQuery = new StringBuilder(); sqlQuery.Append($"INSERT INTO {TABLE_NAME_REMEMBERED_UNITS} (`name`, `x`, `y`, `z`, `zone_id`, `map_id`, `traits`) "); sqlQuery.Append($"VALUES('{rememberedUnit.Name}',"); sqlQuery.Append($"'{(int)rememberedUnit.Position.X}',"); sqlQuery.Append($"'{(int)rememberedUnit.Position.Y}',"); sqlQuery.Append($"'{(int)rememberedUnit.Position.Z}',"); sqlQuery.Append($"'{rememberedUnit.ZoneID}',"); sqlQuery.Append($"'{rememberedUnit.MapID}',"); sqlQuery.Append($"'{rememberedUnit.UnitTraitsString}');"); try { sqlConnection.Execute(sqlQuery.ToString()); } catch { AmeisenLogger.Instance.Log(LogLevel.ERROR, $"Error adding RememberedUnit: {JsonConvert.SerializeObject(rememberedUnit)}", this); } finally { sqlConnection.Close(); } } }
public List <RememberedUnit> GetRememberedUnits(UnitTrait unitTrait) { if (AmeisenDataHolder.IsConnectedToDB) { List <RememberedUnit> unitsToReturn = new List <RememberedUnit>(); MySqlConnection sqlConnection = new MySqlConnection(MysqlConnectionString); sqlConnection.Open(); StringBuilder sqlQuery = new StringBuilder(); sqlQuery.Append($"SELECT * FROM {TABLE_NAME_REMEMBERED_UNITS} "); List <dynamic> rawUnits = sqlConnection.Query(sqlQuery.ToString()).AsList(); foreach (dynamic rawUnit in rawUnits) { try { RememberedUnit rememberedUnit = new RememberedUnit { Name = rawUnit.name, ZoneID = rawUnit.zone_id, MapID = rawUnit.map_id, Position = new Vector3(rawUnit.x, rawUnit.y, rawUnit.z), UnitTraitsString = rawUnit.traits }; rememberedUnit.UnitTraits = JsonConvert.DeserializeObject <List <UnitTrait> >(rememberedUnit.UnitTraitsString); unitsToReturn.Add(rememberedUnit); } catch { AmeisenLogger.Instance.Log(LogLevel.ERROR, "Error Parsing RememberedUnit...", this); } finally { sqlConnection.Close(); } } return(unitsToReturn); } return(new List <RememberedUnit>()); }
public RememberedUnit CheckForRememberedUnit(string name, int zoneID, int mapID) { RememberedUnit unitToReturn = null; MySqlConnection sqlConnection = new MySqlConnection(MysqlConnectionString); sqlConnection.Open(); StringBuilder sqlQuery = new StringBuilder(); sqlQuery.Append($"SELECT * FROM {TABLE_NAME_REMEMBERED_UNITS} "); sqlQuery.Append($"WHERE zone_id = {zoneID} AND "); sqlQuery.Append($"map_id = {mapID} AND "); sqlQuery.Append($"name = \"{name}\";"); try { dynamic rawUnit = sqlConnection.Query(sqlQuery.ToString()).FirstOrDefault(); RememberedUnit rememberedUnit = new RememberedUnit { Name = rawUnit.name, ZoneID = rawUnit.zone_id, MapID = rawUnit.map_id, Position = new Vector3(rawUnit.x, rawUnit.y, rawUnit.z), UnitTraitsString = rawUnit.traits }; rememberedUnit.UnitTraits = JsonConvert.DeserializeObject <List <UnitTrait> >(rememberedUnit.UnitTraitsString); unitToReturn = rememberedUnit; } catch { unitToReturn = null; } finally { sqlConnection.Close(); } return(unitToReturn); }
/// <summary> /// Add a RememberedUnit to the RememberedUnits Database to remember its position and UnitTraits /// </summary> /// <param name="rememberedUnit">Unit that you want to remember</param> public void RememberUnit(RememberedUnit rememberedUnit) { AmeisenDBManager.RememberUnit(rememberedUnit); }