Ejemplo n.º 1
0
    // Various mount repair, portable mailbox, repair robots, Guild Page...
    public static void PulseRadar()
    {
        if (!Usefuls.InGame || Usefuls.IsLoading)
        {
            return;
        }
        var npcRadar = new List <Npc>();
        List <WoWGameObject> Mailboxes        = ObjectManager.GetWoWGameObjectOfType(WoWGameObjectType.Mailbox);
        List <WoWUnit>       Vendors          = ObjectManager.GetWoWUnitVendor();
        List <WoWUnit>       Repairers        = ObjectManager.GetWoWUnitRepair();
        List <WoWUnit>       NpcMailboxes     = ObjectManager.GetWoWUnitMailbox();
        var                  npcRadarQuesters = new List <Npc>();
        List <WoWUnit>       NpcQuesters      = ObjectManager.GetWoWUnitQuester();
        List <WoWGameObject> ObjectQuesters   = ObjectManager.GetWoWGameObjectOfType(WoWGameObjectType.Questgiver);

        foreach (WoWGameObject o in Mailboxes)
        {
            if (o.CreatedBy != 0)
            {
                continue;
            }
            npcRadar.Add(new Npc
            {
                ContinentIdInt = Usefuls.ContinentId,
                Entry          = o.Entry,
                Faction        = UnitRelation.GetObjectRacialFaction(o.Faction),
                Name           = o.Name,
                Position       = o.Position,
                Type           = Npc.NpcType.Mailbox
            });
        }
        foreach (WoWUnit n in Vendors)
        {
            if (BlackListed.Contains(n.Entry) || n.CreatedBy != 0)
            {
                continue;
            }
            npcRadar.Add(new Npc
            {
                ContinentIdInt = Usefuls.ContinentId,
                Entry          = n.Entry,
                Faction        = UnitRelation.GetObjectRacialFaction(n.Faction),
                Name           = n.Name,
                Position       = n.Position,
                Type           = Npc.NpcType.Vendor
            });
        }
        foreach (WoWUnit n in Repairers)
        {
            if (BlackListed.Contains(n.Entry) || n.CreatedBy != 0)
            {
                continue;
            }
            npcRadar.Add(new Npc
            {
                ContinentIdInt = Usefuls.ContinentId,
                Entry          = n.Entry,
                Faction        = UnitRelation.GetObjectRacialFaction(n.Faction),
                Name           = n.Name,
                Position       = n.Position,
                Type           = Npc.NpcType.Repair
            });
        }
        foreach (WoWUnit n in NpcMailboxes)
        {
            if (BlackListed.Contains(n.Entry) || n.CreatedBy != 0)
            {
                continue;
            }
            npcRadar.Add(new Npc
            {
                ContinentIdInt = Usefuls.ContinentId,
                Entry          = n.Entry,
                Faction        = UnitRelation.GetObjectRacialFaction(n.Faction),
                Name           = n.Name,
                Position       = n.Position,
                Type           = Npc.NpcType.Mailbox
            });
        }
        foreach (WoWUnit n in NpcQuesters)
        {
            if (BlackListed.Contains(n.Entry) || n.CreatedBy != 0)
            {
                continue;
            }
            npcRadarQuesters.Add(new Npc
            {
                ContinentIdInt = Usefuls.ContinentId,
                Entry          = n.Entry,
                Faction        = UnitRelation.GetObjectRacialFaction(n.Faction),
                Name           = n.Name,
                Position       = n.Position,
                Type           = Npc.NpcType.QuestGiver
            });
        }
        foreach (WoWGameObject o in ObjectQuesters)
        {
            if (o.CreatedBy != 0)
            {
                continue;
            }
            npcRadarQuesters.Add(new Npc
            {
                ContinentIdInt = Usefuls.ContinentId,
                Entry          = o.Entry,
                Faction        = UnitRelation.GetObjectRacialFaction(o.Faction),
                Name           = o.Name,
                Position       = o.Position,
                Type           = Npc.NpcType.QuestGiver
            });
        }
        int d = NpcDB.AddNpcRange(npcRadar, true);

        if (d == 1)
        {
            Logging.Write("Found " + d + " new NPC/Mailbox in memory");
        }
        else if (d > 1)
        {
            Logging.Write("Found " + d + " new NPCs/Mailboxes in memory");
        }
        d = AddQuesters(npcRadarQuesters, true);
        if (d == 1)
        {
            Logging.Write("Found " + d + " new Quest Giver in memory");
        }
        else if (d > 1)
        {
            Logging.Write("Found " + d + " new Quest Givers in memory");
        }
    }
    public static void LoadNewProfile(string profession, string profileName)
    {
        Profile = new GrinderProfile();
        string filePath = Application.StartupPath + "\\Profiles\\Wholesome Professions\\" + profileName;

        Bot.ProfileName = profileName;

        // If grinder School Load Profile
        if (!string.IsNullOrWhiteSpace(profileName) && File.Exists(filePath))
        {
            Profile = XmlSerializer.Deserialize <GrinderProfile>(filePath);
            if (Profile.GrinderZones.Count <= 0)
            {
                Logger.Log($"Profile '{filePath}' seems incorrect. Please use a Grinder profile.");
                UnloadCurrentProfile();
                return;
            }
            else
            {
                Logger.Log("Profile loaded");
            }
        }
        else
        {
            Logger.LogLineBroadcastImportant($"Profile file '{filePath}' not found");
            UnloadCurrentProfile();
            return;
        }

        SelectZone();

        // Black List:
        var blackListDic =
            Profile.GrinderZones.SelectMany(zone => zone.BlackListRadius).ToDictionary(b => b.Position,
                                                                                       b => b.Radius);

        //wManager.wManagerSetting.AddRangeBlackListZone(blackListDic);

        // Add Npc
        foreach (var zone in Profile.GrinderZones)
        {
            NpcDB.AddNpcRange(zone.Npc);
        }

        // Go to first hotspot or travel
        if (Profile.GrinderZones.Count > 0)
        {
            string zoneName    = Profile.GrinderZones[ZoneIdProfile].Name;
            int    continentId = TravelHelper.GetContinentFromZoneName(zoneName);
            Logger.LogDebug($"Zone {zoneName} is on continent {continentId.ToString()}");
            if (continentId == -1)
            {
                Logger.LogLineBroadcastImportant($"ERROR : The zone name {zoneName} from your profile is incorrect. Please use default zone names.");
                UnloadCurrentProfile();
                return;
            }

            if (continentId != Usefuls.ContinentId)
            {
                Logger.Log($"{Profile.GrinderZones[ZoneIdProfile].Name} is on another continent ({continentId}). Launching traveler.");
                Bot.SetContinent((ContinentId)continentId);
                return;
            }

            Bot.ProfileProfession = profession;
            Logger.Log($"Heading to first spot {Profile.GrinderZones[ZoneIdProfile].Vectors3[0]} in {Profile.GrinderZones[ZoneIdProfile].Name}");
            Broadcaster.autoBroadcast = false;
            Broadcaster.BroadCastSituation();
            GoToTask.ToPosition(Profile.GrinderZones[ZoneIdProfile].Vectors3[0], 50);
            Broadcaster.autoBroadcast = true;
        }
        else
        {
            Logger.LogDebug("No grinder zone found");
            UnloadCurrentProfile();
        }
    }
Ejemplo n.º 3
0
        internal static bool Pulse(bool autoLoaded = false)
        {
            try
            {
                if (!autoLoaded)
                {
                    // Load Profile:
                    LoadProfile f = new LoadProfile();
                    f.ShowDialog();
                }
                if (!File.Exists(Application.StartupPath + "\\Profiles\\Gatherer\\" + GathererSetting.CurrentSetting.ProfileName))
                {
                    return(false);
                }
                Profile = XmlSerializer.Deserialize <GathererProfile>(Application.StartupPath + "\\Profiles\\Gatherer\\" + GathererSetting.CurrentSetting.ProfileName);
                if (Profile.Points.Count <= 0)
                {
                    return(false);
                }

                // Reverse profil
                if (GathererSetting.CurrentSetting.PathingReverseDirection)
                {
                    Profile.Points.Reverse();
                }

                NpcDB.AddNpcRange(Profile.Npc);
                nManagerSetting.AddRangeBlackListZone(new List <nManagerSetting.BlackListZone>(Profile.BlackListRadius));

                // Load CC:
                CombatClass.LoadCombatClass();

                // FSM
                Fsm.States.Clear();

                Fsm.AddState(new Pause {
                    Priority = 200
                });
                Fsm.AddState(new Resurrect {
                    Priority = 130
                });
                Fsm.AddState(new IsAttacked {
                    Priority = 120
                });
                Fsm.AddState(new Regeneration {
                    Priority = 110
                });
                Fsm.AddState(new ToTown {
                    Priority = 100
                });
                Fsm.AddState(new Looting {
                    Priority = 90
                });
                Fsm.AddState(new Travel {
                    Priority = 80
                });
                Fsm.AddState(new SpecializationCheck {
                    Priority = 70
                });
                Fsm.AddState(new LevelupCheck {
                    Priority = 60
                });
                Fsm.AddState(new Trainers {
                    Priority = 59
                });
                Fsm.AddState(new AutoItemCombiner {
                    Priority = 52
                });
                Fsm.AddState(new MillingState {
                    Priority = 51
                });
                Fsm.AddState(new ProspectingState {
                    Priority = 50
                });
                Fsm.AddState(new Farming {
                    Priority = 20
                });
                Fsm.AddState(new MovementLoop {
                    Priority = 10, PathLoop = Profile.Points
                });
                Fsm.AddState(new Idle {
                    Priority = 0
                });

                foreach (var statePlugin in Plugins.ListLoadedStatePlugins)
                {
                    Fsm.AddState(statePlugin);
                }

                Fsm.States.Sort();
                Fsm.StartEngine(7, "FSM Gatherer");

                return(true);
            }
            catch (Exception e)
            {
                try
                {
                    Dispose();
                }
                catch
                {
                }
                Logging.WriteError("Gatherer > Bot > Bot  > Pulse(): " + e);
                return(false);
            }
        }
Ejemplo n.º 4
0
        public static void LaunchRadar()
        {
            int d;
            var myConn = new MySqlConnection("server=127.0.0.1; user id=tnb; password=tnb006; database=offydump;");

            try
            {
                myConn.Open();
            }
            catch (Exception e)
            {
                Logging.WriteError(e.ToString());
                return;
            }
            // Various mount repair, portable mailbox, repair robots, Guild Page...
            var BlackListed = new List <int>(new[] { 77789, 32638, 32639, 32641, 32642, 35642, 191605, 24780, 29561, 49586, 49588, 62822, 211006 });

            //Spell WildCharge = new Spell("Wild Charge");
            while (true)
            {
                /*WoWUnit target = ObjectManager.Target;
                 * if (target.IsValid)
                 * {
                 *  Logging.Write("Distance to target (" + target.Name + ") : " + target.GetDistance);
                 *  Logging.Write("Target CombatReach : " + target.GetCombatReach);
                 *  Logging.Write("Target BoundingRadius : " + target.GetBoundingRadius);
                 *  Logging.Write("In Range ? " + CombatClass.InSpellRange(target, WildCharge.MinRangeHostile, WildCharge.MaxRangeHostile));
                 * }*/
                Thread.Sleep(650 * 2); // Every 2 ObjectManager refresh
                // Prevent corruptions while the game loads after a zone change
                if (!Usefuls.InGame || Usefuls.IsLoading)
                {
                    continue;
                }
                var npcRadar = new List <Npc>();
                List <WoWGameObject> Mailboxes        = ObjectManager.GetWoWGameObjectOfType(WoWGameObjectType.Mailbox);
                List <WoWUnit>       Vendors          = ObjectManager.GetWoWUnitVendor();
                List <WoWUnit>       Repairers        = ObjectManager.GetWoWUnitRepair();
                List <WoWUnit>       Inkeepers        = ObjectManager.GetWoWUnitInkeeper();
                List <WoWUnit>       Trainers         = ObjectManager.GetWoWUnitTrainer();
                List <WoWUnit>       FlightMasters    = ObjectManager.GetWoWUnitFlightMaster();
                List <WoWUnit>       Auctioneers      = ObjectManager.GetWoWUnitAuctioneer();
                List <WoWUnit>       SpiritHealers    = ObjectManager.GetWoWUnitSpiritHealer();
                List <WoWUnit>       SpiritGuides     = ObjectManager.GetWoWUnitSpiritGuide();
                List <WoWUnit>       NpcMailboxes     = ObjectManager.GetWoWUnitMailbox();
                var                  npcRadarQuesters = new List <Npc>();
                List <WoWUnit>       NpcQuesters      = ObjectManager.GetWoWUnitQuester();
                List <WoWGameObject> ObjectQuesters   = ObjectManager.GetWoWGameObjectOfType(WoWGameObjectType.Questgiver);
                List <WoWGameObject> Forges           = ObjectManager.GetWoWGameObjectOfType(WoWGameObjectType.SpellFocus);

                List <WoWGameObject> AllGos = ObjectManager.GetObjectWoWGameObject();

                foreach (WoWGameObject go in AllGos)
                {
                    string query = "";
                    try
                    {
                        if (go.Entry != 0 && go.Name != "" && go.CreatedBy == 0)
                        {
                            query = "SELECT entry FROM gameobject WHERE entry = " + go.Entry + " AND " +
                                    "map = " + Usefuls.RealContinentId + " AND " +
                                    "SQRT((x-" + go.Position.X + ")*(x-" + go.Position.X + ") + " +
                                    "(y-" + go.Position.Y + ")*(y-" + go.Position.Y + ") + " +
                                    "(z-" + go.Position.Z + ")*(z-" + go.Position.Z + ")) < 0.5;";
                            var             cmd    = new MySqlCommand(query, myConn);
                            MySqlDataReader result = cmd.ExecuteReader();
                            if (!result.HasRows && go.GOType != WoWGameObjectType.MoTransport && go.GOType != WoWGameObjectType.Transport)
                            {
                                result.Close();
                                Quaternion rotations = go.Rotations;
                                Matrix4    matrice   = go.WorldMatrix;
                                query = "INSERT INTO gameobject (entry,map,x,y,z,o,r0,r1,r2,r3,m11,m12,m13,m14,m21,m22,m23,m24,m31,m32,m33,m34,m41,m42,m43,m44) VALUES (" + go.Entry + "," + Usefuls.RealContinentId +
                                        "," + go.Position.X + "," + go.Position.Y + "," + go.Position.Z + "," + go.Orientation + "," + rotations.X + "," + rotations.Y + "," + rotations.Z + "," + rotations.W + "," +
                                        matrice.xx + "," + matrice.xy + "," + matrice.xz + "," + matrice.xw + "," + matrice.yx + "," + matrice.yy + "," + matrice.yz + "," + matrice.yw + "," + matrice.zx + "," +
                                        matrice.zy + "," + matrice.zz + "," + matrice.zw + "," + matrice.wx + "," + matrice.wy + "," + matrice.wz + "," + matrice.ww + ");";
                                cmd = new MySqlCommand(query, myConn);
                                cmd.ExecuteNonQuery();
                            }
                            else
                            {
                                result.Close();
                            }
                            //bool newAdded = false;
                            query  = "SELECT entry,questitem1 FROM gameobject_template WHERE entry = " + go.Entry + ";";
                            cmd    = new MySqlCommand(query, myConn);
                            result = cmd.ExecuteReader();
                            if (!result.HasRows)
                            {
                                result.Close();
                                query = "INSERT IGNORE INTO gameobject_template (entry,type,name,iconname,castbarcaption,model,faction,flags,size";
                                for (uint i = 0; i < 32; i++)
                                {
                                    query += ",data" + i;
                                }
                                query += ",questitem1,questitem2,questitem3,questitem4) VALUES (" + go.Entry + "," + (uint)go.GOType + ",'" + go.Name.Replace("'", "\\'") + "','" + go.IconName.Replace("'", "\\'") +
                                         "','" + go.CastBarCaption.Replace("'", "\\'") + "'," + go.DisplayId + "," + go.Faction + "," + (uint)go.GOFlags + "," + go.Size;
                                for (uint i = 0; i < 32; i++)
                                {
                                    query += "," + go.Data(i);
                                }
                                query += "," + go.QuestItem1 + "," + go.QuestItem2 + "," + go.QuestItem3 + "," + go.QuestItem4;
                                query += ");";
                                cmd    = new MySqlCommand(query, myConn);
                                cmd.ExecuteNonQuery();
                                //newAdded = true;
                            }
                            else
                            {
                                result.Read();
                                int questitem = result.GetInt32(1);
                                result.Close();
                                if (questitem > 1000000 || questitem < 0) // 1065353216
                                {
                                    query = "UPDATE gameobject_template set size = " + go.Size + ", questitem1 = " + go.QuestItem1 + ", questitem2 = " + go.QuestItem2 + ", questitem3 = " + go.QuestItem3 +
                                            ", questitem4 = " + go.QuestItem4 + " WHERE entry =" + go.Entry + ";";
                                    cmd = new MySqlCommand(query, myConn);
                                    cmd.ExecuteNonQuery();
                                }
                            }

                            /*if (!newAdded && go.IconName != "")
                             * {
                             *  query = "UPDATE gameobject_template set iconname='" + go.IconName + "' WHERE entry =" + go.Entry + ";";
                             *  cmd = new MySqlCommand(query, myConn);
                             *  cmd.ExecuteNonQuery();
                             * }
                             * if (!newAdded && go.CastBarCaption != "")
                             * {
                             *  query = "UPDATE gameobject_template set castbarcaption='" + go.CastBarCaption + "' WHERE entry =" + go.Entry + ";";
                             *  cmd = new MySqlCommand(query, myConn);
                             *  cmd.ExecuteNonQuery();
                             * }*/
                        }
                    }
                    catch (Exception)
                    {
                        Logging.Write("This query has a problem ? " + query);
                    }
                }

                foreach (WoWGameObject o in Mailboxes)
                {
                    if (o.CreatedBy != 0)
                    {
                        continue;
                    }
                    npcRadar.Add(new Npc
                    {
                        ContinentIdInt = Usefuls.ContinentId,
                        Entry          = o.Entry,
                        Faction        = UnitRelation.GetObjectRacialFaction(o.Faction),
                        Name           = o.Name,
                        Position       = o.Position,
                        Type           = Npc.NpcType.Mailbox
                    });
                }
                foreach (WoWUnit n in Vendors)
                {
                    if (BlackListed.Contains(n.Entry) || n.CreatedBy != 0)
                    {
                        continue;
                    }
                    npcRadar.Add(new Npc
                    {
                        ContinentIdInt = Usefuls.ContinentId,
                        Entry          = n.Entry,
                        Faction        = UnitRelation.GetObjectRacialFaction(n.Faction),
                        Name           = n.Name,
                        Position       = n.Position,
                        Type           = Npc.NpcType.Vendor
                    });
                }
                foreach (WoWUnit n in Repairers)
                {
                    if (BlackListed.Contains(n.Entry) || n.CreatedBy != 0)
                    {
                        continue;
                    }
                    npcRadar.Add(new Npc
                    {
                        ContinentIdInt = Usefuls.ContinentId,
                        Entry          = n.Entry,
                        Faction        = UnitRelation.GetObjectRacialFaction(n.Faction),
                        Name           = n.Name,
                        Position       = n.Position,
                        Type           = Npc.NpcType.Repair
                    });
                }
                foreach (WoWUnit n in Inkeepers)
                {
                    npcRadar.Add(new Npc
                    {
                        ContinentIdInt = Usefuls.ContinentId,
                        Entry          = n.Entry,
                        Faction        = UnitRelation.GetObjectRacialFaction(n.Faction),
                        Name           = n.Name,
                        Position       = n.Position,
                        Type           = Npc.NpcType.Innkeeper
                    });
                }
                foreach (WoWUnit n in Trainers)
                {
                    Npc.NpcType newtype;
                    if (n.SubName.Contains("Alchemy") || n.SubName.Contains("alchimistes"))
                    {
                        newtype = Npc.NpcType.AlchemyTrainer;
                    }
                    else if (n.SubName.Contains("Blacksmithing") || n.SubName.Contains("forgerons"))
                    {
                        newtype = Npc.NpcType.BlacksmithingTrainer;
                    }
                    else if (n.SubName.Contains("Enchanting") || n.SubName.Contains("enchanteurs"))
                    {
                        newtype = Npc.NpcType.EnchantingTrainer;
                    }
                    else if (n.SubName.Contains("Engineering") || n.SubName.Contains("ingénieurs"))
                    {
                        newtype = Npc.NpcType.EngineeringTrainer;
                    }
                    else if (n.SubName.Contains("Herbalism") || n.SubName.Contains("herboristes"))
                    {
                        newtype = Npc.NpcType.HerbalismTrainer;
                    }
                    else if (n.SubName.Contains("Inscription") || n.SubName.Contains("calligraphes"))
                    {
                        newtype = Npc.NpcType.InscriptionTrainer;
                    }
                    else if (n.SubName.Contains("Jewelcrafting") || n.SubName.Contains("joailliers"))
                    {
                        newtype = Npc.NpcType.JewelcraftingTrainer;
                    }
                    else if (n.SubName.Contains("Leatherworking") || n.SubName.Contains("travailleurs du cuir"))
                    {
                        newtype = Npc.NpcType.LeatherworkingTrainer;
                    }
                    else if (n.SubName.Contains("Mining") || n.SubName.Contains("mineurs"))
                    {
                        newtype = Npc.NpcType.MiningTrainer;
                    }
                    else if (n.SubName.Contains("Skinning") || n.SubName.Contains("dépeceurs"))
                    {
                        newtype = Npc.NpcType.SkinningTrainer;
                    }
                    else if (n.SubName.Contains("Tailoring") || n.SubName.Contains("tailleurs"))
                    {
                        newtype = Npc.NpcType.TailoringTrainer;
                    }
                    else if (n.SubName.Contains("Archaeology") || n.SubName.Contains("archéologues"))
                    {
                        newtype = Npc.NpcType.ArchaeologyTrainer;
                    }
                    else if (n.SubName.Contains("Cooking") || n.SubName.Contains("cuisiniers"))
                    {
                        newtype = Npc.NpcType.CookingTrainer;
                    }
                    else if (n.SubName.Contains("First Aid") || n.SubName.Contains("secouristes"))
                    {
                        newtype = Npc.NpcType.FirstAidTrainer;
                    }
                    else if (n.SubName.Contains("Fishing") || n.SubName.Contains("pêche"))
                    {
                        newtype = Npc.NpcType.FishingTrainer;
                    }
                    else if (n.SubName.Contains("Riding") || n.SubName.Contains(" de vol") || n.SubName.Contains(" de monte"))
                    {
                        newtype = Npc.NpcType.RidingTrainer;
                    }
                    else
                    {
                        continue;
                    }
                    npcRadar.Add(new Npc
                    {
                        ContinentIdInt = Usefuls.ContinentId,
                        Entry          = n.Entry,
                        Faction        = UnitRelation.GetObjectRacialFaction(n.Faction),
                        Name           = n.Name,
                        Position       = n.Position,
                        Type           = newtype
                    });
                }
                foreach (WoWUnit n in SpiritHealers)
                {
                    npcRadar.Add(new Npc
                    {
                        ContinentIdInt = Usefuls.ContinentId,
                        Entry          = n.Entry,
                        Faction        = UnitRelation.GetObjectRacialFaction(n.Faction),
                        Name           = n.Name,
                        Position       = n.Position,
                        Type           = Npc.NpcType.SpiritHealer
                    });
                }
                foreach (WoWUnit n in SpiritGuides)
                {
                    npcRadar.Add(new Npc
                    {
                        ContinentIdInt = Usefuls.ContinentId,
                        Entry          = n.Entry,
                        Faction        = UnitRelation.GetObjectRacialFaction(n.Faction),
                        Name           = n.Name,
                        Position       = n.Position,
                        Type           = Npc.NpcType.SpiritGuide
                    });
                }
                foreach (WoWUnit n in NpcMailboxes)
                {
                    if (BlackListed.Contains(n.Entry) || n.CreatedBy != 0)
                    {
                        continue;
                    }
                    npcRadar.Add(new Npc
                    {
                        ContinentIdInt = Usefuls.ContinentId,
                        Entry          = n.Entry,
                        Faction        = UnitRelation.GetObjectRacialFaction(n.Faction),
                        Name           = n.Name,
                        Position       = n.Position,
                        Type           = Npc.NpcType.Mailbox
                    });
                }
                foreach (WoWUnit n in Auctioneers)
                {
                    npcRadar.Add(new Npc
                    {
                        ContinentIdInt = Usefuls.ContinentId,
                        Entry          = n.Entry,
                        Faction        = UnitRelation.GetObjectRacialFaction(n.Faction),
                        Name           = n.Name,
                        Position       = n.Position,
                        Type           = Npc.NpcType.Auctioneer
                    });
                }
                foreach (WoWUnit n in NpcQuesters)
                {
                    if (BlackListed.Contains(n.Entry) || n.CreatedBy != 0)
                    {
                        continue;
                    }
                    npcRadarQuesters.Add(new Npc
                    {
                        ContinentIdInt = Usefuls.ContinentId,
                        Entry          = n.Entry,
                        Faction        = UnitRelation.GetObjectRacialFaction(n.Faction),
                        Name           = n.Name,
                        Position       = n.Position,
                        Type           = Npc.NpcType.QuestGiver
                    });
                }
                foreach (WoWGameObject o in ObjectQuesters)
                {
                    if (o.CreatedBy != 0)
                    {
                        continue;
                    }
                    npcRadarQuesters.Add(new Npc
                    {
                        ContinentIdInt = Usefuls.ContinentId,
                        Entry          = o.Entry,
                        Faction        = UnitRelation.GetObjectRacialFaction(o.Faction),
                        Name           = o.Name,
                        Position       = o.Position,
                        Type           = Npc.NpcType.QuestGiver
                    });
                }
                foreach (WoWGameObject o in Forges)
                {
                    if (o.CreatedBy != 0)
                    {
                        continue;
                    }
                    Npc.NpcType newtype;
                    switch (o.Data0)
                    {
                    case 3:
                        newtype = Npc.NpcType.SmeltingForge;
                        break;

                    case 1552:
                        newtype = Npc.NpcType.RuneForge;
                        break;

                    default:
                        continue;
                    }
                    npcRadar.Add(new Npc
                    {
                        ContinentIdInt = Usefuls.ContinentId,
                        Entry          = o.Entry,
                        Faction        = UnitRelation.GetObjectRacialFaction(o.Faction),
                        Name           = o.Name,
                        Position       = o.Position,
                        Type           = newtype
                    });
                }
                d = NpcDB.AddNpcRange(npcRadar, true);
                if (d > 0)
                {
                    Logging.Write("Found " + d + " new NPCs/Mailboxes in memory");
                }
                d = AddQuesters(npcRadarQuesters, true);
                if (d == 1)
                {
                    Logging.Write("Found " + d + " new Quest Giver in memory");
                }
                else if (d > 1)
                {
                    Logging.Write("Found " + d + " new Quest Givers in memory");
                }
            }
        }
Ejemplo n.º 5
0
        internal static bool Pulse()
        {
            try
            {
                Profile = new GrinderProfile();
                LoadProfile f = new LoadProfile();
                f.ShowDialog();
                // If grinder School Load Profile
                if (!string.IsNullOrWhiteSpace(GrinderSetting.CurrentSetting.ProfileName) &&
                    File.Exists(Application.StartupPath + "\\Profiles\\Grinder\\" +
                                GrinderSetting.CurrentSetting.ProfileName))
                {
                    Profile =
                        XmlSerializer.Deserialize <GrinderProfile>(Application.StartupPath + "\\Profiles\\Grinder\\" +
                                                                   GrinderSetting.CurrentSetting.ProfileName);
                    if (Profile.GrinderZones.Count <= 0)
                    {
                        return(false);
                    }
                }
                else
                {
                    MessageBox.Show(Translate.Get(Translate.Id.Please_select_an_profile));
                    return(false);
                }

                SelectZone();


                // Black List:
                foreach (GrinderZone zone in Profile.GrinderZones)
                {
                    nManagerSetting.AddRangeBlackListZone(new List <nManagerSetting.BlackListZone>(zone.BlackListRadius));
                }

                // Add Npc
                foreach (GrinderZone zone in Profile.GrinderZones)
                {
                    NpcDB.AddNpcRange(zone.Npc);
                }

                // Load CC:
                CombatClass.LoadCombatClass();

                // FSM
                Fsm.States.Clear();

                Fsm.AddState(new Pause {
                    Priority = 200
                });
                Fsm.AddState(new SelectProfileState {
                    Priority = 150
                });
                Fsm.AddState(new Resurrect {
                    Priority = 140
                });
                Fsm.AddState(new IsAttacked {
                    Priority = 130
                });
                Fsm.AddState(new Regeneration {
                    Priority = 120
                });
                Fsm.AddState(new ToTown {
                    Priority = 110
                });
                Fsm.AddState(new Looting {
                    Priority = 100
                });
                Fsm.AddState(new Travel {
                    Priority = 90
                });
                Fsm.AddState(new SpecializationCheck {
                    Priority = 80
                });
                Fsm.AddState(new LevelupCheck {
                    Priority = 70
                });
                Fsm.AddState(new Trainers {
                    Priority = 60
                });
                Fsm.AddState(new AutoItemCombiner {
                    Priority = 52
                });
                Fsm.AddState(new MillingState {
                    Priority = 51
                });
                Fsm.AddState(new ProspectingState {
                    Priority = 50
                });
                Fsm.AddState(Grinding);
                Fsm.AddState(new Farming {
                    Priority = 20
                });
                Fsm.AddState(MovementLoop);
                Fsm.AddState(new Idle {
                    Priority = 0
                });

                foreach (var statePlugin in Plugins.ListLoadedStatePlugins)
                {
                    Fsm.AddState(statePlugin);
                }

                Fsm.States.Sort();
                Fsm.StartEngine(7, "FSM Grinder");

                return(true);
            }
            catch (Exception e)
            {
                try
                {
                    Dispose();
                }
                catch
                {
                }
                Logging.WriteError("Grinder > Bot > Bot  > Pulse(): " + e);
                return(false);
            }
        }