Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Bot do najnowszej wersji Tibii


XaRaNiX

Rekomendowane odpowiedzi

Opublikowano

Witam, nie gralem w tibie parę lat. Chciałbym zaczac znowu pykac i dlatego mam do Was pytanie. Czy na ten moment jest jakis darmowy bot pod real tibie ? Chcialbym postawic sobie z 5 cash makerow na dobry poczatek. Jakiego bota polecacie drodzy forumowicze ? :) I jak to jest z banami ? Jesli bede bocil 5 cash makerow 24/7 i expil recznie (na tym samym komputerze i IP) swojego maina to uchronie go przed banem ? :P

Pozdrawiam !

Opublikowano

Hej, w przypiętym temacie (tu) masz XenoBota, będzie wspierany jeszcze jakiś miesiąc. Bocąc na noobkach nie musisz się martwić o swoje main konto, o ile nie wysyłasz parcelami/bankiem itemków/kasy.

 

Opublikowano

Dzieki za szybka odpowiedz ! Czy znajde na mpcforum skrypty dla cashmakerow bez pacc'a do xenobota ? To jak mam przelewac bezpiecznie kase na main konto ? Rzucajac na depo ? :P Czy wiadomo cos o alternatywie xenobota po tym jak przestanie byc wspierany, czy mozna sie pozegnac na jakis czas z darmowym boceniem ? Jakiego bota oplaca sie wykupic(i ile kosztuje za miesiac) jesli nie bedzie darmowego ? 

Opublikowano

Skrypty może znajdziesz tutaj, pamiętam, że wysyłałem tam parę. Jak nie to jutro Ci wyślę tutaj. Ja kasę przekładam na depo, Tobie też polecam to robić. Co do przyszłości bocenia to na pewno będzie Windbot wspierany (płatny) i Tibia Auto (darmowa). Na razie nie ma co się martwić, zapewne powstaną też nowe bot :)

 

Opublikowano

 Marchwj,  xeno nie działa z wiadomych przyczyn, do red bota nigdzie nie mogę znaleźć bezpiecznego cracka, podrzucisz coś? 

Piszę to już chyba 5 raz dzisiaj, ale co mi szkodzi. Tibia Auto - pobierz stąd albo trial do WindBota.

 

Opublikowano

Koledzy, czy da się ustawić xeno bota tak by za każdym razem po włączeniu nie trzeba było od nowa ustawiać healingu?

Jakaś opcja save jak byla w elfie czy coś? w moim przypadku

 

exura vita     below 55

 

exura gran   below 75

 

exura           bellow 90

 

dzięki za odp

Opublikowano

wiem wiem ale  z tego co słyszałem TA to najbardziej wykrywalny bot ever 

Nie ma czegoś takiego jak niewykrywalny bot!Tibia nie posiada żadnego programu anti-cheat albo anti-bot jak dostaniesz reporta i cipsoftowi bedzie sie chcialo to sprawdzić to wyrwiesz bana mając nawet xeno albo windbota itp

12Z3na4w70uNWDDFCGFCG.gif

Opublikowano

Panowie, czy mógłby ktoś podrzucić skrypt na auto magic shield. Mam na myśli automatyczne ponawianie utamo vity, z góry dziękuję

Domyślam się, że w XenoBocie? Nie musisz mieć na to skryptu, ustaw w zakładce 'Support'>'Condition Manager' tak:

3ojSOXq.png

 

Opublikowano

Witam forumowiczów, czy byłby ktoś uprzejmy poprawić mi tego skrypta (którego znalazlem na necie) na loot, tak by zbierał z ciał strong mana potiony i assassin stary

 

 

-----------------------------------------------
-------------------- CONFIG -------------------
-----------------------------------------------
 
LootGold            = true
LootAboveValue      = 100    -- Will loot any item with an NPC price greater or equal to this.
LootAboveValueRatio = 5    -- Will loot any stackable item with a NPC price to weight ratio greater or equal to this.
LootList =                 -- Will loot all items on this list even if they don't meet any of the above criteria.
{
    "Glooth Capsule",
    "Tainted Glooth Capsule",
    "Great Spirit Potion",
    "Crude Umbral Spellbook",
    "Great Health Potion",
    "Ultimate Health Potion",
}
 
-- You need to open your backpacks on your own. 0 is your main backpack.
BpStacks = 0
BpRares  = 0
BpGold   = 0 -- Not needed it not looting gold.
 
-- Increase these if the script misses loot. Decrease them to increase speed.
MinWait = 100
MaxWait = 100
 
OpenCorpses = true
 
-----------------------------------------------
----------------- DESCRIPTION -----------------
-----------------------------------------------
--[[
This script will open and loot corpses within 1sqm of your character.
It will also loot any corpse that you open manually.
Known issues:
- The script is only able to open very fresh corpses.
- The script will not retry opening a corpse if you walk away
 while it is being looted.
- The script cannot open corpses on top of ladders and rope spots.
]]
-----------------------------------------------
-----------------------------------------------
-----------------------------------------------
 
-- CONVERT CONFIG
local LootAboveValue = LootAboveValue
local LootAboveValueRatio = LootAboveValueRatio
OldLootList = LootList
local LootList = {}
for _, name in ipairs(OldLootList) do
    LootList[item.GetItemIDFromDualInput(name)] = true
end
 
local BpStacks = BpStacks
local BpRares = BpRares
local BpGold = BpGold
 
-- POSITION HASHING
local function ToNumber(pos)
    return 10000000000*pos.x+100000*pos.y+pos.z
end
 
local function ToPos(num)
    local x = math.floor(num/10000000000)
    local y = math.floor(num/100000)%100000
    local z = num%100000
    return {x=x, y=y, z=z}
end
 
-- WAITING
local MinWait = MinWait
local MaxWait = MaxWait
local function Wait()
    local ping = 0 --Self.Ping()
    wait(MinWait + ping, MaxWait + ping)
end
 
-- LOOTER
local Corpses = {}
local Monsters = {}
 
Module("Find Corpses", function(find)
    for _, monster in pairs(Monsters) do
        if not monster:isAlive() and monster:DistanceFromSelf() <= 1 and Self.Position().z == monster:Position().z then
            local posHash = ToNumber(monster:Position())
            Corpses[posHash] = (Corpses[posHash] or 0) + 1
        end
    end
     
    Monsters = {}
    for _, monster in Creature.iMonsters(7) do
        Monsters[ToNumber(monster:Position())] = monster
    end
end)
 
local function GetBp(id)
    return (id==3031 and BpGold) or (Item.isStackable(id) and BpStacks) or BpRares
end
 
local function GetSlot(id)
    local bp = Container(GetBp(id))
    if bp:isOpen() then
        -- If bp isn't full, place it in the last slot.
        if bp:ItemCount() < bp:ItemCapacity() then return  bp:Index(), bp:ItemCapacity()-1, (Item.isStackable(id) and 100) or 1 end
        -- If it is full and the item is stackable, try to fit it into an existing slot.
        if Item.isStackable(id) then
            for Spot = 0, bp:ItemCount() - 1 do
                local item = bp:GetItemData(Spot)
                if id == item.id and item.count ~= 100 then
                    return bp:Index(), Spot, (100-item.count)
                end
            end
end
        -- If it's full and we couldn't fit it into an existing slot, try open a new bp.
if Item.isContainer(bp:GetItemData(bp:ItemCount()-1).id) then
local tries = 0
while not bp:UseItem(bp:ItemCount()-1, true) and tries < 10 do
Wait() 
tries = tries + 1 
end
if tries < 10 then
return GetSlot(id)
end
else
print("Error: "..bp:Name().." is full and has no container in its last slot.")
end
    else
        print("Error: All backpacks aren't open.")
    end
end
 
local function MoveToSelf(Corpse, Spot)
    local item = Corpse:GetItemData(Spot)
    if Self.Cap() >= Item.GetWeight(item.id)*item.count then
        local index, slot, count = GetSlot(item.id)
        if index then
            local tries = 0
            local LCount = Corpse:ItemCount()
            while Corpse:isOpen() and Corpse:ItemCount() == LCount and tries < 10 do
                Corpse:MoveItemToContainer(Spot, index, slot, math.min(item.count, count))
                Wait()
                tries = tries + 1 
            end
            Wait()
            if Corpse:isOpen() and Corpse:ItemCount() ~= LCount and count == item.count then
                return true
            end
            if Corpse:isOpen() and count < item.count then
                return MoveToSelf(Corpse, Spot)
            end
        end
    else
        print("Error: Not enough capacity.")
    end
    return false
end
 
local function IsLoot(id)
    return ((Item.GetValue(id) >= LootAboveValue) or
            (Item.isStackable(id) and (Item.GetValue(id)/Item.GetWeight(id)) > LootAboveValueRatio) or
    LootList[id]) and (LootGold or id ~= 3031)
end
 
local CorpseNames = {"The", "Demonic", "Dead", "Slain", "Dissolved", "Remains", "Elemental", "Split"}
local function IsCorpseByName(name)
for _, CPartName in ipairs(CorpseNames) do
if name:find(CPartName) then
return true
end
end
return false
end
 
local function CotainerIsCorpse©
    return Item.isCorpse(c:ID()) or IsCorpseByName(c:Name())
end
 
local function GrabItems(Corpse)
    local success = true
    if (Item.isCorpse(Corpse:ID()) or IsCorpseByName(Corpse:Name())) then
        for Spot = Corpse:ItemCount() - 1, 0, -1 do
            if IsLoot(Corpse:GetItemData(Spot).id) then
                success = success and MoveToSelf(Corpse, Spot)
                Wait()
            end
        end
    end
    return success
end
 
local function OpenCorpse(pos, count)
    if Item.isCorpse(Map.GetTopUseItem(pos.x, pos.y, pos.z).id) and count == 1 then
-- We need slightly longer waits when opening corpses, or the script falls apart. However, I'd still like the user to be able to slow down the looter. Thus we use both a static wait and a user configured wait.
        local success = Self.UseItemFromGround(pos.x, pos.y, pos.z)
        return 0
    else
        -- Open the browse field container
        local Browse = Container.GetByName("Browse Field")
        Self.BrowseField(pos.x, pos.y, pos.z)
        Wait()
        if not Browse:isOpen() then return count end
 
        -- For each corpse in the browse, loot it
        for Spot = Browse:ItemCount() - 1, 0, -1 do
            if Item.isCorpse(Browse:GetItemData(Spot).id) then
                if not Browse:UseItem(Spot) then 
                    Browse:Close() 
                    return count 
                end
                wait(40, 50)
                Wait()
                count = count - 1
            end
            if count == 0 then break end
        end
 
        Browse:Close()
        return 0
    end
end
 
if OpenCorpses then
Module("Open Corpses", function(open)
local UpdatedCorpses = {}
for numPos, count in pairs(Corpses) do
local pos = ToPos(numPos)
if Self.DistanceFromPosition(pos.x, pos.y, pos.z) <= 1 and Self.Position().z == pos.z then
                local remaining = OpenCorpse(pos, count)
if remaining > 0 then
UpdatedCorpses[numPos] = remaining
                else
                    GrabItems(Container:GetLast())
end
else
UpdatedCorpses[numPos] = count
end
end
        Corpses = UpdatedCorpses
end)
end
 
Module("Loot Corpses", function(loot)
    for _, c in Container.iContainers() do
        if (Item.isCorpse(c:ID()) or IsCorpseByName(c:Name())) and c:isOpen() then
            if GrabItems© then 
Wait() 
c:Close()
end
        end
    end
end)
Opublikowano

Witam forumowiczów, czy byłby ktoś uprzejmy poprawić mi tego skrypta (którego znalazlem na necie) na loot, tak by zbierał z ciał strong mana potiony i assassin stary

 

 

 

-----------------------------------------------

-------------------- CONFIG -------------------

-----------------------------------------------

 

LootGold            = true

LootAboveValue      = 100    -- Will loot any item with an NPC price greater or equal to this.

LootAboveValueRatio = 5    -- Will loot any stackable item with a NPC price to weight ratio greater or equal to this.

LootList =                 -- Will loot all items on this list even if they don't meet any of the above criteria.

{

    "Glooth Capsule",

    "Tainted Glooth Capsule",

    "Great Spirit Potion",

    "Crude Umbral Spellbook",

    "Great Health Potion",

    "Ultimate Health Potion",

}

 

-- You need to open your backpacks on your own. 0 is your main backpack.

BpStacks = 0

BpRares  = 0

BpGold   = 0 -- Not needed it not looting gold.

 

-- Increase these if the script misses loot. Decrease them to increase speed.

MinWait = 100

MaxWait = 100

 

OpenCorpses = true

 

-----------------------------------------------

----------------- DESCRIPTION -----------------

-----------------------------------------------

--[[

This script will open and loot corpses within 1sqm of your character.

It will also loot any corpse that you open manually.

Known issues:

- The script is only able to open very fresh corpses.

- The script will not retry opening a corpse if you walk away

 while it is being looted.

- The script cannot open corpses on top of ladders and rope spots.

]]

-----------------------------------------------

-----------------------------------------------

-----------------------------------------------

 

-- CONVERT CONFIG

local LootAboveValue = LootAboveValue

local LootAboveValueRatio = LootAboveValueRatio

OldLootList = LootList

local LootList = {}

for _, name in ipairs(OldLootList) do

    LootList[item.GetItemIDFromDualInput(name)] = true

end

 

local BpStacks = BpStacks

local BpRares = BpRares

local BpGold = BpGold

 

-- POSITION HASHING

local function ToNumber(pos)

    return 10000000000*pos.x+100000*pos.y+pos.z

end

 

local function ToPos(num)

    local x = math.floor(num/10000000000)

    local y = math.floor(num/100000)%100000

    local z = num%100000

    return {x=x, y=y, z=z}

end

 

-- WAITING

local MinWait = MinWait

local MaxWait = MaxWait

local function Wait()

    local ping = 0 --Self.Ping()

    wait(MinWait + ping, MaxWait + ping)

end

 

-- LOOTER

local Corpses = {}

local Monsters = {}

 

Module("Find Corpses", function(find)

    for _, monster in pairs(Monsters) do

        if not monster:isAlive() and monster:DistanceFromSelf() <= 1 and Self.Position().z == monster:Position().z then

            local posHash = ToNumber(monster:Position())

            Corpses[posHash] = (Corpses[posHash] or 0) + 1

        end

    end

     

    Monsters = {}

    for _, monster in Creature.iMonsters(7) do

        Monsters[ToNumber(monster:Position())] = monster

    end

end)

 

local function GetBp(id)

    return (id==3031 and BpGold) or (Item.isStackable(id) and BpStacks) or BpRares

end

 

local function GetSlot(id)

    local bp = Container(GetBp(id))

    if bp:isOpen() then

        -- If bp isn't full, place it in the last slot.

        if bp:ItemCount() < bp:ItemCapacity() then return  bp:Index(), bp:ItemCapacity()-1, (Item.isStackable(id) and 100) or 1 end

        -- If it is full and the item is stackable, try to fit it into an existing slot.

        if Item.isStackable(id) then

            for Spot = 0, bp:ItemCount() - 1 do

                local item = bp:GetItemData(Spot)

                if id == item.id and item.count ~= 100 then

                    return bp:Index(), Spot, (100-item.count)

                end

            end

end

        -- If it's full and we couldn't fit it into an existing slot, try open a new bp.

if Item.isContainer(bp:GetItemData(bp:ItemCount()-1).id) then

local tries = 0

while not bp:UseItem(bp:ItemCount()-1, true) and tries < 10 do

Wait() 

tries = tries + 1 

end

if tries < 10 then

return GetSlot(id)

end

else

print("Error: "..bp:Name().." is full and has no container in its last slot.")

end

    else

        print("Error: All backpacks aren't open.")

    end

end

 

local function MoveToSelf(Corpse, Spot)

    local item = Corpse:GetItemData(Spot)

    if Self.Cap() >= Item.GetWeight(item.id)*item.count then

        local index, slot, count = GetSlot(item.id)

        if index then

            local tries = 0

            local LCount = Corpse:ItemCount()

            while Corpse:isOpen() and Corpse:ItemCount() == LCount and tries < 10 do

                Corpse:MoveItemToContainer(Spot, index, slot, math.min(item.count, count))

                Wait()

                tries = tries + 1 

            end

            Wait()

            if Corpse:isOpen() and Corpse:ItemCount() ~= LCount and count == item.count then

                return true

            end

            if Corpse:isOpen() and count < item.count then

                return MoveToSelf(Corpse, Spot)

            end

        end

    else

        print("Error: Not enough capacity.")

    end

    return false

end

 

local function IsLoot(id)

    return ((Item.GetValue(id) >= LootAboveValue) or

            (Item.isStackable(id) and (Item.GetValue(id)/Item.GetWeight(id)) > LootAboveValueRatio) or

    LootList[id]) and (LootGold or id ~= 3031)

end

 

local CorpseNames = {"The", "Demonic", "Dead", "Slain", "Dissolved", "Remains", "Elemental", "Split"}

local function IsCorpseByName(name)

for _, CPartName in ipairs(CorpseNames) do

if name:find(CPartName) then

return true

end

end

return false

end

 

local function CotainerIsCorpse©

    return Item.isCorpse(c:ID()) or IsCorpseByName(c:Name())

end

 

local function GrabItems(Corpse)

    local success = true

    if (Item.isCorpse(Corpse:ID()) or IsCorpseByName(Corpse:Name())) then

        for Spot = Corpse:ItemCount() - 1, 0, -1 do

            if IsLoot(Corpse:GetItemData(Spot).id) then

                success = success and MoveToSelf(Corpse, Spot)

                Wait()

            end

        end

    end

    return success

end

 

local function OpenCorpse(pos, count)

    if Item.isCorpse(Map.GetTopUseItem(pos.x, pos.y, pos.z).id) and count == 1 then

-- We need slightly longer waits when opening corpses, or the script falls apart. However, I'd still like the user to be able to slow down the looter. Thus we use both a static wait and a user configured wait.

        local success = Self.UseItemFromGround(pos.x, pos.y, pos.z)

        return 0

    else

        -- Open the browse field container

        local Browse = Container.GetByName("Browse Field")

        Self.BrowseField(pos.x, pos.y, pos.z)

        Wait()

        if not Browse:isOpen() then return count end

 

        -- For each corpse in the browse, loot it

        for Spot = Browse:ItemCount() - 1, 0, -1 do

            if Item.isCorpse(Browse:GetItemData(Spot).id) then

                if not Browse:UseItem(Spot) then 

                    Browse:Close() 

                    return count 

                end

                wait(40, 50)

                Wait()

                count = count - 1

            end

            if count == 0 then break end

        end

 

        Browse:Close()

        return 0

    end

end

 

if OpenCorpses then

Module("Open Corpses", function(open)

local UpdatedCorpses = {}

for numPos, count in pairs(Corpses) do

local pos = ToPos(numPos)

if Self.DistanceFromPosition(pos.x, pos.y, pos.z) <= 1 and Self.Position().z == pos.z then

                local remaining = OpenCorpse(pos, count)

if remaining > 0 then

UpdatedCorpses[numPos] = remaining

                else

                    GrabItems(Container:GetLast())

end

else

UpdatedCorpses[numPos] = count

end

end

        Corpses = UpdatedCorpses

end)

end

 

Module("Loot Corpses", function(loot)

    for _, c in Container.iContainers() do

        if (Item.isCorpse(c:ID()) or IsCorpseByName(c:Name())) and c:isOpen() then

            if GrabItems© then 

Wait() 

c:Close()

end

        end

    end

end)

 

 

Następnym razem o skrypty/pomoc z nimi pisz tutaj i dodawaj je w [.code], jest bardziej czytelnie.

Nie wiem po co Ci skrypt na looting, jak możesz inaczej to ustawić, ale ok.

-----------------------------------------------
-------------------- CONFIG -------------------
-----------------------------------------------
 
LootGold            = true
LootAboveValue      = 100    -- Will loot any item with an NPC price greater or equal to this.
LootAboveValueRatio = 5    -- Will loot any stackable item with a NPC price to weight ratio greater or equal to this.
LootList =                 -- Will loot all items on this list even if they don't meet any of the above criteria.
{
    "Glooth Capsule",
    "Tainted Glooth Capsule",
    "Great Spirit Potion",
    "Crude Umbral Spellbook",
    "Great Health Potion",
    "Ultimate Health Potion",
    "Assassin Star",
    "Strong Mana Potion",
}
 
-- You need to open your backpacks on your own. 0 is your main backpack.
BpStacks = 0
BpRares  = 0
BpGold   = 0 -- Not needed it not looting gold.
 
-- Increase these if the script misses loot. Decrease them to increase speed.
MinWait = 100
MaxWait = 100
 
OpenCorpses = true
 
-----------------------------------------------
----------------- DESCRIPTION -----------------
-----------------------------------------------
--[[
This script will open and loot corpses within 1sqm of your character.
It will also loot any corpse that you open manually.
Known issues:
- The script is only able to open very fresh corpses.
- The script will not retry opening a corpse if you walk away
 while it is being looted.
- The script cannot open corpses on top of ladders and rope spots.
]]
-----------------------------------------------
-----------------------------------------------
-----------------------------------------------
 
-- CONVERT CONFIG
local LootAboveValue = LootAboveValue
local LootAboveValueRatio = LootAboveValueRatio
OldLootList = LootList
local LootList = {}
for _, name in ipairs(OldLootList) do
    LootList[Item.GetItemIDFromDualInput(name)] = true
end
 
local BpStacks = BpStacks
local BpRares = BpRares
local BpGold = BpGold
 
-- POSITION HASHING
local function ToNumber(pos)
    return 10000000000*pos.x+100000*pos.y+pos.z
end
 
local function ToPos(num)
    local x = math.floor(num/10000000000)
    local y = math.floor(num/100000)%100000
    local z = num%100000
    return {x=x, y=y, z=z}
end
 
-- WAITING
local MinWait = MinWait
local MaxWait = MaxWait
local function Wait()
    local ping = 0 --Self.Ping()
    wait(MinWait + ping, MaxWait + ping)
end
 
-- LOOTER
local Corpses = {}
local Monsters = {}
 
Module("Find Corpses", function(find)
    for _, monster in pairs(Monsters) do
        if not monster:isAlive() and monster:DistanceFromSelf() <= 1 and Self.Position().z == monster:Position().z then
            local posHash = ToNumber(monster:Position())
            Corpses[posHash] = (Corpses[posHash] or 0) + 1
        end
    end
     
    Monsters = {}
    for _, monster in Creature.iMonsters(7) do
        Monsters[ToNumber(monster:Position())] = monster
    end
end)
 
local function GetBp(id)
    return (id==3031 and BpGold) or (Item.isStackable(id) and BpStacks) or BpRares
end
 
local function GetSlot(id)
    local bp = Container(GetBp(id))
    if bp:isOpen() then
        -- If bp isn't full, place it in the last slot.
        if bp:ItemCount() < bp:ItemCapacity() then return  bp:Index(), bp:ItemCapacity()-1, (Item.isStackable(id) and 100) or 1 end
        -- If it is full and the item is stackable, try to fit it into an existing slot.
        if Item.isStackable(id) then
            for Spot = 0, bp:ItemCount() - 1 do
                local item = bp:GetItemData(Spot)
                if id == item.id and item.count ~= 100 then
                    return bp:Index(), Spot, (100-item.count)
                end
            end
end
        -- If it's full and we couldn't fit it into an existing slot, try open a new bp.
if Item.isContainer(bp:GetItemData(bp:ItemCount()-1).id) then
local tries = 0
while not bp:UseItem(bp:ItemCount()-1, true) and tries < 10 do
Wait() 
tries = tries + 1 
end
if tries < 10 then
return GetSlot(id)
end
else
print("Error: "..bp:Name().." is full and has no container in its last slot.")
end
    else
        print("Error: All backpacks aren't open.")
    end
end
 
local function MoveToSelf(Corpse, Spot)
    local item = Corpse:GetItemData(Spot)
    if Self.Cap() >= Item.GetWeight(item.id)*item.count then
        local index, slot, count = GetSlot(item.id)
        if index then
            local tries = 0
            local LCount = Corpse:ItemCount()
            while Corpse:isOpen() and Corpse:ItemCount() == LCount and tries < 10 do
                Corpse:MoveItemToContainer(Spot, index, slot, math.min(item.count, count))
                Wait()
                tries = tries + 1 
            end
            Wait()
            if Corpse:isOpen() and Corpse:ItemCount() ~= LCount and count == item.count then
                return true
            end
            if Corpse:isOpen() and count < item.count then
                return MoveToSelf(Corpse, Spot)
            end
        end
    else
        print("Error: Not enough capacity.")
    end
    return false
end
 
local function IsLoot(id)
    return ((Item.GetValue(id) >= LootAboveValue) or
            (Item.isStackable(id) and (Item.GetValue(id)/Item.GetWeight(id)) > LootAboveValueRatio) or
    LootList[id]) and (LootGold or id ~= 3031)
end
 
local CorpseNames = {"The", "Demonic", "Dead", "Slain", "Dissolved", "Remains", "Elemental", "Split"}
local function IsCorpseByName(name)
for _, CPartName in ipairs(CorpseNames) do
if name:find(CPartName) then
return true
end
end
return false
end
 
local function CotainerIsCorpse(c)
    return Item.isCorpse(c:ID()) or IsCorpseByName(c:Name())
end
 
local function GrabItems(Corpse)
    local success = true
    if (Item.isCorpse(Corpse:ID()) or IsCorpseByName(Corpse:Name())) then
        for Spot = Corpse:ItemCount() - 1, 0, -1 do
            if IsLoot(Corpse:GetItemData(Spot).id) then
                success = success and MoveToSelf(Corpse, Spot)
                Wait()
            end
        end
    end
    return success
end
 
local function OpenCorpse(pos, count)
    if Item.isCorpse(Map.GetTopUseItem(pos.x, pos.y, pos.z).id) and count == 1 then
-- We need slightly longer waits when opening corpses, or the script falls apart. However, I'd still like the user to be able to slow down the looter. Thus we use both a static wait and a user configured wait.
        local success = Self.UseItemFromGround(pos.x, pos.y, pos.z)
        return 0
    else
        -- Open the browse field container
        local Browse = Container.GetByName("Browse Field")
        Self.BrowseField(pos.x, pos.y, pos.z)
        Wait()
        if not Browse:isOpen() then return count end
 
        -- For each corpse in the browse, loot it
        for Spot = Browse:ItemCount() - 1, 0, -1 do
            if Item.isCorpse(Browse:GetItemData(Spot).id) then
                if not Browse:UseItem(Spot) then 
                    Browse:Close() 
                    return count 
                end
                wait(40, 50)
                Wait()
                count = count - 1
            end
            if count == 0 then break end
        end
 
        Browse:Close()
        return 0
    end
end
 
if OpenCorpses then
Module("Open Corpses", function(open)
local UpdatedCorpses = {}
for numPos, count in pairs(Corpses) do
local pos = ToPos(numPos)
if Self.DistanceFromPosition(pos.x, pos.y, pos.z) <= 1 and Self.Position().z == pos.z then
                local remaining = OpenCorpse(pos, count)
if remaining > 0 then
UpdatedCorpses[numPos] = remaining
                else
                    GrabItems(Container:GetLast())
end
else
UpdatedCorpses[numPos] = count
end
end
        Corpses = UpdatedCorpses
end)
end
 
Module("Loot Corpses", function(loot)
    for _, c in Container.iContainers() do
        if (Item.isCorpse(c:ID()) or IsCorpseByName(c:Name())) and c:isOpen() then
            if GrabItems(c) then 
Wait() 
c:Close()
end
        end
    end
end)

 

Opublikowano

okej, ogarnąłem. Jak zrobić żeby bot nie szedł po zabiciu do ciała i otwierał go, tylko żebym ja manualnie podchodził, otwierał i dopiero bot wyciągał itemy? Ponadto zauważyłem ze bot zbiera loota z ciał które sam zabije, jak ustawić zęby zbierał loota z ciał martwych które ja podejdę i otworze(nawet gdy potwora zabił inny gracz)

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...