CaioValverde 1 Postado Outubro 19, 2013 Share Postado Outubro 19, 2013 Alguém sabe um modo de colocar um auto loot no meu ot em base de PDA? Tentei alguns aqui do fórum e não foram funcionais, se alguém puder me ajudar... Grato desde já, Caio Valverde. Link para o comentário Compartilhar em outros sites More sharing options...
Matador18 0 Postado Outubro 19, 2013 Share Postado Outubro 19, 2013 Poderia me explicar Melhor? Link para o comentário Compartilhar em outros sites More sharing options...
zipter98 1101 Postado Outubro 19, 2013 Share Postado Outubro 19, 2013 (editado) Esses autoloots que você mencionou não são funcionais em que sentido? Total? Ou em alguns bugs, como os comuns "item sumir as vezes", "após 100 unidades do item x não 'loota' mais ele", etc.? Editado Outubro 19, 2013 por zipter98 Link para o comentário Compartilhar em outros sites More sharing options...
CaioValverde 1 Postado Outubro 19, 2013 Autor Share Postado Outubro 19, 2013 (editado) @zipter98 Então... Nem chegou a funcionar, em nenhum sentido... @Matador18 Um sistema que ao player ativar todo item iria para sua bag ou ele escolher quais itens vão para a Bag... Editado Outubro 19, 2013 por CaioValverde Link para o comentário Compartilhar em outros sites More sharing options...
zipter98 1101 Postado Outubro 19, 2013 Share Postado Outubro 19, 2013 Peguei aqui um sistema de autoloot de um servidor que havia baixado, não testei, porém suponho que se fizer tudo corretamente, vai funcionar. (tem alguns bugs, como os que citei em meu comentário anterior [esses bugs tem em, praticamente, todo autoloot]). TALKACTION: Tag: <talkaction words="/aloot" hide="yes" event="script" value="aloot.lua"/> Arquivo lua [nome: aloot] local stor, limit = 7575, 50000 --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, 'Esse item nao existe.') 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, 'Esse item nao existe.') 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, 'Ja foi adicionado.') 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 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 CREATURESCRIPTS: Tags: <event type="login" name="aloot_reg" event="script" value="aloot.lua"/> <event type="kill" name="aloot_kill" event="script" value="aloot.lua"/> Arquivo lua: [nome: aloot] 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) * 1 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 Registre no login.lua: registerCreatureEvent(cid, "aloot_kill") Link para o comentário Compartilhar em outros sites More sharing options...
CaioValverde 1 Postado Outubro 19, 2013 Autor Share Postado Outubro 19, 2013 (editado) Testarei e estarei dando edit... Mas mesmo assim valeu! EDIT! @zipter98 Deu esse erro: [20/10/2013 23:30:38] [Error - TalkAction Interface] [20/10/2013 23:30:38] data/talkactions/scripts/aloot.lua:onSay [20/10/2013 23:30:38] Description: [20/10/2013 23:30:38] data/talkactions/scripts/aloot.lua:8: attempt to index local 'action' (a nil value) [20/10/2013 23:30:38] stack traceback: [20/10/2013 23:30:38] data/talkactions/scripts/aloot.lua:8: in function <data/talkactions/scripts/aloot.lua:5> Editado Outubro 21, 2013 por CaioValverde Link para o comentário Compartilhar em outros sites More sharing options...
Gabrieltxu 737 Postado Outubro 29, 2013 Share Postado Outubro 29, 2013 Tópico movido para a seção de dúvidas e pedidos resolvidos. Link para o comentário Compartilhar em outros sites More sharing options...
Stigal 584 Postado Abril 21, 2018 Share Postado Abril 21, 2018 A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta. + Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda. * Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados