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; }
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; }