Frequently asked questions and troubleshooting guide.
Copy the nExBot folder into your OTClient's bot directory:
- vBot (OTClientV8):
%APPDATA%/OTClientV8/<ServerName>/bot/nExBot - OTCR (OpenTibiaBR):
~/.local/share/<otcr-data>/<ServerName>/bot/nExBot
See the full Installing guide for detailed instructions.
- Verify the folder path is correct and
_Loader.luais in the root - Press
Ctrl+B→ Disable → Enable to reload - Press
Ctrl+Shift+Dto check the console for error messages - Try a fresh install (backup configs first)
Yes. Copy the nExBot folder to each server's bot directory. Configs are per-server, so each installation is independent.
- Back up
cavebot_configs/,targetbot_configs/, andnExBot_configs/ - Delete the old
nExBot/folder - Copy the new release
- Restore your config folders
- Is the toggle enabled (green light)?
- Spells configured? Check the Healing panel.
- Spell names spelled correctly? (
exura vita, notexuravita) - Enough mana for the spell?
- HP actually below the threshold? A spell at 50% only fires at ≤50% HP.
- Spell on cooldown? 1–2 second cooldowns are normal.
Quick fix: Add a potion at 40% HP as a fallback.
| Spell | Healing | Mana Cost | Speed |
|---|---|---|---|
exura |
Small (~200 HP) | Low (~20) | Fast |
exura vita |
Medium (~300 HP) | Medium (~60) | Medium |
exura gran |
Large (~600 HP) | High (~100) | Slow |
Use exura vita as your main heal, exura as backup, and exura gran for emergencies.
Strongly recommended. Spells cost mana — when you run out, potions are your only healing. Always configure at least one potion as a fallback.
- Thresholds too low — try healing at 60% instead of 50%
- No potion fallback — add potions for when mana runs out
- No support spells —
utamo vita(mana shield) helps in dangerous areas - Wrong hunting area — the spot may be too hard for your level
- Open the Cave tab → click Show Editor
- Stand at position → click Add Goto
- Walk to next position → click Add Goto again
- Repeat for the full route
- Save with a name
Or use the Recorder — click Record, walk your route, stop recording.
- Is CaveBot enabled and started (
Ctrl+Z)? - Is TargetBot's Pull System pausing navigation?
- Are waypoint coordinates reachable?
- Is there a door or obstacle? Enable Auto Open Doors.
- Field blocking the path? Enable "Ignore fields".
- autoWalk activates for paths of 5+ tiles with ≤55% direction changes. If your corridor has many tight turns, the bot uses keyboard stepping with 2-step pipelining instead.
- Check that waypoints aren't all adjacent to floor-change tiles (pipelining is disabled near FC tiles).
- For smoother movement, space waypoints 5-15 tiles apart — this is the sweet spot for autoWalk.
- Enable Auto Open Doors in CaveBot config
- Add a manual
doorwaypoint before the goto past the door - Verify the door item ID is recognized
Keep waypoints within 10–20 tiles of each other. autoWalk kicks in for paths of 5+ tiles (with ≤55% direction changes), making movement smooth. For paths >50 tiles, pathfinding is capped and recovery may trigger. Add intermediate waypoints for better control.
Yes. Each route is saved as a .cfg file in cavebot_configs/. Load different configs for different hunting spots.
Target tab → click + → enter monster name → configure spells and behavior → Save.
| Pattern | Effect |
|---|---|
Dragon |
Matches exactly "Dragon" |
Dragon* |
Matches Dragon, Dragon Lord, etc. |
*, !Dragon |
Everything except Dragons |
#100-#110 |
Creature IDs 100–110 |
- Is TargetBot enabled?
- Are creatures configured in the list?
- Are matching monsters on screen?
- Do you have mana for attack spells?
The Engagement Lock should prevent this. If switches are happening:
- Check that creature priorities are configured
- With 2–3 monsters, the switch cooldown is 5 seconds
- Enable
MonsterAI.DEBUG = trueto see why switches happen
- Is looting enabled in the Target tab?
- Are loot containers open?
- Is the creature within looting range?
- AttackBot enabled?
- Valid target selected by TargetBot?
- Spell on cooldown?
- Enough mana?
- Monster count conditions met?
Lower the minimum monster count, check detection range, and verify creatures are attackable (not NPCs or summons).
Add a Monsters ≥ 2 condition to area runes and separate AoE from single-target rules.
- Is Auto Open enabled?
- Are containers correctly assigned?
- Wait a few seconds — there's a deliberate startup delay
- Check console for errors
- Do you have arrows/bolts in a supply container?
- Is the quiver equipped?
- Are arrows the correct type for your weapon?
Yes. Typical performance:
- HealBot: 75 ms response time
- TargetBot: 50 ms target evaluation
- CaveBot: 250 ms movement tick
- CPU usage: ~3–5%
- Memory: ~15–30 MB
- Disable unused modules (Hunt Analyzer, Monster Inspector)
- Reduce TargetBot creature list
- Increase CaveBot interval (500 ms is fine)
- Avoid complex custom actions in CaveBot
- PathCursor preservation eliminates redundant A* calls per tick — fewer pathfinding operations overall
- 4-entry LRU cache catches repeated pathfinding queries
- Close heavy programs (browser, Discord)
- Check for infinite loops in custom CaveBot actions
- Enable
nExBot.printStartupProfile()to find slow modules
Config file corrupted. Delete it and recreate from scratch. Don't edit .cfg files manually.
Common causes:
- Character died
- Out of supplies (potions, runes)
- Anti-RS triggered (PvP flag detected)
- Paralyze/condition handler blocking actions
- Invalid CaveBot waypoint coordinate
Check the console with Ctrl+Shift+D for error messages.
The spell costs more mana than you have. Add a mana potion to your rotation, or use a lower-cost spell.
A module failed to load or is outdated. Replace the affected file with the latest version and restart the client.
Yes. Place .lua files in a private/ folder inside nExBot/. They're auto-loaded after all core modules and have access to the full API.
Use action waypoints for Lua code:
action() function()
if player:getHealth() < 200 then
CaveBot.setOff()
end
end-- Enable verbose logging
nExBot.showDebug = true
MonsterAI.DEBUG = true
-- View startup profile
nExBot.printStartupProfile()
-- Check AttackStateMachine state
print(AttackStateMachine.getState())One bot per OTClient instance. Use multiple client windows for multi-boxing.