Auto Loot v1.2

Vodk
Por Vodk
em Mods, funções e outros
  • 1
  • 2

Vodk

Sumus Validus
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 16/11/15Posts: 29
Atualização v1.2:

Funciona em OTpokémon.
Além de Premium, agora tem VIPTIME.


Atualização v1.1:

AutomaticDeposit adicionado.

Introdução: É um sistema que você pegue os loots automaticamente.

 

O sistema contém:

 

Menu: Há um menu mostrando quais itens estão marcados para lootear automaticamente.

 

Hb2A7.png

rWxW3.png

 

 

 

 

 

 

Mods:

 

 

 

Autoloot.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Loot System" version="1.0" author="Vodkart And Mkalo" contact="xtibia.com" enabled="yes">
<config name="Loot_func"><![CDATA[

info = {
OnlyPremium = true,
AutomaticDeposit = true,
BlockMonsters = {},
BlockItemsList = {2123,2515}
}

function setPlayerStorageTable(cid, storage, tab)
local tabstr = "&"
for i,x in pairs(tab) do
tabstr = tabstr .. i .. "," .. x .. ";"
end
setPlayerStorageValue(cid, storage, tabstr:sub(1, #tabstr-1))
end
function getPlayerStorageTable(cid, storage)
local tabstr = getPlayerStorageValue(cid, storage)
local tab = {}
if type(tabstr) ~= "string" then
return {}
end
if tabstr:sub(1,1) ~= "&" then
return {}
end
local tabstr = tabstr:sub(2, #tabstr)
local a = string.explode(tabstr, ";")
for i,x in pairs(a) do
local b = string.explode(x, ",")
tab[tonumber(b[1]) or b[1]] = tonumber(b[2]) or b[2]
end
return tab
end

function isInTable(cid, item)
for _,i in pairs(getPlayerStorageTable(cid, 27000))do
if tonumber(i) == tonumber(item) then
return true
end
end
return false
end
function addItemTable(cid, item)
local x = {}
for i = 1,#getPlayerStorageTable(cid, 27000) do
table.insert(x,getPlayerStorageTable(cid, 27000)[i])
end
if x ~= 0 then
table.insert(x,tonumber(item))
setPlayerStorageTable(cid, 27000, x)
else
setPlayerStorageTable(cid, 27000, {item})
end
end
function removeItemTable(cid, item)
local x = {}
for i = 1,#getPlayerStorageTable(cid, 27000) do
table.insert(x,getPlayerStorageTable(cid, 27000)[i])
end
for i,v in ipairs(x) do
if tonumber(v) == tonumber(item) then
table.remove(x,i)
end
end
return setPlayerStorageTable(cid, 27000, x)
end
function ShowItemsTabble(cid)
local str,n = "-- My Loot List --\n\n",0
for i = 1,#getPlayerStorageTable(cid, 27000) do
n = n + 1
str = str..""..n.." - "..getItemNameById(getPlayerStorageTable(cid, 27000)[i]).."\n"
end
return doShowTextDialog(cid, 2529, str)
end
function getContainerItems(containeruid)
local items = {}
local containers = {}
if type(getContainerSize(containeruid)) ~= "number" then
return false
end
for slot = 0, getContainerSize(containeruid)-1 do
local item = getContainerItem(containeruid, slot)
if item.itemid == 0 then
break
end
if isContainer(item.uid) then
table.insert(containers, item.uid)
end
table.insert(items, item)
end
if #containers > 0 then
for i,x in ipairs(getContainerItems(containers[1])) do
table.insert(items, x)
end
table.remove(containers, 1)
end
return items
end
function getItemsInContainerById(container, itemid) -- Function By Kydrai
local items = {}
if isContainer(container) and getContainerSize(container) > 0 then
for slot=0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
local itemsbag = getItemsInContainerById(item.uid, itemid)
for i=0, #itemsbag do
table.insert(items, itemsbag[i])
end
else
if itemid == item.itemid then
table.insert(items, item.uid)
end
end
end
end
return items
end
function doPlayerAddItemStacking(cid, itemid, quant) -- by mkalo
local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid)
local piles = 0
if #item > 0 then
for i,x in pairs(item) do
if getThing(x).type < 100 then
local it = getThing(x)
doTransformItem(it.uid, itemid, it.type+quant)
if it.type+quant > 100 then
doPlayerAddItem(cid, itemid, it.type+quant-100)
end
else
piles = piles+1
end
end
else
return doPlayerAddItem(cid, itemid, quant)
end
if piles == #item then
doPlayerAddItem(cid, itemid, quant)
end
end
function AutomaticDeposit(cid,item,n)
local deposit = item == tonumber(2160) and (n*10000) or tonumber(item) == 2152 and (n*100) or (n*1)
return doPlayerDepositMoney(cid, deposit)
end
function corpseRetireItems(cid, pos)
local check = false
for i = 0, 255 do
pos.stackpos = i
tile = getTileThingByPos(pos)
if tile.uid > 0 and isCorpse(tile.uid) then
check = true break
end
end
if check == true then
local items = getContainerItems(tile.uid)
for i,x in pairs(items) do
if isInArray(getPlayerStorageTable(cid, 27000), tonumber(x.itemid)) then
if isItemStackable(x.itemid) then
doPlayerAddItemStacking(cid, x.itemid, x.type)
if info.AutomaticDeposit == true and isInArray({"2148","2152","2160"},tonumber(x.itemid)) then
AutomaticDeposit(cid,x.itemid,x.type)
end
else
doPlayerAddItem(cid, x.itemid)
end
doRemoveItem(x.uid)
end
end
end
end
]]></config>
<event type="login" name="LootLogin" event="script"><![CDATA[
function onLogin(cid)
registerCreatureEvent(cid, "MonsterAttack")
return true
end]]></event>
<event type="death" name="LootEventDeath" event="script"><![CDATA[
domodlib('Loot_func')
function onDeath(cid, corpse, deathList)
local killer,pos = deathList[1],getCreaturePosition(cid)
addEvent(corpseRetireItems,1,killer,pos)
return true
end]]></event>
<event type="combat" name="MonsterAttack" event="script"><![CDATA[
domodlib('Loot_func')
if isPlayer(cid) and isMonster(target) and not isInArray(info.BlockMonsters,string.lower(getCreatureName(target))) then
registerCreatureEvent(target, "LootEventDeath")
end
return true]]></event>
<talkaction words="!autoloot;/autoloot" event="buffer"><![CDATA[
domodlib('Loot_func')
local t = string.explode(string.lower(param), ",")
if info.OnlyPremium == true and not isPremium(cid) then
doPlayerSendCancel(cid, "you must be a premium account.") return true
elseif not t[1] then
ShowItemsTabble(cid) return true
elseif tonumber(t[1]) or tonumber(t[2]) then
doPlayerSendCancel(cid, "enter!autoloot add,name or !autoloot remove,name") return true
elseif isInArray({"add","remove"}, tostring(t[1])) then
local func,check = tostring(t[1]) == "add" and addItemTable or removeItemTable, tostring(t[1]) == "add" and true or false
local item = getItemIdByName(tostring(t[2]), false)
if not item then
doPlayerSendCancel(cid, "This item does not exist.") return true
elseif check == true and isInArray(info.BlockItemsList, item) then
doPlayerSendCancel(cid, "You can not add this item in the list!") return true
elseif isInTable(cid, item) == check then
doPlayerSendCancel(cid, "This Item "..(check == true and "already" or "is not").." in your list.") return true
end
func(cid, item)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,check == true and "you added the item "..t[2].." in the list" or "you removed the item "..t[2].." from the list") return true
end
return true]]></talkaction>
</mod>

 

 

 

 

 

Comandos:

/autoloot -- mostra a sua lista de items


/autoloot add,nome do item -- adiciona o item na loot list


/autoloot remove,nome do item -- remove o item da loot list

Configurando:

OnlyPremium = true

vc precisa ser premium para usar o comando


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

AutomaticDeposit = true

Se o dinheiro que ele dropar ao invés de ir para bag vai para o banco

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


BlockMonsters = {}

aqui você pode bloquear alguns monstro para ele não usar o auto loot, exemplo:

BlockMonsters = {'demon','medusa'}



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


Também tem como bloquear alguns itens para serem adicionados a loot list, exemplo:

BlockItemList = {2160,2163

 

"ok Vodkart, tem pra premium mas e se meu servidor for de Vip Time?"

 

 

Simples:

Troque:

if info.OnlyPremium == true and not isPremium(cid) then
doPlayerSendCancel(cid, "you must be a premium account.") return true


por:

if info.OnlyPremium == true and getPlayerStorageValue(cid, 13540) - os.time() <= 0 then
doPlayerSendCancel(cid, "you must be a vip account.") return true

 

Caso seu servidor precise que relogue para atualizar a loot list, adicione isso:

func(cid, item) -- depois desta linha
doPlayerSave(cid) -- essa função

bossisg.png

dyego2008

Ajudar o Próximo é muito Bom,
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 03/06/08Posts: 508

Nossa muito bom em mano haha, obrigado por atualizar.

WyvSCRs.png

Vodk

Sumus Validus
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 16/11/15Posts: 29

voltei hoje pro fórum, to atualizando devagar os antigos scripts bugados.

bossisg.png

Administrador

xTibia 2017
avatar
Administrador
Administrador

INFOS

Grupo: AdministradorRegistrado: 09/07/05Posts: 5780Gênero: Outro

Não li todo o código todo, mas se for usar em derivado terá que tirar esse shield, não?

Quando ao script, muito útil!

DICA

Utilize botão @UP, no início de seu tópico, para atualizar o destaque de seu tópico em "Tópicos Recentes" na index, fará com que mais pessoas o vejam.

 

 

Vodk

Sumus Validus
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 16/11/15Posts: 29

Não li todo o código todo, mas se for usar em derivado terá que tirar esse shield, não?

Quando ao script, muito útil!

 

sim, é necessário tirar o shield e obrigado.

bossisg.png

brendoonh

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 04/01/14Posts: 318

Teria como por um limite? Tipo, so poderia adicionar 3 itens, e um item que ao ativa daria mais 2 slot.. Sacouu?

Deadpool

!!!
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 25/10/11Posts: 2175Gênero: MasculinoChar no Tibia: Sociopata

Você é o verdadeiro vodkart? Oo.. Se for, sou muito fã seu! haha, tive o prazer de ver todos os seus sistemas, em 2006 / 2011..
Gostei do script, fiz uma versão aqui bem show tambem rsrs.. Passa seu skype por pm?

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

 

 

 

 

DICA

Utilize botão @UP, no início de seu tópico, para atualizar o destaque de seu tópico em "Tópicos Recentes" na index, fará com que mais pessoas o vejam.

Vodk

Sumus Validus
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 16/11/15Posts: 29

Você é o verdadeiro vodkart? Oo.. Se for, sou muito fã seu! haha, tive o prazer de ver todos os seus sistemas, em 2006 / 2011..

Gostei do script, fiz uma versão aqui bem show tambem rsrs.. Passa seu skype por pm?

 

eu desativei meu skype por motivos pessoais, vou ver se ativo novamente e obrigado.

bossisg.png

kaleudd

avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 15/06/15Posts: 729

Muito bom,usei uns Top Buttons no OTClient e ajustei,fico ótimo haha xD.

Krono

avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 08/04/15Posts: 247

Show d+ se o tibia tivesse implantado esse sistema desde o inicio talvez bot nem existiria.

 

Muito bom,usei uns Top Buttons no OTClient e ajustei,fico ótimo haha xD.

 

Gostaria de saber porque não existe uma área no Xtibia separada para Otcliente, principalmente com tutoriais, seria uma otimo nicho para a expansão da comunidade.

dalvorsn

õ/
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 21/12/11Posts: 750Gênero: Masculino

Nuss, trabalhoso demais fazer isso por lua '-'

Se fizesse no c++ fazia direto no dropLoot do MonsterType

 

Parabéns brow, bom sistema! :D

"A covardia coloca a questão: É seguro? O comodismo coloca a questão: É popular? A etiqueta coloca a questão: é elegante? Mas a consciência coloca a questão, É correto? E chega uma altura em que temos de tomar uma posição que não é segura, não é elegante, não é popular, mas o temos de fazer porque a nossa consciência nos diz que é essa a atitude correta."

(Martin Luther King)

branbo

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 08/03/11Posts: 5

Já procurei por tudo... como que instala/faz pra funcionar? :/

brendoonh

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 04/01/14Posts: 318

Vodk, teria como por um limite ?? Ex: poderia adicionar somente 3 itens...

totonho18

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 15/10/11Posts: 60Char no Tibia: Foi Del :/

Não funcniona em ots 9.60 simplesmente não reconhece o loot, diz que não existe, alguém sabe como arrumar?

fefuxd

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/01/17Posts: 28Gênero: Masculino

@Vodk o gold nem sempre sai do corpo do bixo.. tem horas que sai.. horas que nao.. o que pode ser?

  • 1
  • 2