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

Development::Bots Forum for bots.

Closed Thread
 
Thread Tools Display Modes
  #1  
Old 09-08-2008, 03:31 PM
Congdar
Developer
 
Join Date: Jul 2007
Location: my own little world
Posts: 751
Default

I'm wondering if the client adds something to the calcs. Specifically, ATK looks wacked in the code. It seems to benefit the defender if the attackers ATK is higher than theirs. Maybe the client does something with the ATK value?

I'm all for making the bots as close to a pc as possible, but nothing is super obvious as far as the code goes. I've tried to copy the attack/damage methods between the pc code and the bot code as closely as possible. Maybe i've missed something somewhere... I'll keep looking.
  #2  
Old 09-09-2008, 11:11 PM
macvaliant7
Fire Beetle
 
Join Date: Sep 2004
Posts: 3
Default Bot aggro

I installed the 1129 update pack and the latest EQOffline binaries/dll the problem i have is even though the warrior bot taunts and attacks a mob, it will attack the closest PC regardless if they damaged the mob. Is there a way to stop this default switch to a PC over an NPC? thanks

-Mac
  #3  
Old 09-10-2008, 02:34 AM
kajika
Fire Beetle
 
Join Date: Sep 2008
Location: japan
Posts: 1
Default

Quote:
Originally Posted by macvaliant7 View Post
I installed the 1129 update pack and the latest EQOffline binaries/dll the problem i have is even though the warrior bot taunts and attacks a mob, it will attack the closest PC regardless if they damaged the mob. Is there a way to stop this default switch to a PC over an NPC? thanks

-Mac
I use this patch.

diff -r -c -N ./1129Bots/zone/hate_list.cpp ./1129Bots-changed/zone/hate_list.cpp
*** ./1129Bots/zone/hate_list.cpp 2008-06-19 05:49:00.000000000 +0900
--- ./1129Bots-changed/zone/hate_list.cpp 2008-09-05 14:33:16.000000000 +0900
***************
*** 240,246 ****

sint32 currentHate = cur->hate;

! if(cur->ent->IsClient()){

if(cur->ent->CastToClient()->IsSitting()){
aggroMod += RuleI(Aggro, SittingAggroMod);
--- 240,246 ----

sint32 currentHate = cur->hate;

! if(cur->ent->IsClient() || cur->ent->IsBot()){

if(cur->ent->CastToClient()->IsSitting()){
aggroMod += RuleI(Aggro, SittingAggroMod);
***************
*** 292,298 ****
iterator.Advance();
}

! if(topClientInRange != NULL && top != NULL && !top->IsClient())
return topClientInRange;
else
return top;
--- 292,298 ----
iterator.Advance();
}

! if(topClientInRange != NULL && top != NULL && !top->IsClient() && !top->IsBot())
return topClientInRange;
else
return top;
  #4  
Old 09-10-2008, 05:25 AM
macvaliant7
Fire Beetle
 
Join Date: Sep 2004
Posts: 3
Default Make

I can edit the cpp file easily but i can't get them to compile(make a new zone.exe) with the makefile (shared memory error: shm_r and shm_w undeclared). Could i get the updated zone.exe somewhere?

Thanks,
-Mac
  #5  
Old 09-10-2008, 07:51 AM
Angelox
AX Classic Developer
 
Join Date: May 2006
Location: filler
Posts: 2,049
Default

I think that's the way the game works - stand away from the fight and the mob stays on the tank. Also, if a caster heals or DDs, he gets aggro.
And finally, The bots are rooting - a rooted mob will attack the one nearest.
  #6  
Old 09-10-2008, 10:50 AM
gygelly
Fire Beetle
 
Join Date: Jul 2008
Location: Birmingham, AL
Posts: 15
Default

the problem arises if you are using a PC monk or rogue with a bot tank.
the way I always understood it working, with player characters, when a mob is rooted, was that the npc would attack whichever PC was closest.

So I figure the problem is that the bot tank always stands at the maximum melee range. We need the bot tank to move up close to a mob, like a pc tank, so that monks and rogues can stay at maximum melee range and not get attacked.
  #7  
Old 09-10-2008, 12:17 PM
Congdar
Developer
 
Join Date: Jul 2007
Location: my own little world
Posts: 751
Default

try changing your server rule Aggro:SmartAggroList = false
this works best for the bots
  #8  
Old 09-24-2008, 09:52 PM
hayward6
Forum Guide
 
Join Date: Jul 2005
Posts: 473
Default

I spent a little time today setting this up with all the newest source and I don't seem to have the commands available when I log in... I know the commands aren't in the database, but maybe they aren't supposed to be? basicaly I just get "command unrecognized" when I try and do any #bot commands.
__________________
Sayin Silverwolf
Server Op of The Sandbox (Non-Legit)
  #9  
Old 09-24-2008, 10:11 PM
Congdar
Developer
 
Join Date: Jul 2007
Location: my own little world
Posts: 751
Default

you need to add EQBOTS to the preprocessor in Zone. It's different for linux and windows on how you set it, and both are already covered in this thread somewhere.
  #10  
Old 09-25-2008, 11:50 AM
hayward6
Forum Guide
 
Join Date: Jul 2005
Posts: 473
Default

Quote:
Originally Posted by Congdar View Post
you need to add EQBOTS to the preprocessor in Zone. It's different for linux and windows on how you set it, and both are already covered in this thread somewhere.
Thanks, I'll start digging through this thread when I have more time. I better pack a lunch
__________________
Sayin Silverwolf
Server Op of The Sandbox (Non-Legit)
Closed Thread


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:02 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 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3