• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    proboema autoloot

    Compartir:

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    1default proboema autoloot Mar Sep 28, 2021 5:43 pm

    ioke

    ioke
    Miembro
    Miembro
    Descripcion escribió:mi autoloot me esta dando problemas cuando matas un monster este se queda de pie sin vida como bugueado nunca muere si me.podeis ayudar a encontrar el fallo del mod uso tfs 0.4

    Código:
    <?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[

    help = {}
    help.goldToBank = true
    help.goldBankAnimation = true
    help.distanceLooting = 7
    help.Slots = 6
    help.vipStorage = {0,0}
    help.playerLevel = 1
    help.corpseEffect = CONST_ME_NONE
    help.golds = {2148, 2152, 2160}
    help.tittle = "Welcome to Autoloot System\nCreate by GOD Ioke\n\nCommands Options:\n!autoloot help\n!autoloot clear\n!autoloot item name\n\nMoney Coommand:\n!autoloot money (Recolect Money)\n!autoloot deposit (Deposit to Bank)\n"
    help.notHaveCapDrop = true
    info = {
      distro = 1, -- 1 = TFS // 2 = talk modificada
      directory = "data/logs/autoloot",

      Talkaction_delay = 5, -- em segundos // delay para remover e adicionar item
      BlockMonsters = {},
      BlockItemsList = {2123,2515},
      Money_ids = {2148, 2152, 2160}, -- id das moedas do ot
      Max_Slots = {free = 6, premium = 6},
      Storages = {988801, 988802, 988803, 988804, 988805, 988806, 988807}
    }


    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 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 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 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 showPlayerAutolootHelp(cid)
        local content = "Welcome to Autoloot System\nCreate by GOD Ioke\n\nCommands Options:\n!autoloot help\n!autoloot clear\n!autoloot item name\n\nMoney Coommand:\n!autoloot money (Recolect Money)\n!autoloot deposit (Deposit to Bank)\nFor you info:\n"
        for key, value in pairs(help) do
            if not isInArray({"storageItems", "blockMonsters", "vipStorage", "golds", "tittle"}, key) then
                content = string.format("%s%c %s: %s\n", content, 155, tostring(key), tostring(value))
            end
        end
        return doShowTextDialog(cid, 2529, content)
    end
    function ShowItemsTabble(cid)
      local auto_list = getItensFromAutoloot(cid) 
      local n,str = 0,"Welcome to Autoloot System\nCreate by GOD Ioke\n\nCommands Options:\n!autoloot help\n!autoloot clear\n!autoloot item name\n\nMoney Coommand:\n!autoloot money (Recolect Money)\n!autoloot deposit (Deposit to Bank)\n!Your slots in use: ["..#auto_list.."/"..(isPremium(cid) and info.Max_Slots.premium or info.Max_Slots.free).."]\n\nYour autoloot items:\n"
      if #auto_list > 0 then
          for i = 1, #auto_list do
            n = n + 1
            str = str.."- "..getItemNameById(auto_list[i]).."\n"
          end
      end
      return doShowTextDialog(cid, 2529, 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
          tile = getTileThingByPos(pos)
          if tile.uid > 0 and isCorpse(tile.uid) then
            check = true break
          end
      end
      if check == true then
          local str, var = "", getContainerItems(tile)
          if var then
            local list = getItensFromAutoloot(cid)
            for _, item in pairs(var) do
                local id = item.itemid
                if #list > 0 and isInArray(list, id) or getPlayerStorageValue(cid, info.Storages[2]) > 0 and isInArray(info.Money_ids, id) then
                  local info = getItemInfo(id)
                  local amount = isItemStackable(id) and item.type or 1
                  local total_cap = getItemWeight(item.uid)*amount
                  slots = getAllContainerFree(cid)
                  if slots > 0 and getPlayerFreeCap(cid) >= total_cap then
                      if isItemStackable(id) then
                        str = str.." "..amount.." "..(amount > 1 and info.plural or info.name)..","
                        doPlayerAddItemStackable(cid, id, amount)
                        AutomaticDeposit(cid, id, amount)
                      else
                        str = str.." ".. info.article.." " .. info.name ..","
                        doPlayerAddItem(cid, id)
                      end
                      doRemoveItem(item.uid) 
                  end
                end
            end
           
          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
    ]]></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 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')
    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({"help"}, param) then
        showPlayerAutolootHelp(cid) 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 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
    if info.distro ~= 1 then
      item = ExistItemByName(tostring(param))
      if not item then
          doPlayerSendCancel(cid, "This item does not exist.") return true
      end
      item = getItemIdByName(tostring(param))
    else
      item = getItemIdByName(param, false)
      if not item then
          doPlayerSendCancel(cid, "This item does not exist.") return true
      end
    end
    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]]></talkaction>
    </mod>
    Captura del Error escribió:Imagen del error: proboema autoloot Empty
    El error radica en: Otro Problema

    3 participantes
    http://baiakciteron.sytes.net

    2default Re: proboema autoloot Miér Sep 29, 2021 8:36 am

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    por lo que veo

    Código:

    <event type="kill" name="LootEventKIll" event="script"><![CDATA[
    domodlib('Loot_func')
    function onKill(cid, target, lastHit)
      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>

    y podria decir a primera vista que este problema es generado por creaturescrip y el unico creaturescript que tiene es este por lo qu epodria decir que su problema radica en storages duplicados en su servidor por tal motivo sufre aquel problema



    proboema autoloot YNU5B25
    3 participantes
    https://www.tibiaface.com

    3default Re: proboema autoloot Miér Sep 29, 2021 5:06 pm

    ioke

    ioke
    Miembro
    Miembro
    que va son storages unicos lo he buscado y solo me salen los del autoloot

    3 participantes
    http://baiakciteron.sytes.net

    4default Re: proboema autoloot Jue Sep 30, 2021 8:12 am

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    y porqueno prueba con tfs tibiaface v5.1 tiene autoloot integrao a sus sources



    proboema autoloot YNU5B25
    3 participantes
    https://www.tibiaface.com

    5default Re: proboema autoloot Jue Sep 30, 2021 5:53 pm

    ioke

    ioke
    Miembro
    Miembro
    xk yo uso mi tfs y he editado muchas cosas no pasa nada sobrevivire sin el autoloot

    3 participantes
    http://baiakciteron.sytes.net

    6default Re: proboema autoloot Vie Oct 01, 2021 7:46 am

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:xk yo uso mi tfs y he editado muchas cosas no pasa nada sobrevivire sin el autoloot

    perfecto de todas maneras revisare con calma su scripts en el transcurso de esta semana, de igual manera dejo abierto el tema para si alguien tiene alguna solucion la postee en este hilo



    proboema autoloot YNU5B25
    3 participantes
    https://www.tibiaface.com

    7default Re: proboema autoloot Vie Oct 01, 2021 1:41 pm

    poncex

    poncex
    Miembro
    Miembro
    puede que esté mal el script, hace poco probé uno similar y también me paso lo mismo, cambié el script y se solucionó

    3 participantes

    Contenido patrocinado


    3 participantes

    Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje (Página 1 de 1.)

    Permisos de este foro:
    No puedes responder a temas en este foro.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).