VGBot --Beta testers wanted

verythaiguy

Active Member
I looked over the whole script and it looks awesome, but I didn't see any place of when to rest and the food we're eating, etc.?
 

abbadon

Active Member
energy, endurance cost etc..

Kram,

I think everywhere you have a condition check like this:

Code:
{Me.Ability[${Chain1}].EnduranceCost}<${Me.EndurancePct}
This applies to Energy too.

You need to change {Me.EndurancePct} to {Me.Endurance} otherewise anything with a high cost will never fire. I haven't fixed all of the references in mine but especially in the nuke section none of them were firing until I changed it.

Also, unless I missed it I didn't see where you check for the minimum energy for pulling so I tacked it onto what you had already for health and endurance:

Code:
if "${Me.HealthPct}<${RequiredHP} || ${Me.EndurancePct}<${RequiredEndurance} || 

${Me.EnergyPct}<${RequiredEnergy}"
		{
			call AvoidAdds 20
			return
		}
I haven't tested this last change yet or finished upating the other. Gonna do it right after dinner but that's what it looks like so far.

Also, it looks like the CheckforChains function only handles endurance based chains. There are energy based ones as well.

I haven't had a chance to look in depth and verify what I see entirely so please forgive me if I misunderstand how something works.

Abbadon
 
Last edited:

Kram337

Active Member
Verythaiguy;
You're right I dont have any food eating in the script. My char never needed it to solo efficently. But I guess not every class has heals. I'll add this to the list of future features.

Tsumari;
Sweet, let me know how it goes. I'm considering changing the looting function to work like you have in your pally script. But just haven't done it yet. I'll credit you when I do :)

Abbadon;
Excellent observations, I'll fix these things right now and repost. I thought I added energy checks before pulilng but I'll take a second look.

Also for energy chains, I can probably get away with using the same function, just run a check on energy costs. I'll address all the other issues too.

Thanks for the support guys,
~Kram
 

abbadon

Active Member
krambot

Kram,

I got the code worked out well enough so the script skins any corpse that is harvestable and when it runs out of mobs to kill it will use the same radius and pull context to find and harvest resources. It still needs some work to make it generic enough for the bot and probably could use a logic brushover but it does work very well for me.

I will paste it up or send it to you after work today if you are around.

Abbadon
 

gonemental

Active Member
Suggestion

Can you move the settings to an INI so that we don't have to re enter them after every update? Other than that it works great. I did discover a bug last night. Where the offensive target will get set to (mob name) but the mobs hps are at 0%. The script interpets this as having a mob already pulled and will get stuck. You are able to kill other things when this happens. There was no way to fix it other than relogging that I could figure out. (running endscript would not affect it) This seems like a Vanguard coding issue to me. But just wanted to bring it up.

I wanted to add that I was running it on a 13-14 cleric killing lvl 15 mobs without any issues.
 
Last edited:

abbadon

Active Member
harvesting

It follows the same rules as the pulling of the mobs with the mobs being priority. If no mobs are detected it will attempt to find a harvesting resourse in the same area. I reap so I have it set for jute but that could be converted to just a variable and defined in the setup variable section. There is also a bool for turning it off so if you don't want to harvest you don't have to. I have it working for me as a skinner and reaper but it wouldn't take much to modify it for general or specific purposes.

With that said I am turning over what I have done so far to Kram for possible inclusion into his bot. If he chooses to or not that is his call. If need be I can make the snippits available if he chooses not to integrate the functionality but I won't step on anyones development toes. What I have done is not a seperate function. It is very integrated and utilizes all of the avoid routines that hunting mobs do so unless it becomes supported by Kram you would be modding it at your own risk and support might be limited although I would help as best as I can.

Abbadon
 

Kram337

Active Member
Abbadon,

Can't wait to see what you've got. I'm definetly interested in adding as much helpfull functionality to this bot as possible. So send the code over that you've modded and I'll get to work on it tonight when I return from doing some work.

~Kram
 

jackwade

Active Member
Is there a way to reduce the wait time between casts? The bot is waiting too long between nukes and heal checking. I havent been able to successfully run it due to this (bloodmage, very weak. need to fight quickly and cast despoil's immediately).

Does anyone have a snippet to make the bot activate scarlet ritual at a certain hp?
 

jackwade

Active Member
Another bigger issue. Bot kills one mob then stands around. Does not roam or proceed to nearest available mob.
 

tsumari

Active Member
Jackwade - does it resume fighting if the corpse of the target dissappears, or does it sit still indefinitely?

--
The blood mage healing part would be pretty easy to fix, the heal checking function would just need to be called more often. You may want to do that yourself on your copy since for other toons it may be excessive to check it after every attack.

Tsumari
 

jackwade

Active Member
tsumari said:
Jackwade - does it resume fighting if the corpse of the target dissappears, or does it sit still indefinitely?

--
The blood mage healing part would be pretty easy to fix, the heal checking function would just need to be called more often. You may want to do that yourself on your copy since for other toons it may be excessive to check it after every attack.

Tsumari

Just did some more testing. 2 things.

Bot has intelligence issues. It skips heal checks if ALREADY in the process of casting a spell. With 3 second cast time spells this makes it very difficult to survive any encounter. Could someone please help with this? I just need the bot to cancel spell in progress and cast heal if hp < certain amount. Or would it be better to add heal checks for every 1% drop in hp after a certain amount? adding 70 heal checks.


Second, the bot sits in basecamp, however it will continually pull mobs. It does not rest when mobs are in pull range (not aggro range). It will kill itself by continuously pulling everything in range, as long as it can cast. Any ideas on why the bot isnt resting at all?
 

jackwade

Active Member
tsumari said:
Jackwade - does it resume fighting if the corpse of the target dissappears, or does it sit still indefinitely?
Will test that shortly. That is a good point. Still doesn't solve the fact the bot will pull anything in pull range without resting.

Why is rest period being overrided? And how can I fix it?



Update: to answer your question tsumari, the corpse can be disappeared and the bot still will not move on. The only way the bot continues to hunt is if something is in pull range. The bot sits at basecamp and will not roam or move to targets in the vicinity.
 
Last edited:

Kram337

Active Member
Gonemental:
A do-not loot list would be nice I suppose. I'm not sure how to scan thru the loot window for item names though. Are you able to do that? if so a copy of the code to me and I could integrate it. I've only been scripting for 3 weeks so I'm kinda new to all this.

The issue were mobs show 0% hp even before you pull them is a VG issue. To keep from kill stealing, and HP check was added before pulling. As you stated, you have to /camp and come back into the game to fix this issue. Least until Sigil fixes the error.

An ini file would be an excellent way to load the abilities. I was told however, that we can't use ini files. Sounds like that may not be entirely accurate though. I'll look around on lavish's wiki.


Jackwade:
Hey Jackwade, when you start your script make sure it states Version 0.3. Previous to that version the bot didn't check energy before pulling.

It sounds like you just need to set the heal percentages higher so you heal between attacks. I'm not familar enough with bloodmage to say, but is it possible the class is more designed for kiting? wasn't sure if you got snare or not.

Abbadon:
Lets have that harvesting code, I've been adding stuff to the script, fixing issues and such, but I dont want to do too much before I get your copy since I have to mend the two versions together.

So far I've gotten reports from a number of people that this is working pretty well for them. Classes that I've heard of: DK, Cleric, Necro, Ranger, Paladin, Disciple, and monk.

Keep the info coming in and I'll keep working out the issues. Expecting to release another update soon.
 

Kram337

Active Member
jackwade said:
Update: to answer your question tsumari, the corpse can be disappeared and the bot still will not move on. The only way the bot continues to hunt is if something is in pull range. The bot sits at basecamp and will not roam or move to targets in the vicinity.
How close are the mobs that your char is ignoring. What level are they in comparison to you? How often does this happen? Every pull? And again, what version are you running?

~Kram
 

jackwade

Active Member
* Version 0.3 (beta) -- 2/25/2007


Not sure what the issue is then. The energy check must not be ultimate. Something is telling it to pull everything in range regardless of energy. I am sure of this.

Any idea on my other issue Kram? The bot returning to basecamp and not roaming/seeking mobs in the vicinity?
 

jackwade

Active Member
Kram337 said:
How close are the mobs that your char is ignoring. What level are they in comparison to you? How often does this happen? Every pull? And again, what version are you running?

~Kram

Define "ignoring" more?

What I mean is, the bot will only attack mobs in its spell range (25 feet). If a mob is outside its spell range, it will not target/seek it. It will sit in basecamp and only attack respawns in its 25 foot range. I can describe it in greater detail if you need to me.

EDIT: Im sorry i didnt respond to all your questions. The mobs are within attackable level according to the bot. This happens immediately. I run the bot within spell range of a mob. It will kill it. Then it will proceed to immediately kill any other mob in spell range without resting. After doing this, it returns to basecamp and does nothing but wait for mobs to come into its spell range. It doesnt seem to be seeking anything in the vicinity as I said. Someone want to argue otherwise? Im sure it isnt just me that this is happening to.


My pull variables are set to as follows:

;Pulling Variables
variable int AllowedRoaming=5500
variable int HuntRoaming=1000
variable int PullDistance=25
variable int PullAttempts=0
variable int MobAgroRange=13
variable int MaxLevel
variable int MinLevel
variable bool Pulled=FALSE
variable int RequiredHP
variable int RequiredEndurance
variable int RequiredEnergy
 
Last edited:

lazymir

Active Member
krambot issue

hi

using krambot 3.0 beta , works beautifuly with my cleric.

HOWEVER there is 1 issue, which i cant seem to find any other threads on, which is this

;Pulling Variables
variable int AllowedRoaming=1500
variable int HuntRoaming=10
variable int PullDistance=5
variable int PullAttempts=0
variable int MobAgroRange=13
variable int MaxLevel
variable int MinLevel
variable bool Pulled=FALSE
variable int RequiredHP
variable int RequiredEndurance
variable int RequiredEnergy

;Base Camp variables, ranger will return to this point between kills
variable int BaseCampX=${Me.X}
variable int BaseCampY=${Me.Y}


ok my level of scripting/coding/whatever this is knowledge is Poor at best. But i am gathering that the "allowedroaming" is for the distance the character will wander in any given direction for X amount of points, until it reaches that amount of space traveled from the Base Camp origin point, at which point, theoretically the character should flip a 180 and start heading back, all the while killing mobs it encounters.

Am i corret so far?

Assuming I am, the problem is.. no matter what values i set the ALLOWEDROAM too , my poor little character just keeps going.... and going... and going... eventually encountering mobs in quanties and levels to great for him. He never reaches a point where its like.. ok reached max distance from home point of origin, turning around.

Anyone else had this problem? And can anyone shed some light on my situation.

Thanks
 

jackwade

Active Member
lazymir said:
Assuming I am, the problem is.. no matter what values i set the ALLOWEDROAM too , my poor little character just keeps going.... and going... and going... eventually encountering mobs in quanties and levels to great for him. He never reaches a point where its like.. ok reached max distance from home point of origin, turning around.

Anyone else had this problem? And can anyone shed some light on my situation.

Thanks

I wish I had your problem. My bot isn't roaming at all.
 

jackwade

Active Member
Im looking for suggestions on why my bot refuses to roam or close distance with mobs?

I can set pull distance to 10, and my bot just stands there at base camp failing to pull anything because its out of range. It will not close the distance to mobs. It will not wander from basecamp. Again, it simply does not seek mobs in any way shape or form. It is immobile.

What is wrong? Please help with some analysis.



Still no dice. Bot will not roam after "failed pull, no mobs in range, returning to basecamp". It will just sit in basecamp repeatedly trying to pull, but obviously nothing is in range because it cleared the area around it. I guess ill have to wait for the .net bot with waypoint setting commands.

This is the code to move to target.

if "${Me.Target.Distance}>24 && ${Me.Target.Distance}<${PullDistance} && !${Me.Target.Owner(exists)} && (!${Me.TargetHealth}<100)"
{
call DebugIt "D. Moving in to pull range"
call movetoobject ${Me.Target.ID} 24 8
do
{
wait 1
}
while ${Me.Target.Distance}>24
}

Update: I fixed it by increasing my pull distance to 250+. This obviously isnt the intended function of pull distance. Am I wrong? Not sure if my bot wanders yet. But it will close distance now with that tweak.

However I really need the "rest" code brushed up. My bot will not rest before pulling again. If its in range, it attacks it. This is confirmed. There is no energy check. Bot will not rest under any circumstance or variable. Please look into this.

Could anyone post how to make rest code ultimately respected? Something is wrong with this script where resting isnt being checked after every kill. How can I make resting the ultimate check BEFORE and AFTER each kill/pull.
 
Last edited:

abbadon

Active Member
pull distance

Why is your pull distance so low? If you look at the pawn stratement in the pull routine you will notice that the options [radius, ${PullDistance)]. This part of that statement means it will only return mobs you are basically standing on top of.


PullDistance defines how wide an area you want to search for targets. I have mine set for 80 and I have run for hours without a hitch including resting between fights for energy.
 

abbadon

Active Member
Resting

Are you dure you are running the latest script? Did you set your variables at the very bottom to tell it how much perccent for HP, Endurance and Energy before pull?

This check takes care of that:

Code:
if "${Me.HealthPct}<${RequiredHP} || ${Me.Endurance}<${RequiredEndurance} || ${Me.Energy}<${RequiredEnergy}"
		{
			echo "Medding-up. You're not yet ready to pull again"
			wait 10
			call AvoidAdds 20
			return
		}

These variables control it:

Code:
;Set the required amounts of HP, End, and Energy. You'll med/heal to these amounts between fights
	RequiredHP:Set[90]
	RequiredEndurance:Set[75]
	RequiredEnergy:Set[90]
 

jackwade

Active Member
abbadon said:
Are you dure you are running the latest script? Did you set your variables at the very bottom to tell it how much perccent for HP, Endurance and Energy before pull?

This check takes care of that:

Code:
if "${Me.HealthPct}<${RequiredHP} || ${Me.Endurance}<${RequiredEndurance} || ${Me.Energy}<${RequiredEnergy}"
		{
			echo "Medding-up. You're not yet ready to pull again"
			wait 10
			call AvoidAdds 20
			return
		}

These variables control it:

Code:
;Set the required amounts of HP, End, and Energy. You'll med/heal to these amounts between fights
	RequiredHP:Set[90]
	RequiredEndurance:Set[75]
	RequiredEnergy:Set[90]

I saw that check and those variables. It is being ignored and appears to only be looking to satisfy one of those variables. I.e. if HP is fine, energy doesnt matter.

The check says to look at HP and energy. If one is satisfied it continues. Correct?
So I tried changing the line to && to see if it would quit stopping at the HP check. Trust me the energy check as it stands is NOT working.

The bot will cast a heal, once the HP is checked. It forgets about energy and starts pulling. I changed the || to &&. Is that a fix?
 

Kram337

Active Member
Hey Jack,

Your non-roaming issue is because your variables are set incorrectly, as you found out. The script comes with the following:
variable int AllowedRoaming=5500
variable int HuntRoaming=40
variable int PullDistance=80

These variables weren't intended to be modified thats why they're set at the top and not at the bottom with all the other "class defined" variables.

Allowed roaming 5500 means you'll always return to within 55m of your basecamp after each fight. Set this smaller if you want to stay closer to home, larger if you dont care about roaming a lot.

HuntRoaming actually isn't even used and is removed from the script in 0.4

Pull Distance is the distance you'll allow yourself to target a mob. So if you set this to 25 you'll pretty much stay at basecamp. If you set this to 80 (the default) you'll cover a pretty broad area.

Though its' hard to find good places to run this bot in because you run out of mobs too fast and waiting for repops is usually a pretty big time sync. If you look around enough you can usually find a really nice place to setup camp and not run out of mobs.

But because that takes time to go searching for a good spot, I'm going to add functions (hopefully tonight) to allow you to pick not only one base camp but several patrol points, locations to which you'll travel when one camp is out of mobs.

As for your energy issue. Look at the pull sub and find the line that states:
if "${Me.HealthPct}<${RequiredHP} || ${Me.Endurance}<${RequiredEndurance} || ${Me.Energy}<${RequiredEnergy}"

It's about the 5th If statement into the function. There is an error in this line. It'll be fixed int he version I plan on releasing tonight/early morning. However if you need it fixed right now, change the Me.Energy to say Me.EnergyPct

It's casesensative mind you =)

Sorry for the bug, but thanks for helping me find and eliminate another issue!

Oh and on a side note. Go to the bottom of the script and be sure you raise the required energy variable. Its default is 25 (for my ranger). You might wanna bump that up a lot!

~Kram
 

lazymir

Active Member
pull distance

abbadon said:
Why is your pull distance so low? If you look at the pawn stratement in the pull routine you will notice that the options [radius, ${PullDistance)]. This part of that statement means it will only return mobs you are basically standing on top of.


PullDistance defines how wide an area you want to search for targets. I have mine set for 80 and I have run for hours without a hitch including resting between fights for energy.

the numbers were just random, as i figured if i put in XX, to represent variable, some people might read it and think was really putting in XX as the distance..
i am acutally using the default pull distance of 25 or something.

I understand your point of view, but theoretically, the pull distance has no effect on how the bot should roam. Regardless of mobs present or not, the bot should be running from home base X,Y to allowedroam X,Y and back again. While the bot moves back and forth from these points, he will encounter mobs and kill them.

BUT my bot isnt recognizing Allowedroam X,Y.. hes just running in a straight line for eternity.
 

jackwade

Active Member
Kram337 said:
As for your energy issue. Look at the pull sub and find the line that states:
if "${Me.HealthPct}<${RequiredHP} || ${Me.Endurance}<${RequiredEndurance} || ${Me.Energy}<${RequiredEnergy}"

It's about the 5th If statement into the function. There is an error in this line. It'll be fixed int he version I plan on releasing tonight/early morning. However if you need it fixed right now, change the Me.Energy to say Me.EnergyPct

Thanks very much. Appreciate the help and script. Looking forward to the waypoint implementation, will be great for efficiency
 
Last edited:

Kram337

Active Member
Lazymir,

Glad to hear it's mostly working out for you. Interesting issue you have. Looks like we have extremes of both, one guy's bot runs too far the other doesn't run anywhere =)

In my last post I explained what some of these key pulling variables mean. You've got them set very small so you acutally shouldn't be going anywhere.

Your settings:
variable int AllowedRoaming=1500
variable int PullDistance=5

This is saying you shouldn't pull a mob unless it's within 5m of you, and to return to at least 15m. Could you open up the moveto.iss script inside your common folder and be sure you're using the 1.1 version.. I'm really not sure what your issue could be.

One thing you could do to help us troubleshoot your issue, find the variable called Verboes (it's the first variable in the script) Set this to TRUE.

Run the script now and watch the console window, it'll be spitting out everything it does there and possibly give you a hint as to why it's not going home.
 

lazymir

Active Member
Kram337 said:
Lazymir,

Glad to hear it's mostly working out for you. Interesting issue you have. Looks like we have extremes of both, one guy's bot runs too far the other doesn't run anywhere =)

In my last post I explained what some of these key pulling variables mean. You've got them set very small so you acutally shouldn't be going anywhere.

Your settings:
variable int AllowedRoaming=1500
variable int PullDistance=5

This is saying you shouldn't pull a mob unless it's within 5m of you, and to return to at least 15m. Could you open up the moveto.iss script inside your common folder and be sure you're using the 1.1 version.. I'm really not sure what your issue could be.

One thing you could do to help us troubleshoot your issue, find the variable called Verboes (it's the first variable in the script) Set this to TRUE.

Run the script now and watch the console window, it'll be spitting out everything it does there and possibly give you a hint as to why it's not going home.
]

k will do right now.

btw, how the hell do i PAUSE or STOP your script.. so far the only way i can end it is by exiting the game all together.
 

Kram337

Active Member
lazymir said:
]
btw, how the hell do i PAUSE or STOP your script.. so far the only way i can end it is by exiting the game all together.
type in the console:
Endscript krambot

or
Ends * (to end all scripts)

I wanna add UI functinality to pause/restart stuff. But that'll have to be later. No idea how to do that yet ;)
 

jackwade

Active Member
Kram just a suggestion to add stability. I think its Antiadd that makes you face the add temporarily. It causes a lot of spell interrupts, sometimes resulting in death if you get caught in a loop. This seems to happen when an add is nearby.
 

Kram337

Active Member
New 1.0 Version

I just posted a new version in the releases forum. It should resolve a number of issues as well as adding a few features. Still plan on adding more functionality, including the suggestions we see on this post.

~Kram
 

gonemental

Active Member
Kram bot

The only problem I have is that the aggro window gets stuck on a mob that is at 0% hps. The mob distance will be at 0 and the direction will always be straight ahead no matter where you move. You can pull and kill another mob manually and it will not fix the window. It will just add the other mob to the list of current aggro mobs untill that mob dies then its back to just the one mob at 0%. This effectively stops the script from functioning no matter how long you wait. Is anyone else having this issue. I know I have brought it up before. I was wondering if anyone may have a work around. The only way I have been able to fix this is to camp and then come back and restart the script.

I am also really looking forward to the harvesting portion mentioned before.
 

lazymir

Active Member
Kram337 said:
I just posted a new version in the releases forum. It should resolve a number of issues as well as adding a few features. Still plan on adding more functionality, including the suggestions we see on this post.

~Kram

the issue is resolved. apparently the pulldistance is really the only thing that matters.

by setting the pull to 80, i now kill mobs and run back to home.

working like a champ now for 18 hours straght :D

kram and people who helped him = the ownage.
 

mamba666

Active Member
I feel kinda dumb but I simply cannot find VGSkin.xml anywhere. I searched the forums. I checked all of my innerspace directories.

I have the krambotui.xml but the vgskin.xml eludes me. The script crashes when it cannot find this file.

Please let me know where I can obtain this ui file.

Ohh I also downloaded the latest ISXVG and it doesn't seem to be in there.

<edit> I found VGskin.xml in vgalarm zip.
 
Last edited:

jackwade

Active Member
Kram real feedback for you:

The bot currently chases mobs when they run. This makes casters get killed. Can you make this script more caster friendly? Casters have no reason to close the distance on a runner. Make a variable to flag as a spell caster.


Also, the bot is not respecting the "pull to basecamp" function. It never pulls to basecamp (which is the first waypoint set).
 
Last edited:

tsumari

Active Member
I've been testing it out, working pretty good.

One thing I think it should do is not just look at the closest mob. If you have no LOS to the closest mob it will freeze up and stare at it until something else wanders closer. In that case, it should either pick a new target (like vgpally does, with code you originally put in anti-add) or continue the patrol path.

Also in reference to the above, isxvg allows you to check to see if you have LOS so that you can skip a certain mob. Hills etc can block LOS but it is worse if you have a bot running near houses or tents.

Also, the bot is casting the pull spell and then immediately rushing at the enemy. IMO, and this can be disagreed with, after the pull is cast successfully the bot should wait about 3 seconds to start combat so that it doesn't run somewhere it shouldn't be.

Also, the bot is not recognizing the return to base variable as another poster had inidicated.

Aside from that though, it is working great on my pally. Its combat ability is about equal to vgpally and the above notes are the only areas I have concern about. Overall much better than the other scripts we have been posting so far. GJ!
 

Kram337

Active Member
jackwade said:
Kram real feedback for you:

The bot currently chases mobs when they run. This makes casters get killed. Can you make this script more caster friendly? Casters have no reason to close the distance on a runner. Make a variable to flag as a spell caster.


Also, the bot is not respecting the "pull to basecamp" function. It never pulls to basecamp (which is the first waypoint set).
Hey Jack,
Get on IRC when you've got a few minutes. I've got a few questions for you about optimizing this for casting classes. I've made assumptions about the casting classes that are wrong and would like to have those things worked out.

Mamba,
Download the newest newest version (1.0a) from the releases thread, it does away with the requirment of VGSkin.

In General,
Yea return to camp wasn't working so I removed the code to get the release of 1.0 out since it fixed a number of other things. I'll try to add it back in in the next update. Basically what the plan for it is that it'll return to the patrol point exactly, after pulling.

In General,
Harvesting should be added soon. Just waiting for Abbadon to get some spare time to add his code to my code. Once he's done that we'll be good to go on that end.

Tsumari,
Going to work on cleaning up the LoS stuff. Before patrol points, checking for LoS meant you would run out of viable mobs because you weren't pulling over/around hills etc. And the terrain effects this SO much. There are some nice, remote, locations, where you wont see many other players, but they're often times "hilly"
I'll work on this. Now that we have patrol points, it's not so bad if you miss a mob here and there cause you can move around a bit more.

Running into attack after you cast your pull ability? You must not have a ${PullFollowup} ability. I'll fix this in the next update.

Thanks again guys for reporting this stuff back to me. Soon enough, most the bugs'll be worked out and we can start working on adding more features.

~Kram
 

Kram337

Active Member
Just a tip for use:
The patrol points aren't currently meant to lead you from one camp, across a continent to some other camp.

I've found that if I set my patrol points to be further away from eachother than my pull distance, then I'll get adds running from one patrol point to another. Now I stop and kill those adds, but it's still more risky.

So for now, try to keep your points close together unless you're in a very mob-sparce area.

And soon I'll either add better agro checking on the the way to patrol points, or just add more patrol points.

~Kram

(I kinda wanted more anyway ;)
 

abbadon

Active Member
harvesting

I was able to complete integrating the harvesting into the new script last night. I ran it and it worked to harvest when I set it to without mobs around. It should do it also once all the mobs are cleared as well. It will also automatically skin mobs once they are harvestable after you loot them.

Once I get home today I should be able to document the code for Kram and paste it up for him. I updated 1.0a so I modified the most recent one.


Kram,

I encountered a small problem which you may already be addressing concerning the line of site issue and moving on. This morning I ran into a situation where there was a mob behind a rock, and another non attackable NPC that I had LOS for. The script just went and tried to attack both of them back and forth and never relented or tried to move. I will look at the code when I get home and see what about it is not updating. Just FYI in case you can look at it and see a way around it.
 

gonemental

Active Member
Heals

I run this script as a cleric and the thing that I run into is that the healing spells never get cast. It will chain cast nukes over and over but never cast a heal even if im at 30% hps and have heals set to go off at 80(small), 60(medium), and 30(big heal).
 

Kram337

Active Member
abbadon said:
I encountered a small problem which you may already be addressing concerning the line of site issue and moving on. This morning I ran into a situation where there was a mob behind a rock, and another non attackable NPC that I had LOS for. The script just went and tried to attack both of them back and forth and never relented or tried to move. I will look at the code when I get home and see what about it is not updating. Just FYI in case you can look at it and see a way around it.
Working on that as we speak actually. I'll have it fixed and in the 1.1 version. Which will also include your harvesting code. So yea post your code up as soon as your home and I'll try to get 1.1 out tonight (late tonight prolly).

Gonemental,
Hmmm that's odd. Mines healing reliably. Double check your heal spells names and be sure they're spelled exactly. If they are, set Verboes to TRUE (first variable in the script) and keep an eye on the console, maybe it'll give you a hint as to why it's mising.
 

bohika

Active Member
It might be a good idea to add a variable for your pull spell range. 24 isn't ideal for all classes :/
 

draken12685

Active Member

The script works very well for my two sorcerer combo. I realize this isnt made for casters solo'in yet, looking forward to the future updates =)

However, if there could be a way for the AFK bot to allow group members to be near you that would be awesome.

Good job Kram ::

Draken
 

Aaronjim

Active Member
Wow, this works very well. I seriously cannot suggest anything(other than big things), I have not encountered any bugs. Used it on a 12 sorcerer, and now am 14 because of the bot. Thanks.

Suggestions:
-Graveyard run.
-Instead of using three points, you could make it use path files?(You could probably use the pather that VGWorkOrder/VGCraftBot uses.)
-Profiles or an INI to make it easier to use on multiple characters.
 
Last edited:

Aaronjim

Active Member
abbadon said:
Your script isn't looting corpses?
I meant that if you died, it would run to your corpse or grave or whatever it's called in this game.

Yeah, I'm sorry 'bout that.
 

Kram337

Active Member
Aaronjim said:
I meant that if you died, it would run to your corpse or grave or whatever it's called in this game.

Yeah, I'm sorry 'bout that.
I don't think the Navigation stuff keeps you free from agro so there is no real safe way to get back to a corpse. Unless you're like lvl 10 or under in which case the mobs are non-agro anyway.

But that luxury fades quickly. If someone knows how to avoid adds while walking over a large area and avoiding adds, I'd love to hear about it.

~Kram
 

gonemental

Active Member
Can you have it /quit out after the 10mins is up after a death? It would even be cool if it was an option on the settings window. I would hate to have multiple deaths because of a mob wondering too close to an altar.
 

Kram337

Active Member
gonemental said:
Can you have it /quit out after the 10mins is up after a death? It would even be cool if it was an option on the settings window. I would hate to have multiple deaths because of a mob wondering too close to an altar.

Version 1.2 has added a few options to the UI, one of them is Quit on Death which will quit the game if you die. Before it quits it spits out your X Y loc and takes a screenshot. In case you dont know where you died when you come back.

So far the options are:
Totally AFK
Quit on Death
Snare Mobs
Harvest
Skin Mobs
Debug Mode

I'd like to have places on there where you can change aggro range, allowed roaming, pull range, and other things. But I'm not quite that good with the UI stuff yet. I'll work on it.

Any other ideas for options you want to change at run time?

~Kram
 

duken666

Active Member
Great job m8, I really love this bot.

I was just wondering if you could add 2 more things.

First it would be very nice to be able to have more Waypoints since the more waypoints we`d have the better scripts we could write. Since triangle/line routes are not very handy. With like 10 Waypoints it would be a lot easyer to setup very smooth paths that the character can run and farm stuff. Perhaps add an option so people can choose how many waypoints they want to use 3 6 10 or 15 for example.

Second thing would be an option to save Waypoints into an xml file so we could have collections of Waypoint scripts and share them among the peeps here.

Anyways thx a lot for this tool it`s awesome.

Cheers m8
 

IeU

Active Member
Kram337 said:
Version 1.2 has added a few options to the UI, one of them is Quit on Death which will quit the game if you die. Before it quits it spits out your X Y loc and takes a screenshot. In case you dont know where you died when you come back.

So far the options are:
Totally AFK
Quit on Death
Snare Mobs
Harvest
Skin Mobs
Debug Mode

I'd like to have places on there where you can change aggro range, allowed roaming, pull range, and other things. But I'm not quite that good with the UI stuff yet. I'll work on it.

Any other ideas for options you want to change at run time?

~Kram
to not stop the bot when a player gets near u
 

Truwenswg

Active Member
just trying to figure out how to get this to attack non aggro mobs such as Turtles or crabs or something...help.

-Truwen
 

duken666

Active Member
Hmm ok I`ve been trying to add a few more Waypoint buttons but somehow I`m stuck. My first goal was to add just 1 more Waypoint. For some reason the char keeps running into a direction because he cant find the echo of the previous post.

Please Kram could you give me a hint on how to add more waypoints ... here is the code I edited:


||||||FROM KROMBOT.ISS||||||

function Roaming()
{
declare B1 int local
declare P2 int local
declare P3 int local
declare P4 int local

B1:Set${Math.Distance${Me.X},${Me.Y},${BaseCampX},${BaseCampY}]}]
P2:Set[${Math.Distance[${Me.X},${Me.Y},${Patrol2X},${Patrol2Y}]}]
P3:Set[${Math.Distance[${Me.X},${Me.Y},${Patrol4X},${Patrol4Y}]}]
P4:Set[${Math.Distance[${Me.X},${Me.Y},${Patrol6X},${Patrol6Y}]}]

call DoEvents
call DebugIt "D. echo Roam Dist: ${B1}, ${P2}, ${P3}, ${P4}"
call DebugIt "D. echo Last Patrol ${LastPatrol}"

if "${B1}<${P2} && ${B1}<${P4}"
{
;Return move to basecamp
echo Close to base camp, returning to patrol 1
call moveto ${BaseCampX} ${BaseCampY} 300
CurrentPatrol:Set[1]
}

if "${P2}<${B1} && ${P2}<${P3}"
{
if "${LastPatrol}==2"
{
call moveto ${Patrol2X}${Patrol2Y} 300
CurrentPatrol:Set[2]
}

if "${LastPatrol}==4"
{
call moveto ${Patrol2X} ${Patrol2Y} 300
CurrentPatrol:Set[3]
}
}

if "${P3}<${P2} && ${P3}<${P4}"
{
if "${LastPatrol}==4"
{
call moveto ${Patrol4X} ${Patrol4Y} 300
CurrentPatrol:Set[2]
}

if "${LastPatrol}==6"
{
call moveto ${Patrol4X} ${Patrol4Y} 300
CurrentPatrol:Set[3]
}
}




if "${P3}<${P2} && ${P3}<${P4}"
{
;move to p4
call moveto ${Patrol6X} ${Patrol6Y} 300
CurrentPatrol:Set[4]
}





call DoEvents

if "${CurrentPatrol}==6"
{
LastPatrol:Set[1]
call moveto ${BaseCampX} ${BaseCampY} 300
return
}

if "${CurrentPatrol}==5"
{
LastPatrol:Set[6]
call moveto ${Patrol2X} ${Patrol2Y} 300
return
}

if "${CurrentPatrol}==4"
{
LastPatrol:Set[5]
call moveto ${Patrol3X} ${Patrol3Y} 300
return
}

if "${CurrentPatrol}==3"
{
LastPatrol:Set[4]
call moveto ${Patrol4X} ${Patrol4Y} 300
return
}
if "${CurrentPatrol}==2"
{
LastPatrol:Set3]
call moveto ${Patrol5X} ${Patrol5Y} 300
return
}
if "${CurrentPatrol}==1"
{
LastPatrol:Set[2]
call moveto ${Patrol6X} ${Patrol6Y} 300
return
}

}


!!!!This part is messy... could you corret the wrong sections? Also I dont understand what the IF condition is fore at P2, since P1 and P3 dident have an IF condition at the beginning.



!!!!!!!THE XML FILE!!!!!!!!!!!

<button name='SetBaseCamp'>
<X>10</X>
<Y>10</Y>
<Width>110</Width>
<Height>20</Height>
<AutoTooltip>Click here to change your base camp to your current loc</AutoTooltip>
<Text>Set Patrol Point 1</Text>
<OnLeftClick>
echo Patrol point 1 Set!
Script[KramBot].Variable[BaseCampX]:Set[${Me.X}]
Script[KramBot].Variable[BaseCampY]:Set[${Me.Y}]
</OnLeftClick>
</button>

<button name='SetPatrol1'>
<X>10</X>
<Y>32</Y>
<Width>110</Width>
<Height>20</Height>
<AutoTooltip>Click here to set patrol point 2</AutoTooltip>
<Text>Set Patrol Point 2</Text>
<OnLeftClick>
echo Patrol Point 2 Set!
Script[KramBot].Variable[Patrol2X]:Set[${Me.X}]
Script[KramBot].Variable[Patrol2Y]:Set[${Me.Y}]
Script[KramBot].Variable[Patrol3X]:Set[${Me.X}]
Script[KramBot].Variable[Patrol3Y]:Set[${Me.Y}]
</OnLeftClick>
</button>

<button name='SetPatrol2'>
<X>10</X>
<Y>54</Y>
<Width>110</Width>
<Height>20</Height>
<AutoTooltip>Click here to set patrol point 3</AutoTooltip>
<Text>Set Patrol Point 3</Text>
<OnLeftClick>
echo Patrol Point 3 Set!
Script[KramBot].Variable[Patrol4X]:Set[${Me.X}]
Script[KramBot].Variable[Patrol4Y]:Set[${Me.Y}]
Script[KramBot].Variable[Patrol5X]:Set[${Me.X}]
Script[KramBot].Variable[Patrol5Y]:Set[${Me.Y}]
</OnLeftClick>
</button>

<button name='SetPatrol3'>
<X>10</X>
<Y>98</Y>
<Width>110</Width>
<Height>20</Height>
<AutoTooltip>Click here to set patrol point 3</AutoTooltip>
<Text>Set Patrol Point 3</Text>
<OnLeftClick>
echo Patrol Point 4 Set!
Script[KramBot].Variable[Patrol6X]:Set[${Me.X}]
Script[KramBot].Variable[Patrol6Y]:Set[${Me.Y}]
</OnLeftClick>
</button>


!!!! I think the bug`s here somewhere... !!!!!

Or could you add like 8 Points into the published script? I`d kiss your feet for that.

thx a lot for looking into this.
 

Kram337

Active Member
I've already begun adding more waypoints into the code. I'll release a new version with more available in a little bit. Still working out the kinds while trying not to stop the bot too much since it's double xp weekend :) Went from 31 to 34 so far, haven't really been running it that much though.

Tuche,
The variable that controls "pausing" the bot when players come near is called TotallyAFK. If you've gone over all the variables at the bottom of the script, as suggested, you'll find it. It'll be a checkbox on the UI in the next version.

Truwenswg,
It's supposed to attack NPC and AggroNPC. I might have changed mine to suit a certain location and forgotten to change it back. Either-way find the following statement in the pull Function:
Pawn[AggroNPC,radius,${PullDistance},levels,${MinLevel},${MaxLevel},notid,${Me.Target.ID}]:Target

Change it to say this: Pawn[npc,AggroNPC,radius,${PullDistance},levels,${MinLevel},${MaxLevel},notid,${Me.Target.ID}]:Target

Btw, only difference in the code is the first part that says "npc," .

~Kram
 

bohika

Active Member
The pawn search can also run into some issues if your under lvl 5. This is due to the ${MinLevel} being a negative number.
 

keelo

Active Member
harvesting

So how do I get it to harvest leathers? I didn't notice any options for it but it has had some mention.
 

abbadon

Active Member
Leathers

That code hasn't made it into the production release yet. Next release you will have a SkinMobs=TRUE or FALSE to turn it on and off.
 

Truwenswg

Active Member
Kram337 said:
Truwenswg,
It's supposed to attack NPC and AggroNPC. I might have changed mine to suit a certain location and forgotten to change it back. Either-way find the following statement in the pull Function:
Pawn[AggroNPC,radius,${PullDistance},levels,${MinLevel},${MaxLevel},notid,${Me.Target.ID}]:Target

Change it to say this: Pawn[npc,AggroNPC,radius,${PullDistance},levels,${MinLevel},${MaxLevel},notid,${Me.Target.ID}]:Target

Btw, only difference in the code is the first part that says "npc," .

~Kram
Thanks Kram, i saw this and looked atht efile it looks like npc is in there I used the wiki and determined that that means Non agro mobs...the problem is he wont pull them so im not sure whats going on...keep in mind I am level 23 killing level 26's I have the level max set to +4 and min -5. I will give it a shot since I downloaded teh newest version and overwrote the old one. I am a necro so its pretty tricky when I take agro I can't exactly fear kite witht his bot cause i end up chasing the mob and thus dying due to adds. At any rate I will see what I can do to get it working...to bad sneer is broken then it would be easier to just pet tank.

-Truwen
 

bohika

Active Member
There wasn't a thread for AntiAdd so I'm going to post here.

CheckForAdds always says there's an add on non-aggro NPC's, it's saying the NPC itself is an add.

Code:
if "${Pawn[${PawnCounter}].Type.Equal[NPC]} || ${Pawn[${PawnCounter}].Type.Equal[AggroNPC]} && ${Pawn[${PawnCounter}].ID}!=${Me.Target.ID}"
needs to be

Code:
if "${${Pawn[${PawnCounter}].Type.Equal[NPC]} || ${Pawn[${PawnCounter}].Type.Equal[AggroNPC]}} && ${Pawn[${PawnCounter}].ID}!=${Me.Target.ID}"
the or needs to be evaluated as a whole value.
 

Denthan

Active Member
"Any other ideas for options you want to change at run time?"

Kram,

Firstly, thanks for this bot I use it for my monk when I need to afk and with some minor tweaks it works great. Beside some of the things that have already been mentioned the one thing I have to change upon each release is any code that uses energy. As a monk I have zero energy and if any code (ie the healing code) checks it I will not use the skill I have to heal. Also for some reason it will not cast my racial ability which as a Kojan is a heal. I am not sure why yet but I thought I would mention it.

Is there a way to have it check your stance? Some mobs I fight now have the ability to knock you out of your stance and I would like it reactivated when that happens.

I look forward to the feign death code working too.
 

Kram337

Active Member
Bohika,

Its' fine to bring Anti-add questions to this forum. The if statement says that your current target shouldnt' be considered an add. So technically either of the two if statements you posted should skip the currently targeted NPC.

Sometimes non-aggro npc's will become Aggro if they see you attacking something nearby (specially if its the same mob type). So we definetly need to be checking for nearby non-aggro npc's.

Also I'm not experienced any issues fighting non-aggro and aggro mobs using the code. Is it possible there is something else going on here? Maybe turn Debug Mode on from the options section of the UI and look at the console window to get an idea of why it might be skipping certain mobs. Or did you do that and if so, what does it say?

Denthan,
I want to make this script more monk friendly. Checking Jin and such and ignoring energy if your class is monk. Since I dont have a monk though it's hard to add and test too much stuff like that. I'll look over the code and see how big of a job that'll be. In either case I'll put it on the to-do list.

Also FD was being worked on by another person (someone who wants to remain annonymous) but I dont think its finished yet. FD is another function I sadly cannot test on my own. So have to wait for someone to help me with the code.

Keelo and others on Harvesting and Skinning,
My character lacks the ability to harvest or skin where he's fighting (i know, bad excuse), so I haven't tested the harvest/skin code myself. I've been informed though by several parties that it's not currently functioning in the current release (1.1). Abbadon is in charge of the harvesting code so I'll get with him on an update.

Look for 1.1a in the near future which should be a fix to the harvest issues.

~Kram
 

bohika

Active Member
I did debug it. It was saying all non-aggro npc's were bringing adds because it was checking distance against itself...

ie...

Code:
echo ${Pawn[${PawnCounter}]} Too close ${Math.Distance[${Me.Target.X},${Me.Target.Y},${Pawn[${PawnCounter}].X},${Pawn[${PawnCounter}].Y}]} < ${AgroDistance} id add: ${Pawn[${PawnCounter}].ID} target: ${Me.Target.ID}
SomeNPC Too Close 0.00000000 < 13 id add: 123456789 target: 123456789


edit:

http://www.lavishsoft.com/wiki/index.php/LavishScript:Mathematical_Formulae

check the chart, && gets evaluated before ||
 
Last edited:

jabnael

Active Member
Thanks for a great script

The script works great for me for every aspect but the healing part. For some reason it will not heal. I am using this on a Paliden dont know if that matters. He pulls well backs away from adds roams well uses all abilities and spells well just will not heal himself. I have set his heal spell for the medding heal and he heals himself to full after each fight but wont use the heal loop for heals during fights.

Any suggestions would be greatly appriciated, im a noob to scripting so limited changes by me the better :)
 

max_raid

Active Member
Howdy,

Just starting using this last night, it worked and has a lot of potential. Thanks for putting the effort out there.

The one problem I was having is that if I was playing a class that doesn't have a ranged ability to pull with, my character would not run up to the mob and use a melee ability to initiate combat.

Is there a setting I'm missing?

Thanks in advance.
 

jabnael

Active Member
Unknown Command

Fixed the healing problem just put my heal spells in all the heal spots, big heal med heal and small heal seems to work ok.

Came back today to play again now i get:

Unknown command 'VGExecute'

-->c:/program files/innerspace/scripts/KramBot.iss:274 main() VGExecute /cleartargets

:confused:
 
Top Bottom