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

Development::Bots Forum for bots.

Reply
 
Thread Tools Display Modes
  #1  
Old 08-27-2019, 01:31 AM
GM Ash
Fire Beetle
 
Join Date: Apr 2018
Posts: 8
Default Account based Bots creation/sharing

Forgive me for asking this but [search] was not helpful for my question.

If Bots could possibly be "shared" across/between characters on same accounts? The greatest issue would be limiting Bot power so that a player character attempting level-restricted content (such as Lady Vox or Lord Nagafen, or even LDoN missions) would not wind up bringing a group of level 70 or higher bots to a level 52 fight, or level 80+ bots to a level 65 or 70 LDoN Adventure or Raid.

There could be significant benefits for players and server ops alike; from slightly less db storage to reduced time spent gearing up/down bots and managing their groups and very existences.

Bots: account bound instead of (or in addition to) character bound?


Thanks for consideration
Reply With Quote
  #2  
Old 08-27-2019, 01:37 AM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

Bots do not have xp nor a 'level' of their own. (The database entry is not used...)

They always spawn as their owner's level.

Another thing to consider is the level requirement of gear .. that wouldn't be a prudent option in our current setup.


This topic has been brought up before and has merit.

I do have some ideas for this concept .. but, I'd like to hear what others think.

Keep the ball rolling ~
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #3  
Old 08-28-2019, 08:46 PM
Huppy's Avatar
Huppy
Demi-God
 
Join Date: Oct 2010
Posts: 1,332
Default

Quote:
Originally Posted by GM Ash View Post
limiting Bot power so that a player character attempting level-restricted content
That can all be handled by scripts and the DB on a zone by zone/mob by mob basis. As Uleat stated, the bots will always be at the same level as the owner, so the player and the bots would not be any different than a group of real players.

Quote:
Originally Posted by Uleat View Post
I do have some ideas for this concept .. but, I'd like to hear what others think.

Keep the ball rolling ~
I don't know how many would agree with me on this, but I think the biggest turn off in using bots, is having to constantly gear them all up. It's pretty much the same as going LFG on a live server and once you find a group, you learn they are all naked and have to help them all find some gear.
I know it's unrealistic to dream of bots spawning in a comparable way to mercs, but anything that could ease the birden of gearing them up would help. As it stands, the easiest method for a server dev is setting up a bot gear merchant. That could be done just to get them started, or seperate merchants for various levels. (that could also be setup to sell based on player's level). But as far as hunting for gear, a player and 5 bots (group scenario), is exactly the same as 6 real players. (You kill mobs more than once to get loot for everyone.) It would all depend on the individual preferences of customization for the server.

Transferring bots between accounts ? Does it stop there ? Or do we head for mercs tomorrow ? I tried to put a bot in the shared bank. It didn't work, so I put gear in there, instead.
__________________
Hanging out at Antonica.World
Reply With Quote
  #4  
Old 08-28-2019, 10:08 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

I don't believe that our current merc implementation allows for equipment upgrading. That came in a later expansion.

I had an idea of basing bots off of the account..but, then each bot would have a separate inventory (etc...) per character.

That would alleviate the issue of op gear on lower level bots..but, it would not address the issue of having to re-gear them each time.


We do not scale bots like we do other npcs.

This is due to their 'player-like' behavior.

They have stats that are modified like a client.

Their 'bonuses' come from level cap increases, worn gear, spell effects, spell/ability attainment, etc...

Normal npcs do this as well..but, clients do not receive a scaling bonus to their base stats.
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #5  
Old 09-23-2019, 04:51 AM
prestanneth
Fire Beetle
 
Join Date: Jul 2015
Posts: 25
Default

a few weeks late but just for info, its entirely possible with just the issues already mentioned ( gear level mostly). This depends on server and how its' being used.
I.E on my kids playground i have the ^botshare command implemented for the exact reasons above, re-gearing & recreating a "set" is irritating.
This wouldn't stand up in an public server due to several incomplete issues but is fine for me.

this snippet checks zone ( is missing a world check! ), to see if bots already spawned / in use, and if not swaps it to current char who called command.
Code:
^botshare botname

	std::string bot_name = sep->arg[1];
+	std::list<Bot*> bot_list;  // own bots
+		for (std::list<Bot*>::iterator botListItr = bot_list.begin(); botListItr != bot_list.end(); ++botListItr) {
+			Bot* tempBot = *botListItr;
+			if (tempBot->Spawned())
+			{
+				c->Message(m_action, "bot '%s' is spawned", tempBot->GetCleanName());
+			}
+		}
+
+	Bot* botCheckNotOnline = entity_list.GetBotByBotName(bot_name);//bots in zone?
+	if (!botCheckNotOnline) {
+		if (!botdb.BotShare(c->CharacterID(), bot_name)) {
+			c->Message(m_fail, "%s for '%s'", BotDatabase::fail::BotShare(), bot_name.c_str());
+			return;
+		}
+		else {
+			c->Message(m_action, "You are now the owner of bot '%s'", bot_name.c_str());
+		}
where the botdb.BotShare call is doing the swapping via sql qry.
Code:
+	query = StringFormat("update bot_data bd inner join character_data cd on bd.owner_id = cd.id inner join character_data cx on cx.id = '%u' SET owner_id = '%u' where bd.`name` = '%s' and cx.account_id = cd.account_id", owner_id, owner_id, bot_name.c_str());
+
+	auto results = QueryDatabase(query);
added a nodrop check to the fv check area. ( stops them sharing no drop items if you want to be harsh )

Code:
	if(( itm->NoDrop == 0) && (RuleI(World, FVNoDropFlag) != 1 || RuleI(World, FVNoDropFlag) != 2) || c->Admin() < RuleI(Character, MinStatusForNoDropExemptions))
+	{
+		c->Message(m_unknown,  "Item is marked as NO DROP and will not be removed");
+		return;
+	}
side note , i added the "byaccount" flag to ^botlist a few weeks back, mostly cause i use it for the above so i can remember their names for sharing.

KentaiVZ
Reply With Quote
  #6  
Old 10-02-2019, 04:22 AM
GM Ash
Fire Beetle
 
Join Date: Apr 2018
Posts: 8
Default

Thanks for answers and suggestions and info. Might be easy to set bots to ignore the armor and weapon tags like required level; actual NPCs (and pets) seem to have no trouble equipping level restricted items, even lore items (and as i recall the accept NO DROP items can be set in the server rules ini).

Yes that means some very well geared level 70 or 80+ bots would make grouping and leveling at low levels trivial without any limits, but i know someone already has a modified script allowing one active bot per 10 levels...

Cheers
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 11:35 PM.


 

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