Go Back   EQEmulator Home > EQEmulator Forums > Support > Support::General Support

Support::General Support Post all topics here having to do with errors while trying to connect to an EQEMu server but not about the setup/running of the Server itself.

Reply
 
Thread Tools Display Modes
  #16  
Old 11-27-2016, 10:41 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

I assume this is from one of sites that you read..
Quote:
On Lootfest players are allowed to create 50 bots that they can keep stored but only 1 bot can be active at any given moment. This means that you can have 50 NPCs created and ready to go at all times (stored on the server) but you may only have 1 of those bots in the world and grouping with you at any point in time.

Our base code allows for more than 1 bot to be active at any given time (72, iirc..and 150 creation max.)

Server admins are free to customize those values to their own desires.


Bots have a very basic AI that works well over all..but, don't expect them to be mind readers.

Even just adding a second bot (such as an enchanter, bard or shaman) can greatly increase both yours and a cleric bot's motility.


You can also look into using Heal Rotations.
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #17  
Old 11-27-2016, 10:48 PM
The_Beast's Avatar
The_Beast
Discordant
 
Join Date: May 2016
Location: Under a rock
Posts: 290
Default

I was just going to ask if you typed ^help ingame. That barebones version of the database needs fine tuning as well, but you are on your own
Reply With Quote
  #18  
Old 12-05-2016, 10:43 PM
Meddera
Sarnak
 
Join Date: Nov 2016
Posts: 28
Default

So I tried messing with heal rotations and I set one up with just my Cleric bot and my character in the rotation. It seems the are even setting for safe HP % and critical as for when they should actually heal you. Enabling this feature does nothing for me, my Cleric still no matter what starts healing me immediately when I am hit.

He will cast healing 6 straight times using all of his mana with 1 minute. There doesn't seem to be a lot of info on this topic, but I cant think Cleric bots have always behaved in this manner.

Anyone have any suggestions?
Reply With Quote
  #19  
Old 12-05-2016, 11:11 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

Heal Rotation casting will override a Bot AI spell casting..

..but, it won't keep a bot from processing Bot AI spells...


I don't have a model to go by for what a cleric bot should be doing.

Let me ponder this for a bit and I'll see what I can come up with.
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #20  
Old 12-06-2016, 12:26 AM
The_Beast's Avatar
The_Beast
Discordant
 
Join Date: May 2016
Location: Under a rock
Posts: 290
Default

In the npc_spells_entries table, I made some adjustments to the cleric bots spells (701) to help deal with some of these issues.
Reply With Quote
  #21  
Old 12-06-2016, 10:07 AM
werebat's Avatar
werebat
Hill Giant
 
Join Date: Oct 2010
Posts: 143
Default

Quote:
Originally Posted by Meddera View Post
I found this entry in the detail you sent to me

atCombatRange = true;
} else if(IsBotCaster() && GetLevel() > 12) {
if(IsBotCasterCombatRange(GetTarget()))
atCombatRange = true;

There could be more to it than that obviously but this was just me doing a quick run through of the code. Problem is I don't knew where bot.cpp is on my system or what I need to do to actually make changes to it.
Build from source and you can change the 12 to whatever you prefer. I did it and it worked fine.
Reply With Quote
  #22  
Old 12-06-2016, 09:33 PM
Meddera
Sarnak
 
Join Date: Nov 2016
Posts: 28
Default

Thanks for the help guys but I don't know how to get to that cpp file unfortunately. I did the installer method to get my server up and running so am not sure how to be able to really make any changes. I did do some experimenting with the heal rotation and when I change the safe level for plate armor to 100% my bot Cleric will heal me non stop.

The problem is when I change the safe level to anything below 95% he ignores it and will auto heal anytime I breach 95%. So literally in a fight he is OOM in about 1 minute.

I also changed the interval for the heal rotation to 1 second hoping this would override whatever else he was doing but it didn't make a difference.
Reply With Quote
  #23  
Old 12-06-2016, 10:03 PM
Meddera
Sarnak
 
Join Date: Nov 2016
Posts: 28
Default

I have been able to locate a few messages here and there about heal rotations so it appears they used to work because I didn't find anyone complaining about this particular issue. There must be a way to turn the 95% threshold off, or have it ignored.

I tested a Shaman bot and it did the same thing.


Also, not that it matters but I tried all the stances and it didn't fix the problem. One notable thing I noticed was if you change the Cleric to stance "passive" he will no longer cast buffs on himself or anyone else in the party, but he still heals at 95% or less.
Reply With Quote
  #24  
Old 12-09-2016, 09:09 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

I added a rule (Bots:CasterStopMeleeLevel) so that the level can be tailored without recompiling code.

The sql is optional and the server will default to the original '13' like before (I changed the '> 12' criteria to '>= 13' .. so, the behavior is the same.)


A rework of bots is on the long range radar..but, there are many, many things that need to be fixed before them.
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #25  
Old 12-09-2016, 11:40 PM
Meddera
Sarnak
 
Join Date: Nov 2016
Posts: 28
Default

Thanks for that. Do I need to do some sort of refresh to this on my end? I am assuming it will be in the rules_values correct?

Also, have any quick ideas on what could force healers to the 95% heal setting?
Reply With Quote
  #26  
Old 12-10-2016, 12:06 AM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

If you're using the pre-compiled binaries from Akkadius's installer, you'll have to compile your own or wait until the downloadable ones are updated.
(I'll try to update those tomorrow..)

You'll also need to manually source this sql file into your database: https://github.com/EQEmu/Server/blob...level_rule.sql

That db update will allow you to externally adjust the level.


Bot HR commands start here: https://github.com/EQEmu/Server/blob...mand.cpp#L5945

Heal Rotation functions are here: https://github.com/EQEmu/Server/blob...l_rotation.cpp

I'm out of time for the evening..but, I'll take a look tomorrow and see if I can figure out your symptom.
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #27  
Old 12-10-2016, 12:23 PM
Meddera
Sarnak
 
Join Date: Nov 2016
Posts: 28
Default

I don't know that the problem is with the heal rotation code itself. If I am playing a warrior with any plate on at all and change armor type for safe level to 100% the cleric will heal me non stop. So I believe that functionality is working.

The problem is, when I change it to anything below 95% it is overruled by the bots 95% threshold. The Cleric will heal when any member of the group hits 95% health. So heal rotations right now cannot work as intended.

There must be something in the code for healers that specifies <=95% cast healing spell.
Reply With Quote
  #28  
Old 12-10-2016, 12:34 PM
Meddera
Sarnak
 
Join Date: Nov 2016
Posts: 28
Default

I think I just found it in the code.


if( iSpellTypes == SpellType_Heal ) {
if( botCasterClass == CLERIC || botCasterClass == DRUID || botCasterClass == SHAMAN) {
if(caster->HasGroup()) {
Group *g = caster->GetGroup();
if(g) {
for(int i = 0; i < MAX_GROUP_MEMBERS; i++) {
if(g->members[i] && !g->members[i]->qglobal) {
if(g->members[i]->IsClient() && g->members[i]->GetHPRatio() < 90) {
if(caster->AICastSpell(g->members[i], 100, SpellType_Heal))
return true;
} else if((g->members[i]->GetClass() == WARRIOR || g->members[i]->GetClass() == PALADIN || g->members[i]->GetClass() == SHADOWKNIGHT) && g->members[i]->GetHPRatio() < 95) {
if(caster->AICastSpell(g->members[i], 100, SpellType_Heal))
return true;
} else if(g->members[i]->GetClass() == ENCHANTER && g->members[i]->GetHPRatio() < 80) {
if(caster->AICastSpell(g->members[i], 100, SpellType_Heal))
return true;
} else if(g->members[i]->GetHPRatio() < 70) {
if(caster->AICastSpell(g->members[i], 100, SpellType_Heal))
return true;
}


This of course is just a guess, but I am playing with a warrior right now and the 95% is when I get healed and I see the < 95 up there. Ok I see things that could probably be changed to correct my issues. I hate to be a pain as I know you guys have heard this a million times, but I am new to this and I was unable to get the original method of getting a the piece parts to work so I used the installer. Is it possible to make changes in the cpp files above using that method? Or do I need to go back and try to get the more complicated process to work?


I also see similiar code below for the Paladin class, but there is nothing for the gethpratio. The line is there, but no number and when I made a Paladin bot he would not heal me.

} else if((g->members[i]->GetClass() == WARRIOR || g->members[i]->GetClass() == PALADIN || g->members[i]->GetClass() == SHADOWKNIGHT) && g->members[i]->GetHPRatio() < hpRatioToHeal) {
if(caster->AICastSpell(g->members[i], 100, SpellType_Heal))
Reply With Quote
  #29  
Old 12-11-2016, 11:28 AM
GRUMPY
Discordant
 
Join Date: Oct 2016
Posts: 445
Default

This is from an older thread I found "searching" which talks about that "95%"

You can view the whole thread here : http://www.eqemulator.org/forums/showthread.php?t=40561

I have no clue if this is helpful or not, I don't play with bots anymore than I use self checkouts at the store.
Is any other bot servers/users having the same problem?

Quote:
Originally Posted by AsmoTiC View Post
You can modify those ranges with the following commands:

^hrcrit 0 65 (This will set the default value to 65%)
0 is for default, this is the Target defined in the Heal Rotation (^healrotationsettarget <this guy>)
1 -4 are for the armor classes (1 Cloth, 2 Leather, 3 Chain, 4 Plate)

^hrsafe 0 95 (This will se the default value to 95%)

When you hit the Crit threshold, Fast Healing will kick in (if you have it turned on), Anything about the Safe value and the Bot will ignore you.

Note sure about modifying spells cast. They seem to can't the best they can given the level they are. There might be a table in the database to tweak this, but I pretty much run them as-is right at the moment.

Hope that helps a little. Uleat updated the Wiki for the Bot Heal Rotation pretty recently. Should be able to guide you through some of the other commands.

http://wiki.eqemulator.org/p?Heal_Ro...--Bot_Commands
Reply With Quote
  #30  
Old 12-11-2016, 01:39 PM
Meddera
Sarnak
 
Join Date: Nov 2016
Posts: 28
Default

This is the heal rotation safe and critical ranges. They do not work due to the 95% issue. So if I set the safe range to 100% for my plate wearing warrior the cleric will start a healing loop. He will not stop because I have told him 100% is the target for a heal.

The problem is when I adjust this down to ANYTHING below 95% it is ignored due to the above bot code I posted. The code is telling the bot, that if the character is a warrior class it should cast a healing spell anytime the character falls to 95% health. This code will completely bypass anything the heal rotation is telling it to do. I have tried messing with all of the hr settings and everything I could think of, but that 95% bot code supersedes all.

Obviously this does not make sense and makes healing bots in their current code worthless. So I have tried to go and manually install my server, not using the installer so that I can make some changes to the code myself, but I have run into problems and have posted them in the server forum but it seems the support is lacking these days for manual installation.
Reply With Quote
Reply

Thread Tools
Display Modes

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:29 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