A Guide to Optimising Your Bot

Forum closed. Read only permissions.

Moderator: Moderators

Posts: 44
Joined: 28 Apr 2008, 10:41
Noob?: No

A Guide to Optimising Your Bot

#1 Post by openkore129 »


I've left off playing RO so I figured I better put this all down before I forget =] Everything listed is from the viewpoint of a 1x/1x/1x official server and is as per the OK 2.0.4 files. This guide lists all the little tweaks you can make to get that little extra out of your bot. Some knowledge of botting is assumed.

All these examples are from my personal botting experience, if you see any mistakes feel free to point them out.

DISCLAIMER: IF YOUR BOT GETS MESSED UP AND/OR YOU SUFFER ANY LOSS BECAUSE YOU TRIED OUT SOMETHING HERE, I DON'T TAKE ANY RESPONSIBILITY. I've done some messing around with the timeouts.txt file so don't blame me if you tried it out on your lvl 98 char who was at 99%, and you put those low timeouts in, and wake up in the morning to find that because of those timeouts he got stuck and is now at 0% :shock:

The factors that your xp/hour depends on are, listed in order of importance -
1. Whether you use tpsearch or not. If you're on a server with strict GMs you mayn't want to do this because it can draw attention to your bots.
2.If you are on tpsearch, how lagless is your connection? And how low can your timeouts go? I had a 100% lagfree connection and my bots could tp 5 times a second. More on TIMEOUTS.TXT in the latter half of this guide.
3.Is the map appropriate for your bot? An example, priests are hopeless at botting on their own, but you can get 2mil xp/hr with a AGI>LUK=INT TU priest in ancient mummies. The right map is essential.
4.How good are your botting skills?
5.How good are your equips?

Exploring these 5 factors....

I'm sure you noticed that the majority of your time goes in finding monsters to kill instead of killing monsters. Without tpsearch you probably are killing monsters only a fourth of the time. With tpsearch you can on a fast connection get that down to half the time. It can make a big difference, particularly on maps which have sparse but good xp monsters like the Pasana map.

If you're using Tpsearch, configuring TIMEOUTS.TXT is extremely important and explained after CONFIG.TXT. If can make your bot look like some kind of superhero maniac with absurd reflexes. Imagine teleporting every 0.2s, take 0.4s to get to monster, 4s to kill monster, 0.2s to pick up drops and tada! Teleport out!! Take 3 teleports to find next monster=0.6s...Rinse and repeat.

If your bot can handle it, go for a map with aggressive monsters, rather than passive monsters. This is because having monsters come to you saves a lot of time. Thats why the bathories map gives crazy amounts of xp, easy to kill + low damage + aggro means getting huge mobs makes for an awesome combination. Remember, killing lots of low xp monsters can give better results than killing few high xp monsters. On a fast tpsearch, the CT punks map can equal or surpass Geographers, I saw it happen for a int/dex stalker. Use stat calcs to see how long your bot takes to kill a monster. One more reason low xp monsters can give more xp than high xp ones is that, ofcourse, high xp ones are much harder to kill.

Here are some “appropriate” maps....
Knight - Pasana, Grand Pecos, Bathory -- Even SVD Lks can get 900k/hr in Bathories
Wizard – Geographers, if you can kill a geo in 2 Firebolts its great. For SS builds SGing mobs of zenorcs gives decent xp too, but geographers is better.
Stalker/Hunter – Geographers ofcourse, the CT punk map might give better results, you can try it.
Assasin/Dagger Rogue – Sandman for lower levels, and nothing beats Sleepers with Ice Pick.
WS – not much experience with them, but they're similar to agi knights.
Priests – GH and if you have good def or TU 10 then ancient mummies. Those mummies really hit hard, so defence is important, or ofcourse you can set tele_min_dmg to 1.

#4 Your Botting Skills
Thats why I'm writing this, and you gotta read the manual. If this is all too easy for you, try macros. If you know macros, learn Perl and join the OK development team =)

#5 Equipment
A lot of people skimp on equips, this is ok if you're server has a high ban rate. Otherwise get the best equips you can afford since you level faster + get more loot → faster money + faster lvling → killing faster + more loot etc....

Should always be 1 for hunters, mages, and heal bombing priests.

Recommended, so your bot doesn't sit at the spawn point on death and get noticed by people like the GMs.

equip_<leftAccessory/rightAccessory etc...>
These are extremely useful when you are using tpsearch, are healing yourself and need those stat boosting cards in your accessories. This is how you do it. Example for a hunter...

Code: Select all

attackEquip_leftAccessory Clip [Zerom] [1]
attackEquip_rightAccessory Clip [Zerom] [1]
teleportAuto_equip_rightAccessory Clip [Creamy] [1]

useSelf_skill Heal {
   lvl 1
   hp < 70 %
   sp > 10 %
   notMonsters Wild Rose
   equip_leftAccessory Belt [Vitata] [1]

You will equips 2x Zeroms on attacking, equip a creamy on teleporting, and equip a vitata belt when the heal skill is triggered. This enables you to take switch equips effectively.

autoBreakTime {
Sometimes your internet is free at night or something, use this option to bot only at night or a specified time of the day. Example

Code: Select all

autoBreakTime all {
startTime 08:30
stopTime 12:30

On all days, you will dc at 8:30 in the morning and connect at 12:30 in the afternoon.

Suppose you are playing manually, but have a slave priest on bot, change this options default value so that the bot doesn't respawn on dying and you can ress it using a yggdrasil leaf.

IMO this option is a direct giveaway that you're using a slave bot, because you bot imitates EVERY emotion you use after the same interval. You might wanna set it to 0.

Distance max and distance min should be set to low values if you want your slave to follow you around perfectly. Also, increasing the value of loststep helps sometimes. However if you connection lags, nothing will make your slave follow its master perfectly, but this can help.

Default value is 2, but I always set it to 1. When you play and get mobbed, do you kill all the monsters first or stop to pick up each monster's loot as it dies and get hit more in the process? If you set this value to 2, it does the latter, set it to 1, it does the former. Better to set it to 1, and configure pickupitems.txt to pick up rares immediately.

In maps with lots of players/bots there will be loot scattered all around. Each you bot sees loot it will try and gather it and you will get irritating messages like “No looting!” or “Timeout”. So it is sometimes just better to set this option to 0, or otherwise at 1.

Useful in a map like the seals map where you only find them on the beach. Why do you want your bot wandering all the around the map, when it should be sticking to the beach only and killing seals. So you should modify the options for y coordinates such that it stays in the beach only. This is how.....
REMEMBER this does not work if you're tp searching, because then your char is never gonna walk anyway.

Code: Select all

lockMap_y 85
lockMap_randY 84

Limit is 84 squares up from coordinate 85
Limit is 84 squares down from coordinate 85

lockMap_y sets the coordinate about which you bot moves, and lockMap_randY sets the distance the bot can move from that coordinate.
So your bot will be constrained between y= (85+84) = 149 and y= (85-84) = 1

Turn this off if you're using tpsearch.

If you have a fast connection and can teleport very quickly, I recommend decreasing max distance (say 100?) and increasing maxtries (20 or more) This is helpful if your bot has a tough map to cross on the way to his lockmap, like the map before the Raydric map.

Used to keep your mage or hunter away from melee attackers. Very useful in the geo map, if you land to close to a geo, then Kore will simply walk out of the geo's range.

Kore has hpupper kept at a default of 100, but this wastes your bot time. Why should your bot wait till its HP this 100%? Anyway after you bots gets up, you're gonna recover some HP before you get hit again, so you might as well be fighting while recovering that HP and gaining XP alongside. Recommended for knights who have moving HP recovery.

If your bot heals itself, then setting hplower to less than 40 helps, because you recover most of your HP by healing yourself, not sitting. Instead set splower so that you recover sp and heal yourself.

Sometimes you use one bot's Kore files to run another bot temporarily and if you have this enabled, uh-oh!! You've put this bots stats up based on the other bot =\ Caution advised.

Another easier way of implementing tpsearch is to set this to 1. Then you don't have to configure monsters.txt for tpsearch.

Important in the CT bathory map, you don't want to accidentally step into the portal and spend another key getting back in.

It may happen that on the way to your lockmap, you bot keeps getting mobbed and tping away, never reaching his destination. In that case, use the “in lock” option, so your bot only tps on aggros when in the lockmap.

Useful in geos, when you have 5 geos all healing each other, you don't wanna spend half an hour killing one geo. So if you go above the number of hits listed here in killing on monster, your bot tps away.

See attackEquip_leftAccessory. Its explained in the beginning under that.

Useful when transferring loot from your bots to your main merchant. Simply set dealauto to 1 or 2, and put the names. Then put your main merchant on Kore, and deal him from other characters.

Setting this is extremely important when you run multiple bots 24x7. You don't want your CPU overheating. Setting higher values reduces the amount your CPU is used. Default value is 10,000 but you can safely set it to 20,000 and if you're bot is just vending then 100,000 is fine.

In your blocks, you don't need to keep every config key, just the ones you're using. So if you're a knight there is no reason have stuff like “mincasttime” lying around in your blocks, it becomes messy and unreadable. I'm not going to do a whole lot of explaning here, the manual is adequate for blocks.

Always good to keep a timeout so your bot doesn't chain skills under any circumstances (except when you want the skill to be chained).

Important, so your bots doesn't keep trying out a skill and drain all his sp failing, say a thief set to steal from mushrooms shouldn't keep stealing on and on and on, 2-3 attempts are enough.

In the "useSelf_item" block, you have "InInventory"
You need this when you're using Quivers for Hunters, and need to trigger the use of a Quiver when arrows go low, example......

Code: Select all

useSelf_item Fire Arrow Quiver {
   inInventory Fire Arrow <= 10
   timeout 10

Thats it for CONFIG.TXT

If you don't use tpsearch then there is no point editing this file. Just skip this part. Otherwise read on. You could see a insane increase in your bot's behaviour, especially if you've never edited this file.

I cannot overemphasize the importance of this timeout. OK developers have set it by default at 2, but as long as you have a lagless connection set it at 0. Yes thats right, 0. For the “why”, read on.

This time basically is the time your bot spends doing nothing after a map loads. This delay is incorporated because each time you change a map, a whole lot of stuff has to be refreshed when the map loads, so the delay so that the server sends the info to your bot before you do anything. Now, when your bot is tping around everytime your tp, you see a “Map change” message. Since there is a map change, this delay kicks in everytime. So everytime you tp, you bot sits and does nothing for 2 WHOLE SECONDS. What a waste! You could have ai_teleport at 0.1 and it wouldn't make any difference because that bot of yours is gonna sit there for 2 seconds anyway. So set it to 0, and instead modify ai_teleport as I describe down.

This is set at a default of 0.5 which is dumb is your tp timeout is less than 0.5, because you check for monsters to attack every 0.5 seconds but you are tping after 0.1 seconds, so guess what?! You miss monsters you could have easily killed! Recommend setting this at no more than 0.05.

The default is fine for most bots, but for hunters you can change to it 4.

Can be cut down to 0.3, just make sure its high enough so your bot picks up items.

DON'T CHANGE THIS UNLESS you know what you're doing. If you are tping really fast and don't pick up items, one possible solution is to set this to 0, so your bot instead “gathers” them instead of “picking” them. DO NOT do thing on a map with manual players because then you'll end up looting them.

If you hate your slave losing its master and can't wait for it to start calculating coords to get back to its master instead of that “Try to find master message” then you can lower this timeout.

Everyone knows these timeouts. If you are setting “ai” to 0 as I mentioned above, then set ai_teleport_idle or ai_teleport_away (whatever your bot is using) to a high enough value to ensure that new info reaches your bot before it teleports away. So use Xkore and slowly reduce the value till your bot starts missing monsters. In the normal Kore window, you know you bot is missing monsters when the "Teleporting due to idle" message comes first, and then "Attacking Monster" comes. This missing you are teleporting before the server has sent you the info on the monster. Thus, increase the timeout so that you get the info before teleporting out.

I'm posting the essential timeouts from the TIMEOUTS.TXT file I was using when I had my lagless connection ^^

Code: Select all

# Server connection timeouts
master 12
gamelogin 12
charlogin 12
maplogin 12
play 20
# When disconnected, wait x seconds before reconnecting again
reconnect 1

# Activate AI after x seconds after the map's loaded
ai 0

ai_move_retry 0.25
ai_move_giveup 1.5

# Check for monsters to attack every x seconds
ai_attack_auto 0.01

# Give up attacking a monster if it can't be reached within x seconds
ai_attack_giveup 4

# If you've just killed a monster, and there are no aggressives,
# and you're not picking up any items, wait x seconds before doing
# anything else.
ai_attack_waitAfterKill 0
ai_attack_unstuck 2.75
ai_attack_unfail 5

# When your monster died, start checking for loot after x seconds
ai_items_take_start 0.0

# Stop checking for loot x seconds after it has begun checking.
ai_items_take_end 0.5

# When standing near an item, send the 'take' packet every x seconds until
# the item has been taken.
ai_take .4

# Give up if unable to pickup item after x seconds
ai_take_giveup 3
ai_items_gather_giveup 3

# Every x seconds, check items for gathering
ai_items_gather_auto .3

# Only gather items that have been more than x seconds on screen
ai_items_gather_start .3

ai_teleport 0.1
ai_teleport_away 0.1
ai_teleport_idle 0.1
ai_teleport_portal 0.1
ai_teleport_hp 0.1
ai_teleport_safe_force 120

ai_teleport_retry 0.5
ai_teleport_delay 0.5


ai manual
Very useful when you want your bot to go and do autostorage, use this and it will stop attacking monsters and stuff, but will still perform ai activities based on any console commands you give.

ai clear
When you do "ai manual" there might still be an action your bot is performing, like calculating a route. So like you want your bot to get to Prontera and its trying to get to some random Morocc field. Use "ai clear" to delete all actions the bot has yet to perform.

For some reason this point is not included in documentation. To pm a char with spaces in his name you have to use quotes. Eg. if you type "pm Turtle General Hi" you'll get a message saying "user Turtle is not online" but if you type "pm "Turtle General" Hi" then you'll get "(To Turtle General): Hi" ;)

Simplest way to teleport, if you see your bot mobbed and about to die, just type this.

Thats about it, the manual is enough for the remaining control files. Hope this helps.

Last edited by openkore129 on 23 Apr 2009, 13:08, edited 1 time in total.

Posts: 23
Joined: 19 Apr 2008, 13:00

Re: A Guide to Optimising Your Bot

#2 Post by Barracks »


Posts: 3
Joined: 19 Sep 2008, 16:32
Noob?: Yes

Re: A Guide to Optimising Your Bot

#3 Post by Haku »

does it take longer to cast teleport if you make the bot equip teleport acessary when needed to teleport?

Perl Monk
Perl Monk
Posts: 811
Joined: 04 Apr 2008, 17:26
Noob?: No

Re: A Guide to Optimising Your Bot

#4 Post by sli »

Yes, but only slightly.
cs : ee : realist

Posts: 23
Joined: 19 Apr 2008, 13:00

Re: A Guide to Optimising Your Bot

#5 Post by Barracks »

More of an RO related question but still relevant, is damage determined at the beginning of cast time, or when the cast time is finished? I figure when it's finished but for the sake of autoEquiping i just want to make sure.

Posts: 44
Joined: 28 Apr 2008, 10:41
Noob?: No

Re: A Guide to Optimising Your Bot

#6 Post by openkore129 »

Haku wrote:does it take longer to cast teleport if you make the bot equip teleport acessary when needed to teleport?

Depends on your connection, for me not any noticeable difference, and whatever slowdown it caused was more than made up by the benefit it provided.

Barracks wrote:More of an RO related question but still relevant, is damage determined at the beginning of cast time, or when the cast time is finished? I figure when it's finished but for the sake of autoEquiping i just want to make sure.

I guess end too, since a lot can change between the beginning and end of a cast.

Um...no comments on the guide, is it helpful/unhelpful? Does it require further work?

Posts: 23
Joined: 19 Apr 2008, 13:00

Re: A Guide to Optimising Your Bot

#7 Post by Barracks »

I suppose this guide could be helpful to nubz but it really only gives tips on 1 area of botting :<

Posts: 44
Joined: 28 Apr 2008, 10:41
Noob?: No

Re: A Guide to Optimising Your Bot

#8 Post by openkore129 »

Other areas being? I could try covering those...

Posts: 12
Joined: 24 Sep 2008, 15:18
Noob?: Yes

Re: A Guide to Optimising Your Bot

#9 Post by xpierre »

what is tpsearch?

Posts: 136
Joined: 26 May 2008, 12:25
Noob?: No

Re: A Guide to Optimising Your Bot

#10 Post by Scarya »

xpierre wrote:what is tpsearch?

tpsearch = teleport search
You teleport around in order to find monsters.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs and the universe trying to produce bigger and better idiots.
So far, the universe is winning.

Richard Cook