예제 #1
0
        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();
            }
        }
예제 #2
0
 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);
         }
     }
 }
예제 #3
0
        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();
        }
예제 #4
0
        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);
                }
            }
        }
예제 #5
0
        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;
                }
            }
        }
예제 #6
0
        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);
            }
        }
예제 #7
0
        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);
        }
예제 #8
0
        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(); }
            }
        }
예제 #9
0
        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>());
        }
예제 #10
0
        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);
        }
예제 #11
0
 /// <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);
 }