Jump to content

C++ Auto Loot Sytem for TFS 1.3 + revscripts


Recommended Posts

Opa,

 

apos inumeras tentativas, obtive ao menos um erro. Desculpe minha ignorancia no assunto, mas tentei refazer todo o processo e ainda assim, voltei ao mesmo ponto.

 

Lua Script Error: [Scripts Interface]
C:\Users\alexa\Desktop\OT Tibia\Server Test 1\Data\data\scripts\talkactions\god\autoloot.lua:callback
...er Test 1\Data\data\scripts\talkactions\god\autoloot.lua:4: attempt to call method 'getAutoLootList' (a nil value)
stack traceback:
        [C]: in function 'getAutoLootList'
        ...er Test 1\Data\data\scripts\talkactions\god\autoloot.lua:4: in function <...er Test 1\Data\data\scripts\talkactions\god\autoloot.lua:3>

 

talvez seja uma ajuda. Nao pude resolver...

Link to post
Share on other sites

  • 2 months later...

Agradeço pelo sistema, funcionou perfeitamente aqui.

Foi dificil de achar um sistema desse compativel com meu tfs 1.3 8.60. Pra mim é uma grande vantagem não possuir modalwindows, assim posso utiliza-lo em versões anteriores ao 9.6

Edit: Só tem um pequeno bug quando eu digito apenas !autoloot add, meu console joga esse warning:

image.thumb.png.06b520e84a023c8e0a4dc95f779f8f82.png

 

O script não possui uma condição para cuidar desse caso (!autoloot add sem a virgula)

Teria como arrumar essa condição?

 

Edited by Serpente (see edit history)
Link to post
Share on other sites

16 horas atrás, Serpente disse:

Agradeço pelo sistema, funcionou perfeitamente aqui.

Foi dificil de achar um sistema desse compativel com meu tfs 1.3 8.60. Pra mim é uma grande vantagem não possuir modalwindows, assim posso utiliza-lo em versões anteriores ao 9.6

Edit: Só tem um pequeno bug quando eu digito apenas !autoloot add, meu console joga esse warning:

image.thumb.png.06b520e84a023c8e0a4dc95f779f8f82.png

 

O script não possui uma condição para cuidar desse caso (!autoloot add sem a virgula)

Teria como arrumar essa condição?

creio que no script do talkaction faltou uma verificação para ver se tem o split[2] no caso da action add e remove

 

1634118_4.png

Link to post
Share on other sites

  • 4 weeks later...

1>C:\Users\phenr\Documents\OTServ Project\src\actions.cpp(386,46): warning C4457: a declaração de 'item' oculta um parâmetro de função
1>C:\Users\phenr\Documents\OTServ Project\src\actions.cpp(329,96): message : consulte a declaração de 'item'

Alguem sabe como resolver esse problema?
Copiei exatamente como está no forum, estou usando TFS 1.3

Link to post
Share on other sites

  • 1 month later...
  • 8 months later...

erro:

Citar

Lua Script Error: [Scripts Interface]
/home/worldglobal/data/scripts/talkactions/player/autoloot.lua:callback
...worldglobal/data/scripts/talkactions/player/autoloot.lua:24: attempt to index a nil value
stack traceback:
        [C]: in function '__index'
        ...worldglobal/data/scripts/talkactions/player/autoloot.lua:24: in function <...worldglobal/data/scripts/talkactions/player/autoloot.lua:3>
 

 

Link to post
Share on other sites

  • 1 month later...

Muito bom, funcionou bem.

 

Fiz uma alteração pra melhorar a mensagem do loot e para contar itens dentro de container do monstro:

Spoiler

else {
            if (player->canOpenCorpse(corpseOwner) && player->autoLootList.size() != 0) {
                if (player->getCapacity() > 100 * 100) { //Minimum of Capacity for autoloot works. (100 CAP)

                    std::ostringstream formattedLoot;
                    formattedLoot << "You looted a ";
                    bool firstItem = true;

                    for (Item* item : container->getItemList()) {

                        if (Container* container = item->getContainer()) {
                            for (Item* item : container->getItemList()) {
                                if (player->getItemFromAutoLoot(item->getID())) {

                                    if (firstItem) {
                                        firstItem = false;
                                    }
                                    else {
                                        formattedLoot << ", ";
                                    }

                                    formattedLoot << item->getItemCount() << " " << item->getName();
                                    g_game.internalMoveItem(container, player, CONST_SLOT_WHEREEVER, item, item->getItemCount(), nullptr);
                                    
                                }
                            }
                        }

                        if (player->getItemFromAutoLoot(item->getID())) {

                            if (firstItem) {
                                firstItem = false;
                            }
                            else {
                                formattedLoot << ", ";
                            }

                            formattedLoot << item->getItemCount() << " " << item->getName();

                            g_game.internalMoveItem(container, player, CONST_SLOT_WHEREEVER, item, item->getItemCount(), nullptr);
                        }
                    }
                    if (!firstItem) {
                        formattedLoot << ".";
                        player->sendTextMessage(MESSAGE_INFO_DESCR, (formattedLoot.str()));
                    }
                    
                }
                else {
                    player->sendTextMessage(MESSAGE_INFO_DESCR, "Sorry, you don't have enough capacity to use auto loot, so it has been disabled. (100+ capacity is required)");
                }
            }
        }

 

O código ficou duplicado, daria pra dar uma refatorada para evitar isso, mas fiquei com preguiça.

Toda terça-feira um tópico novo:

Descanso para curar mana (Spell): https://tibiaking.com/forums/topic/94615-spell-descanso-para-curar-mana/

Peça sua spell (Suporte):                https://tibiaking.com/forums/topic/84162-peça-sua-spell/                        

Chuva de flechas (Spell):                https://tibiaking.com/forums/topic/72232-chuva-de-flechas-spell/

Doom (Spell):                                https://tibiaking.com/forums/topic/51622-doom-spell/

Utilização do VS Code (Infra)       https://tibiaking.com/forums/topic/94463-utilizando-o-visual-studio-code-notepad-nunca-mais/

SD com Combo (Spell):                 https://tibiaking.com/forums/topic/94520-sd-modificada/

Alteração attack speed (C++):        https://tibiaking.com/forums/topic/94714-c-attack-speed-spells-itens-e-onde-você-quiser/  

Bônus de Speed (NPC)                  https://tibiaking.com/forums/topic/94809-npc-concede-bônus-aos-players/
 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By tataboy67
      Opa tibianos, tudo bem? Estou com alguns problemas na compilação do meu servidor.
      Vocês poderiam me ajudar?

      Fui tentar seguir o tutorial de compilação pelo VCPKG, segui tudo conforme pediram.
      Tutorial: (203) Tutorial 2] Compilar TFS 1.3 Vcpkg - YouTube
      Não deu nenhum erro nos passos anteriores a compilação, porem, tive um erro ao compilar.

      Segue a print do erro:


      Alguma ideia do que seja?

      Lembrando que, tive que fazer também o ajuste de:
      #include <lua.hpp>
      #include <luajit/lua.hpp>

      e

      #include <mysql.h>
      #include <mysql/mysql.h>

      E agora me deparei com esse erro também :/ 
    • By EddyHavoc
      Descrição: Com estas alterações nas sources do servidor e do OTC você conseguirá adicionar ao jogo uma barra de carregamento nas criaturas do jogo. Esta barra é personalizável e pode ser utilizada de diversas formas em diferentes scripts.

      Server sources.
      No arquivo game.h
      Abaixo de:
      Adicione:
       
      No arquivo game.cpp
      Adicione:
       
      No arquivo luascript.h
      Abaixo de:
      Adicione:
       
      No arquivo luascript.cpp
      Abaixo de:
      Adicione:
      Abaixo de:
      Adicione:
       
      No arquivo player.h
      Abaixo de:
      Adicione:
       
      No arquivo protocolgame.h
      Abaixo de:
      Adicione:
       
      No arquivo protocolgame.cpp
      No final do arquivo adicione:
       
      Client sources.
      No arquivo protocolcodes.cpp
      Abaixo de:
      Adicione:
       
      No arquivo protocolgame.h
      Abaixo de:
      Adicione:
       
      No arquivo protocolgameparse.cpp
      Abaixo de:
      Adicione:
      Abaixo de:
      Adicione:
       
      No arquivo creature.h
      Abaixo de:
      Adicione:
      Abaixo de:
      Adicione:
       
      No arquivo creature.cpp
      Abaixo de:
      Adicione:
      Substitua o código abaixo:
       
      Por este código:
       
      E ainda no arquivo creature.cpp no final da página adicione:
       
       
      Fim! Estas são todas as alterações! 

      Créditos:
      EddyHavoc
      Flatlander
      Kondrah
      Oen432
       
    • By mjokreaxasa
      Tenho um problema com o meu sistema de saga, quando o jogo fica guardado em volta do monstro, o monstro não ataca e tenho que me afastar e voltar à tela para poder atacar você.
       

       
    • By EddyHavoc
      [TUTORIAL] [UBUNTU] Como gerar e configurar uma nova chave RSA
      Este tutorial pode ser útil para você deixar o uso obrigatório do seu client customizado para o seu servidor.

      Para seguir este tutorial você precisará ter o OpenSSL instalado.
       
      Consultando se o seu sistema já tem OpenSSL
      Gerando a chave RSA
      Primeiramente, vamos gerar uma nova chave RSA exclusiva
       
      Assim que gerado, será criado um arquivo "key.pem" no diretório em que você está, esta será a sua chave RSA.
       
      Execute agora o seguinte comando
      Após executado o comando acima, será criado um arquivo "public.pem" neste mesmo diretório. Esta é a sua RSA pública.
       
      Precisamos agora converter a chave RSA publica em hexadecimal para decimal, somente desta forma será aceito no Servidor e no OTClient.
       
      Antes de tudo será necessário tratar a RSA pública, portando execute os comandos abaixo:
       
      Após executar o comando acima o terminal deve printar algo como isso:
       

      Em seguida execute o comando abaixo:
       
       
      Após executar o comando acima o terminal deve printar algo como isso:
       
       
       
      Agora para realizar a conversão de Hex para Decimal utilize o seguinte site: Hexadecimal to Decimal Converter (rapidtables.com)
       
      A sua RSA deve ter obrigatoriamente 309 caracteres.

      Configurando a Chave RSA no OTClient
      Agora entre no seguinte caminho modules/gamelib/ do OTClient e abra o arquivo const.lua
      Procure por OTSERV_RSA, você encontrará algo como isto:
       
      Apague e insira a sua chave RSA pública já em Decimal, quando inserir indico deixar tudo em uma linha, como exemplo abaixo:
       
      Não é necessário mexer na CIPSOFT_RSA.

      Configurando a Chave RSA no Servidor
      Substitua o seu novo arquivo gerado key.pem pelo mesmo arquivo localizado na pasta do seu servidor.
       
       
      Considerações Finais
      Pronto! Melhoria concluída com sucesso!
      Após isso só será possível efetuar login em seu servidor com um client que tem a sua RSA pública configurada.

      Créditos:
      @Cjaker
      Sun
      Marcos Pacheco
      @Breno Alves
      @EddyHavoc
      @Cat
       
    • By 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).
          
          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
       
      TFS 0.4 :
       
      Link para Otx -> https://tibiaking.com/forums/topic/101086-otimizado-autoloot-in-sources-for-otx2-ou-menor/
       
      Nas versões atual da TFS 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.x 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
       
      @Edit: 
      Quem usa source de derivados caso ocorra erro aplica as alterações dos comentários abaixo.
      Pequena correção em talkactions.cpp na parte remove na linha if(!player->checkAutoLoot(itemId)), para if(player->checkAutoLoot(itemId))
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo