Ir para conteúdo
  • Destaques

    • Sem título.png

      Tibia Ginius Versão 1.1 by L3K0T

       

      O Tibia Genius, desenvolvido por L3K0T, é uma ferramenta essencial para desenvolvedores de OTServ que desejam otimizar e simplificar o processo de desenvolvimento dos seus servidores. Essa ferramenta integra diversas funcionalidades que eliminam a necessidade de utilizar múltiplos programas para tarefas distintas. Entre suas principais funcionalidades, destacam-se:

      1. Item Editor: Permite a edição detalhada dos itens do jogo, facilitando a criação e modificação de itens conforme a necessidade do servidor.
      2. RME (Remere's Map Editor): Um editor de mapas completo que oferece uma interface intuitiva para criar e modificar mapas do jogo.
      3. Object Builder: Ferramenta para a construção e edição de objetos no jogo, essencial para personalizar a experiência do jogador.
      4. Mapa Converter: Utilitário que converte mapas entre diferentes formatos, garantindo compatibilidade e facilitando a integração de mapas em diversos servidores.
      5. Servidor Integrado: Opção para iniciar o servidor diretamente no ambiente Windows para testes, eliminando a necessidade de configurar servidores externos para verificações rápidas.
      6. Acesso Facilitado às Pastas: Botões dedicados para acessar rapidamente as pastas do servidor, aumentando a eficiência no gerenciamento dos arquivos do servidor.

      Antes de utilizar o Tibia Genius, é necessário importar o servidor. Isso é feito através do botão "Selecionar Servidor", onde o usuário deve especificar a pasta do servidor para que todas as funcionalidades possam ser utilizadas de forma integrada. Da mesma forma, para utilizar o RME e o Item Editor, é preciso importar os arquivos SPR e DAT do cliente do jogo.

      Com o Tibia Genius, l3k0t proporciona uma solução tudo-em-um para desenvolvedores de OTServ, tornando o processo de desenvolvimento mais ágil e centralizado, ao mesmo tempo que oferece ferramentas poderosas e de fácil acesso para a criação e manutenção de servidores personalizados.

       

      Sem títulower.png

       

      Sem títulowewerr.png

      Espero que ajude os preguiçosos risos, qualquer coisa reporte e ajude a melhorar, ideias são todas bem vindas!

      Download GitHub:  https://github.com/l3k0t/Tibia_Ginius

      Scan Virus Total: https://www.virustotal.com/gui/file/f406f1310f8c5f403c35115eaaddc609ccdff2ff56b4a96b619ac7df914829e1?

      Discord: https://discord.gg/MGD55hPWYfnocache=1

      • Like 2
  • Quem Está Online   0 Membros, 0 Anônimos, 0 Visitantes (lista completa)

    • Não há membros online no momento
  • Convide os amigos

    Curtiu o fórum L3K OTS? Chame seus amigos!
  • Estatísticas de Usuários

    • Membros
      9
    • Recorde Online
      11

    Membro Mais Novo
    Lynxz
    Registro em
  • Acontecendo agora

    • Instalando o Sistema max_packets_per_seconds no Servidor 0.x   Passo 1: Modificar o Connection.cpp Abra o arquivo Connection.cpp. Procure pela função: void Connection::parseHeader(const boost::system::error_code& error) Antes da linha: --m_pendingRead; try Adicione o seguinte código: uint32_t timePassed = std::max<uint32_t>(1, (time(NULL) - m_timeConnected) + 1); if ((++m_packetsSent / timePassed) > static_cast<uint32_t>(g_config.getNumber(ConfigManager::MAX_PACKETS_PER_SECOND))) { std::cout << convertIPAddress(getIP()) << " disconnected for exceeding packet per second limit." << std::endl; close(); m_connectionLock.unlock(); return; } if (timePassed > 2) { m_timeConnected = time(NULL); m_packetsSent = 0; }     Passo 2: Modificar o Connection.h Abra o arquivo Connection.h. Procure pela classe: class Connection : public boost::enable_shared_from_this<Connection>, boost::noncopyable Abaixo de: m_protocol = NULL; Adicione: m_packetsSent = 0; m_timeConnected = time(NULL); Abaixo de: uint32_t m_refCount; Adicione: time_t m_timeConnected; uint32_t m_packetsSent;   Passo 3: Modificar o ProtocolGame.cpp Abra o arquivo ProtocolGame.cpp. Procure pela função: void ProtocolGame::parsePacket(NetworkMessage &msg) Abaixo de: if(!player || !m_acceptPackets || g_game.getGameState() == GAME_STATE_SHUTDOWN || msg.getMessageLength() <= 0) return; Adicione: uint32_t now = time(NULL); if(m_packetTime != now) { m_packetTime = now; m_packetCount = 0; } ++m_packetCount; if(m_packetCount > (uint32_t)g_config.getNumber(ConfigManager::MAX_PACKETS_PER_SECOND)) return;   Passo 4: Modificar o ProtocolGame.h Abra o arquivo ProtocolGame.h. Procure por: ProtocolGame(Connection_ptr connection): Protocol(connection) Substitua: m_eventConnect = 0; por: m_eventConnect = m_packetCount = m_packetTime = 0; Procure por: uint32_t m_eventConnect Substitua por: uint32_t m_eventConnect, m_maxSizeCount, m_packetCount, m_packetTime;   Passo 5: Modificar o ConfigManager.cpp Abra o arquivo ConfigManager.cpp. Procure por: m_loaded = true; Acima disso, adicione: m_confNumber[MAX_PACKETS_PER_SECOND] = getGlobalNumber("max_packets_per_second", 500);   Passo 6: Modificar o ConfigManager.h Abra o arquivo ConfigManager.h. Procure por LAST_NUMBER_CONFIG /* this must be the last one */ Acima disso, adicione: MAX_PACKETS_PER_SECOND,   Passo 7: Modificar o config.lua No arquivo config.lua do seu servidor, adicione: max_packets_per_second = 80 Lembrando que, quanto maior o número, mais pacotes a pessoa pode enviar sem ser desconectada. Créditos L3K0T por esse tutorias formatado. Yan Liima [TFS 0.4 REV3996] pelo código.   Medidas para ajudar a proteger o servidor contra ataques de "packet flood" ou "SYN flood". Esses ataques envolvem o envio de um grande número de pacotes ao servidor em um curto espaço de tempo, com a intenção de sobrecarregar os recursos do servidor e causar falhas ou degradação no desempenho. Implementando o sistema max_packets_per_seconds, você está limitando o número de pacotes que cada conexão pode enviar por segundo. Isso ajuda a mitigar o impacto de ataques de flood, desconectando automaticamente conexões que excedem o limite configurado de pacotes por segundo. Essas mudanças melhoram a resiliência do seu servidor contra certos tipos de ataques de negação de serviço (DoS), contribuindo para a estabilidade e segurança do seu  OTServer.
    • Como Evitar Quedas no Servidor ao Exibir Mensagens de Admin  (Error - void ServiceManager::run()) NETWORK: O endereço solicitado não é válido no contexto  (Error - void ServicePort::open(IPAddressList, uint16_t)) NETWORK: O endereço solicitado não é válido no contexto   Problema: Em determinadas situações, a exibição de mensagens de admin está causando a queda do servidor. Isso ocorre quando uma exceção não tratada é lançada ao tentar abrir portas de serviço.   Solução: A solução envolve modificar o código em server.cpp para evitar que o servidor caia quando uma exceção é lançada. Vamos alterar o método ServicePort::open para tratar exceções de forma segura.   Passos: Localize o Arquivo server.cpp: Abra o arquivo server.cpp no seu projeto. Você pode usar um editor de texto ou uma IDE de sua preferência. Encontre o Método ServicePort::open: Procure pelo método ServicePort::open no arquivo. O código original se parece com isto: void ServicePort::open(IPAddressList ips, uint16_t port) { m_pendingStart = false; m_serverPort = port; bool error = false; for(IPAddressList::iterator it = ips.begin(); it != ips.end(); ++it) { try { Acceptor_ptr tmp(new boost::asio::ip::tcp::acceptor(m_io_service, boost::asio::ip::tcp::endpoint(*it, m_serverPort))); accept(tmp); m_acceptors.push_back(tmp); } catch(std::exception& e) { m_pendingStart = true; Scheduler::getInstance().addEvent(createSchedulerTask(5000, boost::bind( &ServicePort::service, boost::weak_ptr<ServicePort>(shared_from_this()), *it, m_serverPort))); } } if(error) m_logError = false; }   3. Modifique o Método ServicePort::open Vamos alterar o código para tratar exceções de maneira adequada, evitando a queda do servidor. A versão modificada do método fica assim:   void ServicePort::open(IPAddressList ips, uint16_t port) { m_pendingStart = false; m_serverPort = port; bool error = false; for(IPAddressList::iterator it = ips.begin(); it != ips.end(); ++it) { try { Acceptor_ptr tmp(new boost::asio::ip::tcp::acceptor(m_io_service, boost::asio::ip::tcp::endpoint(*it, m_serverPort))); accept(tmp); m_acceptors.push_back(tmp); } catch(std::exception& e) { // Tratamento de exceção vazio para evitar a queda do servidor } } }   Recompile o Servidor Após fazer as modificações, salve o arquivo e recompile o servidor. Com essas mudanças, o servidor não deve mais cair quando uma exceção for lançada ao abrir portas de serviço. Este código foi testado e comprovado eficaz para evitar as quedas. Até mais by L3K0T  
    • Consegui coloca o meu server pra rodar no Ginius coloquei o sv na pasta Ginius
    • Executa o Tibia Ginius como administrador e depois busca o OT
    • Estou usando um TFS 0.3.6 custom porém o Ginius não carrega o meu otserver https://imgur.com/a/MbGVxBW
  • Conquistas Recentes

    • erimyth ganhou um emblema
      Week One Done
    • L3K0T subiu uma conquista
      Enthusiast
    • leozin ganhou um emblema
      Week One Done
    • DevMapper ganhou um emblema
      Reacting Well
    • G R I N G O ganhou um emblema
      One Month Later
  • Estatísticas dos Fóruns

    • Tópicos
      36
    • Posts
      46
×
×
  • Criar Novo...