Beispiel #1
0
        private void SetCurrent(BaseNpc Npc)
        {
            if (Current_ != null)
            {
                if (Current_.ID == Npc.ID)
                {
                    return;
                }
                else if (Current_.ID == PlayerManager.Master.ID)
                {
                    UIManager.CloseUI <MainOperatorUI>();
                }
                else
                {
                    UIManager.CloseUI <JoystickUI>();
                }

                if (Current_ is AINpc AIO)
                {
                    AIO.EnableAI(true);
                }
            }

            Current_ = Npc;
            Refresh();

            if (Npc == null)
            {
                return;
            }

            if (Current_.ID == PlayerManager.Master.ID)
            {
                UIManager.OpenUI <MainOperatorUI>();
            }
            else
            {
                var UI = UIManager.OpenUI <JoystickUI>();
                UI.BindMaster(Current_);
            }

            if (Current_ is AINpc AIN)
            {
                AIN.EnableAI(false);
                AIN.Actor.ChangeToIdleState();
            }
        }
 public AIOAdapter(AIO target)
 {
     _target = target;
 }
Beispiel #3
0
        public Orianna()
        {
            try
            {
                AIO.Initializers.Add(delegate
                {
                    _ballObject =
                        ObjectManager.Get <Obj_GeneralParticleEmitter>()
                        .FirstOrDefault(
                            o => o.IsValid && !o.IsDead && o.Name.Equals(BallName));
                });
                Q = new SpellBase(SpellSlot.Q, SpellType.Circular, 815)
                {
                    Speed = 1200,
                    Width = 80,
                    CollidesWithYasuoWall = false
                };
                Q.SetSourceFunction(() => Ball);
                W = new SpellBase(SpellSlot.W, SpellType.Self, 255);
                W.SetSourceFunction(() => Ball);
                W.SetRangeCheckSourceFunction(() => Ball);
                E = new SpellBase(SpellSlot.E, SpellType.Circular, 1095)
                {
                    Speed = 1800,
                    Width = 85,
                    MinHitChancePercent   = 45,
                    CollidesWithYasuoWall = false
                };
                E.SetSourceFunction(() => Ball);
                R = new SpellBase(SpellSlot.R, SpellType.Self, 400)
                {
                    CastDelay = 500
                };
                R.SetSourceFunction(() => Ball);
                R.SetRangeCheckSourceFunction(() => Ball);
                Spellbook.OnCastSpell += delegate(Spellbook sender, SpellbookCastSpellEventArgs args)
                {
                    if (sender.Owner.IsMe)
                    {
                        if (args.Slot == SpellSlot.R && MiscMenu.CheckBox("R.Block"))
                        {
                            args.Process = _hitR != 0 && !_ballIsMissile;
                        }
                    }
                };
                GameObject eTarget = null;
                Obj_AI_Base.OnProcessSpellCast += delegate(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
                {
                    if (sender.IsMe)
                    {
                        if (args.Slot == SpellSlot.E)
                        {
                            eTarget = args.Target;
                        }
                    }
                };
                GameObject.OnCreate += delegate(GameObject sender, EventArgs args)
                {
                    if (sender.Name.Equals(BallName))
                    {
                        _ballObject = sender;
                    }
                    else
                    {
                        var missile = sender as MissileClient;
                        if (missile != null && missile.SpellCaster != null && missile.SpellCaster.IsMe)
                        {
                            if (missile.SData.Name.Equals("orianaizuna") || missile.SData.Name.Equals("orianaredact"))
                            {
                                _ballObject = missile;
                            }
                        }
                    }
                };
                GameObject.OnDelete += delegate(GameObject sender, EventArgs args)
                {
                    var missile = sender as MissileClient;
                    if (missile != null && missile.SpellCaster != null && missile.SpellCaster.IsMe)
                    {
                        if (missile.SData.Name.Equals("orianaredact"))
                        {
                            _ballObject = eTarget;
                        }
                    }
                };
                Obj_AI_Base.OnPlayAnimation += delegate(Obj_AI_Base sender, GameObjectPlayAnimationEventArgs args)
                {
                    if (sender.IsMe && args.Animation.Equals("Prop"))
                    {
                        _ballObject = sender;
                    }
                };
                Gapcloser.OnGapcloser += delegate(AIHeroClient sender, Gapcloser.GapcloserEventArgs args)
                {
                    if (sender.IsAlly)
                    {
                        if (Target != null && AutomaticMenu.CheckBox("Gapcloser") &&
                            Ball.GetDistanceSqr(Target) > args.End.Distance(Target, true) &&
                            args.End.Distance(Target, true) < args.Sender.GetDistanceSqr(Target))
                        {
                            CastE(sender);
                        }
                    }
                };
                Dash.OnDash += delegate(Obj_AI_Base sender, Dash.DashEventArgs args)
                {
                    if (sender.IsAlly)
                    {
                        if (Target != null && AutomaticMenu.CheckBox("Gapcloser") &&
                            Ball.GetDistanceSqr(Target) > args.EndPos.Distance(Target, true) &&
                            args.EndPos.Distance(Target, true) < sender.GetDistanceSqr(Target))
                        {
                            CastE(sender);
                        }
                    }
                };
                Interrupter.OnInterruptableSpell +=
                    delegate(Obj_AI_Base sender, Interrupter.InterruptableSpellEventArgs args)
                {
                    if (sender.IsEnemy)
                    {
                        if (AutomaticMenu.CheckBox("Interrupter"))
                        {
                            if (!Ball.InRange(args.Sender, R.Range))
                            {
                                ThrowBall(args.Sender);
                            }
                            else
                            {
                                CastR(args.Sender);
                            }
                        }
                    }
                };
                Obj_AI_Base.OnBasicAttack += delegate(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
                {
                    if (sender.IsEnemy && _canShield && args.Target != null && args.Target.IsMe)
                    {
                        if (sender.Type == GameObjectType.AIHeroClient)
                        {
                            if (sender.IsMelee)
                            {
                                CastE(MyHero);
                            }
                        }
                        else if (sender.Type == GameObjectType.obj_AI_Turret)
                        {
                            CastE(MyHero);
                        }
                    }
                };
                Obj_AI_Base.OnProcessSpellCast += delegate(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
                {
                    if (sender.IsEnemy && _canShield && args.Target != null && args.Target.IsMe)
                    {
                        if (sender.Type == GameObjectType.AIHeroClient)
                        {
                            CastE(MyHero);
                        }
                    }
                };

                Q.AddConfigurableHitChancePercent();
                R.AddConfigurableHitChancePercent();

                MenuManager.AddSubMenu("Combo");
                {
                    ComboMenu.AddValue("TeamFight",
                                       new Slider("Use TeamFight logic if enemies near is greater than {0}", 3, 1, 5));
                    ComboMenu.AddValue("Common", new GroupLabel("Common logic"));
                    ComboMenu.AddValue("Q", new CheckBox("Use Q"));
                    ComboMenu.AddValue("W", new CheckBox("Use W"));
                    ComboMenu.AddValue("E.Shield", new CheckBox("Use E on enemy spells"));
                    ComboMenu.AddValue("E.HealthPercent", new Slider("Use E if my % of health is less than {0}", 40));
                    ComboMenu.AddValue("1vs1", new GroupLabel("1 vs 1 logic"));
                    ComboMenu.AddValue("R.Killable", new CheckBox("Use R if target is killable"));
                    ComboMenu.AddValue("TeamFightLogic", new GroupLabel("TeamFight logic"));
                    ComboMenu.AddValue("Q.Hit", new Slider("Use Q if hit is greater than {0}", 2, 1, 5));
                    ComboMenu.AddValue("W.Hit", new Slider("Use W if hit is greater than {0}", 2, 1, 5));
                    ComboMenu.AddValue("R.Hit", new Slider("Use R if hit is greater than {0}", 3, 1, 5));
                }

                MenuManager.AddSubMenu("Harass");
                {
                    HarassMenu.AddValue("Q", new CheckBox("Use Q"));
                    HarassMenu.AddValue("W", new CheckBox("Use W"));
                    HarassMenu.AddValue("E.Shield", new CheckBox("Use E on enemy spells"));
                    HarassMenu.AddValue("E.HealthPercent", new Slider("Use E if my % of health is less than {0}", 40));
                    HarassMenu.AddValue("ManaPercent", new Slider("Minimum Mana Percent", 25));
                }

                MenuManager.AddSubMenu("Clear");
                {
                    ClearMenu.AddValue("LaneClear", new GroupLabel("LaneClear"));
                    {
                        ClearMenu.AddValue("LaneClear.Q", new Slider("Use Q if hit is greater than {0}", 4, 0, 10));
                        ClearMenu.AddValue("LaneClear.W", new Slider("Use W if hit is greater than {0}", 3, 0, 10));
                        ClearMenu.AddValue("LaneClear.E", new Slider("Use E if hit is greater than {0}", 6, 0, 10));
                        ClearMenu.AddValue("LaneClear.ManaPercent", new Slider("Minimum Mana Percent", 50));
                    }
                    ClearMenu.AddValue("LastHit", new GroupLabel("LastHit"));
                    {
                        ClearMenu.AddStringList("LastHit.Q", "Use Q", new[] { "Never", "Smartly", "Always" }, 1);
                        ClearMenu.AddValue("LastHit.ManaPercent", new Slider("Minimum Mana Percent", 50));
                    }
                    ClearMenu.AddValue("JungleClear", new GroupLabel("JungleClear"));
                    {
                        ClearMenu.AddValue("JungleClear.Q", new CheckBox("Use Q"));
                        ClearMenu.AddValue("JungleClear.W", new CheckBox("Use W"));
                        ClearMenu.AddValue("JungleClear.E", new CheckBox("Use E"));
                        ClearMenu.AddValue("JungleClear.ManaPercent", new Slider("Minimum Mana Percent", 20));
                    }
                }

                MenuManager.AddKillStealMenu();
                {
                    KillStealMenu.AddValue("Q", new CheckBox("Use Q"));
                    KillStealMenu.AddValue("W", new CheckBox("Use W"));
                    KillStealMenu.AddValue("E", new CheckBox("Use E"));
                    KillStealMenu.AddValue("R", new CheckBox("Use R", false));
                }

                MenuManager.AddSubMenu("Automatic");
                {
                    AutomaticMenu.AddValue("Gapcloser", new CheckBox("Use E on hero gapclosing / dashing"));
                    AutomaticMenu.AddValue("Interrupter", new CheckBox("Use R on channeling spells"));
                    AutomaticMenu.AddValue("E.Shield", new CheckBox("Use E on enemy spells"));
                    AutomaticMenu.AddValue("W.Hit", new Slider("Use W if hit is greater than {0}", 2, 1, 5));
                    AutomaticMenu.AddValue("R.Hit", new Slider("Use R if hit is greater than {0}", 3, 1, 5));
                }

                MenuManager.AddDrawingsMenu();
                {
                    var c = DrawingsMenu.AddValue("Ball", new CheckBox("Draw ball position"));
                    CircleManager.Circles.Add(new Circle(c, new ColorBGRA(0, 0, 255, 100), () => 120, () => true,
                                                         () => Ball)
                    {
                        Width = 3
                    });
                    Q.AddDrawings();
                    W.AddDrawings();
                    E.AddDrawings(false);
                    R.AddDrawings();
                }
                MenuManager.AddSubMenu("Misc");
                {
                    MiscMenu.AddValue("R.Block", new CheckBox("Block R if will not hit"));
                    if (EntityManager.Heroes.Enemies.Count > 0)
                    {
                        var enemiesAdded = new HashSet <string>();
                        MiscMenu.AddValue("BlackList.R", new GroupLabel("Don't use R on:"));
                        foreach (var enemy in EntityManager.Heroes.Enemies)
                        {
                            if (!enemiesAdded.Contains(enemy.ChampionName))
                            {
                                MiscMenu.AddValue("BlackList." + enemy.ChampionName,
                                                  new CheckBox(enemy.ChampionName, false));
                                enemiesAdded.Add(enemy.ChampionName);
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                AIO.WriteInConsole(e.ToString());
            }
        }
        static void SubmitWorkItem(AIO.Activity activity, string inResource, string inResourceKind)
        {
            Console.WriteLine("Submitting workitem...");
            //create a workitem
            var wi = new AIO.WorkItem()
            {
                UserId = "", //must be set to empty
                Id = "", //must be set to empty
                Arguments = new AIO.Arguments(),
                Version = 1, //should always be 1
                ActivityId = new AIO.EntityId { Id= activity.Id, UserId = activity.UserId }
            };

            wi.Arguments.InputArguments.Add(new AIO.Argument()
            {
                Name = "HostDwg",// Must match the input parameter in activity
                Resource = inResource,
                ResourceKind = inResourceKind,
                StorageProvider = "Generic" //Generic HTTP download (as opposed to A360)
            });

            wi.Arguments.OutputArguments.Add(new AIO.Argument()
          {
              Name = "PdfResult", // Must match activity's output param
              StorageProvider = "Generic", // Generic HTTP upload
              HttpVerb = "POST", // Use HTTP POST when delivering result
              Resource = null // Use storage provided by AutoCAD.io
          }
);

            container.AddToWorkItems(wi);
            container.SaveChanges();

            //polling loop
            do
            {
                Console.WriteLine("Sleeping for 5 sec...");
                System.Threading.Thread.Sleep(5000);
                container.LoadProperty(wi, "Status"); //http request is made here
                Console.WriteLine("WorkItem status: {0}", wi.Status);
            }
            while (wi.Status == "Pending" || wi.Status == "InProgress");

            //re-query the service so that we can look at the details provided by the service
            container.MergeOption = System.Data.Services.Client.MergeOption.OverwriteChanges;
            wi = container.WorkItems.Where(p => p.UserId == wi.UserId && p.Id == wi.Id).First();

            //Resource property of the output argument "Results" will have the output url
            var url = wi.Arguments.OutputArguments.First(a => a.Name == "PdfResult").Resource;
            DownloadToDocs(url, "AIO.pdf");

            //download the status report
            url = wi.StatusDetails.Report;
            DownloadToDocs(url, "AIO-report.txt");
        }
 //creates an activity with inputs and variable number of outputs. 
 static AIO.Activity CreateActivity(AIO.AppPackage package)
 {
     Console.WriteLine("Creating/Updating Activity...");
     var activity = new AIO.Activity()
     {
         UserId = "",
         Id = ActivityName,
         Version = 1,
         Instruction = new AIO.Instruction()
         {
             Script =
               "_tilemode 1 "+
               "GRID OFF " +
               "insert formpro 0,0   \n" +
               "zoom e\n" +
               "insert bokl 108.38,34.885 0.666  0\n" +
               "insert korak700 108.38,34.885 0.666  0\n" +
               "insert BD24pnt 108.38,34.885 0.666  0\n" +
               "insert korak700 155,34.885 0.666  0\n" +
               "insert BD24pnvz 155,34.885 0.666  0\n" +
               "insert bokdl 201.62,34.885 0.666  0\n" +
               "LTSCALE 13\n" +
               "_tilemode 0 " +
               "_save result.dwg\n" +
               "_-export _pdf _all result.pdf\n"
         },
         Parameters = new AIO.Parameters()
         {
             InputParameters = {
                 new AIO.Parameter() { Name = "HostDwg", LocalFileName = "$(HostDwg)" },
             },
             OutputParameters = {
                 new AIO.Parameter() { Name = "PdfResult", LocalFileName = "result.pdf" },
             }
         },
         RequiredEngineVersion = "20.0"
     };
     container.AddToActivities(activity);
     container.SaveChanges(System.Data.Services.Client.SaveChangesOptions.PatchOnUpdate);
     //establish link to package
     container.AddLink(activity, "AppPackages", package);
     container.SaveChanges();
     return activity;
 }
        static AIO.AppPackage CreateOrUpdatePackage(string zip, AIO.AppPackage package)
        {
            Console.WriteLine("Creating/Updating AppPackage...");
            // First step -- query for the url to upload the AppPackage file
            UriBuilder builder = new UriBuilder(container.BaseUri);
            builder.Path += "AppPackages/GenerateUploadUrl";
            var url = container.Execute<string>(builder.Uri, "POST", true, null).First();

            // Second step -- upload AppPackage file
            UploadObject(url, zip);

            if (package == null)
            {
                // third step -- after upload, create the AppPackage entity
                package = new AIO.AppPackage()
                {
                    UserId = "",
                    Id = PackageName,
                    Version = 1,
                    RequiredEngineVersion = "20.0",
                    Resource = url
                };
                container.AddToAppPackages(package);
            }
            else
            {
                //or update the existing one with the new url
                package.Resource = url;
                container.UpdateObject(package);
            }
            container.SaveChanges(System.Data.Services.Client.SaveChangesOptions.PatchOnUpdate);
            return package;
        }