Postado Fevereiro 4, 2022 3 anos Em 08/10/2020 em 21:23, Vodkart disse: [ + ] Descrição: Autoloot refeito para VERSÃO OTX e adicionado algumas outras funções que estarei explicando ao decorrer do tópico. [ + ] Se você quer o Autoloot ara Versão TFS clica neste Link: AUTOLOOT TFS [ + ] Imagem do comando: [ + ] Features: [ - ] Você pode ativar ou desativar o autoloot a hora que achar necessário. [ - ] Também existe um comando para ativar ou desativar mensagens do loot que o autoloot coleta! [ - ] Você pode escolher a cor do texto em que irá aparecer a coleta do loot! [ - ] O autoloot informará para você se estiver com pouco slots na sua backpack, e o jogador poderá escolher se quer habilitar ou não está função no autloot. [ - ] Versão ilimitada de itens(não ficam armazenadas em storages. [ - ] O jogador poderá optar por depositar direto no banco os golds que forem dropados. [ + ] Instalação: Primeiramente CRIE uma PASTA VAZIA chamanda "autoloot" em DATA/LOGS, ficando assim: Depois instale o MODS normalmente na pasta MODS do seu servidor. new_perfect_autoloot_otx.xml Link: https://pastebin.com/raw/CW6jgerg [ + ] Configuração: Dentro do mods tem essa tabela info = { directory = "data/logs/autoloot", -- não mexer Warn_Bp_Slots = 5, -- quando tiver 5 ou menos slots na BP vai avisar o jogador Talkaction_delay = 5, -- em segundos // delay para remover e adicionar item BlockMonsters = {}, -- Lista de monstros que o autoloot nao vai funcionar BlockItemsList = {2123,2515}, -- Lista de itens que o autoloot nao coleta Money_ids = {2148, 2152, 2160}, -- id das moedas do ot Max_Slots = {free = 3, premium = 5}, -- quantidade de itens que podem ser adicionados no autoloot por free e premium Storages = {988801, 988802, 988803, 988804, 988805, 988806, 988807} -- não mexer } Basta ler acima para esclarecer as dúvidas!! Estarei anexando o autoloot 2.0 versão atualizada para quem tiver preguiça de copiar e colar!! new_perfect_autoloot_otx.xml 14 kB · 61 downloads @Vodkartprevisão de atualização desse sistema?
Postado Fevereiro 4, 2022 3 anos Autor 4 minutos atrás, Bruno Rezende disse: @Vodkartprevisão de atualização desse sistema? Mas pq? não está funcionando? [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Fevereiro 4, 2022 3 anos Agora, Vodkart disse: Mas pq? não está funcionando? Funciona, mas no meu OTX pro exemplo da erro (esporádico) ao usar talkaction de adicionar item. Esse sistema de consultar arquivo TXT também poderia ser migrado pra database, não?
Postado Fevereiro 4, 2022 3 anos Autor 1 minuto atrás, Bruno Rezende disse: Funciona, mas no meu OTX pro exemplo da erro (esporádico) ao usar talkaction de adicionar item. Esse sistema de consultar arquivo TXT também poderia ser migrado pra database, não? daria sim, inclusive já fiz um sistema test de autoloot por db... Mas qual é o erro esporádico? [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Fevereiro 4, 2022 3 anos Agora, Vodkart disse: daria sim, inclusive já fiz um sistema test de autoloot por db... Mas qual é o erro esporádico? [Error - TalkAction Interface] 2022-01-30 15:27:54 - local cid = 268570304 2022-01-30 15:27:54 - local words = "!autoloot" 2022-01-30 15:27:54 - local param = "wand of inferno" 2022-01-30 15:27:54 - local channel = 65534 2022-01-30 15:27:54 - domodlib('Loot_func') 2022-01-30 15:27:54 - if isVIP(cid) == false then 2022-01-30 15:27:54 - doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] Only VIP players can use auto loot.") 2022-01-30 15:27:54 - return true 2022-01-30 15:27:54 - end 2022-01-30 15:27:54 - local param, slots = param:lower(), isPremium(cid) and info.Max_Slots.premium or info.Max_Slots.free 2022-01-30 15:27:54 - if not param or param == "" then 2022-01-30 15:27:54 - ShowItemsTabble(cid) return true 2022-01-30 15:27:54 - elseif tonumber(param) then 2022-01-30 15:27:54 - doPlayerSendCancel(cid, "enter commands: !autoloot item name [+] !autoloot clean [+] !autoloot money [+] !autoloot on/off") return true 2022-01-30 15:27:54 - elseif isInArray({"clean","limpar", "clear"}, param) then 2022-01-30 15:27:54 - if existsAutoloot(cid) then doCleanAutoloot(cid) end 2022-01-30 15:27:54 - doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] Your list has been cleaned.") return true 2022-01-30 15:27:54 - elseif isInArray({"start","stop","on","off"}, param) then 2022-01-30 15:27:54 - setPlayerStorageValue(cid, info.Storages[1], getPlayerStorageValue(cid, info.Storages[1]) <= 0 and 1 or 0) 2022-01-30 15:27:54 - doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Auto Loot "..(getPlayerStorageValue(cid, info.Storages[1]) > 0 and "Stopped" or "Started")..".") return true 2022-01-30 15:27:54 - elseif isInArray({"warn","aviso"}, param) then 2022-01-30 15:27:54 - setPlayerStorageValue(cid, info.Storages[3], getPlayerStorageValue(cid, info.Storages[3]) <= 0 and 1 or 0) 2022-01-30 15:27:54 - doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Auto Loot Backpack Warn "..(getPlayerStorageValue(cid, info.Storages[3]) > 0 and "disabled" or "Activated")..".") return true 2022-01-30 15:27:54 - elseif isInArray({"mensagem","message","mensagen","msg"}, param) then 2022-01-30 15:27:54 - setPlayerStorageValue(cid, info.Storages[6], getPlayerStorageValue(cid, info.Storages[6]) <= 0 and 1 or 0) 2022-01-30 15:27:54 - doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Auto Loot Message "..(getPlayerStorageValue(cid, info.Storages[6]) > 0 and "disabled" or "Activated")..".") return true 2022-01-30 15:27:54 - elseif isInArray({"cor","color","type"}, param) then 2022-01-30 15:27:54 - setPlayerStorageValue(cid, info.Storages[5], getPlayerColorLootMessage(cid) == #Color_Loot and 0 or getPlayerColorLootMessage(cid)+1) 2022-01-30 15:27:54 - doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Auto Loot Message Color Changed to "..Color_Loot[getPlayerColorLootMessage(cid)][2]..".") return true 2022-01-30 15:27:54 - elseif isInArray({"money","gold","gps","dinheiro"}, param) then 2022-01-30 15:27:54 - setPlayerStorageValue(cid, info.Storages[2], getPlayerStorageValue(cid, info.Storages[2]) <= 0 and 1 or 0) 2022-01-30 15:27:54 - doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Auto Loot Colleting only Crystal Coin is "..(getPlayerStorageValue(cid, info.Storages[2]) > 0 and "Activated" or "disabled")..".") return true 2022-01-30 15:27:54 - elseif isInArray({"deposito","bank","gbank","deposit","autodeposit"}, param) then 2022-01-30 15:27:54 - setPlayerStorageValue(cid, info.Storages[4], getPlayerStorageValue(cid, info.Storages[4]) <= 0 and 1 or 0) 2022-01-30 15:27:54 - doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] Automatic Gold Bank "..(getPlayerStorageValue(cid, info.Storages[4]) > 0 and "Activated" or "disabled")..".") return true 2022-01-30 15:27:54 - end 2022-01-30 15:27:54 - local item = ExistItemByName(tostring(param)) 2022-01-30 15:27:54 - if not item then 2022-01-30 15:27:54 - doPlayerSendCancel(cid, "This item does not exist.") return true 2022-01-30 15:27:54 - end 2022-01-30 15:27:54 - local item = getItemIdByName(tostring(param)) 2022-01-30 15:27:54 - local var = isInTable(cid, item) 2022-01-30 15:27:54 - if isInArray(info.Money_ids, item) then 2022-01-30 15:27:54 - doPlayerSendTextMessage(cid, MESSAGE_FIRST, "Enter !autoloot money to add money in your list!") return true 2022-01-30 15:27:54 - elseif isInArray(info.BlockItemsList, item) then 2022-01-30 15:27:54 - doPlayerSendCancel(cid, "You can not add this item in the list!") return true 2022-01-30 15:27:54 - elseif not var and #getItensFromAutoloot(cid) >= slots then 2022-01-30 15:27:54 - doPlayerSendCancel(cid, "You have reached the maximum number of "..slots.." slots from auto loot.") return true 2022-01-30 15:27:54 - elseif getPlayerStorageValue(cid, info.Storages[7]) - os.time() > 0 then 2022-01-30 15:27:54 - doPlayerSendCancel(cid, "wait a second to use this command again") return true 2022-01-30 15:27:54 - end 2022-01-30 15:27:54 - if not var then 2022-01-30 15:27:54 - doAddItemFromAutoloot(cid, item) 2022-01-30 15:27:54 - else 2022-01-30 15:27:54 - doremoveItemFromAutoloot(cid, item) 2022-01-30 15:27:54 - end 2022-01-30 15:27:54 - setPlayerStorageValue(cid, info.Storages[7], os.time()+info.Talkaction_delay) 2022-01-30 15:27:54 - doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,not var and "You added the item "..param.." in the list" or "You removed the item "..param.." from the list, please wait 5 seconds to save the directory.") 2022-01-30 15:27:54 - return true 2022-01-30 15:27:54 - Description: 2022-01-30 15:27:54 - [string "info = {..."]:60: attempt to index local 'file' (a nil value) 2022-01-30 15:28:26 - 2022-01-30 15:28:26 - [Error - TalkAction Interface] 2022-01-30 15:28:26 - local cid = 268570304 2022-01-30 15:28:26 - local words = "!autoloot" 2022-01-30 15:28:26 - local param = "wand of inferno" 2022-01-30 15:28:26 - local channel = 65534 2022-01-30 15:28:26 - domodlib('Loot_func') 2022-01-30 15:28:26 - if isVIP(cid) == false then 2022-01-30 15:28:26 - doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] Only VIP players can use auto loot.") 2022-01-30 15:28:26 - return true 2022-01-30 15:28:26 - end 2022-01-30 15:28:26 - local param, slots = param:lower(), isPremium(cid) and info.Max_Slots.premium or info.Max_Slots.free 2022-01-30 15:28:26 - if not param or param == "" then 2022-01-30 15:28:26 - ShowItemsTabble(cid) return true 2022-01-30 15:28:26 - elseif tonumber(param) then 2022-01-30 15:28:26 - doPlayerSendCancel(cid, "enter commands: !autoloot item name [+] !autoloot clean [+] !autoloot money [+] !autoloot on/off") return true 2022-01-30 15:28:26 - elseif isInArray({"clean","limpar", "clear"}, param) then 2022-01-30 15:28:26 - if existsAutoloot(cid) then doCleanAutoloot(cid) end 2022-01-30 15:28:26 - doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] Your list has been cleaned.") return true 2022-01-30 15:28:26 - elseif isInArray({"start","stop","on","off"}, param) then 2022-01-30 15:28:26 - setPlayerStorageValue(cid, info.Storages[1], getPlayerStorageValue(cid, info.Storages[1]) <= 0 and 1 or 0) 2022-01-30 15:28:26 - doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Auto Loot "..(getPlayerStorageValue(cid, info.Storages[1]) > 0 and "Stopped" or "Started")..".") return true 2022-01-30 15:28:26 - elseif isInArray({"warn","aviso"}, param) then 2022-01-30 15:28:26 - setPlayerStorageValue(cid, info.Storages[3], getPlayerStorageValue(cid, info.Storages[3]) <= 0 and 1 or 0) 2022-01-30 15:28:26 - doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Auto Loot Backpack Warn "..(getPlayerStorageValue(cid, info.Storages[3]) > 0 and "disabled" or "Activated")..".") return true 2022-01-30 15:28:26 - elseif isInArray({"mensagem","message","mensagen","msg"}, param) then 2022-01-30 15:28:26 - setPlayerStorageValue(cid, info.Storages[6], getPlayerStorageValue(cid, info.Storages[6]) <= 0 and 1 or 0) 2022-01-30 15:28:26 - doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Auto Loot Message "..(getPlayerStorageValue(cid, info.Storages[6]) > 0 and "disabled" or "Activated")..".") return true 2022-01-30 15:28:26 - elseif isInArray({"cor","color","type"}, param) then 2022-01-30 15:28:26 - setPlayerStorageValue(cid, info.Storages[5], getPlayerColorLootMessage(cid) == #Color_Loot and 0 or getPlayerColorLootMessage(cid)+1) 2022-01-30 15:28:26 - doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Auto Loot Message Color Changed to "..Color_Loot[getPlayerColorLootMessage(cid)][2]..".") return true 2022-01-30 15:28:26 - elseif isInArray({"money","gold","gps","dinheiro"}, param) then 2022-01-30 15:28:26 - setPlayerStorageValue(cid, info.Storages[2], getPlayerStorageValue(cid, info.Storages[2]) <= 0 and 1 or 0) 2022-01-30 15:28:26 - doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Auto Loot Colleting only Crystal Coin is "..(getPlayerStorageValue(cid, info.Storages[2]) > 0 and "Activated" or "disabled")..".") return true 2022-01-30 15:28:26 - elseif isInArray({"deposito","bank","gbank","deposit","autodeposit"}, param) then 2022-01-30 15:28:26 - setPlayerStorageValue(cid, info.Storages[4], getPlayerStorageValue(cid, info.Storages[4]) <= 0 and 1 or 0) 2022-01-30 15:28:26 - doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] Automatic Gold Bank "..(getPlayerStorageValue(cid, info.Storages[4]) > 0 and "Activated" or "disabled")..".") return true 2022-01-30 15:28:26 - end 2022-01-30 15:28:26 - local item = ExistItemByName(tostring(param)) 2022-01-30 15:28:26 - if not item then 2022-01-30 15:28:26 - doPlayerSendCancel(cid, "This item does not exist.") return true 2022-01-30 15:28:26 - end 2022-01-30 15:28:26 - local item = getItemIdByName(tostring(param)) 2022-01-30 15:28:26 - local var = isInTable(cid, item) 2022-01-30 15:28:26 - if isInArray(info.Money_ids, item) then 2022-01-30 15:28:26 - doPlayerSendTextMessage(cid, MESSAGE_FIRST, "Enter !autoloot money to add money in your list!") return true 2022-01-30 15:28:26 - elseif isInArray(info.BlockItemsList, item) then 2022-01-30 15:28:26 - doPlayerSendCancel(cid, "You can not add this item in the list!") return true 2022-01-30 15:28:26 - elseif not var and #getItensFromAutoloot(cid) >= slots then 2022-01-30 15:28:26 - doPlayerSendCancel(cid, "You have reached the maximum number of "..slots.." slots from auto loot.") return true 2022-01-30 15:28:26 - elseif getPlayerStorageValue(cid, info.Storages[7]) - os.time() > 0 then 2022-01-30 15:28:26 - doPlayerSendCancel(cid, "wait a second to use this command again") return true 2022-01-30 15:28:26 - end 2022-01-30 15:28:26 - if not var then 2022-01-30 15:28:26 - doAddItemFromAutoloot(cid, item) 2022-01-30 15:28:26 - else 2022-01-30 15:28:26 - doremoveItemFromAutoloot(cid, item) 2022-01-30 15:28:26 - end 2022-01-30 15:28:26 - setPlayerStorageValue(cid, info.Storages[7], os.time()+info.Talkaction_delay) 2022-01-30 15:28:26 - doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,not var and "You added the item "..param.." in the list" or "You removed the item "..param.." from the list, please wait 5 seconds to save the directory.") 2022-01-30 15:28:26 - return true 2022-01-30 15:28:26 - Description: 2022-01-30 15:28:26 - [string "info = {..."]:60: attempt to index local 'file' (a nil value) Meu mod de autoloot atual @Vodkart <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Perfect Auto Loot" version="2.0" author="Vodkart" contact="none.com" enabled="yes"> <config name="Loot_func"><![CDATA[ info = { directory = "data/logs/autoloot", Warn_Bp_Slots = 5, -- quando tiver 5 ou menos slots na BP vai avisar o jogador Talkaction_delay = 1, -- em segundos // delay para remover e adicionar item BlockMonsters = {}, BlockItemsList = {2148,2152}, Money_ids = {2160}, -- id das moedas do ot Max_Slots = {free = 20, premium = 20}, Storages = {988801, 988802, 988803, 988804, 988805, 988806, 988807} } Color_Loot = { [0] = {MESSAGE_EVENT_ORANGE, "Orange"}, [1] = {MESSAGE_STATUS_CONSOLE_BLUE, "Blue"}, [2] = {MESSAGE_INFO_DESCR, "Green"}, [3] = {MESSAGE_STATUS_CONSOLE_RED, "Red"}, [4] = {MESSAGE_STATUS_SMALL, "White"} } function getPlayerColorLootMessage(cid) return getPlayerStorageValue(cid, info.Storages[5]) <= 0 and 0 or getPlayerStorageValue(cid, info.Storages[5]) end function isInTable(cid, item) for _,i in pairs(getItensFromAutoloot(cid)) do if tonumber(i) == tonumber(item) then return true end end -- return false end function doremoveItemFromAutoloot(cid, itemid) local file, fileContent = io.open(info.directory.."/"..getCreatureName(cid)..".txt", 'r'),{} for line in file:lines() do if line ~= "" and tonumber(line) ~= tonumber(itemid) then fileContent[#fileContent + 1] = line end end io.close(file) file = io.open(info.directory.."/"..getCreatureName(cid)..".txt", 'w') for index, value in ipairs(fileContent) do file:write(value..'\n') end io.close(file) end function existsAutoloot(cid) local f = io.open(info.directory.."/"..getCreatureName(cid)..".txt", "rb") if f then f:close() end return f ~= nil end function doCreateLootUserName(cid, itemid) newFile = io.open(info.directory.."/"..getCreatureName(cid)..".txt", "w+" ) newFile:write(itemid) newFile:close() end function doAddItemFromAutoloot(cid, itemid) if not existsAutoloot(cid) then doCreateLootUserName(cid, itemid) return true end local file = io.open(info.directory.."/"..getCreatureName(cid)..".txt", "a+") file:write('\n'..itemid) file:close() end function getItensFromAutoloot(cid) if not existsAutoloot(cid) then return {} end lines = {} for line in io.lines(info.directory.."/"..getCreatureName(cid)..".txt") do if line ~= "" then lines[#lines + 1] = tonumber(line) end end return lines end function doCleanAutoloot(cid) return os.remove(info.directory.."/"..getCreatureName(cid)..".txt") end function ShowItemsTabble(cid) local auto_list = getItensFromAutoloot(cid) local n,str = 0,"[+] Auto Loot Commands [+]\n\n!autoloot item name --> To add ou Remove item from list.\n!autoloot money --> To collect gold automatically.\n!autoloot clear --> To clear the list.\n!autoloot on/off --> To enable or disable the collecting of items in the system.\n!autoloot message --> To enable or disable message from Collect items.\n!autoloot color --> To change Color message in Auto Loot Collect.\n!autoloot warn --> To enable or disable message warning of "..info.Warn_Bp_Slots.." or less slots in the backpack.\n!autoloot deposit --> To enable or disable automatic money deposit at the bank.\n\n[+] Auto Loot Info [+]\n\nSystem: "..(getPlayerStorageValue(cid, info.Storages[1]) <= 0 and "Activated" or "Disabled")..".\nGold Collecting: "..(getPlayerStorageValue(cid, info.Storages[2]) > 0 and "Activated" or "Disabled")..".\nMessage: "..(getPlayerStorageValue(cid, info.Storages[6]) <= 0 and "Activated" or "Disabled")..".\nColor Message: "..Color_Loot[getPlayerColorLootMessage(cid)][2]..".\nWarn Backpack: "..(getPlayerStorageValue(cid, info.Storages[3]) <= 0 and "Activated" or "Disabled")..".\nAutomatic Gold Deposit: "..(getPlayerStorageValue(cid, info.Storages[4]) > 0 and "Activated" or "Disabled")..".\nTotal Bank Balance: ["..getPlayerBalance(cid).."]\nMaximum Slots: ["..#auto_list.."/"..(isPremium(cid) and info.Max_Slots.premium or info.Max_Slots.free).."]\n\n[+] Auto Loot Slots [+]\n\n" if #auto_list > 0 then for i = 1, #auto_list do n = n + 1 str = str.."Slot "..n.." - "..getItemNameById(auto_list[i]).."\n" end end doShowTextDialog(cid, 1961, str) end function getContainerItems(container, array, haveCap) array = array or {} haveCap = haveCap or false if not isContainer(container.uid) or getContainerSize(container.uid) == 0 then array[#array +1] = container else local size = getContainerSize(container.uid) haveCap = (getContainerCap(container.uid) -size) > 0 for slot = 0, (size -1) do local item = getContainerItem(container.uid, slot) if item.itemid > 1 then getContainerItems(item, array, haveCap) end end end return #array >= 1 and array, haveCap end function getContainerItemsById(container, itemid) local founds = {} local items = not container.uid and container or getContainerItems(container) for index, item in pairs(items) do if item.itemid == itemid then founds[#founds +1] = item end end return #founds >= 1 and founds end function AutomaticDeposit(cid, item, n) if isInArray(info.Money_ids, item) and getPlayerStorageValue(cid, info.Storages[4]) > 0 then local deposit = item == tonumber(2160) and (n*10000) or tonumber(item) == 2152 and (n*100) or (n) doPlayerDepositMoney(cid, deposit) end return true end function getAllContainerFree(cid) -- by vodka local containers,soma = {},0 for i = CONST_SLOT_FIRST, CONST_SLOT_LAST do local sitem = getPlayerSlotItem(cid, i) if sitem.uid > 0 then if isContainer(sitem.uid) then table.insert(containers, sitem.uid) soma = soma + getContainerSlotsFree(sitem.uid) end end end while #containers > 0 do for k = (getContainerSize(containers[1]) - 1), 0, -1 do local tmp = getContainerItem(containers[1], k) if isContainer(tmp.uid) then table.insert(containers, tmp.uid) soma = soma + getContainerSlotsFree(tmp.uid) end end table.remove(containers, 1) end return soma end function getContainerSlotsFree(container) -- by vodka return getContainerCap(container)-getContainerSize(container) end function doPlayerAddItemStackable(cid, itemid, count) local container = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK) if container.itemid > 1 then local items = getContainerItemsById(container, itemid) if not items then return doPlayerAddItem(cid, itemid, count) else local piles = #items for index, item in pairs(items) do if item.type < 100 then local sum = item.type + count local result = doTransformItem(item.uid, itemid, sum) if sum <= 100 then return result else return doPlayerAddItem(cid, itemid, sum - 100) end else piles = piles - 1 if piles == 0 then return doPlayerAddItem(cid, itemid, count) end end end end end return false end function corpseRetireItems(cid, pos) local check, slots = false, 0 for i = 0, 255 do pos.stackpos = i if getThingFromPos(pos).uid > 0 and isContainer(getThingFromPos(pos).uid) then corpse = getThingFromPos(pos) check = true break end end if check == true then local str, id_list = "", getItensFromAutoloot(cid) for _, item in pairs(getContainerItems(corpse)) do local id = item.itemid if #id_list > 0 and isInArray(id_list, id) or getPlayerStorageValue(cid, info.Storages[2]) > 0 and isInArray(info.Money_ids, id) then local amount = isItemStackable(id) and item.type or 1 local total_cap = getItemWeightById(id, amount) slots = getAllContainerFree(cid) if slots > 0 and getPlayerFreeCap(cid) >= total_cap then str = str.." " .. getItemInfoLoot(id, amount) if isItemStackable(id) then doPlayerAddItemStackable(cid, id, amount) AutomaticDeposit(cid, id, amount) else doPlayerAddItem(cid, id, getItemInfo(id).charges or 1) end doRemoveItem(item.uid) end end end if str ~= "" and getPlayerStorageValue(cid, info.Storages[6]) <= 0 then doPlayerSendTextMessage(cid, Color_Loot[getPlayerColorLootMessage(cid)][1],"[Auto Loot Collect]:"..string.sub(str, 1, -1)..".") end if getPlayerStorageValue(cid, info.Storages[3]) <= 0 and slots > 0 and slots <= info.Warn_Bp_Slots then doPlayerSendTextMessage(cid,18, "[Auto Loot Warn] You only have "..slots.." slots free in your backpack!") end end end function ExistItemByName(name) -- by vodka local items = io.open("data/items/items.xml", "r"):read("*all") local get = items:lower():match('name="' .. name:lower() ..'"') if get == nil or get == "" then return false end return true end function getItemInfoLoot(id, amount) local info = getItemInfo(id) return isItemStackable(id) and amount.." "..(amount > 1 and info.plural or info.name).."," or info.article.." " .. info.name .."," end ]]></config> <event type="login" name="LootLogin" event="script"><![CDATA[ domodlib('Loot_func') function onLogin(cid) registerCreatureEvent(cid, "LootEventKIll") if isPremium(cid) and getPlayerStorageValue(cid, 853608) <= 0 then setPlayerStorageValue(cid, 853608, 1) elseif getPlayerStorageValue(cid, 853608) > 0 and not isPremium(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[Auto Loot] You premium is Over, Start a new list!") setPlayerStorageValue(cid, 853608, -1) doCleanAutoloot(cid) end return true end]]></event> <event type="kill" name="LootEventKIll" event="script"><![CDATA[ domodlib('Loot_func') function onKill(cid, target, lastHit) if isVIP(cid) == false then return true end if isPlayer(cid) and getPlayerStorageValue(cid, info.Storages[1]) <= 0 and isMonster(target) and not isInArray(info.BlockMonsters, getCreatureName(target):lower()) then addEvent(corpseRetireItems, 0, cid ,getThingPos(target)) end return true end]]></event> <talkaction words="!autoloot;/autoloot" event="buffer"><![CDATA[ domodlib('Loot_func') if isVIP(cid) == false then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] Only VIP players can use auto loot.") return true end local param, slots = param:lower(), isPremium(cid) and info.Max_Slots.premium or info.Max_Slots.free if not param or param == "" then ShowItemsTabble(cid) return true elseif tonumber(param) then doPlayerSendCancel(cid, "enter commands: !autoloot item name [+] !autoloot clean [+] !autoloot money [+] !autoloot on/off") return true elseif isInArray({"clean","limpar", "clear"}, param) then if existsAutoloot(cid) then doCleanAutoloot(cid) end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] Your list has been cleaned.") return true elseif isInArray({"start","stop","on","off"}, param) then setPlayerStorageValue(cid, info.Storages[1], getPlayerStorageValue(cid, info.Storages[1]) <= 0 and 1 or 0) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Auto Loot "..(getPlayerStorageValue(cid, info.Storages[1]) > 0 and "Stopped" or "Started")..".") return true elseif isInArray({"warn","aviso"}, param) then setPlayerStorageValue(cid, info.Storages[3], getPlayerStorageValue(cid, info.Storages[3]) <= 0 and 1 or 0) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Auto Loot Backpack Warn "..(getPlayerStorageValue(cid, info.Storages[3]) > 0 and "disabled" or "Activated")..".") return true elseif isInArray({"mensagem","message","mensagen","msg"}, param) then setPlayerStorageValue(cid, info.Storages[6], getPlayerStorageValue(cid, info.Storages[6]) <= 0 and 1 or 0) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Auto Loot Message "..(getPlayerStorageValue(cid, info.Storages[6]) > 0 and "disabled" or "Activated")..".") return true elseif isInArray({"cor","color","type"}, param) then setPlayerStorageValue(cid, info.Storages[5], getPlayerColorLootMessage(cid) == #Color_Loot and 0 or getPlayerColorLootMessage(cid)+1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Auto Loot Message Color Changed to "..Color_Loot[getPlayerColorLootMessage(cid)][2]..".") return true elseif isInArray({"money","gold","gps","dinheiro"}, param) then setPlayerStorageValue(cid, info.Storages[2], getPlayerStorageValue(cid, info.Storages[2]) <= 0 and 1 or 0) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"Auto Loot Colleting only Crystal Coin is "..(getPlayerStorageValue(cid, info.Storages[2]) > 0 and "Activated" or "disabled")..".") return true elseif isInArray({"deposito","bank","gbank","deposit","autodeposit"}, param) then setPlayerStorageValue(cid, info.Storages[4], getPlayerStorageValue(cid, info.Storages[4]) <= 0 and 1 or 0) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Auto Loot] Automatic Gold Bank "..(getPlayerStorageValue(cid, info.Storages[4]) > 0 and "Activated" or "disabled")..".") return true end local item = ExistItemByName(tostring(param)) if not item then doPlayerSendCancel(cid, "This item does not exist.") return true end local item = getItemIdByName(tostring(param)) local var = isInTable(cid, item) if isInArray(info.Money_ids, item) then doPlayerSendTextMessage(cid, MESSAGE_FIRST, "Enter !autoloot money to add money in your list!") return true elseif isInArray(info.BlockItemsList, item) then doPlayerSendCancel(cid, "You can not add this item in the list!") return true elseif not var and #getItensFromAutoloot(cid) >= slots then doPlayerSendCancel(cid, "You have reached the maximum number of "..slots.." slots from auto loot.") return true elseif getPlayerStorageValue(cid, info.Storages[7]) - os.time() > 0 then doPlayerSendCancel(cid, "wait a second to use this command again") return true end if not var then doAddItemFromAutoloot(cid, item) else doremoveItemFromAutoloot(cid, item) end setPlayerStorageValue(cid, info.Storages[7], os.time()+info.Talkaction_delay) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,not var and "You added the item "..param.." in the list" or "You removed the item "..param.." from the list, please wait 5 seconds to save the directory.") return true]]></talkaction> </mod>
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.