Header Ads

AutoLOOT

comandos do mods.

!autoloot é pra checar os itens que estão na sua linda
!autoloot add,NOME DO ITEM é pra adicionar item na lista
!autoloot remove,NOME DO ITEM é pra remover o item da lista.

em mods add.
autoloot.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Loot System" version="1.0" author="Vodkart And Mkalo" contact="none.com" enabled="yes">
<config name="Loot_func"><![CDATA[

info = {
 AutomaticDeposit = true,
 BlockMonsters = {},
 BlockItemsList = {2123,2515},
 Max_Slots = {free = 2, premium = 5}
}

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, amount) -- revisado
 local item, _G = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid), 0
 if #item > 0 then
  for _ ,x in pairs(item) do
   local ret = getThing(x)
   if ret.type < 100 then
    doTransformItem(ret.uid, itemid, ret.type+amount) 
    if ret.type+amount > 100 then
    doPlayerAddItem(cid, itemid, ret.type+amount-100)
    end
    break
    else
     _G = _G+1
   end
  end
  if _G == #item then
  doPlayerAddItem(cid, itemid, amount)
  end
 else
  return doPlayerAddItem(cid, itemid, amount)
 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, "LootEventKIll")
 if isPremium(cid) and getPlayerStorageValue(cid, 27001) <= 0 then
  setPlayerStorageValue(cid, 27001, 1)
 elseif getPlayerStorageValue(cid, 27001) > 0 and not isPremium(cid) then
  doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[Auto Loot] You premium is Over, Start a new list!")
  setPlayerStorageValue(cid, 27001, -1)
  setPlayerStorageValue(cid, 27000, -1)
 end
 return true
end]]></event>
<event type="kill" name="LootEventKIll" event="script"><![CDATA[
domodlib('Loot_func')
function onKill(cid, target, lastHit) 
 if isPlayer(cid) 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')
local t = string.explode(string.lower(param), ",")
if 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,slots = getItemIdByName(tostring(t[2]), false), isPremium(cid) and info.Max_Slots.premium or info.Max_Slots.free
 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 check == true and #getPlayerStorageTable(cid, 27000) >= slots then
  doPlayerSendCancel(cid, "max "..slots.." from auto loot") 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>

Nenhum comentário

Tecnologia do Blogger.