Ir para conteúdo

Wonsr Narutibia

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Wonsr Narutibia recebeu reputação de Cat em Otimizado: AutoLoot in Sources for Otx(2 ou menor)   
    Opa amigo beleza, obrigado pelo sistema, ja adicionei no meu otx 2.4. Porem vale ressaltar que troquei
    unsigned long lootListSize; -- > uint64_t lootListSize; e o comando "remove" nao esta funcionado para min
     
     
    void Player::removeAutoLoot(uint16_t id) { if(checkAutoLoot(id)) { return; } AutoLoot.remove(id); }  
    tentei colocar
     
    AutoLoot.erase(id);
     
    mas deu erro rs.
  2. Gostei
    Wonsr Narutibia recebeu reputação de Cat em Otimizado: AutoLoot in Sources for Otx(2 ou menor)   
    Opa amigo, fiz uns testes aqui e percebi que o problema estava na checagem também. Mas de resto está tudo certo.
     
    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; } } }  
     
    if(params[0] == "remove") { std::stringstream remove, err; uint8_t removeCount = 0, errCount = 0; std::stringstream ss; for(StringVec::iterator it = params.begin(); it != params.end(); ++it) { if((*it) == "remove") { continue; } char name[150]; sprintf(name, "%s", (*it).c_str()); int len = strlen(name); for (int i = 0, pos = 0; i < len; i++, pos++) { if (name[0] == ' '){ pos++; } name[i] = name[pos]; } int32_t itemId = Item::items.getItemIdByName(name); if(player->checkAutoLoot(itemId)) { if(itemId > 0) { std::string str = removeCount > 0 ? ", " : ""; ++removeCount; remove << str << name; player->removeAutoLoot(itemId); continue; } } std::string str = errCount > 0 ? ", " : ""; ++errCount; err << str << name; } ss << "AutoLoot-> Removidos: " << ((remove.str() == "") ? "Nenhum" : remove.str()) << ". Erros: " << ((err.str() == "") ? "Nenhum" : err.str()) << "."; player->sendTextMessage(MSG_STATUS_CONSOLE_BLUE, ss.str()); return true; }  
  3. Curtir
    Wonsr Narutibia recebeu reputação de Naze em Otimizado: AutoLoot in Sources for Otx(2 ou menor)   
    Opa amigo, fiz uns testes aqui e percebi que o problema estava na checagem também. Mas de resto está tudo certo.
     
    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; } } }  
     
    if(params[0] == "remove") { std::stringstream remove, err; uint8_t removeCount = 0, errCount = 0; std::stringstream ss; for(StringVec::iterator it = params.begin(); it != params.end(); ++it) { if((*it) == "remove") { continue; } char name[150]; sprintf(name, "%s", (*it).c_str()); int len = strlen(name); for (int i = 0, pos = 0; i < len; i++, pos++) { if (name[0] == ' '){ pos++; } name[i] = name[pos]; } int32_t itemId = Item::items.getItemIdByName(name); if(player->checkAutoLoot(itemId)) { if(itemId > 0) { std::string str = removeCount > 0 ? ", " : ""; ++removeCount; remove << str << name; player->removeAutoLoot(itemId); continue; } } std::string str = errCount > 0 ? ", " : ""; ++errCount; err << str << name; } ss << "AutoLoot-> Removidos: " << ((remove.str() == "") ? "Nenhum" : remove.str()) << ". Erros: " << ((err.str() == "") ? "Nenhum" : err.str()) << "."; player->sendTextMessage(MSG_STATUS_CONSOLE_BLUE, ss.str()); return true; }  
  4. Obrigado
    Wonsr Narutibia deu reputação a Naze em Otimizado: AutoLoot in Sources for Otx(2 ou menor)   
    O erase tem q usar iterator, tente usa assim
    void Player::removeAutoLoot(uint16_t id) { if(checkAutoLoot(id)) { return; } std::list<uint16_t>::iterator it = AutoLoot.begin(); for(; it != AutoLoot.end(); ++it) { if((*it) == id) { AutoLoot.remove(it); break; } } }  
    caso de erro tbm na parte do monsters.cpp olha os comentários no post da tfs 0.4 que postei a solução. 
     
    @edit
    Formatação saiu bugada q tô no celular mas dá uma ajeitada aí kkk
  5. Gostei
    Wonsr Narutibia deu reputação a Naze em Otimizado: AutoLoot in Sources for Otx(2 ou menor)   
    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
  6. Gostei
    Wonsr Narutibia recebeu reputação de KotZletY em Efeito ao soltar poke   
    Tu teria q baixar o object builder para abrir seu dat e spr e descobrir ql o id certo do effect das balls(ou ent pelo jogo msm usando /z numero ,apos isso vc vai em action/scripts/goback.lua
     
    e procura por doSendMagicEffect(
    logo apos vc troca o id do efeito q estava na script pelo id do efeito q voce quer
  7. Gostei
    Wonsr Narutibia recebeu reputação de Carloss em Efeito ao soltar poke   
    Tu teria q baixar o object builder para abrir seu dat e spr e descobrir ql o id certo do effect das balls(ou ent pelo jogo msm usando /z numero ,apos isso vc vai em action/scripts/goback.lua
     
    e procura por doSendMagicEffect(
    logo apos vc troca o id do efeito q estava na script pelo id do efeito q voce quer

Informação Importante

Confirmação de Termo