View Full Version : [Looter] Move Corpses
leleog
02-05-2012, 01:19 PM
Well, as far as i've seen on XenoBot (bought yesterday), if two creatures fall in the same sqm, it will only loot the first one.. would be great if the bot move corpses to make sure every creature is looted in a situation like that..
LukeFisher
02-05-2012, 05:58 PM
yeah an option to loot immediately after kill would be cool too + ability to choose a looting mode
sk8er08
02-06-2012, 03:30 PM
+1 good idea!
Dizix
02-07-2012, 06:57 AM
yeah an option to loot immediately after kill would be cool too + ability to choose a looting mode
+1 on this.
This bot really needs different looting options and it depends alot which vocation you are, where you're hunting etc.
laconcha
12-08-2013, 10:48 PM
anyone found a script for this yet?... i've lost a lot of profit because of this. :S
gazgaz
12-08-2013, 11:18 PM
there is no scrip for this and there most likely wont be if you want it to loot befor hand right click in the looter and channge it from last to first and it will loot after it kills the monster
hansaa
12-09-2013, 12:32 AM
Would be nice if the looter use "Browse Field" option on the Tibia client...
hugo999
12-09-2013, 08:55 AM
Function
Self.BrowseField()?
First the bot needs the ability to read the 8 or so visible items on a square. I know it must be possible to read, because you can see 8 or so items before they start disappearing. Also there should be a way to tell if something is covering the base ground tile. Once you add this ability to the bot you could easily implement this to the looter so that the bot would loot creatures that fall on each other with browse field. It could also loot creature that die on ladder spots, and also creatures that are underneath fire fields etc... All other creatures it could loot the normal way. The reason to do it this way is that it would be strange to loot every single creature using browse field and also inhuman. We should only use browse field where it is needed.
This would help with a lot of missed loots.
DarkstaR
Spectrus
12-10-2013, 07:58 AM
Or, y'know, you could write a script...
Here's a browse field looter. Really basic, not commented, not going to explain how to set it up. Get inspired.
local lootList = {
[1] = {3031}
}
local target, pos;
LootMessageProxy.OnReceive('looting', function(p, m)
if (pos) then
--Cavebot.Stop()
Self.BrowseField(pos.x, pos.y, pos.z)
wait(300, 500)
local cont = Container.GetLast()
for spot, item in cont:iItems() do
if (Item.isCorpse(item.id)) then
cont:UseItem(spot, true)
wait(300, 500)
cont = Container.GetLast()
local offset = 0
for i = 0, cont:ItemCount() - 1 do
local itm = cont:GetItemData(i - offset)
for bp, items in pairs(lootList) do
if table.contains(items, itm.id) then
cont:MoveItemToContainer(i - offset, Container(bp), 0)
wait(300, 500)
offset = offset - 1
break
end
end
end
break
end
end
--Cavebot.Start()
end
end)
Module.New('postracking', function()
if Self.TargetID() > 0 then
target = Creature(Self.TargetID())
if (target:isAlive() and target:isOnScreen()) then
pos = target:Position()
return
end
end
target = nil
end)
As for the above post, pffffffffffffffffffffffffffffffffffffffffffff usuck
gazgaz
12-10-2013, 08:04 AM
Or, y'know, you could write a script...
Here's a browse field looter. Really basic, not commented, not going to explain how to set it up. Get inspired.
local lootList = {
[1] = {3031}
}
local target, pos;
LootMessageProxy.OnReceive('looting', function(p, m)
if (pos) then
--Cavebot.Stop()
Self.BrowseField(pos.x, pos.y, pos.z)
wait(300, 500)
local cont = Container.GetLast()
for spot, item in cont:iItems() do
if (Item.isCorpse(item.id)) then
cont:UseItem(spot, true)
wait(300, 500)
cont = Container.GetLast()
local offset = 0
for i = 0, cont:ItemCount() - 1 do
local itm = cont:GetItemData(i - offset)
for bp, items in pairs(lootList) do
if table.contains(items, itm.id) then
cont:MoveItemToContainer(i - offset, Container(bp), 0)
wait(300, 500)
offset = offset - 1
break
end
end
end
break
end
end
--Cavebot.Start()
end
end)
Module.New('postracking', function()
if Self.TargetID() > 0 then
target = Creature(Self.TargetID())
if (target:isAlive() and target:isOnScreen()) then
pos = target:Position()
return
end
end
target = nil
end)
As for the above post, pffffffffffffffffffffffffffffffffffffffffffff usuck
dim skills ouch ;p
kimpan1337
12-10-2013, 09:19 AM
there is no scrip for this and there most likely wont be if you want it to loot befor hand right click in the looter and channge it from last to first and it will loot after it kills the monster
But if ur hunting danger monsters u know then u cant have loot first since u maybe shoot avas on hff and then they are 4 then u run and loot then they will die ;D or behemoths
gazgaz
12-10-2013, 01:04 PM
But if ur hunting danger monsters u know then u cant have loot first since u maybe shoot avas on hff and then they are 4 then u run and loot then they will die ;D or behemoths
yea thats true but it was just one option
kimpan1337
12-10-2013, 06:06 PM
yea thats true but it was just one option
Yeah know ^^
Or, y'know, you could write a script...
Here's a browse field looter. Really basic, not commented, not going to explain how to set it up. Get inspired.
As for the above post, pffffffffffffffffffffffffffffffffffffffffffff usuck
Typical sheepish response. This was posted in the suggestions section, not in the request section. How about providing what the customers pay for? Just because I can write a script does not mean I should always have to. There are certain things like these that should simply be built into the bot. Not to mention that your script walks around using browse field every time it loots a creature. Basically saying to CIP..... "Hey LOOK AT ME! I'm a BOTTER!"
Spectrus
12-11-2013, 06:22 AM
Typical sheepish response.
I don't understand what you're trying to say.
sheepˇish
adjective
1. (of a person or expression) showing embarrassment from shame or a lack of self-confidence.
This was posted in the suggestions section, not in the request section. How about providing what the customers pay for?
You're right. I, having no more influence on the development of the bot, should not provide temporary solutions to people's requests while they wait to hear from the bot developer if he will add their feature.
Just because I can write a script does not mean I should always have to. There are certain things like these that should simply be built into the bot.
You're right, every other bot has moved corpses to loot creatures. Why does Xenobot have to be different? Can't believe this hasn't been added yet.
Seriously? I feel like you just post stupid inane shit to make me educate you. If you want to learn something, just ask nicely.
Not to mention that your script walks around using browse field every time it loots a creature.
Working as intended then, exactly what they were asking for.
Basically saying to CIP..... "Hey LOOK AT ME! I'm a BOTTER!"
This is the annoying bit. You don't know shit about how CIP's automatic detection tool works. No one does. You may have a theory, but don't criticize others just because they go against your theory of how they are detecting bots. Here's a script for you to run on all your accounts:
local knowsHowDetectionWorks = false
repeat
Self.Say("Hey LOOK AT ME! I'm a BOTTER!")
until knowsHowDetectionWorks
Bye!
You broke down my entire post? You take everything far to personally and I'm definitely not going to reward you by continuing this internet fight.
Time for me to work now. Enjoy your internet power. lmao....
RoxZin xD
12-11-2013, 01:37 PM
To be honest Spectrus, original post was when browse field didn't exist, so it made sense to "move the corpse" to loot another below. Now, we got browse field and I wonder myself why XenoBot doesn't use it yet. You know, the newest competitor (which works faster than XenoBot while simulating mouse/keyboard, LOL) does that. The main problem of this community is that you guys always have to make scripts to something which should be in-built.
callumbagshaw
12-11-2013, 04:51 PM
local lootList = {
[1] = {3031}
}
local target, pos;
LootMessageProxy.OnReceive('looting', function(p, m)
if (pos) then
--Cavebot.Stop()
Self.BrowseField(pos.x, pos.y, pos.z)
wait(300, 500)
local cont = Container.GetLast()
for spot, item in cont:iItems() do
if (Item.isCorpse(item.id)) then
cont:UseItem(spot, true)
wait(300, 500)
cont = Container.GetLast()
local offset = 0
for i = 0, cont:ItemCount() - 1 do
local itm = cont:GetItemData(i - offset)
for bp, items in pairs(lootList) do
if table.contains(items, itm.id) then
cont:MoveItemToContainer(i - offset, Container(bp), 0)
wait(300, 500)
offset = offset - 1
break
end
end
end
break
end
end
--Cavebot.Start()
end
end)
Module.New('postracking', function()
if Self.TargetID() > 0 then
target = Creature(Self.TargetID())
if (target:isAlive() and target:isOnScreen()) then
pos = target:Position()
return
end
end
target = nil
end)
Not going to try this Spectrus, but the code looks good to me.
Gotta remember there's a lot of people who are scared of using scripts like this, due to a community which is unfortunately not filled with members like yourself, people tend not to trust scripts for important stuff like looting.
If DarkstaR can convert this to CPP and add it to the bot would be naiiiiiiice ;)
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.