BelowtheBelt
08-14-2012, 09:34 AM
Greetings, I have been experimenting with the targeting feature, and I cannot get it to do what I want.
Problem: Currently my knight is hunting with exori ico, but it trys to spam this ability while out of range of the target. This looks obvious to other people as being a bot.
Tried: I tried to set 2 versions of the creature in my kill list, Low priority all range attack this creature (no abilities) then the creature again in the list at proximity 1 with high priority with the attack spell.
I was hoping this would mean, it will target the creature, and when it get to 1 tile away it would switch to casting the spell.
This did not work.
There must be an easier way?
Again, Im trying to have the bot not cast exori ico, until I am in range of the target.
Thanks!
BelowtheBelt
08-14-2012, 10:27 AM
Seems like a simple fix could be applied to Xeno to fix my problem, and it's how BlackD did it
When you set the priority very high on a creature, and medium on another... even if you were attacking the medium creature already the moment the creature with very high comes on the screen you switch targets automatically and stop attacking your current target.
With this, I could set Dragon/Diagonal/proximity all/Medium (spells none)
Then Dragon/Diagonal/proximity 1/Very high health 95% or less (Spell: Exori Ico)
This means, I would attack dragons from any range (meaning I will walk to them). Then after I hit them once with melee (or deal 5% damage), I will then begin casting exori Ico.
This then means that it wont be extremely ****ing obvious that im botting when I try to use Xenobot to do any proper hunting with a knight.
Short of learning how to program myself, and then if that is the requirement, what am I paying for?
hehe thanks for any suggestions/solutions anyone can come up with.
BelowtheBelt
08-14-2012, 10:39 AM
You can Close this thread... Or leave it open if anyone else ever has this issue.
But I have found a partial solution.
Dragon - Diagonal/Proximity all/ 100% to 95%/ no spells
Dragon - Diagonal/Proximity (I use 3 but wont go into depth on it)/ 95% to 0% Spells: exori Ico
This means unless you target someone's dragon that is below 95% health... You wont spam your attacks on the way to the dragon
It would be nice if Dark just coded xenobot to limit casting your spells if you were not in the range you set of the target... It would solve all the problems and not just be a half assed partial fix like the one I came up with. hopefully he gets the time to do this at some point
Infernal Bolt
08-14-2012, 03:33 PM
A script would solve your problem tbh.
Credits to syntax ;)
It will exori ico and exori hur when its less then 3 monsters on screen and exori if its 3 or more.
local config = {
delay = 500, -- delay time in between checks [default = 500ms]
attacks = {
['exori'] = { --REMOVE FROM HERE TO ...
min = 3, -- minimum targets in to use this spell
spellRadius = 1, -- range to count targets to attack
checkRadius = 2, -- safe range to check for players (should always be larger or at least equal to spellRadius)
countPlayers = false, -- include players in the target count (incase you are intending on attacking players)
attackMode = 'everyone' -- none, enemies, strangers, friends, everyone
}, -- ... HERE IF YOU DON'T WANT TO EXORI
['exori ico'] = {
min = 1,
max = 3, -- spell won't cast if more creatures are in the spellRadius than this (does not have to exist)
spellRadius = 1,
checkRadius = 2,
countPlayers = false,
attackMode = 'everyone'
},
['exori hur'] = {
min = 1,
max = 3, -- spell won't cast if more creatures are in the spellRadius than this (does not have to exist)
needTarget = true, -- for spells that require you to have a target (does not target for you)
spellRadius = 1,
checkRadius = 2,
countPlayers = false,
attackMode = 'everyone'
}
}
}
print([[
Name: Auto Area Attack
Description: Executes area spells on certain conditions
Author: Cavitt Glover (Syntax)
Version: 3.1.00 (updated 06.12.2012)]])
wait(5000)
function getTargetCount(pos, atkRadius, chkRadius, incPlayers, atkMode)
local n = 0
for i = CREATURES_LOW, CREATURES_HIGH do
local creature = Creature.GetFromIndex(i)
if(creature:isValid() and creature:ID() ~= Self.ID())then
if(creature:isOnScreen() and creature:isVisible() and creature:isAlive())then
local name = creature:Name()
if(getDistanceBetween(creature:Position(), pos) <= chkRadius)then
if(atkMode == 'none' and (creature:isPlayer()))then
return false
elseif(atkMode == 'enemies' and (creature:isFriendly() or creature:isInnocent()))then
return false
elseif(atkMode == 'strangers' and creature:isFriendly())then
return false
elseif(atkMode == 'friends' and creature:isInnocent())then
return false
end
if(getDistanceBetween(creature:Position(), pos) <= atkRadius)then
if(not creature:isPlayer() or incPlayers)then
n = n + 1
end
end
end
end
end
end
return n
end
function think()
for spell, dat in pairs(config.attacks)do
local amnt = getTargetCount(Self.Position(), dat.spellRadius, dat.checkRadius, dat.countPlayers, dat.attackMode)
if(amnt)then
local _max = (dat.max==nil) and amnt or dat.max
if(amnt >= dat.min) and (amnt <= _max)then
if(type(spell) == 'number')then
Self.UseItemWithMe(spell)
wait(900, 1200)
elseif(Self.CanCastSpell(spell))then
if(dat.needTarget)then
local target = Creature.GetByID(Self.TargetID())
if(target:isOnScreen() and target:isVisible() and target:isAlive())then
if(target:DistanceFromSelf() <= dat.spellRadius)then
Self.Say(spell)
wait(600, 1000)
end
end
end
Self.Say(spell)
wait(600, 1000)
end
end
end
end
end
while(true)do
think()
wait(config.delay)
end
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.