Hi there. First of all I want to say that I do not want to flame or offend anyone. I want to share my view on botting.
I started on BlackD Proxy times, later was using Elfbot, Neobot, IBot. Now I started to use Xenobot, because I believe it CAN be best bot on market.
Yes, I say "CAN", because it is not. I was always using bot to work better than a humman. In all ways, not only faster reaction. Making advanced scripts was my passion since blackd.
DarkstR is doing great job, but his bot has lack of some usefull functions. Another problem is, that DarkstaR do not know how his user-friendly features affect the most advanced scripts.

Originally Posted by
DarkstaR
The issue is that if we skip waypoints when the Walker is stuck, it can cause the script to mess up. This is when you see somebody standing in spawn getting killed by Wyrms as they spam "Hi deposit all yes." Not only is it dangerous but it's easy to detect.

Originally Posted by
DarkstaR
This adds a layer of complexity. People will neglect to do it, like they have with every other advanced option they have been given, and then blame the bot when it doesn't work or gets them banned.
1) Here is an example:
I made script for Sea Serpents with lure mode (to make more exp/h). It works like this - when you levitate down to a cave it turn off targeting, then walk to the middle of cave (node, because can't use stand - walker was stucking when sea serpent blocked spot) and turn targeting on.
Where is the problem? Here:

It was't big problem in this script because simple lua could solve the problem:
lua code:
--Target on if stucked
Module.New("AntiStuck", function(module)
if ( standTime(30) ) then
Targeting.Start()
end
end)
function standTime(timesec)
local curtime = os.time()
local curpos = Self.Position()
while (Self.Position().x == curpos.x and Self.Position().y == curpos.y and Self.Position().z == curpos.z) do
if (os.time() - curtime >= timesec) then
return true
end
wait(1000)
end
return false
end
Now imagine what happen if your bot get stuck in this way while you bot deep banuta on EK, where you lure 3 medusa, 3 serpent spawns and 2 hydras.
How DarkstaR can help us making scripts like this without making bot much more complicated for people that are not good in scripting?
It is really simple, just add third option to walker (next to Node and Stand): Walk, which works in same way as Stand, with the exception that it will skip to next waypoint/label/script if path is blocked (ofc if there is a monster which has option "If Stuck" it will attack the monster, then try to walk again and if can't find path again it will just skip)
2) Another problem: there is no ShootAble function.
In what way it could be usefull? Just check this screenshot.

Screen take from forum, but it still shows where is the problem.
I need this function in my Area Rune shooter also. Now I use "Map.isTileWalkable", but it is not the same and it cannot replace it.
I know it is not that easy as it looks like, so it is not a priority. (I have read a thread on TPForum, where you posted)
3) What more? There is no access to current states of bot (example: you can not check if Targeting is currently enabled or not).
You can say it is useless, but I will give you how it can be usefull.
Let's go back to my sea serpent script (with lure mode).
I am luring sea serpents. Two of them are already close to me and bot start to use "utito tempo", but bot keeps to luring (you can find 4 in cave)
Code:
Targeting.State() --returns true if targeting is enabled, false otherwise
How the script could looks like:
lua code:Module.New("Utito", function(module)
local Creatures = {"Sea Serpent"}
if (Targeting.State() andSelf.MonstersAround(2, unpack(Creatures)) >= 2 and Utito and Self.Mana() >= 600) then
Self.Cast("utito tempo", 290)
module:Delay(10000)
end
end)
4) While we are at bot states, let's see current character states.
I know they already exist (Support > Condition Manager).
Why we do not have functions like this:
Code:
Self.PZone() --returns true when character stays in protection zone, false otherwise
Self.Hasted() --returns true when character is hasted, false otherwise
For what we can use it ?
- Advanced anty-paralize (which use haste and healing spells if haste is on cooldown)
- Auto-manashield - which use energy rings and mana shield if you do not have any rings
- Auto haste (which you can turn on/off any time in scripter)
5) Another lack of functionality. Targeting is really simpe. You can call it "primitive"...
It support only one spell, when we got in tibia all those strong strikes:
- exori max flam/vis/tera/frigo
- exori gran flam/vis/tera/frigo
- exori amp
- flam/vis/tera/frigo
No categories function. It is really waste of time to add 10 monsters, every with same settings of chasing at low health and stand if they are 90<
Or it is immposible to attack only when there is 3 monsters on some kind (like medusa, serpent spawn and hydra)
It will count separately (lmedusa, serpent spawn and hydra), but will not attack if you have on screen 2 medusae and 1 serpent spawn.
6) Laziness? Why do we have:
Code:
LootMessageProxy.New(key)
while there is no function to read: 12:46 Using one of 780 mana potions...
7) And the last thing - I miss a really usefull function:
SetSettings - change ANY feature of bot, useable in scripter. I know function LoadSettings already exist, but it is too complicated and impossible to use.
Let's say I have yalahar grim reaper script for paladin. I always was using pathfinding like this:
lua code:Module.New("Pathfinder", function(module)
if ( Self.Position().y <= 32154 ) then --this position is only example
SetSettings("Special Areas//Blok1//Enabled", "Targeting")
else
SetSettings("SpecialAreas//Blok1//Enabled", "None")
end
end)
It was luring grim reaper and then running around in desired area.
I have no idea why some functions are realsed, but we do not have access to them - like states of character and bot. In my opinion this is due to lack of imagination of DarkstaR. He does not seems those functions usefull for normal botuser (which mostly can only load settings, start bot and eventually change setup).
The question is about scripters which know how to write a script? I noticed lack of this functions after 5 days of using XenoBot. The possibilities are limited by our imagination.
Sorry if my english isn't perfect, but it should be good enough to show my point of view.
Regards,
Dedi