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
  #1  
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
  #2  
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
  #3  
Old 12-12-2016, 10:24 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

All of the programs and source links are on this wiki page: http://wiki.eqemulator.org/p?Complet...Guide&frm=Main

(Maps, quests, etc... can be gotten from the eqemu_server.pl script when running manually - which, you probably already have.)


The updating that occurs when you run world is for the database.

It checks what version the binaries are at, and then updates accordingly.

The only time you really need to worry code changes are when you pull in new server code to compile - stash save is a wonderful tool.

It is possible to lose database changes when pulling in new server code due to a version update - or in super rare cases, you change something that triggers an already
applied change again.

(There is a tool in the server script that will back-up your current database - fairly quickly..)


TortoiseGit is a wonderful tool for menu-driven git activities.
__________________
Uleat of Bertoxxulous

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

So I just went poking around again and found the bot.cpp files in EQ/Source/Zone.

If I make a change using notepad++ to one of these files do I need to do the cmake and visual studio piece again? If so, anything else?

Sorry I am completely unfamiliar with any of this... Surprised I have made it this far to be honest.
Reply With Quote
  #5  
Old 12-12-2016, 10:53 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

The only time cmake needs to be re-run is if you add/remove files (or change design-time options - like enabling bots.)

You can actually make changes in Visual Studio and have access to "Intellisense" - an IDE-based syntax checker.

Once you make your changes, recompile everything and then copy the new binaries over to your server folder. This is the step that downloading pre-built binaries supercedes.


EDIT:

Most people find that running a stable version of the master code, and not updating, is easiest. That way, they can make all the changes that they want and not have to worry about keeping up with the latest changes.

I'm fairly certain that the current code (as of today) is stable enough to do this.

Once you get familiar with making code changes and stashing/merging, you can look at pulling in updates and managing them.
__________________
Uleat of Bertoxxulous

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

Ok so I made one change to bot.cpp compiled it, did a build on zone and moved the zone file to the server folder. When I tried to get in game it says zone not available. Now I did save the last zone file replaced it and everything worked again.. Do I need to replace all of the files for a change? Not just zone?
Reply With Quote
  #7  
Old 12-12-2016, 11:36 PM
Uleat's Avatar
Uleat
Developer
 
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
Default

It's a good idea to recompile all projects by selecting 'build' on the solution name.

That help's ensure locations/offsets all match up

I always copy everything each time I compile..haven't had any mismatch issues.
__________________
Uleat of Bertoxxulous

Compilin' Dirty
Reply With Quote
  #8  
Old 12-13-2016, 12:07 AM
Meddera
Sarnak
 
Join Date: Nov 2016
Posts: 28
Default

Quote:
Originally Posted by Uleat View Post
It's a good idea to recompile all projects by selecting 'build' on the solution name.

That help's ensure locations/offsets all match up

I always copy everything each time I compile..haven't had any mismatch issues.
Ok so I noticed when I clicked 'Build ALL' if they didn't all update I don't need all. The last change I made only updated zone so I was able to only move that one in.

So I did a couple of tests. First I changed the 95% I found to 30% and nothing seemed to change. I then went in and changed where it said 'Cleric' to 'Paladin' and 'Paladin' to 'Cleric', essentially switching their roles. I then used what you built and turned the Clerics melee attack off at level 1 as to not muddle up my test.

This made a difference. He actually casted some offensive spells and did not start healing me until I dropped below 50%. This is how the Paladin typically behaves. The one issue is he still healed himself immediately if the 95% threshold was breached.

So I made some quick changes and already I am seeing an improvement. I will probably continue to tinker with it until I get the Cleric bot somewhat usable.

Thanks for the nudge if not the shove to get me where I could figure some of this stuff out. I don't plan on learning to write code, but I think just a couple changes here and there with trial and error can get this to a better place. At least for my uses.
Reply With Quote
  #9  
Old 12-13-2016, 12:22 AM
Meddera
Sarnak
 
Join Date: Nov 2016
Posts: 28
Default

Ok one last thing I noticed. The Paladin and Ranger and Beastlord are actually set up so much better. The "stance" is used in determining when the heal needs to occur. For example, at balanced they will heal at 50%, but at efficient they heal at 25%. These numbers of course can be changed, and now that I switched Paladin with Cleric I am basically where I need to be and can make changes on the fly by just switching his stance which is exactly what I wanted.

The only thing next would be to stop him from healing himself so quickly, but the main issue is resolved. I really think Clerics were intended to be the same way and someone quit in the middle or made a change just for a big raid or something and either never changed it back or we ended up with older code.


Here is the code I am referring to and where it says "Cleric" initially said Paladin.


if( botCasterClass == CLERIC || botCasterClass == BEASTLORD || botCasterClass == RANGER) {
if(caster->HasGroup()) {
Group *g = caster->GetGroup();
float hpRatioToHeal = 25.0f;
switch(caster->GetBotStance()) {
case BotStanceReactive:
case BotStanceBalanced:
hpRatioToHeal = 50.0f;
break;
case BotStanceBurn:
case BotStanceBurnAE:
hpRatioToHeal = 20.0f;
break;
case BotStanceAggressive:
case BotStanceEfficient:
default:
hpRatioToHeal = 25.0f;
break;
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:58 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 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3