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
return doPlayerPopupFYI(cid, 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)
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, -2)..".")
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
]]>
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]]>
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 Gold Colleting "..(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, "max "..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]]>