Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Estou com um problema e faz tempo que procuro a solução em diversos Forum's e não acho.

É o seguinte:

Tenho um script de "AutoGold" que funciona plenamente, só que quando mato monstros "sem corpse" como Slime e derivados ou Rift Worm ele trava meu servidor e fica aparecendo mensagens constantes uma atrás da outra assim.

"[Error - CreatureScript Interface]

In a timer event called from:

data/creaturescripts/scripts/autoloot.lua:onKill

Description:

(LuaInterface::luaGetThing) Thing not found"

Meu Script é esse:


local configs = {

	 ids = {2148, 2152, 2160, 7588, 7589, 7590, 7591, 7618, 7620, 8473},

	 premium = true -- só premium usar o auto loot ? [true ou false]

}

function getItemsInContainerById(container, itemid)

local items = {}

if 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 autoGold(cid, pos, stack)

if stack > 255 then

return true

end

local position = {x = pos.x, y = pos.y, z = pos.z, stackpos = stack}

local tile = getThingFromPos(position)

if isCorpse(tile.uid) then

corpse = tile

else

autoGold(cid, pos, stack + 1)

end

if corpse ~= nil then

for _, idmoney in pairs(configs.ids) do

	 tab = getItemsInContainerById(corpse.uid, idmoney)

	 if #tab ~= 0 then

		 for _, uid in pairs(tab) do

			 money = getPlayerMoney(cid)

			 doPlayerRemoveMoney(cid, money)

			 doPlayerAddMoney(cid, money+item.type)

			 doRemoveItem(item.uid, item.type)

		 end

	 end

end

end

end

function onKill(cid, target)

if not isPremium(cid) and configs.premium then

return true

end

return addEvent(autoGold, 10, cid, getCreaturePosition(target), 0)

end

Muito agradecido quem puder me ajudar...

Link para o post
Compartilhar em outros sites

Então, seria interessante vc criar uma tabela com o nome dos monstros que não tem loot, se ele for um dos monstros, ele não verifica.

A lógica +/- essa, só não sei fazer o script...

# Regras Gerais - TibiaKing.com #
Contato: [email protected]
Não respondo dúvidas via MP.


1C2tu.png4Tlqo.png1C2tu.png


 

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 FeeTads
      salve rapaziada, do TK, esses tempos eu tava a procura de um autoloot bom e eficiente, e como vocês devem saber, o autoloot usado nos scripts .lua são bem "pesados"
      o @Naze fez um excelentíssimo trabalho e disponibilizou um script de autoloot na source, porém como a vida é dificil, ele tem alguns bugs de função e um deles é no 
      "remove autoloot" que quando o player digita "!autoloot remove, nome-do-item" nada acontece, eu decidi mexer e vim disponibilizar arrumado pra vcs.
      LEMBRANDO QUE 100% DOS CRÉDITOS SÃO AO @Naze porém se vc procurar no tópico dele ainda vai estar bugado, então resolvi deixar aqui certinho pra ajudar quem precisar.


      Link do tópico do naze: https://tibiaking.com/forums/topic/101086-otimizado-autoloot-in-sources-for-otx2-ou-menor/
       

      caso alguém ja utilize esse autoloot e esteja com o problema de remover items do autoloot
      só ir em player.cpp e trocar

      isso:
       
      void Player::removeAutoLoot(uint16_t id) { if(checkAutoLoot(id)) { return; } AutoLoot.remove(id); }
      por isso:
      void Player::removeAutoLoot(uint16_t id) { if(!checkAutoLoot(id)) return; for(std::list<uint16_t>::iterator it = AutoLoot.begin(); it != AutoLoot.end(); ++it) { if((*it) == id) { AutoLoot.erase(it); break; } } }
      todos os créditos ao Naze, não sei se alguém mais fez esse código, mas como peguei do link citado acima que é post dele deixo aqui o autoloot 100% funcional direto nas sources
    • Por Featzen
      Bom, vi por aqui e não achei nenhum autoloot igual o da pxg ou sem bugs, então decidi vir aqui postar o que eu fiz.
      Vamos lá.
       
      1º - Vá na pasta Lib, no arquivo some functions.lua e adicione isso depois do ultimo "end":



       
      2º - Vá em actions/script e crie um arquivo.lua com nome de Autoloot, dentro coloque:



       
      Agora, no actions.xml adicione a tag:
      <action itemid="" event="script" value="Autoloot.lua"/> Dentro de itemid="", coloque o id dos corpses.
       
      Para conseguir o id dos corpses, podemos fazer um pequeno script, que pegará o corpse de cada pokemon capturável.



       
      Clique em: Execute Script e terá todos os corpses de pokemons capturáveis.

      Créditos:
      Mkalo -- Auto Stacking
      Gabriel Sales(eu) -- Resto
    • Por Digoshow
      Ola eu instalei um scrip no meu otserv que e o Auto-loot, tudo certinho blz, mais eu queria editar o comando que e usado para diciona um item, o comando que esta e esse /aloot remove:2170 eu queria deixa assim /aloot remove, 2170 tirar os 2 pontos e deixa uma virgula e um espaco depois da virgula, alguem consegue editar pra mim porfavor:
      Scrip que estou usando : http://www.tibiaking.com/forum/topic/8172-sistema-auto-loot/
      Obrigado, REP+ !
    • Por Yago Blind.
      Salve ai galera, estou com uma script de Autoloot do KillLua e do Vodka porem estou tendo um erro nela e acho q é algo relacionado a vip, porem eu não uso VIP no meu servidor, uso Premium Account.
      Então caso vocês consigam me ajudar a resolver e pf explicar oque foi alterado (ESTOU APRENDENDO SOBRE CRIAÇÃO/EDIÇÃO DE SCRIPTS) , Gostaria de resolver o erro , e alterar o suposto "VIP" por "Premium Account".

      talkactions/Script/autoloot.lua
       
       
      talkactions.xml
       
      Print do erro que dá quando executo o comando !autoloot
       

    • Por Naze
      Uns dos problemas das maiorias dos otserv casual que estão online é o autoloot, alguns com erros e defeito na checagem dos containers e sempre consumindo muito por ser em lua fazendo checagens de tile, corpo, itens e etc. Por isso decidi da uma contribuição a essa comunidade que me evoluiu bastante um autoloot diretamente na source na função que insere os itens no corpo, otimizando em 100% na hr da entrega do item, e não tendo problemas ocasionais como corpos sobre corpos ou varias bags.
       
           Esse sistema já é bem comum quando comprado, mas gratuito acredito que ainda não tinha disponível, então fiz esse totalmente do 0 na source tfs 0.4 rev 3999 (do yan) e passei para Otx corrigindo alguns erros de compatibilidade.
          
          Atenção na instalação! Qualquer problema pra compilar que envolva as linhas presente no código verifique novamente se instalou corretamente antes de pedir ajuda para evitar flood. Qualquer bug, erro ou mal funcionamento encontrado pode postar que estarei corrigindo, mas não irei customizar a seu agrado, você consegue fazer isso sozinho com atenção e calma, e se precisa de ajuda é só posta as duvidas.
       
      Imagens do Sistema:
       
      Características: 
      -> Otimizado executando apenas funções necessarias -> Comandos simples e praticos -> !autoloot on/off //Autoloot estara sempre ligado, e caso queria desliga use '!autoloot off' -> !autoloot bank/bag //Define para onde ira o dinheiro coletado, direto banco ou no inventario -> !autoloot list //Lista todos itens adicionados para coleta -> !autoloot clear/clean //Remove todos itens da lista -> !autoloot add, name item, name item, ... //Adiciona itens na lista, podendo adicionar quantos quiser de uma vez. Ele retorna um messagem dizendo os itens que foram adicionados e os que deram erro e não foram adicionados, talvez por escrito errado, ja existente na lista, na lista de bloquados, etc. -> !autoloot remove, item name, item name, ... //Remove itens da lista, com a mesma logica do add. -> Opções configuravel pelo Config.lua -> AutoLoot_MoneyIDs //IDs dos Itens Moedas do servidor como gold coins, platinium coins, crystal coins. -> AutoLoot_BlockIDs //IDs dos itens bloqueados para autoloot -> AutoLoot_MaxItem //Quantidade maxima de itens para adicionar a lista -> Sistema livres de bugs ou logs de erros.  
      Instalação:
      Toda instalação será feita na source, exceto por 1 linha em talkactions.xml e 3 variáveis no config.lua
       
      Otx :
       
      Link para TFS -> https://tibiaking.com/forums/topic/101079-otimizado-autoloot-in-sources-for-tfs-036-tfs-04/
       
      Caso ocorra algum erro na compilação so mandar que ajudo a resolver, testei apenas em uma otx que tenho então nao sei se pode sugir outros problemas. Nas versões atual da Otx para servidores 10+ não ira funcionar pois algumas funções são diferente e não irei corrigir agora, em breve passo o mesmo pra tfs 1.3 e otx3.
       
      Esse sistema foi totalmente feito por mim, mas dou créditos também ao @Mathias Kenfi por me ajudar muito na evolução em lua/c++ e a tabela sql é a mesma usada no quick autoloot 1.3 postado por Pedriinz
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo