EQ2bot not pulling properly

godfetish

Active Member
Ok, to start, I get EQ2Bot to work fine when I set it to home point or when I set up a camp and pullpoint that are the same. Both seem to work similarly and other than awaiting respawns within a small range it works. I do have to limit scan range to within pull distance of 35 for my spell because the bot will target something out of pull range (say 40-50) away an try as he may attempt to pull, getting target out of ranges over and over occasionally. It will give up after a couple tries sometimes if something else appears nearby. Seems something is wrong in the move to pull range...wherever that is.

The real problem is when I setup a camp and multiple pull points or a single camp with a long path to a pull point. The character will pull everything within range of the nearest camp and sometimes follow a ways toward a pull point but will eventually run dry of spawns. Once this happens it will just stop and await spawns. Sometimes this will trigger it to wander to a pull point, but usually not. It gets in that spawn loop and stays. I've never had it successfully run from waypoint to waypoint like one would assume and pulling everything within range then moving to the next waypoint.

The third issue is that sometimes the bot will think it has something targeted and attempt to pull, but there is nothing there resulting in No Eligible Target errors, how hard is it to impliment a rescan for targets if that error is seen? I see can't see target and out of range coded into the pull routines(not that it ever strafes or anything to attempt a repull, but I digress)...is chat analysis broken too?

Last night I setup the bot and it gained 20% experience, the rest of the night it sat there attempting to cast on an imaginary target...for 4 or 5 hours.
 
Last edited:

Pygar

EQ2Bot Specialist
Not moving to pull range when finding something in scan range is indicative of not having your movement keys set correctly. Your camp/pull problems may be related as well.

Look at likes 34-38ish of eq2bot.iss and verify your movement keys are correct.

If you are playing in an area with lots of obstacles, I recommend setting your pull range lower. The bot will get stuck on trying to pull a target that it can't get line of sight on. It does refresh the target list, but it will always attempt to acquire the nearest target.

Chat Analysis.... I wouldn't say the bot ever did this. However, yes there are a few triggers the bot will respond to, however most of them have been commented out.
 

godfetish

Active Member
Haven't had the bad pulling since I changed line 1416 in eq2bot.iss to:

Code:
if ((${PathType}==2 || ${PathType}==3 && ${pulling}) || ${PathType}==4) && ${Target.Distance}>${PullRange} && ${Target.Distance}<${ScanRange}
The Target.Distance was never being applied sometimes I think, causing the pull situation where the mob was within scan range, but not within pull range.
 

tomato

Active Member
I have had the same problems but when I tried using this Line fix, the script breaks and crashes, any other suggestions for setting up better pathing?
 

godfetish

Active Member
Wel, it all really depend on the version of eq2bot.iss you have...depending on updates, it may or may not be line 14xx...anyway it's 1415 as per the SVN right now, and it is already fixed.
 

Pygar

EQ2Bot Specialist
Oh yeah, this was fixed in a version I pushed this morning. As well as a couple other misc problems, er features!
 

godfetish

Active Member
In another fix, I have switched around the pull order for autopulling. Before, when you started the script, or after every kill, the autopuller would take off toward the next waypoint and then search for a mob to pull. This often put the character into a dangerous situation, by possibley moving into a group of non-assisting mobs.

Anyway, by changing the order of the if statements it is an easy fix. It still may overrun or move after a pull, but it's not moving then pulling now. I would like to get it to the point where when it autopulls, it will stand in one spot until everything is range is killed, then it will move to the next waypoint. This is just the first step and I will work on it a little more once my 2 chars are 70 in a day or two - this helps alot because weak mages can't risk running into a group of mobs like it was doing. Much safer now. This snippet is from around line 468:

Code:
		if ${AutoPull}
		{
			if ${Mob.Detect} || ((${Me.Ability[${PullSpell}].IsReady} || ${PullType.Equal[Pet Pull]} || ${PullType.Equal[Bow Pull]}) && ${Me.ToActor.Power}>${PowerCheck} && ${Me.ToActor.Health}>${HealthCheck})
			{
				if ${PathType}==4 && !${Me.InCombat}
				{
					if ${EQ2Bot.PriestPower}
					{
						call Pull any
						if ${engagetarget}
						{
							wait 10
							if ${Mob.Target[${Target.ID}]}
							{
								call Combat
							}
						}
					}
				}
				else
				{
					if ${EQ2Bot.PriestPower} || ${Mob.Detect}
					{
						call Pull any
						if ${engagetarget}
						{
							call Combat
						}
					}
				}
			}
			if ${PathType}==2 && (${Me.Ability[${PullSpell}].IsReady} || ${PullType.Equal[Pet Pull]} || ${PullType.Equal[Bow Pull]}) && ${Me.ToActor.Power}>${PowerCheck} && ${Me.ToActor.Health}>${HealthCheck} && ${EQ2Bot.PriestPower}
			{
				PullPoint:SetRegion[${EQ2Bot.ScanWaypoints}]
				if ${PullPoint}
				{
					pulling:Set[TRUE]
					call MovetoWP ${PullPoint}
					EQ2Execute /target_none

					; Make sure we are close to our home point before we begin combat
					if ${Math.Distance[${Me.X},${Me.Z},${HomeX},${HomeZ}]}>5
					{
						pulling:Set[TRUE]
						call MovetoWP ${LNavRegionGroup[Camp].NearestRegion[${Me.X},${Me.Z},${Me.Y}].ID}
						pulling:Set[FALSE]
					}
				}
			}
			if ${PathType}==3 && (${Me.Ability[${PullSpell}].IsReady} || ${PullType.Equal[Pet Pull]} || ${PullType.Equal[Bow Pull]}) && ${Me.ToActor.Power}>${PowerCheck} && ${Me.ToActor.Health}>${HealthCheck} && ${AutoPull} && ${EQ2Bot.PriestPower}
			{
				pulling:Set[TRUE]
				if ${CurrentPOI}==1
				{
					call MovetoWP ${LNavRegionGroup[Start].NearestRegion[${Me.X},${Me.Z},${Me.Y}].ID}
				}
				elseif ${CurrentPOI}==${Math.Calc[${POICount}+2]}
				{
					call MovetoWP ${LNavRegionGroup[Finish].NearestRegion[${Me.X},${Me.Z},${Me.Y}].ID}
				}
				else
				{
					call MovetoWP ${LNavRegion[${POIList[${CurrentPOI}]}]}
				}

				EQ2Execute /target_none
			}
		}
 
Top Bottom