EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Development::Bots (https://www.eqemulator.org/forums/forumdisplay.php?f=676)
-   -   Bot Commands (https://www.eqemulator.org/forums/showthread.php?t=40114)

Uleat 02-22-2016 05:23 PM

Here's some work I've been doing with 'adaptive targeting' in HealRotation:
Quote:

Originally Posted by EverQuest Log
[02-22-2016 :: 15:57:58] [Error] HealRotation::bias_targets() - *** Post-processing state ***
[02-22-2016 :: 15:57:58] [Error] HealRotation Settings:
[02-22-2016 :: 15:57:58] [Error] HealRotation::m_interval_ms = 3000
[02-22-2016 :: 15:57:58] [Error] HealRotation::m_next_cast_time_ms = 567788 (current_time: 567792, time_diff: 4)
[02-22-2016 :: 15:57:58] [Error] HealRotation::m_next_poke_time_ms = 568042 (current_time: 567792, time_diff: -250)
[02-22-2016 :: 15:57:58] [Error] HealRotation::m_fast_heals = false
[02-22-2016 :: 15:57:58] [Error] HealRotation::m_adaptive_targeting = true
[02-22-2016 :: 15:57:58] [Error] HealRotation::m_casting_override = true
[02-22-2016 :: 15:57:58] [Error] HealRotation::m_casting_target_poke = true
[02-22-2016 :: 15:57:58] [Error] HealRotation::m_active_heal_target = true
[02-22-2016 :: 15:57:58] [Error] HealRotation::m_is_active = true
[02-22-2016 :: 15:57:58] [Error] HealRotation::m_member_list.size() = 3
[02-22-2016 :: 15:57:58] [Error] HealRotation::m_cycle_list.size() = 1
[02-22-2016 :: 15:57:58] [Error] HealRotation::m_target_list.size() = 6
[02-22-2016 :: 15:57:58] [Error] (std::shared_ptr<HealRotation>::use_count() = 9
[02-22-2016 :: 15:57:58] [Error] HealRotation Members:
[02-22-2016 :: 15:57:58] [Error] (1) Druidbot (hrcast: F)
[02-22-2016 :: 15:57:58] [Error] (2) Clericbot (hrcast: T)
[02-22-2016 :: 15:57:58] [Error] (3) Shamanbot (hrcast: F)
[02-22-2016 :: 15:57:58] [Error] HealRotation Cycle:
[02-22-2016 :: 15:57:58] [Error] (1) Shamanbot
[02-22-2016 :: 15:57:58] [Error] HealRotation Targets: (sort type: 101)
[02-22-2016 :: 15:57:58] [Error] (1) Druidbot (hp: 4.2%, at: 2, dontheal: F, crit(base): T(T), safe(base): F(F), hcnt(ext): 1(1), hfreq(ext): 0.332889(0.015872))
[02-22-2016 :: 15:57:58] [Error] (2) Shamanbot (hp: 70.8%, at: 3, dontheal: F, crit(base): F(F), safe(base): F(F), hcnt(ext): 2(2), hfreq(ext): 0.221852(0.028979))
[02-22-2016 :: 15:57:58] [Error] (3) Wizardbot (hp: 97.2%, at: 1, dontheal: F, crit(base): F(F), safe(base): T(T), hcnt(ext): 3(3), hfreq(ext): 0.198124(0.039924))
[02-22-2016 :: 15:57:58] [Error] (4) Clericbot (hp: 30.8%, at: 4, dontheal: F, crit(base): F(F), safe(base): F(F), hcnt(ext): 1(1), hfreq(ext): 0.166528(0.015150))
[02-22-2016 :: 15:57:58] [Error] (5) Testbotb (hp: 2.4%, at: 3, dontheal: F, crit(base): T(T), safe(base): F(F), hcnt(ext): 0(0), hfreq(ext): 0.016667(0.008333))
[02-22-2016 :: 15:57:58] [Error] (6) Aluna (hp: 1.3%, at: 2, dontheal: F, crit(base): T(T), safe(base): F(F), hcnt(ext): 0(0), hfreq(ext): 0.016667(0.008333))
[02-22-2016 :: 15:57:58] [Error] Bot::AI_Process() - Casting succeeded (m: Shamanbot, t: Druidbot) : AdvHR(true)

'sort_type: 101' resolves to Highest Heal Frequency (0.332889Hz for Druidbot in this case)

Cursian 03-05-2016 05:53 AM

This is pretty awesome

Uleat 03-05-2016 02:17 PM

This is still actively being worked on.

I had to go back and fix inadequate sorting predicates in three systems..but, they appear to be working much better (more accurately) now.

wirepuller134 03-05-2016 04:06 PM

Another voice of appreciation for this being worked on. Thank you.

Cursian 03-05-2016 04:42 PM

Hey Uleat,

I just wanted to say, I also think being able to invite a bot group leader to a raid would be pretty sweet.

Im a database / networking engineer. I have dabbled with server/client applications before in python. I have never really delved into C++ before but I am starting to think I should. Would you mind pointing me to the files that handle raid code?

If you ever need anything from my area of expertise let me know.

Thank you for your epic amount of time on this project.

Uleat 03-06-2016 04:04 PM

I haven't looked at the raid code enough to know what to tell you...

I thought that some people had said that inviting a bot owner into a raid works..but, I haven't tested that myself.

I may delve into that at some point..but, not before the new command system, and likely inventory system, are up-to-speed.


I'm down to just a few commands that need to be coded..then I need to finish up on the command spell discriminator and sorting criteria.

(Sorting criteria dictates what spell is available to cast at a given level based on given circumstances and options. My sorting predicates work much better now..but,
that doesn't mean that their casting priority is optimal.)

Uleat 03-07-2016 08:53 PM

Latest and greatest uploaded to git..hopefully, down to the last few command codings and some run-throughs on alpha testing.

Cursian 03-08-2016 01:34 AM

Awesome I will definitely check it out, thanks Uleat.

ionhsmith 03-09-2016 10:31 PM

Very nice ill test it out if you need people to test

Uleat 03-16-2016 09:36 PM

One of the features in this new command system is a collection of functions contained within the namespace ActionableBots.

This is basically a 'filtering' system that takes command line arguments and returns a list of appropriate bots.

Currently, the list contains the following filters:
Code:

enum ABType {
        ABT_None = 0,
        ABT_Target,
        ABT_ByName,
        ABT_OwnerGroup,
        ABT_BotGroup,
        ABT_TargetGroup,
        ABT_NamesGroup,
        ABT_HealRotation,
        ABT_HealRotationMembers,
        ABT_HealRotationTargets,
        ABT_Spawned,
        ABT_All
};


Not all commands use these filters..nor do those using them allow the use of all filters.

But, it does provide a somewhat standardized approach and facilitates changes rather well.


One of the cases where this approach is really nice is in '^follow'

Any of the allowed filters can be made to follow a single target.

In particular, a single bot 'byname' can be made to follow another bot in the same group. This eliminates 'bot clumping' while traveling.

(This particular command also has a 'reset' option that will return 'selected' bots to their default follow assignments.)

Kingly_Krab 03-17-2016 10:04 AM

That's actually really cool, it's a rather advanced way of doing it, but at the same time it's simplistic if you know how enumerators work. Good work Uleat, can't wait to see all your work make its way to the main branch.

Uleat 03-22-2016 05:11 PM

Does anyone know if there was an issue with the old command #bot pull?

I'm using the exact same calling method and can't seem to agro anything.


EDIT: I found it..surprised this ever did work...

Code:

SendItemAnimation(other, Ammo, SkillArchery);
DoArcheryAttackDmg(GetTarget(), rangedItem, ammoItem);

'other' is the mob passed to do the attack on...

But, when doing the actual damage, GetTarget() is called - which is nullptr...


Duh!

Uleat 03-24-2016 09:44 PM

Link to the broken news release (It poofed off of the home page...)

http://www.eqemulator.org/forums/sho...01&postcount=1


There are somes feature that I left 'active' .. but, crippled, until I can get into the actual bot code and find the cause of their failures.


I will eventually get around to creating a wiki page to help decipher what all of the functions do - so that people may create their own commands.

ionhsmith 03-25-2016 10:22 PM

Uleat the bot pull never worked for me

ionhsmith 03-25-2016 10:36 PM

Testing out some of these new commands .... ^follow does not work... set my bot to guard and now I cant get him to follow me again


All times are GMT -4. The time now is 09:31 PM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.