Exemple #1
0
        public static Vars Parse(string[] lines, bool ignoreWhiteSpace = false)
        {
            Vars vars = new Vars();

            for (int i = 0; i < lines.Length; i++)
            {
                string line = lines[i];

                // skip comments
                if (IsComment(line))
                    continue;

                line = RemoveInlineComment(line);
                line = RemoveExportKeyword(line);

                string[] keyValuePair = line.Split('=');

                // skip malformed lines
                if (keyValuePair.Length != 2)
                    continue;

                if (!ignoreWhiteSpace)
                {
                    keyValuePair[0] = keyValuePair[0].Trim();
                    keyValuePair[1] = keyValuePair[1].Trim();
                }

                vars.Add(
                    keyValuePair[0],
                    keyValuePair[1]
                );
            }

            return vars;
        }
Exemple #2
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Combo(EventArgs args)
        {
            if (Bools.HasSheenBuff() ||
                !Targets.Target.LSIsValidTarget())
            {
                return;
            }

            /// <summary>
            ///     The Q Combo Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                Targets.Target.LSIsValidTarget(Vars.AARange) &&
                GameObjects.Player.HasBuff("asheqcastready") &&
                Vars.getCheckBoxItem(Vars.QMenu, "combo"))
            {
                Vars.Q.Cast();
            }

            if (Targets.Target.LSIsValidTarget(Vars.AARange + 20))
            {
                return;
            }

            /// <summary>
            ///     The W Combo Logic.
            /// </summary>
            if (Vars.W.IsReady() &&
                !Invulnerable.Check(Targets.Target) &&
                Targets.Target.LSIsValidTarget(Vars.W.Range) &&
                Vars.getCheckBoxItem(Vars.WMenu, "combo"))
            {
                if (!Vars.W.GetPrediction(Targets.Target).CollisionObjects.Any())
                {
                    Vars.W.Cast(Vars.W.GetPrediction(Targets.Target).UnitPosition);
                }
            }
        }
Exemple #3
0
        /// <summary>
        ///     Fired when the game is updated.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Clear(EventArgs args)
        {
            if (Bools.HasSheenBuff())
            {
                return;
            }

            /// <summary>
            ///     The Q Clear Logics.
            /// </summary>
            if (Vars.Q.IsReady() &&
                GameObjects.Player.HealthPercent >
                ManaManager.GetNeededHealth(Vars.Q.Slot, Vars.getSliderItem(Vars.QMenu, "clear")) &&
                Vars.getSliderItem(Vars.QMenu, "clear") != 101)
            {
                /// <summary>
                ///     The Q LaneClear Logic.
                /// </summary>
                if (Targets.Minions.Any())
                {
                    foreach (var minion in Targets.Minions.Where(m => Vars.GetRealHealth(m) < (float)GameObjects.Player.LSGetSpellDamage(m, SpellSlot.Q)))
                    {
                        if (!Vars.Q.GetPrediction(minion).CollisionObjects.Any(c => Targets.Minions.Contains(c)))
                        {
                            Vars.Q.Cast(Vars.Q.GetPrediction(minion).UnitPosition);
                        }
                    }
                }

                /// <summary>
                ///     The Q JungleClear Logic.
                /// </summary>
                else if (Targets.JungleMinions.Any())
                {
                    Vars.Q.Cast(Targets.JungleMinions[0].ServerPosition);
                }
            }
        }
Exemple #4
0
        /// <summary>
        ///     Called on orbwalker action.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="OrbwalkingActionArgs" /> instance containing the event data.</param>
        public static void OnAction(AttackableUnit target, Orbwalker.PreAttackArgs args)
        {
            /// <summary>
            ///     The Target Forcing Logic.
            /// </summary>
            if (args.Target is AIHeroClient)
            {
                if (!GameObjects.EnemyHeroes.Any(
                        t =>
                        t.LSIsValidTarget(Vars.AARange) &&
                        t.HasBuff("luxilluminatingfraulein")))
                {
                    Orbwalker.ForcedTarget = null;
                    return;
                }

                Orbwalker.ForcedTarget = GameObjects.EnemyHeroes.FirstOrDefault(
                    t =>
                    t.LSIsValidTarget(Vars.AARange) &&
                    t.HasBuff("luxilluminatingfraulein"));
                return;
            }

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit))
            {
                /// <summary>
                ///     The 'Support Mode' Logic.
                /// </summary>
                if (Vars.getCheckBoxItem(Vars.MiscMenu, "support"))
                {
                    if (args.Target is Obj_AI_Minion &&
                        GameObjects.AllyHeroes.Any(a => a.Distance(GameObjects.Player) < 2500))
                    {
                        args.Process = false;
                    }
                }
            }
        }
Exemple #5
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Combo(EventArgs args)
        {
            if (Bools.HasSheenBuff() ||
                !Targets.Target.LSIsValidTarget() ||
                Invulnerable.Check(Targets.Target))
            {
                return;
            }

            /// <summary>
            ///     The Q Combo Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                Targets.Target.LSIsValidTarget(Vars.Q.Range) &&
                Vars.getCheckBoxItem(Vars.QMenu, "combo"))
            {
                Vars.Q.CastOnUnit(Targets.Target);
            }

            /// <summary>
            ///     The R Gapclose Logic.
            /// </summary>
            if (Vars.R.IsReady() &&
                !Targets.Target.LSIsValidTarget(Vars.R.Range) &&
                Targets.Target.LSIsValidTarget(Vars.R.Range * 2) &&
                GameObjects.Player.GetBuffCount("AkaliShadowDance") >=
                Vars.getSliderItem(Vars.MiscMenu, "gapclose") &&
                Vars.getSliderItem(Vars.MiscMenu, "gapclose") != 4)
            {
                foreach (var minion in Targets.Minions.Where(
                             m =>
                             m.LSIsValidTarget(Vars.R.Range) &&
                             m.Distance(Targets.Target) < Vars.Q.Range))
                {
                    Vars.R.CastOnUnit(minion);
                }
            }
        }
Exemple #6
0
        /// <summary>
        ///     Fired when the game is updated.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Clear(EventArgs args)
        {
            if (Bools.HasSheenBuff())
            {
                return;
            }

            /// <summary>
            ///     The Clear Q Logics.
            /// </summary>
            if (Vars.Q.IsReady() &&
                GameObjects.Player.ManaPercent >
                ManaManager.GetNeededMana(Vars.Q.Slot, Vars.getSliderItem(Vars.QMenu, "clear")) &&
                Vars.getSliderItem(Vars.QMenu, "clear") != 101)
            {
                /// <summary>
                ///     The JungleClear Q Logic.
                /// </summary>
                if (Targets.JungleMinions.Any())
                {
                    Vars.Q.Cast(Targets.JungleMinions[0].ServerPosition);
                }

                /// <summary>
                ///     The LaneClear Q Logic.
                /// </summary>
                else if (!GameObjects.EnemyHeroes.Any(
                             t =>
                             !Invulnerable.Check(t) &&
                             t.LSIsValidTarget(Vars.Q.Range + 100f)))
                {
                    if (Vars.Q.GetLineFarmLocation(Targets.Minions, Vars.Q.Width).MinionsHit >= 3)
                    {
                        Vars.Q.Cast(Vars.Q.GetLineFarmLocation(Targets.Minions, Vars.Q.Width).Position);
                    }
                }
            }
        }
Exemple #7
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Combo(EventArgs args)
        {
            if (Bools.HasSheenBuff() || !Targets.Target.IsValidTarget() || Invulnerable.Check(Targets.Target))
            {
                return;
            }

            /// <summary>
            ///     The E Combo Logic.
            /// </summary>
            if (Vars.E.IsReady() && Targets.Target.IsValidTarget(Vars.E.Range) &&
                !Targets.Target.IsValidTarget(GameObjects.Player.GetRealAutoAttackRange()) &&
                Vars.Menu["spells"]["e"]["engager"].GetValue <MenuBool>().Value)
            {
                if (GameObjects.Player.Distance(Game.CursorPos) > GameObjects.Player.GetRealAutoAttackRange() &&
                    GameObjects.Player.ServerPosition.Extend(
                        Game.CursorPos,
                        Vars.E.Range - GameObjects.Player.GetRealAutoAttackRange()).CountEnemyHeroesInRange(1000f) < 3 &&
                    Targets.Target.Distance(
                        GameObjects.Player.ServerPosition.Extend(
                            Game.CursorPos,
                            Vars.E.Range - GameObjects.Player.GetRealAutoAttackRange()))
                    < GameObjects.Player.GetRealAutoAttackRange())
                {
                    Vars.E.Cast(Game.CursorPos);
                }
            }

            /// <summary>
            ///     The Q Combo Logic.
            /// </summary>
            if (Vars.Q.IsReady() && Targets.Target.IsValidTarget(Vars.Q.Range) &&
                !Vars.AnyWall(GameObjects.Player.ServerPosition, Vars.Q.GetPrediction(Targets.Target).UnitPosition) &&
                Vars.Menu["spells"]["q"]["combo"].GetValue <MenuBool>().Value)
            {
                Vars.Q.Cast(Vars.Q.GetPrediction(Targets.Target).UnitPosition);
            }
        }
Exemple #8
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Killsteal(EventArgs args)
        {
            /// <summary>
            ///     The KillSteal E Logic.
            /// </summary>
            if (Vars.E.IsReady() &&
                Vars.getCheckBoxItem(Vars.EMenu, "killsteal"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) &&
                             t.LSIsValidTarget(Vars.E.Range) &&
                             Vars.GetRealHealth(t) <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.E)))
                {
                    Vars.E.CastOnUnit(target);
                    return;
                }
            }

            /// <summary>
            ///     The KillSteal Q Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                GameObjects.Player.Spellbook.GetSpell(SpellSlot.Q).ToggleState == 1 &&
                Vars.getCheckBoxItem(Vars.QMenu, "killsteal"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) &&
                             t.LSIsValidTarget(Vars.Q.Range) &&
                             Vars.GetRealHealth(t) <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.Q)))
                {
                    Vars.Q.Cast(Vars.Q.GetPrediction(target).UnitPosition);
                }
            }
        }
Exemple #9
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Killsteal(EventArgs args)
        {
            /// <summary>
            ///     The KillSteal Q Logic.
            /// </summary>
            if (Vars.Q.IsReady() && Vars.Menu["spells"]["q"]["killsteal"].GetValue <MenuBool>().Value)
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             t.IsValidTarget(Vars.Q.Range) && !t.IsValidTarget(Vars.AaRange) &&
                             !Invulnerable.Check(t, DamageType.Magical, false) &&
                             Vars.GetRealHealth(t) < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.Q)))
                {
                    if (!Vars.Q.GetPrediction(Targets.Target).CollisionObjects.Any())
                    {
                        Vars.Q.Cast(Vars.Q.GetPrediction(target).UnitPosition);
                        return;
                    }
                }
            }

            /// <summary>
            ///     The KillSteal R Logic.
            /// </summary>
            if (Vars.R.IsReady() && Vars.Menu["spells"]["r"]["killsteal"].GetValue <MenuBool>().Value)
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             t.IsValidTarget(Vars.R.Range) && !t.IsValidTarget(Vars.AaRange) &&
                             !Invulnerable.Check(t, DamageType.Magical, false) &&
                             Vars.GetRealHealth(t) < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.R)))
                {
                    Vars.R.CastOnUnit(target);
                }
            }
        }
Exemple #10
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Automatic(EventArgs args)
        {
            if (Bools.HasSheenBuff())
            {
                return;
            }

            /// <summary>
            ///     The Automatic Q Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                Vars.getCheckBoxItem(Vars.QMenu, "logical"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             Bools.IsImmobile(t) &&
                             !Invulnerable.Check(t) &&
                             t.LSIsValidTarget(Vars.Q.Range)))
                {
                    Vars.Q.Cast(target.ServerPosition);
                }
            }
        }
Exemple #11
0
        public override void Start()
        {
            engineComponent = FindObjectOfType <EngineComponent>();
            aimingComponent = FindObjectOfType <AimingComponent>();
            damageComponent = FindObjectOfType <DamageComponent>();

            aimingComponent.PropertyChanged += (sender, args) =>
                                               playerGun.ShootingAbility.shootingPeriodCoefficient = aimingComponent.Value;

            damageComponent.PropertyChanged += (sender, args) =>
                                               playerGun.ShootingAbility.bullet.damageCoefficient = damageComponent.Value;

            rb             = GetComponent <Rigidbody2D>();
            playerCollider = GetComponent <Collider2D>();
            playerGun      = GetComponentInChildren <GunController>();

            damagePart   = Vars.GetCarPart(PartType.Damage);
            shootingPart = Vars.GetCarPart(PartType.Shooting);
            armorPart    = Vars.GetCarPart(PartType.Armor);
            enginePart   = Vars.GetCarPart(PartType.Engine);
            base.Start();
            StartCoroutine(ApplyParts());
        }
Exemple #12
0
 /// <summary>
 ///     Called on do-cast.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="args">The args.</param>
 public static void Clear(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
 {
     /// <summary>
     ///     The Q FarmHelper Logic.
     /// </summary>
     if (Vars.Q.IsReady() &&
         GameObjects.Player.ManaPercent
         > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["spells"]["q"]["farmhelper"]) &&
         Vars.Menu["spells"]["q"]["farmhelper"].GetValue <MenuSliderButton>().BValue)
     {
         if (Targets.Minions.Any() &&
             Targets.Minions.Count(
                 m =>
                 Vars.GetRealHealth(m)
                 < GameObjects.Player.GetAutoAttackDamage(m)
                 + (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.Q) &&
                 m.Distance(GameObjects.Player.ServerPosition.Extend(Game.CursorPos, 300f))
                 < GameObjects.Player.GetRealAutoAttackRange()) > 1)
         {
             Vars.Q.Cast(Game.CursorPos);
         }
     }
 }
Exemple #13
0
        private void UpdateVariable(string key, HybInstance value)
        {
            if (Vars.UpdateValue(key, value) == false)
            {
                if (Ctx._this != null)
                {
                    if (Ctx._this.SetPropertyOrField(key, value, AccessLevel.This))
                    {
                        return;
                    }
                }
                if (Ctx.Method.DeclaringType.SetStaticPropertyOrField(key, value, AccessLevel.This))
                {
                    return;
                }
            }
            else
            {
                return;
            }

            throw new SemanticViolationException($"No such variable in current context: {key}.");
        }
Exemple #14
0
 /// <summary>
 ///     Fired when the game is updated.
 /// </summary>
 /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
 public static void LastHit(EventArgs args)
 {
     /// <summary>
     ///     The E LastHit Logic.
     /// </summary>
     if (Vars.E.IsReady() &&
         Vars.getSliderItem(Vars.EMenu, "lasthit") != 101)
     {
         DelayAction.Add(Vars.getSliderItem(Vars.EMenu, "delay"), () =>
         {
             foreach (var minion in Targets.Minions.Where(
                          m =>
                          Vars.GetRealHealth(m) <
                          (float)GameObjects.Player.LSGetSpellDamage(m, SpellSlot.E) +
                          (m.HasBuffOfType(BuffType.Poison)
                             ? (float)GameObjects.Player.LSGetSpellDamage(m, SpellSlot.E, DamageStage.Empowered)
                             : 0)))
             {
                 Vars.E.CastOnUnit(minion);
             }
         });
     }
 }
Exemple #15
0
        /// <summary>
        ///     Called on do-cast.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The args.</param>
        public static void OnDoCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (sender.IsMe)
            {
                if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
                {
                    switch (args.SData.Name)
                    {
                    case "CaitlynEntrapment":
                    case "CaitlynEntrapmentMissile":
                        if (Vars.W.IsReady() &&
                            Vars.getCheckBoxItem(Vars.WMenu, "combo"))
                        {
                            Vars.W.Cast(Vars.E.GetPrediction(Targets.Target).CastPosition);
                        }
                        break;

                    default:
                        break;
                    }
                }
            }
        }
Exemple #16
0
        /// <summary>
        ///     Fired on an incoming gapcloser.
        /// </summary>
        /// <param name="sender">The object.</param>
        /// <param name="args">The <see cref="Events.GapCloserEventArgs" /> instance containing the event data.</param>
        public static void OnGapCloser(object sender, Events.GapCloserEventArgs args)
        {
            if (Vars.E.IsReady() &&
                args.IsDirectedToPlayer &&
                args.Sender.LSIsValidTarget(Vars.E.Range) &&
                !Invulnerable.Check(args.Sender, DamageType.Magical, false) &&
                Vars.getCheckBoxItem(Vars.EMenu, "gapcloser"))
            {
                if (!Vars.E.GetPrediction(args.Sender).CollisionObjects.Any())
                {
                    Vars.E.Cast(args.Sender.ServerPosition);
                    return;
                }
            }

            if (Vars.W.IsReady() &&
                args.Sender.IsValidTarget(Vars.W.Range) &&
                !Invulnerable.Check(args.Sender, DamageType.Magical, false) &&
                Vars.getCheckBoxItem(Vars.WMenu, "gapcloser"))
            {
                Vars.W.Cast(args.End);
            }
        }
        public GCondStmt(string text)
        {
            this.Text = text;
            StmtType  = GimpleStmtType.GCOND;
            Pattern   = myPattern;
            var match = Regex.Match(text, myPattern);

            Op1 = match.Groups["op1"].Value;
            Op2 = match.Groups["op2"].Value;
            Op  = match.Groups["op"].Value;

            //if ( Op == "==" || Op == "!=" )
            //{
            //	if ( Op1.CompareTo ( Op2 ) > 0 )
            //	{
            //		var temp = Op1;
            //		Op1 = Op2;
            //		Op2 = temp;
            //	}
            //}

            Vars.AddRange(new[] { Op1, Op2 }.Where(x => IsValidIdentifier(x)));
        }
Exemple #18
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Combo(EventArgs args)
        {
            if (Bools.HasSheenBuff() ||
                !Targets.Target.LSIsValidTarget() ||
                Invulnerable.Check(Targets.Target))
            {
                return;
            }

            /// <summary>
            ///     The W Combo Logic.
            /// </summary>
            if (Vars.W.IsReady() &&
                Targets.Target.LSIsValidTarget(Vars.W.Range) &&
                Vars.getCheckBoxItem(Vars.WMenu, "combo"))
            {
                if (!GameObjects.Player.HasBuff("TwitchFullAutomatic") &&
                    Targets.Target.GetBuffCount("twitchdeadlyvenom") <= 4)
                {
                    Vars.W.Cast(Vars.W.GetPrediction(Targets.Target).CastPosition);
                }
            }
        }
Exemple #19
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Combo(EventArgs args)
        {
            if (Bools.HasSheenBuff() ||
                !Targets.Target.LSIsValidTarget() ||
                Invulnerable.Check(Targets.Target))
            {
                return;
            }

            /// <summary>
            ///     The Q Combo Logic.
            /// </summary>
            if (Vars.Q.IsReady() && Targets.Target.LSIsValidTarget(Vars.Q.Range) && Vars.getCheckBoxItem(Vars.QMenu, "combo"))
            {
                if (!Targets.Target.LSIsValidTarget(Vars.AARange) &&
                    Vars.Q.GetPrediction(Targets.Target).Hitchance >= HitChance.High)
                {
                    Vars.Q.Cast(
                        Vars.Q.GetPrediction(Targets.Target)
                        .UnitPosition.Extend((Vector2)GameObjects.Player.ServerPosition, -140));
                }
            }
        }
Exemple #20
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Harass(EventArgs args)
        {
            if (!Targets.Target.LSIsValidTarget() || Invulnerable.Check(Targets.Target))
            {
                return;
            }

            /// <summary>
            ///     The Q Harass Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                !GameObjects.Player.IsUnderEnemyTurret() &&
                Targets.Target.LSIsValidTarget(Vars.Q.Range) &&
                GameObjects.Player.HealthPercent >
                ManaManager.GetNeededHealth(Vars.Q.Slot, Vars.getSliderItem(Vars.QMenu, "harass")) &&
                Vars.getSliderItem(Vars.QMenu, "harass") != 101)
            {
                if (!Vars.Q.GetPrediction(Targets.Target).CollisionObjects.Any(c => Targets.Minions.Contains(c)))
                {
                    Vars.Q.Cast(Vars.Q.GetPrediction(Targets.Target).UnitPosition);
                }
            }
        }
Exemple #21
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Harass(EventArgs args)
        {
            if (!Targets.Target.LSIsValidTarget() ||
                Invulnerable.Check(Targets.Target))
            {
                return;
            }

            /// <summary>
            ///     The W Harass Logic.
            /// </summary>
            if (Vars.W.IsReady() &&
                Targets.Target.LSIsValidTarget(Vars.W.Range) &&
                GameObjects.Player.ManaPercent >
                ManaManager.GetNeededMana(Vars.W.Slot, Vars.getSliderItem(Vars.WMenu, "harass")) &&
                Vars.getSliderItem(Vars.WMenu, "harass") != 101)
            {
                if (!Vars.W.GetPrediction(Targets.Target).CollisionObjects.Any())
                {
                    Vars.W.Cast(Vars.W.GetPrediction(Targets.Target).UnitPosition);
                }
            }
        }
Exemple #22
0
        public static string[] getPath(int lv)
        {
            List <string> list = new List <string>();
            List <string> L    = Vars.getdata(PATHFINDER, "Barbarian");
            double        d    = lv / 2;
            int           num  = Convert.ToInt32(Math.Floor(d));

            for (int i = 0; i < num; i++)
            {
                int    roll  = Rolling.RollD(L.Count);
                string value = L[roll];
                if (Vars.isDuplicate(list, value) == false)
                {
                    list.Add(value);
                }
                else
                {
                    num++;
                }
            }

            return(list.ToArray());
        }
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Killsteal(EventArgs args)
        {
            /// <summary>
            ///     The KillSteal Q Logic.
            /// </summary>
            if (Vars.Q.IsReady() && Vars.Menu["spells"]["q"]["killsteal"].GetValue <MenuBool>().Value)
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) && !t.IsValidTarget(Vars.AaRange) && t.IsValidTarget(Vars.Q.Range - 100f) &&
                             Vars.GetRealHealth(t) < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.Q)))
                {
                    if (!Vars.Q.GetPrediction(target).CollisionObjects.Any())
                    {
                        Vars.Q.Cast(Vars.Q.GetPrediction(target).UnitPosition);
                    }
                }
            }

            /// <summary>
            ///     The KillSteal E Logic.
            /// </summary>
            if (Vars.E.IsReady() && Vars.Menu["spells"]["e"]["killsteal"].GetValue <MenuBool>().Value)
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) && t.IsValidTarget(Vars.E.Range) && !t.IsValidTarget(Vars.AaRange) &&
                             Vars.GetRealHealth(t)
                             < GameObjects.Player.GetAutoAttackDamage(t) * 2
                             + (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.E)))
                {
                    Vars.E.CastOnUnit(target);
                }
            }
        }
Exemple #24
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Harass(EventArgs args)
        {
            if (!Targets.Target.LSIsValidTarget() ||
                Invulnerable.Check(Targets.Target, EloBuddy.DamageType.Magical, false))
            {
                return;
            }

            /// <summary>
            ///     The Q Combo Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                Targets.Target.LSIsValidTarget(Vars.Q.Range) &&
                GameObjects.Player.ManaPercent >
                ManaManager.GetNeededMana(Vars.Q.Slot, Vars.getSliderItem(Vars.QMenu, "harass")) &&
                Vars.getSliderItem(Vars.QMenu, "harass") != 101)
            {
                Vars.Q.Cast(Vars.Q.GetPrediction(Targets.Target).CastPosition);
                return;
            }

            /// <summary>
            ///     The W Combo Logic.
            /// </summary>
            DelayAction.Add(1000,
                            () =>
            {
                if (Vars.W.IsReady() &&
                    Targets.Target.LSIsValidTarget(Vars.W.Range) &&
                    GameObjects.Player.ManaPercent >
                    ManaManager.GetNeededMana(Vars.W.Slot, Vars.getSliderItem(Vars.WMenu, "harass")) &&
                    Vars.getSliderItem(Vars.WMenu, "harass") != 101)
                {
                    Vars.W.Cast(Vars.W.GetPrediction(Targets.Target).CastPosition);
                }
            });
        }
Exemple #25
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Killsteal(EventArgs args)
        {
            /// <summary>
            ///     The KillSteal Q Logic.
            /// </summary>
            if (Vars.Q.IsReady() &&
                Vars.getCheckBoxItem(Vars.QMenu, "killsteal"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) &&
                             t.LSIsValidTarget(Vars.Q.Range) &&
                             t.Health <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.Q)))
                {
                    Vars.Q.CastOnUnit(target);
                    return;
                }
            }

            /// <summary>
            ///     The KillSteal R Logic.
            /// </summary>
            if (Vars.R.IsReady() &&
                Vars.getCheckBoxItem(Vars.RMenu, "killsteal"))
            {
                foreach (var target in GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) &&
                             t.LSIsValidTarget(Vars.R.Range) &&
                             t.Health <
                             (float)GameObjects.Player.LSGetSpellDamage(t, SpellSlot.R)))
                {
                    Vars.R.CastOnUnit(target);
                }
            }
        }
Exemple #26
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Automatic(EventArgs args)
        {
            if (GameObjects.Player.IsRecalling())
            {
                return;
            }

            /// <summary>
            ///     The Automatic R LastHit Logics.
            /// </summary>
            if (Vars.R.IsReady() && Variables.Orbwalker.ActiveMode != OrbwalkingMode.Combo &&
                GameObjects.Player.ManaPercent
                > ManaManager.GetNeededMana(Vars.R.Slot, Vars.Menu["spells"]["r"]["farmhelper"]) &&
                Vars.Menu["spells"]["r"]["farmhelper"].GetValue <MenuSliderButton>().BValue)
            {
                foreach (var minion in
                         GameObjects.EnemyMinions.Where(
                             m =>
                             m.IsValidTarget(Vars.R.Range) && !m.IsValidTarget(GameObjects.Player.GetRealAutoAttackRange())))
                {
                    if (Vars.GetRealHealth(minion)
                        < (float)
                        GameObjects.Player.GetSpellDamage(
                            minion,
                            SpellSlot.R,
                            GameObjects.Player.HasBuff("corkimissilebarragecounterbig")
                                  ? DamageStage.Empowered
                                  : DamageStage.Default))
                    {
                        if (!Vars.R.GetPrediction(minion).CollisionObjects.Any(c => Targets.Minions.Contains(c)))
                        {
                            Vars.R.Cast(minion.ServerPosition);
                        }
                    }
                }
            }
        }
Exemple #27
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Killsteal(EventArgs args)
        {
            /// <summary>
            ///     The KillSteal W Logic.
            /// </summary>
            if (Vars.W.IsReady() && Vars.Menu["spells"]["w"]["killsteal"].GetValue <MenuBool>().Value)
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) && t.IsValidTarget(Vars.W.Range) &&
                             !t.IsValidTarget(GameObjects.Player.GetRealAutoAttackRange()) &&
                             Vars.GetRealHealth(t)
                             < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.W)
                             + (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.Q)))
                {
                    Vars.W.CastOnUnit(target);
                    return;
                }
            }

            /// <summary>
            ///     The KillSteal Q Logic.
            /// </summary>
            if (Vars.Q.IsReady() && Vars.Menu["spells"]["q"]["killsteal"].GetValue <MenuBool>().Value)
            {
                foreach (var target in
                         GameObjects.EnemyHeroes.Where(
                             t =>
                             !Invulnerable.Check(t) && t.IsValidTarget(Vars.Q.Range) &&
                             !t.IsValidTarget(GameObjects.Player.GetRealAutoAttackRange()) &&
                             Vars.GetRealHealth(t) < (float)GameObjects.Player.GetSpellDamage(t, SpellSlot.Q)))
                {
                    Vars.Q.CastOnUnit(target);
                }
            }
        }
Exemple #28
0
        public static void Orbwalker_OnPreAttack(AttackableUnit target, Orbwalker.PreAttackArgs args)
        {
            /// <summary>
            ///     Stop attack commands while channeling R.
            /// </summary>
            if (GameObjects.Player.HasBuff("missfortunebulletsound"))
            {
                args.Process = false;
            }

            /// <summary>
            ///     The Target Switching Logic (Passive Stacks).
            /// </summary>
            if (args.Target is AIHeroClient &&
                args.Target.NetworkId == Vars.PassiveTarget.NetworkId &&
                Vars.getCheckBoxItem(Vars.MiscMenu, "passive"))
            {
                if (Vars.GetRealHealth(args.Target as AIHeroClient) >
                    GameObjects.Player.GetAutoAttackDamage(args.Target as AIHeroClient) * 3)
                {
                    if (!GameObjects.EnemyHeroes.Any(
                            t =>
                            t.IsValidTarget(Vars.AARange) &&
                            t.NetworkId != Vars.PassiveTarget.NetworkId))
                    {
                        Orbwalker.ForcedTarget = null;
                        return;
                    }

                    args.Process           = false;
                    Orbwalker.ForcedTarget = GameObjects.EnemyHeroes.Where(
                        t =>
                        t.IsValidTarget(Vars.AARange) &&
                        t.NetworkId != Vars.PassiveTarget.NetworkId).OrderByDescending(o => TargetSelector.GetPriority(o)).First();
                }
            }
        }
Exemple #29
0
 /// <summary>
 ///     Called when the game updates itself.
 /// </summary>
 /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
 public static void Killsteal(EventArgs args)
 {
     /// <summary>
     ///     The KillSteal R Logic.
     /// </summary>
     if (Vars.R.IsReady() &&
         Vars.getCheckBoxItem(Vars.RMenu, "killsteal"))
     {
         foreach (var target in GameObjects.EnemyHeroes.Where(
                      t =>
                      !Invulnerable.Check(t) &&
                      t.LSIsValidTarget(Vars.R.Range)))
         {
             if (Vars.GetRealHealth(target) <
                 (float)GameObjects.Player.LSGetSpellDamage(target, SpellSlot.R) + (target.HasBuff("TristanaECharge")
                         ? (float)GameObjects.Player.LSGetSpellDamage(target, SpellSlot.E) +
                                                                                    (float)GameObjects.Player.LSGetSpellDamage(target, SpellSlot.E, DamageStage.Buff)
                         : 0))
             {
                 Vars.R.CastOnUnit(target);
             }
         }
     }
 }
Exemple #30
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Killsteal(EventArgs args)
        {
            /// <summary>
            ///     The KillSteal R Logic.
            /// </summary>
            ///
            var target = TargetSelector.GetTarget(Vars.R.Range, DamageType.Physical);

            if (target == null || !target.IsValid)
            {
                return;
            }
            if (Vars.getCheckBoxItem(Vars.RMenu, "killsteal") && Vars.R.IsReady() && target.IsValidTarget(Vars.R.Range))
            {
                foreach (var hero in
                         ObjectManager.Get <AIHeroClient>().Where(hero => hero.LSIsValidTarget(Vars.R.Range)))
                {
                    if (ObjectManager.Player.LSGetSpellDamage(target, SpellSlot.R) > hero.Health)
                    {
                        Vars.R.CastOnUnit(target);
                    }

                    else if (ObjectManager.Player.LSGetSpellDamage(target, SpellSlot.R) < hero.Health)
                    {
                        foreach (var buff in hero.Buffs.Where(buff => buff.Name == "dariushemo"))
                        {
                            if (ObjectManager.Player.LSGetSpellDamage(target, SpellSlot.R, 1) * (1 + buff.Count / 5) - 1
                                > target.Health)
                            {
                                Vars.R.CastOnUnit(target);
                            }
                        }
                    }
                }
            }
        }
Exemple #31
0
        /// <summary>
        ///     Called when the game updates itself.
        /// </summary>
        /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
        public static void Combo(EventArgs args)
        {
            if (Bools.HasSheenBuff() ||
                !Targets.Target.LSIsValidTarget() ||
                Invulnerable.Check(Targets.Target))
            {
                return;
            }

            /// <summary>
            ///     The E Combo Logic.
            /// </summary>
            if (Vars.E.IsReady() &&
                Targets.Target.LSIsValidTarget(Vars.E.Range) &&
                !GameObjects.Player.HasBuff("renektonsliceanddicedelay") &&
                Vars.getCheckBoxItem(Vars.EMenu, "combo"))
            {
                if (Targets.Target.HealthPercent < 10 ||
                    !Targets.Target.IsUnderEnemyTurret())
                {
                    Vars.E.Cast(Targets.Target.ServerPosition);
                }
            }
        }
Exemple #32
0
        /// Execute action
        public override object Execute()
        {
            var pref = Context.TransformStr(Name, Transform);

            int? maxCount = Utils.To<int?>(Context.TransformStr(MaxCount, Transform));
            for (int n = 0; (maxCount == null || n< maxCount) && ShouldRun(); ++n)
            {
                Context.CheckAbort();
                Vars sv=new Vars();
                sv[string.Empty] = n;
                object o = Context.ExecuteWithVars(baseexecute, sv, pref);

                if (ReturnValue.IsBreak(o))
                    return null;
                if (o!=null)
                    return o;
            }
            return null;
        }
        /// Complete execution
        protected object ProcessComplete(IFileSystemInfo from, IFileSystemInfo to, bool skip, ProcessFunc func)
        {
            string pref = Context.TransformStr(Name, Transform);
            Vars sv=new Vars();
            sv[""]=sv["from"] = from;
            if (to != null)
                sv["to"] = to;
            sv["skip"] = skip;

            return Context.ExecuteWithVars(delegate()
                                               {
                                                   Context.CheckAbort();
                                                   object ret = null;
                                                   try
                                                   {
                                                       ret = SequenceExecute();
                                                   }
                                                   catch (Exception ex)
                                                   {
                                                       return ReturnValue.CreateException(ex);
                                                   }
                                                   try
                                                   {
                                                       if (ret == null)
                                                            ret = Context.Execute(Try);
                                                       skip=Context.GetBool(pref+"skip", false);
                                                       if (ret == null)
                                                           ret = func(skip);
                                                   }
                                                   catch (Exception ex)
                                                   {
                                                       ret = OnError(ex);
                                                   }
                                                   finally
                                                   {
                                                       // Execute final portion
                                                       Context.Execute(Finally);
                                                   }
                                                   return ret;
                                               }, sv, pref);
        }
        /// Prepare to run
        protected object ProcessPrepare(IFileSystemInfo from, IFileSystemInfo to, PrepareFunc func)
        {
            Context.CheckAbort();
            string pref = Context.TransformStr(Name, Transform);
            Vars sv = new Vars();
            sv[""] = sv["from"] = from;
            if (to != null)
                sv["to"] = to;

            return Context.ExecuteWithVars(delegate()
                {
                    object ret = func();
                    return ret;
                },sv,pref);
        }
Exemple #35
0
        /// Create a set of name-value pairs out of list {name1,value1,name2,value2,...}
        public static Vars ToVars(IEnumerable o)
        {
            Vars set = new Vars();
            var en = o.GetEnumerator();
            while (en.MoveNext())
            {

                var name = To<string>(en.Current);
                if (en.MoveNext())
                {

                    set[name] = en.Current;
                }
                else
                    break;
            }
            return set;
        }
Exemple #36
0
 /// <summary>
 /// Whether usage should be displayed for given arguments and variables
 /// </summary>
 /// <param name="args">List of script command line arguments</param>
 /// <param name="vars">Result of parsing the command line</param>
 /// <returns>true if usage needs to be displayed, false otherwise</returns>
 public bool ShouldDisplayUsage(IEnumerable<string> args, Vars vars)
 {
     if ((Options & UsageOptions.IfHelp) != 0 && vars.GetBool("help", false))
         return true;
     if ((Options & UsageOptions.IfNoArguments) != 0 && (args == null || !args.GetEnumerator().MoveNext()))
         return true;
     return false;
 }
Exemple #37
0
        string createRowStatement(int rowNo,List<string> keys, Vars sv, string tableName, bool firstInBatch, SqlUpdateMode updateMode, DatabaseType dbType)
        {
            StringBuilder sbInsert = new StringBuilder();
            if (updateMode == SqlUpdateMode.Merge)
            {
                appendSelect(sbInsert, rowNo, keys, sv, firstInBatch, dbType);
                return sbInsert.ToString();
            }
            if (InsertSyntax == SqlInsertSyntax.Select)
            {
                if (firstInBatch || UpdateMode != SqlUpdateMode.None)
                {
                    sbInsert.Append("INSERT INTO ");
                    sbInsert.Append(tableName);
                    sbInsert.Append(" ( ");
                    appendColumns(sbInsert, keys, dbType);
                    sbInsert.Append(" )");
                    sbInsert.AppendLine();
                }
                appendSelect(sbInsert, rowNo, keys, sv, firstInBatch || UpdateMode != SqlUpdateMode.None, dbType);
            }
            else
            {
                sbInsert.Append("INSERT INTO ");
                sbInsert.Append(tableName);
                sbInsert.Append(" ( ");
                appendColumns(sbInsert, sv.Keys, dbType);
                sbInsert.AppendLine(" )");
                sbInsert.Append("VALUES (");
                bool ff = true;
                foreach (var v in sv.Values)
                {
                    if (!ff)
                        sbInsert.Append(",");
                    ff = false;
                    sbInsert.Append(SqlUtil.GetQuotedValue(dbType, v, NoQuotePrefix, Translate));
                }
                sbInsert.AppendLine(")");
            }

            if (updateMode == SqlUpdateMode.None)
                return sbInsert.ToString();

            var updateKeys = (Context.TransformStr(Keys, Transform) ?? string.Empty);
            if (string.IsNullOrEmpty(updateKeys))
                throw new ParsingException("Key columns must be specified in order to enable updates");
            string[] kfield = updateKeys.Split(';', ',');

            StringBuilder sList = new StringBuilder();
            StringBuilder sCond = new StringBuilder();
            StringBuilder sUpd = new StringBuilder();
            Dictionary<string,bool> k=new Dictionary<string, bool>(StringComparer.InvariantCultureIgnoreCase);
            for (int i=0;i<kfield.Length;++i)
            {
                string kf = kfield[i].Trim();
                kfield[i] = kf;
                if (sList.Length!=0)
                    sList.Append(", ");
                sList.Append(SqlUtil.SqlName(dbType, kf));
                if (sCond.Length!=0)
                    sCond.Append(" AND ");
                sCond.Append("(");
                sCond.Append(SqlUtil.SqlName(dbType, kf));
                sCond.Append(" = ");
                sCond.Append(SqlUtil.GetQuotedValue(dbType, sv[kf], NoQuotePrefix, Translate));
                sCond.Append(")");
                k[kf] = true;
            }
            // Prepare update statement
            sUpd.AppendFormat("UPDATE " + tableName);
            sUpd.AppendLine();
            sUpd.Append("SET ");
            bool first = true;
            foreach (var v in sv)
                if (!k.ContainsKey(v.Name))
                {
                    if (!first)
                        sUpd.Append(", ");
                    first = false;
                    sUpd.Append(SqlUtil.SqlName(dbType, v.Name));
                    sUpd.Append("=");
                    sUpd.Append(SqlUtil.GetQuotedValue(dbType, v.Value, NoQuotePrefix, Translate));
                }
            sUpd.AppendLine();
            var kfieldCond = sCond.ToString();
            sUpd.AppendLine("WHERE "+kfieldCond);

            StringBuilder sb=new StringBuilder();
            if (updateMode == SqlUpdateMode.MsSql)
            {
                sb.Append(sUpd.ToString());
                sb.AppendLine("IF @@ROWCOUNT=0");
            }
            else
            {
                sb.AppendFormat("IF EXISTS(SELECT {0} FROM {1} WHERE {2})", sList.ToString(), tableName, kfieldCond);
                sb.AppendLine();
                sb.Append(sUpd.ToString());
                sb.AppendLine("ELSE");
            }
            sb.AppendLine(sbInsert.ToString());
            sb.AppendLine();
            return sb.ToString();
        }
 private void ZeroPrivateVars()
 {
     this.m_RequestVars = new RequestVars();
     this.m_HttpPolicy = null;
     this.m_StatusCode = (HttpStatusCode) 0;
     this.m_StatusDescription = null;
     this.m_HttpVersion = null;
     this.m_Headers = null;
     this.m_SystemMeta = null;
     this.m_DontUpdateHeaders = false;
     this.m_HeuristicExpiration = false;
     this.m_CacheVars = new Vars();
     this.m_CacheVars.Initialize();
     this.m_ResponseVars = new Vars();
     this.m_ResponseVars.Initialize();
 }
Exemple #39
0
        /// Execute action
        public override object Execute()
        {
            string fromExpanded = Context.TransformStr(From, Transform);
            string toExpanded = Context.TransformStr(To, Transform);
            string outToExpanded = Context.TransformStr(OutTo, Transform);
            if (string.IsNullOrEmpty(outToExpanded))
            {
                if (!string.IsNullOrEmpty(toExpanded))
                    toExpanded = UrlToLocalFileName(fromExpanded, toExpanded);
            }
            var enc = Utils.GetEncoding(Context.TransformStr(Encoding, Transform));
            Uri uri = new Uri(fromExpanded);

            VerboseMessage("Downloading {0} => {1}...", Utils.SecureUri(fromExpanded), toExpanded);

            bool passive = PassiveFtp;
            bool ftpssl = false;
            bool ftp = false;
            var scheme = uri.Scheme;
            if (scheme == "ftpa" || scheme == "ftps" || scheme == "ftpas" || scheme == "ftpsa")
            {
                ftp = true;
                UriBuilder ub = new UriBuilder(uri);
                ub.Scheme = "ftp";
                uri = ub.Uri;
                passive = !(scheme == "ftpa" || scheme == "ftpas" || scheme == "ftpsa");
                ftpssl = (scheme == "ftps" || scheme == "ftpas" || scheme == "ftpsa");
            }
            var timeout = Utils.ToTimeSpan(Context.TransformStr(Timeout, Transform));

            if (uri.IsFile || uri.Scheme == "embed")
            {
                var fname = (uri.Scheme == "embed") ? uri.ToString() : uri.LocalPath;
                VerboseMessage("Local filename '{0}' detected. Copying instead", fname);
                try
                {
                    if (Binary && toExpanded!=null)
                    {
                        if (File.Exists(toExpanded))
                            File.Delete(toExpanded);
                        using (var toStr = Context.CreateStream(toExpanded))
                            copyFile(fname, toStr, toExpanded, true);
                    }
                    else
                    {
                        using (var ms = new MemoryStream())
                        {
                            copyFile(fname, ms, "memory:///", true);
                            if (Binary)
                                Context.OutTo(outToExpanded, ms.ToArray());
                            else
                                Context.OutTo(outToExpanded, (enc == null ? new StreamReader(ms) : new StreamReader(ms, enc)).ReadToEnd());
                        }
                    }
                }
                catch
                {
                    File.Delete(toExpanded);
                    throw;
                }
                return null;
            }
            using (DownloadState state = new DownloadState(Context))
            {
                using (WebClientEx webClient = new WebClientEx(passive, Binary))
                {
                    webClient.KeepAlive = (ftp && !passive);
                    webClient.FtpSsl = ftpssl;
                    webClient.CachePolicy = new RequestCachePolicy(CacheLevel);

                    string user = Context.TransformStr(User, Transform);
                    string password = Context.TransformStr(Password, Transform);
                    uri = webClient.SetCredentials(uri, user, password);

                    if (!string.IsNullOrEmpty(Post))
                    {
                        webClient.HttpPost = Context.Transform(Post, Transform);
                        if (!string.IsNullOrEmpty(PostContentType))
                            webClient.HttpPostContentType = Context.TransformStr(PostContentType, Transform);
                    }
                    webClient.HttpUserAgent = Context.TransformStr(UserAgent, Transform);
                    webClient.Timeout = timeout;

                    int oldPercentage = -1;
                    long bytesReceived = -1;

                    // We must ensure that all script components are executed in a single thread
                    webClient.DownloadProgressChanged += state.ProgressChanged;
                    webClient.DownloadFileCompleted += state.FileCompleted;
                    webClient.DownloadStringCompleted += state.StringCompleted;
                    webClient.DownloadDataCompleted += state.DataCompleted;

                    if (enc != null)
                        webClient.Encoding = enc;

                    string tmp = null;
                    if (string.IsNullOrEmpty(outToExpanded))
                        tmp = Direct ? toExpanded : Path.GetTempFileName();

                    var lastUpdate = System.Diagnostics.Stopwatch.StartNew();
                    WaitHandle[] wh = new WaitHandle[] { state.Completed, state.ProgressAvailable };
                    try
                    {
                        if (tmp == null)
                        {
                            if (Binary)
                                webClient.DownloadDataAsync(uri);
                            else
                                webClient.DownloadStringAsync(uri);
                        }
                        else
                            webClient.DownloadFileAsync(uri, tmp);

                        string pref = Context.TransformStr(Name, Transform);
                        while (true)
                        {
                            int n = WaitHandle.WaitAny(wh, 300, true);

                            if (n == 0 || n == 1)
                            {
                                lastUpdate = System.Diagnostics.Stopwatch.StartNew();
                                DownloadProgress ps = state.Progress;
                                if (n == 0)
                                {
                                    ps = state.Progress;
                                    if (Binary && state.Result != null)
                                        ps.BytesReceived = ((byte[])state.Result).LongLength;
                                    else if (tmp != null)
                                        ps.BytesReceived = new FileInfo(tmp).Length;
                                }

                                if (ps.BytesReceived > 0 && ps.BytesReceived > bytesReceived)
                                {
                                    VerboseMessage("Received: {0}", ps);
                                    Context.OnProgress(ps.ProgressPercentage, uri.ToString());
                                    oldPercentage = ps.ProgressPercentage;

                                    if (base.Items.Count != 0)
                                    {
                                        Vars sv = new Vars();
                                        sv.Set("", ps);
                                        Context.ExecuteWithVars(baseExecute, sv, pref);
                                    }
                                    bytesReceived = ps.BytesReceived;
                                }
                            }
                            else
                            {
                                // Sometimes FTP hangs, seen with FileZilla 0.9.31 + VMWare a few times
                                if (timeout.HasValue && lastUpdate.Elapsed > timeout.Value)
                                    throw new TimeoutException();
                            }
                            if (n == 0)
                            {
                                break;
                            }

                            Context.OnProgress(Math.Max(oldPercentage, 0), uri.ToString());
                        }
                        if (state.Error != null)
                        {
                            if (state.Error is TargetInvocationException)
                                Utils.Rethrow(state.Error.InnerException);
                            else
                                Utils.Rethrow(state.Error);
                        }

                        if (tmp != null && toExpanded != tmp)
                        {
                            if (File.Exists(toExpanded))
                                File.Delete(toExpanded);
                            using (var toStr = Context.CreateStream(toExpanded))
                                copyFile(tmp, toStr, toExpanded, false);
                            VerboseMessage("Copying completed. Deleting '{0}'", tmp);
                            File.Delete(tmp);
                        }
                    }
                    catch (Exception e)
                    {
                        VerboseMessage("Caught exception: {0}", e.Message);
                        webClient.CancelAsync();
                        state.SetCompleted();
                        throw;
                    }
                    finally
                    {
                        VerboseMessage("Waiting for download completion");

                        state.Completed.WaitOne(timeout ?? TimeSpan.FromSeconds(30), false);

                        VerboseMessage("Waiting completed");

                        webClient.DownloadProgressChanged -= state.ProgressChanged;
                        webClient.DownloadFileCompleted -= state.FileCompleted;
                        webClient.DownloadStringCompleted -= state.StringCompleted;
                        webClient.DownloadDataCompleted -= state.DataCompleted;

                        try
                        {
                            if (webClient.IsBusy)
                                webClient.CancelAsync();
                        }
                        catch
                        {
                        }

                        if (tmp == null)
                            Context.OutTo(outToExpanded, Binary ? state.Result : state.ResultStr);
                        else if (tmp != toExpanded)
                        {
                            try
                            {
                                File.Delete(tmp);
                            }
                            catch (IOException)
                            {
                                Thread.Sleep(500);
                                File.Delete(tmp);
                            }
                        }
                    }
                    VerboseMessage("Download completed.");
                }

            }

            return null;
        }
        //
        private void ZeroPrivateVars()
        {
            // Set default values for private members here
            m_RequestVars = new RequestVars();

            m_HttpPolicy        = null;
            m_StatusCode        = (HttpStatusCode)0;
            m_StatusDescription = null;
            m_HttpVersion       = null;
            m_Headers           = null;
            m_SystemMeta        = null;
            m_DontUpdateHeaders = false;
            m_HeuristicExpiration = false;

            m_CacheVars   = new Vars();
            m_CacheVars.Initialize();

            m_ResponseVars= new Vars();
            m_ResponseVars.Initialize();
        }
Exemple #41
0
        private void appendSelect(StringBuilder sbInsert, int rowNo, List<string> keys, Vars sv, bool firstInBatch, DatabaseType dbType)
        {
            if (!firstInBatch)
                sbInsert.AppendLine(" UNION ALL ");

            if (sv.Count != keys.Count)
                throw new ParsingException(string.Format("Error in row #{0}. All inserted rows must contain the following columns: {{ {1} }} ", rowNo, string.Join(",", keys.ToArray())));

            List<string> values = new List<string>();
            foreach (string key in keys)
            {
                string value = SqlUtil.GetQuotedValue(dbType, sv[key], NoQuotePrefix, Translate);
                values.Add(value);
            }
            sbInsert.Append("SELECT " + string.Join(",", values.ToArray()));

            if ((dbType & DatabaseType.Oracle)==DatabaseType.Oracle)
                sbInsert.Append(" FROM dual ");
        }
 //----------------------------------------------------------------------------------------------------------------------
 public Parser(ScriptVM vm, Scanner scanner)
 {
     _scanner = scanner;
     Vars = new Vars(vm);
 }
 public PostfixItem(Vars var)
 {
     vars = var;
     state = State.Vars;
 }
Exemple #44
0
        /// Get values of all public object fields and properties 
        public static Vars PropsToVars(object o, IStringFilter filter)
        {
            Vars v = new Vars();
            if (o != null)
            {
                Type t = o.GetType();
                foreach (var p in t.GetProperties(BindingFlags.Instance|BindingFlags.Public))
                {
                    if (filter!=null && !filter.IsMatch(p.Name))
                        continue;
                    var ip=p.GetIndexParameters();
                    if (ip != null && ip.Length != 0)
                        continue;
                    if (!p.CanRead)
                        continue;
                    try
                    {
                        v[p.Name] = p.GetValue(o, null);
                    }
                     catch
                    {
                    }
                }
                foreach (var f in t.GetFields(BindingFlags.Instance | BindingFlags.Public))
                {
                    if (filter != null && !filter.IsMatch(f.Name))
                        continue;
                    try
                    {

                    v[f.Name] = f.GetValue(o);
                    }
                    catch
                    {
                    }
                }
            }
            return v;
        }
Exemple #45
0
        private void copyFile(string from,Stream toStr, string to, bool withProgress)
        {
            // Copy manually, as normal File.Move is likely to copy ACL from text directory as well
            VerboseMessage("Copying file '{0}' to '{1}'", from, to);
            long? len = null;
            try
            {
                len = new FileInfo(from).Length;
            }
            catch { }
            byte[] buf = new byte[65536];
            long copied = 0;
            string pref = Context.TransformStr(Name, Transform);
            try
            {
                using (var fromStr = Context.OpenStream(from))
                {
                    if (withProgress)
                    {
                        var ps=new DownloadProgress(0, len);
                        Context.OnProgress(0, from);
                        if (base.Items.Count != 0)
                        {
                            Vars sv = new Vars();
                            sv.Set("", ps);
                            Context.ExecuteWithVars(baseExecute, sv, pref);

                        }
                    }

                    int n;
                    while ((n = fromStr.Read(buf, 0, buf.Length)) != 0)
                    {
                        Context.CheckAbort();
                        toStr.Write(buf, 0, n);
                        copied += n;
                        if (withProgress)
                        {
                            var ps=new DownloadProgress(copied, len);
                            Context.OnProgress(ps.ProgressPercentage, from);

                            if (base.Items.Count != 0)
                            {
                                Vars sv = new Vars();
                                sv.Set("", ps);
                                Context.ExecuteWithVars(baseExecute, sv, pref);
                            }
                        }
                    }
                    if (withProgress)
                    {
                        var ps = new DownloadProgress(copied, copied);
                        Context.OnProgress(100, from);
                        if (base.Items.Count != 0)
                        {
                            Vars sv = new Vars();
                            sv.Set("", ps);
                            Context.ExecuteWithVars(baseExecute, sv, pref);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                VerboseMessage("Copying failed: {0}. Deleting '{1}'", e.Message, to);
                try
                {
                    File.Delete(to);
                }
                catch
                {
                }
                throw;
            }
        }
Exemple #46
0
 public void UpdateVariableDependencyValues(Vars.IVariable[] vars)
 {
     throw new NotImplementedException();
 }