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 10-17-2015 06:59 PM

Bot Commands
 
I need some feedback from any of you running a bots-enabled server.

I'm currently working on migrating bot commands into their own files and implementing them like our 'normal' commands.


1) I'm looking to use ^ in place of #bot to give direct access to bot commands. (It doesn't have to be the caret..but there are limitations.)

2) I'd like to clean-up the command tokens..but, I know that may cause a lot of issues with current setups - especially client macros.


Note: the '#bot' command will still be accepted..but, will be redirected to the new handlers.

skyy 10-18-2015 03:10 AM

tbh i couldnt care less about the command lingo; "#bot" was never an issue for me or players; since i also enabled #peqzone (very low pop server) everyone was used to use "#" prefixes beside.

most of the feedback about bots I received and my own impressions pretty much all point towards bot AI and too few commands to work around it
(i.e. shaman sometimes slow spamming unslowable mobs, cleric healing not efficient enough/or focused enough on MT)

missing commands imho:
-#bot group stance raid/normal (giving me playing the tank a few seconds headstart to build aggro) or in case MT is a bot (giving the designated tank a few seconds headstart to build aggro)

-#bot group autopull [delay after each pull] [range] (in combination with an exp fix to only get exp when the player is on the hatelist)

-#bot group priorityhealtarget [targetname] [%hp]


just my 2cp :)

-#bot group autocure [on/off]

N0ctrnl 10-18-2015 08:24 AM

Are you talking about just ^ or /say ^? Not sure how you're talking about it being parsed(?)

Uleat 10-18-2015 02:05 PM

Anything that comes in the 'normal' say channel will be parsed:

[Expired]

Just like the normal command processing..but, it's essentially giving two command operators - one for normal, one for bots.


I haven't tested any of this yet..but, I should be able to redirect '#bot' to the new handler as well:

[Expired]

That will keep current setups compatible..but, will be a little more expensive to use.


Once this and another update get settled, we can look into updating bots.

But, these two updates are pretty big changes that (I feel) need to take place before moving on.

jpyou127 10-18-2015 03:48 PM

Either command is good, but I like that it's shortened. If it could be parsed on any channel would be a huge benefit as always having /say or in that channel is annoying.

Celestial

Uleat 10-21-2015 09:09 PM

Actually..now would be a good time to implement some new bot commands.

I didn't realize that it would be this involved..and, adding new commands shouldn't be that difficult with the level of converting that I'm doing.


Bot commands are open to any suggestions since they don't affect 'normal' game-play.

If you submit something and don't see it in the final release, message me and I'll take a look at it again.


Anything that requires a redesign of a current system or extensive additions to implement, probably won't make the final release.

Those should really be added as separate revisions.

Warkral 10-22-2015 03:21 PM

Haven't been able to play in quite a while so forgive me if this is already a command, but my biggest gripe was caster bots joining tank bots in racing up to mobs to attack. No biggie at level 10ish but when mobs start raging the stupid casters are going to get wiped out. I would like the caster bots to remain in back while tank bots run up to the mob.

Uleat 10-24-2015 10:22 PM

I'm pretty sure the 'follow' code is to blame for that..it can be looked at and adjusted. The bots are probably too close before they engage.

Probably just need to check distance during combat and adjust back to a proper casting range.

Uleat 10-24-2015 10:26 PM

Ok...

I haven't heard any feedback concerning the actual tokens (command names) .. so, I'm probably going to revamp those as well.

There's just too much over-lapping context with certain commands that it complicates things when trying to add new/similar commands.


This will be a one-time deal and will take some getting used to by the players..but, I think it will be for the better in the long run.

starblight 10-25-2015 12:12 AM

Here are a few commands or ideas that I could see improving the bot use experience.

Definable area as home base. This could be used to stop bots from following you out on a pull. I would think being able to set a distance that bots could roam form camp would also be useful so that they could still kill a running mob for example.

Stop bots from attacking as soon as anyone in the group gets aggro no matter how far away. I am not sure on best fix for this but setting the main assist attacking being the trigger for bots to attack could work.

Bots casting buffs over and over because they will not land for some reason. Not enough buff slots open or other spells preventing them. Maybe have a setting to turn on only major buffs like haste and KEI Or best 1-5 buffs only? Or if it dose not land then do not try again unless asked to refresh buffs?

I have seen enchanters pull massive aggro when a mob is unslowable or very resistant by chain casting slow. I am not sure how one would solve this. Maybe add in stances that would be more likely to give up after a few fails?

Add follow other command for groups with a mix of humans and bots. This could be useful to divide your bots up by type to keep them safe or in the mix depending on what you want. So a enchanter could follow a healer or nuker class. Rouge could follow another melee class and so on.


I realize I did not spend a lot of time writing this out so if any hard to understand let me know and I will elaborate when I have more time/sleep.

Uleat 10-25-2015 07:58 PM

This is why I was asking about the command tokens: [Expired]

Naming is crucial to avoid unneeded parameters.


I'm implementing a rule to allow 'normal' spell usage or to force the spell target to the bot owner/owner's group.

Uleat 10-30-2015 06:38 PM

Link to current state of bot_command.cpp: http://wiki.eqemulator.org/i?Module=...Paste=2lR94iYW
(Expires in one week)


The update-to-date command handlers start around line 2400.

Anything with /*xxxxx*/ preceeding the function is up-to-date.


At this stage, I still need to compare to the old handlers to see if adjustments need to be made and then I move on to tweaking and finalization.

emuzual 11-24-2015 06:29 AM

hi,

First i would like to thanks you for the great job you all do on the Emu.
AKKA, your wikki "setting windows server" work like a charm as your complet repack thanks alots :)

What relation with subject in here ?

After installing Repack i discover that there wasnt BOT option .. damned i will never see POT alone :(
So i took some time to install a windows server folowing step by step AKKA wiki.
Sweet i have Bots ....but i cant create raid group .... long live to Quarm.

I will never have enough time to involve in quild or other online solution to might see Quarn one day .


So as playing kinda with bot server i would say
could you pls implement bot raid option




An other think that could be really fun on which that could completly change bot way of using would be
#Bot take place, that could put you through the bot command, like you do with your toon.
#Bot release to go back to your toon.
I know .. or only imagine this might be hugh development and change on the emu but the idea is cool


Best regards
Long live to Emu.

PS : sorry for my horrible typing as i am french and english is not my mother tong

Quarn, i ll beat you one day .....

Uleat 11-24-2015 09:29 PM

Both of those suggestions will take system redesigns to accomplish.


Bot raids may be an option at some point in the future.


Not sure about le substitut du client for bots. Nous devons adapter nos modes de pensée à la nouvelle système.

Uleat 11-30-2015 09:13 PM

Ok...

Here are the first-round spell scripts for bots to use through the new command system: https://github.com/EQEmu/Server/tree..._spell_scripts


Feedback is appreciated! :D

Huppy 12-12-2015 04:26 AM

I am curious, with the #bot gate cmd, the actual ports, (druid), I couldn't find any of those
in the bot spell tables (707 for druid). I am wondering exactly what that cmd is using to
port it's owner ?
Currently, a lvl 51 monk with a druid bot, can port to wall of slaughter. Thats a lvl 64 spell.
I figured you must have that porting set up some different way ? Just curious, hahaha

Uleat 12-12-2015 02:55 PM

Those are coming directly from the `spells_new` table.

The bot spells table are explicitly for use by the bot ai.


EDIT: (Not sure if that is suppose to be true or was true at some point, however...)

This is a draft script for those spells: https://github.com/EQEmu/Server/blob...art_spells.sql

Huppy 12-12-2015 09:30 PM

OH ok, I was also wondering, (long shot here), is it possible to stop all of the bot pets
from being spawned at all ? Even if I have to alter/recompile the source if needed.
I don't want to stop players from being able to summon pets, just the bots.

Uleat 12-12-2015 10:25 PM

I have very little experience with the spell casting ai..although...


You could 'try' remarking out this line: https://github.com/EQEmu/Server/blob...lsai.cpp#L1007

and its scope closer here: https://github.com/EQEmu/Server/blob...lsai.cpp#L1019

to see if that works.

That would keep you out of the database modifications.

Huppy 12-12-2015 11:15 PM

Quote:

Originally Posted by Uleat (Post 245707)

You could 'try' remarking out this line: https://github.com/EQEmu/Server/blob...lsai.cpp#L1007

and its scope closer here: https://github.com/EQEmu/Server/blob...lsai.cpp#L1019

to see if that works.

That would keep you out of the database modifications.

Oh , kewl, thank you, I will give that a try and test it in the morning and see
what happens. Its a quick fix for the bot pet agro thing. Players don't seem
to care about bot pets, if they are just going to wreak havoc, haha

Huppy 12-13-2015 08:54 AM

Quote:

Originally Posted by Uleat (Post 245707)

You could 'try' remarking out this line: https://github.com/EQEmu/Server/blob...lsai.cpp#L1007

and its scope closer here: https://github.com/EQEmu/Server/blob...lsai.cpp#L1019

to see if that works.

That would keep you out of the database modifications.

PERFECT !!! This worked great. Its even going to be convienient for those who
have existing bots with pets and want to keep them.
What it does now, any existing bots will still summon that mean old agro pet,
but if one deletes the bot and creates a new one, it will not spawn a pet.
THANK YOU :)

Uleat 01-11-2016 02:09 PM

If anyone is keeping up with this thread: https://github.com/EQEmu/Server/tree/dev_bot_commands


That's a pre-alpha version of what's coming.


There's still a lot to do and even more tweaking afterwards.


It will compile and the system itself can be tested..but, it should not be run on a live server - nor should a live database be used as data corruption is almost certain.


The old method of using '#bot command' still works through a re-director..though, all usage/help examples use the new '^command' syntax.

Huppy 01-11-2016 06:10 PM

Still waiting for a power supply for my test box, its been down for a week now while I wait for the
"shipper" lag to get the new one to me, but I would be more than willing to test the new stuff out,
when I get that box running again. Personally, whether it's # or ^ or @ to play with bots, I have no
special preference, it's just another key on the board, hahaha
The overall function of the bots is where my "wishlist" is. (Joining raids, casters staying at camp,
getting me coffee, etc), you know, the basics, lol

Uleat 01-11-2016 06:22 PM

You missed one of the 'basics' .. but, I don't think it's appropriate conversation for a public forum :P

Huppy 01-11-2016 06:39 PM

Quote:

Originally Posted by Uleat (Post 246479)
You missed one of the 'basics' .. but, I don't think it's appropriate conversation for a public forum :P

You mean real life bots .....(babes on the streets).....too much agro .... #bot camp

Uleat 01-21-2016 03:37 PM

Ok..I think that I've got the basics encapsulated to the point of not needing to replicate checks across every command:

Code:

void bot_command_bind_affinity(Client *c, const Seperator *sep)
{
    // [spell list and dispatch verification]
    bcst_list* local_list = &bot_command_spells[BCEnum::ST_BindAffinity];
    if (spell_list_fail(c, local_list, BCEnum::ST_BindAffinity) || command_alias_fail(c, "bot_command_bind_affinity", sep->arg[0], "bindaffinity"))
        return;

    // ['help'/'usage' argument check]
    if (is_help_or_usage(sep->arg[1])) {
        c->Message(0, "usage: (<target>) %s", sep->arg[0]);
        send_usage_required_bots(c, BCEnum::ST_BindAffinity);
        return;
    }

    // [selected bot pointer and selectable bot list declarations; populate sbl]
    Bot* b = nullptr;
    std::list<Bot*> sbl;
    MyBots::PopulateSBL_BySpawnedBots(c, sbl);

    // [client target pointers declaration - self-populating target array based on target type]
    MyTarget::Pointers mtp;

    // [spell list iterator for given command spell type]
    for (bcst_list::iterator iter_list = local_list->begin(); iter_list != local_list->end(); ++iter_list) {
        STBaseEntry* local_entry = *iter_list;
        if (!local_entry)
            continue;
 
        // [pre-target/-bot spell filtering]
        if (spells[local_entry->spell_id].zonetype && zone->GetZoneType() && !(spells[local_entry->spell_id].zonetype & zone->GetZoneType()))
            continue;

        // [target assignment based on target type and FRIENDLY/ENEMY spell behavior]
        Mob* t = mtp.Target(c, local_entry->target_type, FRIENDLY);
        if (!t)
            continue;

        // [actionable bot selection based on spell criteria and target type]
        b = ActionableBots::Select_ByMinLevelAndClass(c, local_entry->target_type, sbl, local_entry->spell_level, local_entry->caster_class, t);
        if (!b)
            continue;

        // bot spell casting
        b->InterruptSpell();
        Bot::BotGroupSay(b, "Attempting to cast '%s' on %s", spells[local_entry->spell_id].name, t->GetCleanName());
        b->CastSpell(local_entry->spell_id, t->GetID(), 1, -1, -1);
 
        break;
    }
    if (!b) {
        c->Message(15, "No bots are capable of performing this action");
        return;
    }
}


Still needs to be fully tested/tweaked..but, it should make adding new commands easier in the long run.

Uleat 01-31-2016 12:30 AM

Status Update:


75% coding complete..

25% alpha testing complete..

wirepuller134 01-31-2016 03:56 AM

We appreciate your time and dedication to this, we use bots on our server and this will greatly improve the experience.

Uleat 02-01-2016 07:14 PM

Np - benefits me as well :)

Here's a log record of bottogglearcher and findaliases command use:

Quote:

Originally Posted by EverQuest Log
[Mon Feb 01 17:26:58 2016] You say, '^togglearcher help'
[Mon Feb 01 17:26:58 2016] usage: (<target>) ^togglearcher ([on | off]) (byname [name])
[Mon Feb 01 17:27:16 2016] You say, '^findaliases togglearcher'
[Mon Feb 01 17:27:17 2016] Available bot command aliases for 'bottogglearcher':
[Mon Feb 01 17:27:17 2016] ^archer
[Mon Feb 01 17:27:17 2016] ^bottogglearcher
[Mon Feb 01 17:27:17 2016] ^togglearcher
[Mon Feb 01 17:27:17 2016] 3 bot command aliases listed.
[Mon Feb 01 17:27:33 2016] You say, '^archer usage'
[Mon Feb 01 17:27:33 2016] usage: (<target>) ^archer ([on | off]) (byname [name])
[Mon Feb 01 17:27:46 2016] Targeted (Player): Rangerbot
[Mon Feb 01 17:28:01 2016] You say, '^archer'
[Mon Feb 01 17:28:01 2016] Rangerbot says 'My bow is true and ready.'
[Mon Feb 01 17:28:21 2016] You say, '^archer off byname Rangerbot'
[Mon Feb 01 17:28:21 2016] Rangerbot says 'My blade is ready.'


EDIT: And this using bot command list with filters:
Quote:

Originally Posted by EverQuest Log
[Mon Feb 01 18:27:50 2016] You say, '^list'
[Mon Feb 01 18:27:50 2016] Clericbot is a level 25 Female High Elf Cleric
[Mon Feb 01 18:27:50 2016] Bardbot is a level 35 Female Half Elf Bard
[Mon Feb 01 18:27:50 2016] Enchanterbot is a level 25 Female Dark Elf Enchanter
[Mon Feb 01 18:27:50 2016] Shamanbot is a level 35 Female Barbarian Shaman
[Mon Feb 01 18:27:50 2016] Necrobot is a level 25 Female Erudite Necromancer
[Mon Feb 01 18:27:50 2016] ClericbotA is a level 25 Female High Elf Cleric
[Mon Feb 01 18:27:50 2016] BardbotA is a level 35 Female Half Elf Bard
[Mon Feb 01 18:27:50 2016] EnchanterbotA is a level 25 Female Dark Elf Enchanter
[Mon Feb 01 18:27:50 2016] ShamanbotA is a level 25 Female Barbarian Shaman
[Mon Feb 01 18:27:50 2016] NecrobotA is a level 25 Female Erudite Necromancer
[Mon Feb 01 18:27:50 2016] MonkbotA is a level 35 Female Drakkin Monk
[Mon Feb 01 18:27:50 2016] Testa is a level 35 Female Human Warrior
[Mon Feb 01 18:27:50 2016] Rangerbot is a level 35 Female Wood Elf Ranger
[Mon Feb 01 18:27:50 2016] Druidbot is a level 35 Female Wood Elf Druid
[Mon Feb 01 18:27:50 2016] Testb is a level 35 Female Human Warrior
[Mon Feb 01 18:27:50 2016] Testbotb is a level 35 Male Barbarian Berserker
[Mon Feb 01 18:27:50 2016] Wizardbot is a level 34 Female Erudite Wizard
[Mon Feb 01 18:27:50 2016] Roguebot is a level 60 Female Wood Elf Rogue
[Mon Feb 01 18:27:50 2016] Magicianbot is a level 35 Female Erudite Magician
[Mon Feb 01 18:27:50 2016] 19 of 19 bots shown
[Mon Feb 01 18:27:50 2016] Your limit is 150 bots
[Mon Feb 01 18:28:59 2016] You say, '^list name test'
[Mon Feb 01 18:28:59 2016] Testa is a level 35 Female Human Warrior
[Mon Feb 01 18:28:59 2016] Testb is a level 35 Female Human Warrior
[Mon Feb 01 18:28:59 2016] Testbotb is a level 35 Male Barbarian Berserker
[Mon Feb 01 18:28:59 2016] 3 of 19 bots shown
[Mon Feb 01 18:28:59 2016] Your limit is 150 bots
[Mon Feb 01 18:29:33 2016] You say, '^list race 1'
[Mon Feb 01 18:29:33 2016] Testa is a level 35 Female Human Warrior
[Mon Feb 01 18:29:33 2016] Testb is a level 35 Female Human Warrior
[Mon Feb 01 18:29:33 2016] 2 of 19 bots shown
[Mon Feb 01 18:29:33 2016] Your limit is 150 bots
[Mon Feb 01 18:30:27 2016] You say, '^list class 1 name bot'
[Mon Feb 01 18:30:27 2016] You have no bots meeting this criteria
[Mon Feb 01 18:31:07 2016] You say, '^list class 10 name bot'
[Mon Feb 01 18:31:07 2016] Shamanbot is a level 35 Female Barbarian Shaman
[Mon Feb 01 18:31:07 2016] ShamanbotA is a level 25 Female Barbarian Shaman
[Mon Feb 01 18:31:07 2016] 2 of 19 bots shown
[Mon Feb 01 18:31:07 2016] Your limit is 150 bots


EDIT2: This shows the #bot command redirect and bot sub-command implementation:
Quote:

Originally Posted by EverQuest Log
[Mon Feb 01 22:46:05 2016] You say, '^appearance'
[Mon Feb 01 22:46:05 2016] Available bot appearance subcommands:
[Mon Feb 01 22:46:05 2016] ^botbeardcolor - Changes the beard color of a bot
[Mon Feb 01 22:46:05 2016] ^botbeardstyle - Changes the beard style of a bot
[Mon Feb 01 22:46:05 2016] ^botdetails - Changes the Drakkin details of a bot
[Mon Feb 01 22:46:05 2016] ^boteyes - Changes the eye colors of a bot
[Mon Feb 01 22:46:05 2016] ^botface - Changes the facial appearance of your bot
[Mon Feb 01 22:46:05 2016] ^bothaircolor - Changes the hair color of a bot
[Mon Feb 01 22:46:05 2016] ^bothairstyle - Changes the hairstyle of a bot
[Mon Feb 01 22:46:05 2016] ^botheritage - Changes the Drakkin heritage of a bot
[Mon Feb 01 22:46:05 2016] ^bottattoo - Changes the Drakkin tattoos of a bot
[Mon Feb 01 22:46:05 2016] 9 bot subcommands listed.
[Mon Feb 01 22:46:12 2016] You say, '#bot appearance'
[Mon Feb 01 22:46:12 2016] Available bot appearance subcommands:
[Mon Feb 01 22:46:13 2016] ^botbeardcolor - Changes the beard color of a bot
[Mon Feb 01 22:46:13 2016] ^botbeardstyle - Changes the beard style of a bot
[Mon Feb 01 22:46:13 2016] ^botdetails - Changes the Drakkin details of a bot
[Mon Feb 01 22:46:13 2016] ^boteyes - Changes the eye colors of a bot
[Mon Feb 01 22:46:13 2016] ^botface - Changes the facial appearance of your bot
[Mon Feb 01 22:46:13 2016] ^bothaircolor - Changes the hair color of a bot
[Mon Feb 01 22:46:13 2016] ^bothairstyle - Changes the hairstyle of a bot
[Mon Feb 01 22:46:13 2016] ^botheritage - Changes the Drakkin heritage of a bot
[Mon Feb 01 22:46:13 2016] ^bottattoo - Changes the Drakkin tattoos of a bot
[Mon Feb 01 22:46:13 2016] 9 bot subcommands listed.

NOTE: The redirect does not forward the prefix '#bot ' and selected command enumerations will be shown with the new bot command system token.

On sub-commands, almost all actions are implemented within a 'command' function. These 'sub-commands' essentially form a command 'group.'

Uleat 02-09-2016 02:41 PM

The new HealRotation class appears to work:

Quote:

Originally Posted by EverQuest Log
[Tue Feb 09 03:19:27 2016] Clericbot begins to cast a spell. (Superior Healing)
[Tue Feb 09 03:19:27 2016] Clericbot says 'Casting Superior Healing on Testbotb, please stay in range!'
[Tue Feb 09 03:19:31 2016] Testbotb feels much better.
[Tue Feb 09 03:19:37 2016] ClericbotA begins to cast a spell. (Superior Healing)
[Tue Feb 09 03:19:37 2016] ClericbotA says 'Casting Superior Healing on Testbotb, please stay in range!'
[Tue Feb 09 03:19:40 2016] Testbotb feels much better.
[Tue Feb 09 03:19:47 2016] Druidbot begins to cast a spell. (Greater Healing)
[Tue Feb 09 03:19:47 2016] Druidbot says 'Casting Greater Healing on Testbotb, please stay in range!'
[Tue Feb 09 03:19:50 2016] Testbotb feels much better.
[Tue Feb 09 03:19:57 2016] Clericbot begins to cast a spell. (Superior Healing)
[Tue Feb 09 03:19:57 2016] Clericbot says 'Casting Superior Healing on Testbotb, please stay in range!'
[Tue Feb 09 03:20:00 2016] Testbotb feels much better.
[Tue Feb 09 03:20:07 2016] ClericbotA begins to cast a spell. (Superior Healing)
[Tue Feb 09 03:20:07 2016] ClericbotA says 'Casting Superior Healing on Testbotb, please stay in range!'
[Tue Feb 09 03:20:10 2016] Testbotb feels much better.
[Tue Feb 09 03:20:17 2016] Druidbot begins to cast a spell. (Greater Healing)
[Tue Feb 09 03:20:17 2016] Druidbot says 'Casting Greater Healing on Testbotb, please stay in range!'
[Tue Feb 09 03:20:20 2016] Testbotb feels much better.


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.)


All times are GMT -4. The time now is 07:27 PM.

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