Ir para conteúdo

Auto Loot


Posts Recomendados

CRIADOR : JANO

Retirado: Outro forum

Script: Auto Loot *-*

 

creaturescripts.xml

<event type="login" name="aloot_reg" event="script" value="aloot.lua"/>
<event type="kill" name="aloot_kill" event="script" value="aloot.lua"/>  

creaturescripts/scritps

aloot.lua

function onLogin(cid)
   registerCreatureEvent(cid, "aloot_kill")
   return true
end

local stor = 7575

function autoloot(cid, target, pos)
   local function doStack(cid, itemid, new)
       local count = getPlayerItemCount(cid, itemid)
       if (count > 100) then
           count = count - math.floor(count / 100) * 100
       end
       local newCount = count + new
       if (count ~= 0) then
           local find = getPlayerItemById(cid, true, itemid, count).uid
           if (find > 0) then
               doRemoveItem(find)
           else
               newCount = new
           end
       end
       local item = doCreateItemEx(itemid, newCount)
       doPlayerAddItemEx(cid, item, true)
   end

   local function scanContainer(cid, uid, list)
       for k = (getContainerSize(uid) - 1), 0, -1 do
           local tmp = getContainerItem(uid, k)
           if (isInArray(list, tmp.itemid)) then
               if isItemStackable(tmp.itemid) and (getPlayerItemCount(cid, tmp.itemid) > 0) then
                   doStack(cid, tmp.itemid, tmp.type)
               else
                   local item = doCreateItemEx(tmp.itemid, tmp.type)
                   doPlayerAddItemEx(cid, item, true)
               end
               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Looted ' .. tmp.type .. ' ' .. getItemNameById(tmp.itemid) .. '.')
               doRemoveItem(tmp.uid)
           elseif isContainer(tmp.uid) then
               scanContainer(cid, tmp.uid, list)
           end
       end
   end

   local items = {}
   for i = getTileInfo(pos).items, 1, -1 do
       pos.stackpos = i
       table.insert(items, getThingFromPos(pos))
   end

   if (#items == 0) then
       return
   end

   local corpse = -1
   for _, item in ipairs(items) do
       local name = getItemName(item.uid):lower()
       if name:find(target:lower()) then
           corpse = item.uid
           break
       end
   end

   if (corpse ~= -1) and isContainer(corpse) then
       scanContainer(cid, corpse, tostring(getPlayerStorageValue(cid, stor)):gsub('_', ''):explode(','))
   end
end

function onKill(cid, target, lastHit)
   if not isPlayer(target) then
       local infos = getPlayerStorageValue(cid, stor)
       if (infos == -1) then
           return true
       end
       local list = tostring(infos):explode(',')
       if (#list == 0) then
           return true
       end
       addEvent(autoloot, 150, cid, getCreatureName(target), getCreaturePosition(target))
   end
   return true
end

talkactios.xml

<talkaction words="/aloot" hide="yes" event="script" value="aloot.lua"/>  

 

Talkaction/scrips

local stor, limit = 7575, 5 --storage, limit to add.

local allow_container = false --empty! not looted with items, atleast for now.

function onSay(cid, words, param)
   local expl = param:explode(':')
   local action, rst = expl[1], expl[2]
   if (action:lower() == 'check') then
       local infos, list = getPlayerStorageValue(cid, stor), {}
       if (infos ~= -1) then
           list = tostring(infos):explode(',')
       end
       local txt = 'Autoloot List:\n'
       if (#list > 0) then
           for k, id in ipairs(list) do
               id = id:gsub('_', '')
               if tonumber(id) then
                   txt = txt .. getItemNameById(tonumber(id)) .. ((k < #list) and '\n' or '')
               end
           end
       else
           txt = 'Empty'
       end
       doPlayerPopupFYI(cid, txt)
   elseif (action:lower() == 'add') then
       local infos, list = getPlayerStorageValue(cid, stor), {}
       if (infos ~= -1) then
           list = tostring(infos):gsub('_', ''):explode(',')
       end
       if (#list >= limit) then
           return doPlayerSendCancel(cid, 'You already have ' .. limit .. ' autolooting items.')
       end
       local item = tonumber(rst)
       if not item then
           item = getItemIdByName(rst, false)
           if not item then
               return doPlayerSendCancel(cid, 'not valid item.')
           end
       end
       if not allow_container and isItemContainer(item) then
           return doPlayerSendCancel(cid, 'this item can not be autolooted.')
       end
       local attrs = getItemInfo(item)
       if not attrs then
           return doPlayerSendCancel(cid, 'not valid item.')
       elseif not attrs.movable or not attrs.pickupable then
           return doPlayerSendCancel(cid, 'this item can not be autolooted.')
       end
       if isInArray(list, item) then
           return doPlayerSendCancel(cid, 'already added.')
       end
       table.insert(list, tostring(item))
       local new = ''
       for v, id in ipairs(list) do
           new = new .. '_' .. id:gsub('_' ,'') .. ((v < #list) and ',' or '')
       end
       doPlayerSetStorageValue(cid, stor, tostring(new))
       doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Item >>' .. getItemNameById(item) .. '<< has been added to the autoloot list.')
   elseif (action:lower() == 'remove') then
       local infos, list = getPlayerStorageValue(cid, stor), {}
       if (infos ~= -1) then
           list = tostring(infos):gsub('_', ''):explode(',')
       end
       if (#list == 0) then
           return doPlayerSendCancel(cid, 'You dont have any item added.')
       end
       if (#list >= limit) then
           return doPlayerSendCancel(cid, 'You already have ' .. limit .. ' autolooting items.')
       end
       local item = tonumber(rst)
       if not item then
           item = getItemIdByName(rst, false)
           if not item then
               return doPlayerSendCancel(cid, 'not valid item.')
           end
       end
       if not isInArray(list, item) then
           return doPlayerSendCancel(cid, 'This item is not in the list.')
       end
       local new = ''
       for v, id in ipairs(list) do
           if (tonumber(id) ~= item) then
               new = new .. '_' .. id:gsub('_' ,'') .. ((v < #list) and ',' or '')
           end
       end
       doPlayerSetStorageValue(cid, stor, tostring(new))
       doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Item >>' .. getItemNameById(item) .. '<< removed from the autoloot list.')
   end        
   return true
end

 

Usando

 

/aloot check

Cheka a Lista dos Loots

 

/aloot add:itemid ou nome do item

 

Exemplo

/aloot add:worm

/aloot add:2170

 

16:42 Item >>worm<< has been added to the autoloot list.

 

Para remover

/aloot remove:worm

/aloot remove:2170

 

Exemplo Testado:

16:41 Looted 2 gold coin.

16:41 Looted 1 cheese.

 

é isso pessoal gosto da + Rep

Link para o comentário
Compartilhar em outros sites

*-* O sonho pra quem joga Pokemon! quando mata a porra do poke e ele cai por cima do outro e ai nao te como pegar o loot de baixo ¬¬, pow kra vlw eu tava precisando disso, ganhou meu REP+

Link para o comentário
Compartilhar em outros sites

vai pra quem pega mais xp se me lembro bem

 

Ah beelza, gostie dos cirpt, funfo direitim e via pra quem obter masi exp sim (y)

fiz o test aqui :D

 

REP + pra você

Editado por Lolksky
Link para o comentário
Compartilhar em outros sites

Aew voltei, desculpe a encheção de saco... mas queria faze rum pedido..

 

Não teria como pré-determinar os itens que o player poderá por na lista?

 

Tipo: o player só pode escolher se quer ou não por na lista determinados itens? caso ele tente algum item que não pode colocar, aparece a msg "esse item não pode ser listado".

 

Valeu \o

Link para o comentário
Compartilhar em outros sites

manow tipow bota pra ser comando fxo tira talk e deixa creaturescript so

 

tira o comando !aloot add:2160

 

deixa como se ele auto pegasse o dinheiro sem presissa usa comando saca ?

 

da um updating pra ultima versao tbm

Editado por Snokiuthu
Link para o comentário
Compartilhar em outros sites

manow tipow bota pra ser comando fxo tira talk e deixa creaturescript so

 

tira o comando !aloot add:2160

 

deixa como se ele auto pegasse o dinheiro sem presissa usa comando saca ?

 

da um updating pra ultima versao tbm

 

e como ele vai coloca os itens que ele quer pro autoloot?

como ele vai saber os itens que estao?

 

por isso eu perguntei se tem como predetermina (altera script) pra ele poder escolher entre alguns itens!

se tirar o "!aloot" vai adianta em q? se memso o creature rpecisa do comando pra add item :smile_positivo:

Link para o comentário
Compartilhar em outros sites

pow manow mais pensa se deixa o !aloot add: item o cara vai em demon e rusha n presissa nem de bot

 

tende kero deixa so fixo 2160 SEM PODE ADD ¬¬'

 

Mas meu caso, meu serv é exp baxa... portanto se vem um boss (EX) aquele monte de gente matanu quando o bicho morre, ninguem vai ter uma oportuniade de tenta apanha o loot, nem memso o bloker... eu no caso só iria deixar o auto loot para GOLD, pra nao precisa fica pegando um por um.

Sei q é meio "nubise" cata gold em ot... mas se juntaar de cada bicho que vc mata em ot exp baxa, vc faz um dinhero bom, ainda mais quando cata loot não é lá aquelas coisas tão faceis, acho q isso deixa o jogo com mais RPG...

 

De qualquer forma eu só fiz um pedido que eu gostaria de tter, se não for possível ta blz

Editado por Lolksky
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...