Пример #1
0
        private void OnObjAiBaseProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            try
            {
                if (sender.IsAlly)
                {
                    return;
                }

                foreach (var ward in _wardStructs)
                {
                    if (args.SData.Name.Equals(ward.SpellName, StringComparison.OrdinalIgnoreCase))
                    {
                        var wObj = new WardObject(
                            ward, ObjectManager.Player.GetPath(args.End).LastOrDefault(), (int)Game.Time);
                        CheckDuplicateWards(wObj);
                        _wardObjects.Add(wObj);
                    }
                }
            }
            catch (Exception ex)
            {
                Global.Logger.AddItem(new LogItem(ex));
            }
        }
Пример #2
0
        private void OnObjAiBaseProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            try
            {
                if (!getCheckBoxItem(this.Menu, "wardtracker.Enabled"))
                {
                    return;
                }

                if (sender.IsAlly)
                {
                    return;
                }

                foreach (var ward in this._wardStructs)
                {
                    if (args.SData.Name.Equals(ward.SpellName, StringComparison.OrdinalIgnoreCase))
                    {
                        var wObj = new WardObject(
                            ward,
                            ObjectManager.Player.GetPath(args.End).LastOrDefault(),
                            (int)Game.Time);
                        this.CheckDuplicateWards(wObj);
                        this._wardObjects.Add(wObj);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
Пример #3
0
        private void OnObjAiBaseProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            try
            {
                if (!this.Menu.Item("wardtracker.Enabled").IsActive())
                {
                    return;
                }

                if (sender.IsAlly)
                {
                    return;
                }

                foreach (var ward in this._wardStructs)
                {
                    if (args.SData.Name.Equals(ward.SpellName, StringComparison.OrdinalIgnoreCase))
                    {
                        var wObj = new WardObject(
                            ward,
                            ObjectManager.Player.GetPath(args.End).LastOrDefault(),
                            (int)Game.Time);
                        this.CheckDuplicateWards(wObj);
                        this._wardObjects.Add(wObj);
                    }
                }
            }
            catch (Exception e)
            {
                Logging.AddEntry(LoggingEntryType.Error, "@WardTracker.cs: An error occurred: {0}", e);
            }
        }
Пример #4
0
 private void CheckDuplicateWards(WardObject wObj)
 {
     try
     {
         var range = getSliderItem(this.Menu, "wardtracker.FilterWards");
         if (wObj.Data.Duration != int.MaxValue)
         {
             foreach (var obj in this._wardObjects.Where(w => w.Data.Duration != int.MaxValue).ToList())
             {
                 if (wObj.Position.LSDistance(obj.Position) < range)
                 {
                     this._wardObjects.Remove(obj);
                     return;
                 }
                 if (obj.IsFromMissile && !obj.Corrected)
                 {
                     var newPoint = obj.StartPosition.LSExtend(obj.EndPosition, -(range * 1.5f));
                     if (wObj.Position.LSDistance(newPoint) < range)
                     {
                         this._wardObjects.Remove(obj);
                         return;
                     }
                 }
             }
         }
         else
         {
             foreach (var obj in
                      this._wardObjects.Where(
                          w =>
                          w.Data.Duration != int.MaxValue && w.IsFromMissile &&
                          w.Position.LSDistance(wObj.Position) < 100).ToList())
             {
                 this._wardObjects.Remove(obj);
                 return;
             }
         }
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
     }
 }
Пример #5
0
 private void CheckDuplicateWards(WardObject wObj)
 {
     try
     {
         var range = Menu.Item(Name + "FilterWards").GetValue <Slider>().Value;
         if (wObj.Data.Duration != int.MaxValue)
         {
             foreach (var obj in _wardObjects.Where(w => w.Data.Duration != int.MaxValue).ToList())
             {
                 if (wObj.Position.Distance(obj.Position) < range)
                 {
                     _wardObjects.Remove(obj);
                     return;
                 }
                 if (obj.IsFromMissile && !obj.Corrected)
                 {
                     var newPoint = obj.StartPosition.Extend(obj.EndPosition, -(range * 1.5f));
                     if (wObj.Position.Distance(newPoint) < range)
                     {
                         _wardObjects.Remove(obj);
                         return;
                     }
                 }
             }
         }
         else
         {
             foreach (var obj in
                      _wardObjects.Where(
                          w =>
                          w.Data.Duration != int.MaxValue && w.IsFromMissile &&
                          w.Position.Distance(wObj.Position) < 100).ToList())
             {
                 _wardObjects.Remove(obj);
                 return;
             }
         }
     }
     catch (Exception ex)
     {
         Global.Logger.AddItem(new LogItem(ex));
     }
 }
Пример #6
0
 private void CheckDuplicateWards(WardObject wObj)
 {
     try
     {
         var range = this.Menu.Item("wardtracker.FilterWards").GetValue <Slider>().Value;
         if (wObj.Data.Duration != int.MaxValue)
         {
             foreach (var obj in this._wardObjects.Where(w => w.Data.Duration != int.MaxValue).ToList())
             {
                 if (wObj.Position.Distance(obj.Position) < range)
                 {
                     this._wardObjects.Remove(obj);
                     return;
                 }
                 if (obj.IsFromMissile && !obj.Corrected)
                 {
                     var newPoint = obj.StartPosition.Extend(obj.EndPosition, -(range * 1.5f));
                     if (wObj.Position.Distance(newPoint) < range)
                     {
                         this._wardObjects.Remove(obj);
                         return;
                     }
                 }
             }
         }
         else
         {
             foreach (var obj in
                      this._wardObjects.Where(
                          w =>
                          w.Data.Duration != int.MaxValue && w.IsFromMissile &&
                          w.Position.Distance(wObj.Position) < 100).ToList())
             {
                 this._wardObjects.Remove(obj);
                 return;
             }
         }
     }
     catch (Exception e)
     {
         Logging.AddEntry(LoggingEntryType.Error, "@WardTracker.cs: An error occurred: {0}", e);
     }
 }
Пример #7
0
        private void OnGameObjectCreate(GameObject sender, EventArgs args)
        {
            try
            {
                if (!getCheckBoxItem(this.Menu, "wardtracker.Enabled"))
                {
                    return;
                }

                var missile = sender as MissileClient;
                if (missile != null && missile.IsValid)
                {
                    if (missile.SpellCaster != null && !missile.SpellCaster.IsAlly && missile.SData != null)
                    {
                        if (missile.SData.Name.Equals("itemplacementmissile", StringComparison.OrdinalIgnoreCase) &&
                            !missile.SpellCaster.IsVisible)
                        {
                            var sPos = missile.StartPosition;
                            var ePos = missile.EndPosition;

                            LeagueSharp.Common.Utility.DelayAction.Add(
                                1000,
                                delegate
                            {
                                if (
                                    !_wardObjects.Any(
                                        w =>
                                        w.Position.LSTo2D().LSDistance(sPos.LSTo2D(), ePos.LSTo2D(), false) < 300 &&
                                        ((int)Game.Time - w.StartT < 2)))
                                {
                                    var wObj = new WardObject(
                                        GetWardStructForInvisible(sPos, ePos),
                                        new Vector3(
                                            ePos.X,
                                            ePos.Y,
                                            NavMesh.GetHeightForPosition(ePos.X, ePos.Y)),
                                        (int)Game.Time,
                                        null,
                                        true,
                                        new Vector3(
                                            sPos.X,
                                            sPos.Y,
                                            NavMesh.GetHeightForPosition(sPos.X, sPos.Y)));
                                    CheckDuplicateWards(wObj);
                                    _wardObjects.Add(wObj);
                                }
                            });
                        }
                    }
                }
                else
                {
                    var wardObject = sender as Obj_AI_Base;
                    if (wardObject != null && wardObject.IsValid && !wardObject.IsAlly)
                    {
                        foreach (var ward in this._wardStructs)
                        {
                            if (wardObject.CharData.BaseSkinName.Equals(
                                    ward.ObjectBaseSkinName,
                                    StringComparison.OrdinalIgnoreCase))
                            {
                                this._wardObjects.RemoveAll(
                                    w =>
                                    w.Position.LSDistance(wardObject.Position) < 300 && ((int)Game.Time - w.StartT < 0.5));
                                var wObj = new WardObject(
                                    ward,
                                    new Vector3(wardObject.Position.X, wardObject.Position.Y, wardObject.Position.Z),
                                    (int)(Game.Time - (int)(wardObject.MaxMana - wardObject.Mana)),
                                    wardObject);
                                this.CheckDuplicateWards(wObj);
                                this._wardObjects.Add(wObj);
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
Пример #8
0
        private void OnGameObjectCreate(GameObject sender, EventArgs args)
        {
            try
            {
                var missile = sender as Obj_SpellMissile;
                if (missile != null && missile.IsValid)
                {
                    if (missile.SpellCaster != null && !missile.SpellCaster.IsAlly && missile.SData != null)
                    {
                        if (missile.SData.Name.Equals("itemplacementmissile", StringComparison.OrdinalIgnoreCase) &&
                            !missile.SpellCaster.IsVisible)
                        {
                            var sPos = missile.StartPosition;
                            var ePos = missile.EndPosition;

                            Utility.DelayAction.Add(
                                1000, delegate
                            {
                                if (
                                    !_wardObjects.Any(
                                        w =>
                                        w.Position.To2D().Distance(sPos.To2D(), ePos.To2D(), false) < 300 &&
                                        ((int)Game.Time - w.StartT < 2)))
                                {
                                    var wObj = new WardObject(
                                        GetWardStructForInvisible(sPos, ePos),
                                        new Vector3(ePos.X, ePos.Y, NavMesh.GetHeightForPosition(ePos.X, ePos.Y)),
                                        (int)Game.Time, null, true,
                                        new Vector3(sPos.X, sPos.Y, NavMesh.GetHeightForPosition(sPos.X, sPos.Y)));
                                    CheckDuplicateWards(wObj);
                                    _wardObjects.Add(wObj);
                                }
                            });
                        }
                    }
                }
                else
                {
                    var wardObject = sender as Obj_AI_Base;
                    if (wardObject != null && wardObject.IsValid && !wardObject.IsAlly)
                    {
                        foreach (var ward in _wardStructs)
                        {
                            if (wardObject.CharData.BaseSkinName.Equals(
                                    ward.ObjectBaseSkinName, StringComparison.OrdinalIgnoreCase))
                            {
                                _wardObjects.RemoveAll(
                                    w =>
                                    w.Position.Distance(wardObject.Position) < 300 &&
                                    ((int)Game.Time - w.StartT < 0.5));
                                var wObj = new WardObject(
                                    ward,
                                    new Vector3(wardObject.Position.X, wardObject.Position.Y, wardObject.Position.Z),
                                    (int)(Game.Time - (int)((wardObject.MaxMana - wardObject.Mana))), wardObject);
                                CheckDuplicateWards(wObj);
                                _wardObjects.Add(wObj);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Global.Logger.AddItem(new LogItem(ex));
            }
        }
Пример #9
0
        private void OnGameObjectCreate(GameObject sender, EventArgs args)
        {
            try
            {
                if (!this.Menu.Item("wardtracker.Enabled").IsActive())
                {
                    return;
                }

                var missile = sender as MissileClient;
                if (missile != null && missile.IsValid)
                {
                    if (missile.SpellCaster != null && !missile.SpellCaster.IsAlly && missile.SData != null)
                    {
                        if (missile.SData.Name.Equals("itemplacementmissile", StringComparison.OrdinalIgnoreCase) &&
                            !missile.SpellCaster.IsVisible)
                        {
                            var sPos = missile.StartPosition;
                            var ePos = missile.EndPosition;

                            Utility.DelayAction.Add(
                                1000,
                                delegate
                            {
                                if (
                                    !this._wardObjects.Any(
                                        w =>
                                        w.Position.To2D().Distance(sPos.To2D(), ePos.To2D(), false) < 300 &&
                                        ((int)Game.Time - w.StartT < 2)))
                                {
                                    var wObj = new WardObject(
                                        this.GetWardStructForInvisible(sPos, ePos),
                                        new Vector3(ePos.X, ePos.Y, NavMesh.GetHeightForPosition(ePos.X, ePos.Y)),
                                        (int)Game.Time, null, true,
                                        new Vector3(sPos.X, sPos.Y, NavMesh.GetHeightForPosition(sPos.X, sPos.Y)),
                                        missile.SpellCaster);

                                    this.CheckDuplicateWards(wObj);
                                    this._wardObjects.Add(wObj);
                                }
                            });
                        }
                    }
                }
                else
                {
                    var wardObject = sender as Obj_AI_Base;
                    if (wardObject != null && wardObject.IsValid && !wardObject.IsAlly)
                    {
                        var wards = this._wardStructs;
                        if (wards == null)
                        {
                            Logging.AddEntry(LoggingEntryType.Error, "@WardTracker.cs: NULL 405");
                        }
                        else
                        {
                            foreach (var ward in wards)
                            {
                                if (wardObject.CharData.BaseSkinName.Equals(
                                        ward.ObjectBaseSkinName, StringComparison.OrdinalIgnoreCase))
                                {
                                    this._wardObjects.RemoveAll(
                                        w =>
                                        w.Position.Distance(wardObject.Position) < 300 &&
                                        ((int)Game.Time - w.StartT < 0.5));

                                    var wObj = new WardObject(
                                        ward,
                                        new Vector3(wardObject.Position.X, wardObject.Position.Y, wardObject.Position.Z),
                                        (int)(Game.Time - (int)(wardObject.MaxMana - wardObject.Mana)), wardObject);

                                    this.CheckDuplicateWards(wObj);
                                    this._wardObjects.Add(wObj);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Logging.AddEntry(LoggingEntryType.Error, "@WardTracker.cs: An error occurred: {0}", e);
            }
        }