public Api() { Logger = NLog.LogManager.GetCurrentClassLogger(); Config = new Model.LoginServer(); LoginServer = new Server.Login.Api() { IsBackground = true }; GameServer = new Server.Game.Api() { IsBackground = true, MoveInterval = 100 }; LoginServer.Connected += OnLoginConnected; LoginServer.ServerSelected += OnServerSelected; GameServer.Connected += OnGameConnected; GameServer.EnterWorld += OnEnterWorld; GameServer.LoggedOut += OnLoggedOut; GameServer.StartMoving += OnStartMoving; GameServer.FinishMoving += OnFinishMoving; GameServer.ActionFailed += OnActionFailed; GameServer.TargetChanged += OnTargetChanged; GameServer.Attack += OnAttack; GameServer.SkillStarted += OnSkillStarted; GameServer.SkillLaunched += OnSkillLaunched; GameServer.SkillCanceled += OnSkillCanceled; GameServer.SkillReused += OnSkillReused; GameServer.CreatureUpdate += OnCreatureUpdate; GameServer.ItemInfo += OnItemInfo; GameServer.Die += OnDie; GameServer.QuestionAsked += OnQuestionAsked; GameServer.ChatMessage += OnChatMessage; }
public Api() { Logger = NLog.LogManager.GetCurrentClassLogger(); Config = new Model.LoginServer(); LoginServer = new Server.Login.Api() { IsBackground = true }; GameServer = new Server.Game.Api() { IsBackground = true, MoveInterval = 100 }; LoginServer.Connected += OnLoginConnected; LoginServer.ServerSelected += OnServerSelected; GameServer.Connected += OnGameConnected; GameServer.EnterWorld += OnEnterWorld; GameServer.LoggedOut += OnLoggedOut; GameServer.StartMoving += OnStartMoving; GameServer.FinishMoving += OnFinishMoving; GameServer.ActionFailed += OnActionFailed; GameServer.TargetChanged += OnTargetChanged; GameServer.Attack += OnAttack; GameServer.SkillStarted += OnSkillStarted; GameServer.SkillLaunched += OnSkillLaunched; GameServer.SkillCanceled += OnSkillCanceled; GameServer.SkillReused += OnSkillReused; GameServer.CreatureUpdate += OnCreatureUpdate; GameServer.ItemInfo += OnItemInfo; GameServer.Die += OnDie; GameServer.QuestionAsked += OnQuestionAsked; GameServer.ChatMessage += OnChatMessage; }
public AutoPickup(Server.Game.Api gsApi) : base(gsApi) { gsApi.ItemInfo += (Model.Item item) => { if (Enabled) { if (OnlyMy && item.DroppedBy == gsApi.World.Me.TargetId) { List.Add(item); } else if (!OnlyMy) { List.Add(item); } Next(); } }; gsApi.ObjectRemoved += (Model.Object obj) => { var item = obj as Model.Item; if (item != null) { Pickup(item); } }; gsApi.Pickup += (Model.Item item, Model.Creature creature, Library.Point position) => { Pickup(item); }; }
// ToDo: List public AutoSweep(Server.Game.Api gsApi) : base(gsApi) { gsApi.Die += (Model.Creature creature, Lineage.ReturnPoint? points) => { Model.Npc npc = creature as Model.Npc; if (Enabled && npc != null && npc.IsSpoiled) { bool isMyTarget = gsApi.World.Me.TargetId == npc.ObjectId; if (isMyTarget) { gsApi.UseSkill(SKILL_SWEEP); } else if (!OnlyMy) { gsApi.Target(npc); // ToDo: Запоминание цели/состояния и возврат к нему } } }; gsApi.TargetChanged += (Model.Creature creature, Model.Creature target) => { if (Enabled && creature == gsApi.World.Me) { Model.Npc npc = target as Model.Npc; if (npc != null && npc.IsAlikeDead && npc.IsSpoiled) { gsApi.UseSkill(SKILL_SWEEP); } } }; }
public SkillChain(Server.Game.Api gsApi) : base(gsApi) { throw new NotImplementedException(); //gsApi.SkillReused //gsApi.SkillLaunch }
public Base(Server.Game.Api gsApi) { if (gsApi != null) { this.gsApi = gsApi; } else { throw new ArgumentNullException(); } }
public SimpleRoute(Server.Game.Api gsApi) : base(gsApi) { gsApi.FinishMoving += (Model.Creature creature) => { if (gsApi.World.Me == creature && Queue != null) { Next(); } }; }
static void Main(string[] args) { NLog.LogManager.Configuration = new NLog.Config.XmlLoggingConfiguration("NLog.config"); lsApi = new Server.Login.Api() { IsBackground = false }; gsApi = new Server.Game.Api() { IsBackground = false, MoveInterval = 100 }; Setup(Parse(args)); }
public FullFollow(Server.Game.Api gsApi) : base(gsApi) { gsApi.StartMoving += (Model.Creature creature) => { if (creature == Leader) { if (!gsApi.World.Me.IsMoving) // Бот обошёл все точки и стоит рядом с персонажем { Last = creature.Destination; Next(); } else if (Queue.Count == 0 && !Last.HasValue) // Бот бежит к месту назначения персонажа { Queue.Enqueue(creature.Position); Last = creature.Destination; Next(); } else // Бот ещё обходит очередь { Queue.Enqueue(creature.Position); Last = creature.Destination; } } }; gsApi.FinishMoving += (Model.Creature creature) => { if (creature == gsApi.World.Me) { Next(); } else if (creature == Leader) { Queue.Enqueue(creature.Position); if (!gsApi.World.Me.IsMoving) { Next(); } } }; }
public OnGraph(Server.Game.Api gsApi) : base(gsApi) { gsApi.FinishMoving += (Model.Creature creature) => { if (gsApi.World.Me == creature) { var current = Target; if (current.Nigh.Count > 1) { var variants = new List <Model.Graph.Node>(); foreach (var node in current.Nigh) { if (!node.Equals(Previous)) { variants.Add(node); } } var index = Random.Next(variants.Count); foreach (var node in variants) { if (index-- == 0) { Target = node; break; } } } else { Target = current.Nigh.First(); } Previous = current; gsApi.MoveTo(Target.Point); } }; }
public AutoSpoil(Server.Game.Api gsApi) : base(gsApi) { throw new NotImplementedException(); }
public Info(Server.Game.Api gsApi, string[] args, string name) { Api = gsApi; Args = args; Name = name; }
public Travel(Server.Game.Api gsApi) : base(gsApi) { Program = new SimpleRoute(gsApi); }
public Base(string command, string args, Model.Creature author, Server.Game.Api gsApi) // ? { throw new NotImplementedException(); }
public SmoothRoute(Server.Game.Api gsApi) : base(gsApi) { throw new NotImplementedException(); }
public FastFollow(Server.Game.Api gsApi) : base(gsApi) { gsApi.StartMoving += Catch; gsApi.FinishMoving += Catch; }