Vodk 37 Postado Novembro 18, 2015 Share Postado Novembro 18, 2015 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. 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 Pikenoh e carlinhoo0ww reagiu a isso 2 Link para o comentário Compartilhar em outros sites More sharing options...
dyego2008 149 Postado Novembro 18, 2015 Share Postado Novembro 18, 2015 Nossa muito bom em mano haha, obrigado por atualizar. Link para o comentário Compartilhar em outros sites More sharing options...
Vodk 37 Postado Novembro 18, 2015 Autor Share Postado Novembro 18, 2015 voltei hoje pro fórum, to atualizando devagar os antigos scripts bugados. Link para o comentário Compartilhar em outros sites More sharing options...
Administrador Administrador 1434 Postado Novembro 18, 2015 Administrador Share Postado Novembro 18, 2015 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! Link para o comentário Compartilhar em outros sites More sharing options...
Vodk 37 Postado Novembro 18, 2015 Autor Share Postado Novembro 18, 2015 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. Link para o comentário Compartilhar em outros sites More sharing options...
brendoonh 14 Postado Novembro 18, 2015 Share Postado Novembro 18, 2015 Teria como por um limite? Tipo, so poderia adicionar 3 itens, e um item que ao ativa daria mais 2 slot.. Sacouu? Link para o comentário Compartilhar em outros sites More sharing options...
Deadpool 862 Postado Novembro 18, 2015 Share Postado Novembro 18, 2015 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? Link para o comentário Compartilhar em outros sites More sharing options...
Vodk 37 Postado Novembro 18, 2015 Autor Share Postado Novembro 18, 2015 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. Link para o comentário Compartilhar em outros sites More sharing options...
kaleudd 200 Postado Novembro 18, 2015 Share Postado Novembro 18, 2015 Muito bom,usei uns Top Buttons no OTClient e ajustei,fico ótimo haha xD. Link para o comentário Compartilhar em outros sites More sharing options...
Krono 128 Postado Novembro 18, 2015 Share Postado Novembro 18, 2015 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. Link para o comentário Compartilhar em outros sites More sharing options...
dalvorsn 267 Postado Novembro 19, 2015 Share Postado Novembro 19, 2015 Nuss, trabalhoso demais fazer isso por lua '-' Se fizesse no c++ fazia direto no dropLoot do MonsterType Parabéns brow, bom sistema! Link para o comentário Compartilhar em outros sites More sharing options...
branbo 0 Postado Novembro 25, 2015 Share Postado Novembro 25, 2015 Já procurei por tudo... como que instala/faz pra funcionar? Link para o comentário Compartilhar em outros sites More sharing options...
brendoonh 14 Postado Novembro 25, 2015 Share Postado Novembro 25, 2015 Vodk, teria como por um limite ?? Ex: poderia adicionar somente 3 itens... Link para o comentário Compartilhar em outros sites More sharing options...
totonho18 18 Postado Janeiro 19, 2016 Share Postado Janeiro 19, 2016 Não funcniona em ots 9.60 simplesmente não reconhece o loot, diz que não existe, alguém sabe como arrumar? Link para o comentário Compartilhar em outros sites More sharing options...
fefuxd 2 Postado Julho 29, 2017 Share Postado Julho 29, 2017 @Vodk o gold nem sempre sai do corpo do bixo.. tem horas que sai.. horas que nao.. o que pode ser? Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados