Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Bots

Development::Bots Forum for bots.

Reply
 
Thread Tools Display Modes
  #31  
Old 02-22-2016, 05:23 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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)
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #32  
Old 03-05-2016, 05:53 AM
Cursian
Fire Beetle
 
Join Date: Jul 2010
Posts: 15
Default

This is pretty awesome
Reply With Quote
  #33  
Old 03-05-2016, 02:17 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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.
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #34  
Old 03-05-2016, 04:06 PM
wirepuller134
Fire Beetle
 
Join Date: Jan 2013
Posts: 17
Default

Another voice of appreciation for this being worked on. Thank you.
Reply With Quote
  #35  
Old 03-05-2016, 04:42 PM
Cursian
Fire Beetle
 
Join Date: Jul 2010
Posts: 15
Default

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.
Reply With Quote
  #36  
Old 03-06-2016, 04:04 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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 of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #37  
Old 03-07-2016, 08:53 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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

Compilin' Dirty
Reply With Quote
  #38  
Old 03-08-2016, 01:34 AM
Cursian
Fire Beetle
 
Join Date: Jul 2010
Posts: 15
Default

Awesome I will definitely check it out, thanks Uleat.
Reply With Quote
  #39  
Old 03-09-2016, 10:31 PM
ionhsmith
Discordant
 
Join Date: Jun 2014
Posts: 284
Default

Very nice ill test it out if you need people to test
Reply With Quote
  #40  
Old 03-16-2016, 09:36 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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.)
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #41  
Old 03-17-2016, 10:04 AM
Kingly_Krab
Administrator
 
Join Date: May 2013
Location: United States
Posts: 1,594
Default

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.
Reply With Quote
  #42  
Old 03-22-2016, 05:11 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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 of Bertoxxulous

Compilin' Dirty

Last edited by Uleat; 03-22-2016 at 05:18 PM..
Reply With Quote
  #43  
Old 03-24-2016, 09:44 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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.
__________________
Uleat of Bertoxxulous

Compilin' Dirty

Last edited by Uleat; 03-25-2016 at 11:16 AM..
Reply With Quote
  #44  
Old 03-25-2016, 10:22 PM
ionhsmith
Discordant
 
Join Date: Jun 2014
Posts: 284
Default

Uleat the bot pull never worked for me
Reply With Quote
  #45  
Old 03-25-2016, 10:36 PM
ionhsmith
Discordant
 
Join Date: Jun 2014
Posts: 284
Default

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
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 10:01 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3