Siema może mi ktoś powiedzieć jak zrobić żeby bot bił z exori i exori min jak jest więcej niż 3 potwory (chodzi o 3 rodzaje cyclopów). Bardzo mi zależy :)
Wersja do druku
Siema może mi ktoś powiedzieć jak zrobić żeby bot bił z exori i exori min jak jest więcej niż 3 potwory (chodzi o 3 rodzaje cyclopów). Bardzo mi zależy :)
naprawdę nikt ? :(
Wklej to do pliku *.lua w documents/xenobot/scripts, dostosuj. Widzialem kiedys taki ze sie ustawialo przy jakich potworach ma uzywac. Czary mozesz sobie oczywiscie pousuwac.
--[[
Instructions:
Attacks are prioritized least to greatest.
Required parameters:
words = spell words or rune id
min = minimum monster amount to trigger spell/rune
distance = the max range of the attack
Optional parameters:
max = the max monsters the spell will attack
mana = the minimum mana you want to have before casting
padding = the extra sqm's to check for players PAST the attack distance (default is 0)
needsTarget = the attack needs a target (exori hur, etc)
needsDirection = spells most effective when facing target (exori min)
multiFloor = check for players above/below (stairhop skulling)
ignoreParty = ignore player checks for party members
whiteList = table of players to ignore
targetList = table of monsters to attack, to attack all do not specify this option
]]
attack = {}
attack[1] = {words="exori gran", min = 7, distance = 1, padding=3, multiFloor=true}
attack[2] = {words="exori", min = 4, distance = 1, padding=3, multiFloor=true}
attack[3] = {words="exori min", min = 6, distance = 1, padding=3, needsDirection=true, multiFloor=true}
attack[4] = {words="exori ico", min = 2, distance = 1, max = 1, needsTarget=true, multiFloor=true}
attack[5] = {words="exori hur", min = 3, distance = 4, max = 1, needsTarget=true, multiFloor=true}
function getTargetCount(distance, padding, multiFloor, ignoreParty, whiteList, targetList)
local n = 0
padding = padding or 0
whiteList = whiteList or {}
targetList = targetList or {}
for i = CREATURES_LOW, CREATURES_HIGH do
local cid = Creature.GetFromIndex(i)
local checkPad = cid:isPlayer() and padding or 0
if(cid:isValid() and cid:isVisible() and cid:isAlive() and cid:DistanceFromSelf() <= (distance + checkPad) and not cid:isSelf())then
if(getSelfPosition().z == cid:Position().z or (multiFloor and cid:isPlayer()))then
if(cid:isPlayer() and (not cid:isPartyMember() or not ignoreParty) and not table.find(whiteList, cid:Name(), false))then
return 0
elseif(cid:isMonster() and (table.find(targetList, cid:Name(), false) or #targetList<1))then
n = n + 1
end
end
end
end
return n
end
function main()
for i = 1, #attack do
local atk = attack[i]
local count = getTargetCount(atk.distance, atk.padding, atk.multiFloor, atk.ignoreParty, atk.whiteList, atk.targetList)
if(count > 0)then
if(count >= atk.min and count <= ((atk.max == nil) and count or atk.max))then
if(type(atk.words) == 'number')then
Self.UseItemWithMe(atk.words)
wait(900, 1200)
elseif(Self.CanCastSpell(atk.words) and (not atk.mana or Self.Mana() >= atk.mana))then
local target = Creature.GetByID(Self.TargetID())
if(atk.needsTarget or atk.needsDirection)then
if(target:isOnScreen() and target:isVisible() and target:isAlive())then
if(target:DistanceFromSelf() <= atk.distance)then
if(atk.needsDirection)then
local pos, toPos = getSelfPosition(), target:Position()
local dir = pos.x > toPos.x and WEST or pos.x < toPos.x and EAST or pos.y > toPos.y and NORTH or SOUTH
Self.Turn(dir)
wait(100, 200)
else
Self.Say(atk.words)
end
end
end
end
if(not atk.needsTarget)then
Self.Say(atk.words)
end
wait(600, 1000)
end
end
end
end
end
print([[
Name: Auto Area Attack
Description: Shoots area spells/rune on certain conditions
Author: Cavitt Glover (Syntax)
Version: 5.0.00 (updated 11.26.2012)]])
wait(2000)
registerEventListener(TIMER_TICK, "main")
w creatures zmien sobie na jakie potwory ma reagowac i w count przy ilu potworach ma bic exori (oczywisice zapisz jako .lua) i wrzuc do folderu scripts w dokumenty/xenobot
Kod:local PvPSafe = false
local Attacks = {}
--[[
Options:
words - words of spell to cast
creatures - table of creatures to consider, if you disclude this it will consider all
count - amount of creatures in order to cast
range - distance from self to consider creatures
padding - for pvpsafe, if enabled each spell must have a padding setting, distance from self players must be in order to cast
needTarget - for spells that require a target, no need for a count or padding if this is enabled
]]--
Attacks[1] = { words = 'exori', creatures = {'Poison Spider', 'Orc', 'Snake', 'Orc Berserker'}, count = 4, range = 1, padding = 2}
Module.New('auto_attack', function()
for _, data in ipairs(Attacks) do
if (not PvPSafe) or (Self.isAreaPvPSafe(data.padding, true)) then
if data.needTarget then
local target = Creature.New(Self.TargetID())
if (data.creatures and table.find(data.creatures, target:Name(), false)) or (not data.creatures) then
if target:DistanceFromSelf() <= data.range and Self.CanCastSpell(data.words) then
Self.Say(data.words)
end
end
else
local count, mob = 0, Self.GetTargets(data.range)
if data.creatures then
for i = 1, #mob do
if mob[i]:isOnScreen() and table.find(data.creatures, mob[i]:Name(), false) then
count = count + 1
end
end
else
count = #mob
end
if count >= data.count and Self.CanCastSpell(data.words) then
Self.Say(data.words)
end
end
end
end
end)