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

Development::Bots Forum for bots.

Reply
 
Thread Tools Display Modes
  #16  
Old 12-12-2015, 04:26 AM
Huppy's Avatar
Huppy
Demi-God
 
Join Date: Oct 2010
Posts: 1,333
Default

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
Reply With Quote
  #17  
Old 12-12-2015, 02:55 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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

Compilin' Dirty

Last edited by Uleat; 12-12-2015 at 03:10 PM..
Reply With Quote
  #18  
Old 12-12-2015, 09:30 PM
Huppy's Avatar
Huppy
Demi-God
 
Join Date: Oct 2010
Posts: 1,333
Default

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.
Reply With Quote
  #19  
Old 12-12-2015, 10:25 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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

Compilin' Dirty
Reply With Quote
  #20  
Old 12-12-2015, 11:15 PM
Huppy's Avatar
Huppy
Demi-God
 
Join Date: Oct 2010
Posts: 1,333
Default

Quote:
Originally Posted by Uleat View Post

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
Reply With Quote
  #21  
Old 12-13-2015, 08:54 AM
Huppy's Avatar
Huppy
Demi-God
 
Join Date: Oct 2010
Posts: 1,333
Default

Quote:
Originally Posted by Uleat View Post

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

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

Compilin' Dirty
Reply With Quote
  #23  
Old 01-11-2016, 06:10 PM
Huppy's Avatar
Huppy
Demi-God
 
Join Date: Oct 2010
Posts: 1,333
Default

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
__________________
Hanging out at Antonica.World
Reply With Quote
  #24  
Old 01-11-2016, 06:22 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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

Compilin' Dirty
Reply With Quote
  #25  
Old 01-11-2016, 06:39 PM
Huppy's Avatar
Huppy
Demi-God
 
Join Date: Oct 2010
Posts: 1,333
Default

Quote:
Originally Posted by Uleat View Post
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
__________________
Hanging out at Antonica.World
Reply With Quote
  #26  
Old 01-21-2016, 03:37 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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

Compilin' Dirty
Reply With Quote
  #27  
Old 01-31-2016, 12:30 AM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

Status Update:


75% coding complete..

25% alpha testing complete..
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #28  
Old 01-31-2016, 03:56 AM
wirepuller134
Fire Beetle
 
Join Date: Jan 2013
Posts: 17
Default

We appreciate your time and dedication to this, we use bots on our server and this will greatly improve the experience.
Reply With Quote
  #29  
Old 02-01-2016, 07:14 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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

Compilin' Dirty

Last edited by Uleat; 02-01-2016 at 11:53 PM..
Reply With Quote
  #30  
Old 02-09-2016, 02:41 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

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

Compilin' Dirty
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 05:54 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