Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 07/04/24 em todas áreas

  1. Tibia Ginius Versão 1.1 by L3K0T

    Fluppe Naves e 2 outros reagiu a L3K0T por uma resposta no tópico

    3 pontos
    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: 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. RME (Remere's Map Editor): Um editor de mapas completo que oferece uma interface intuitiva para criar e modificar mapas do jogo. Object Builder: Ferramenta para a construção e edição de objetos no jogo, essencial para personalizar a experiência do jogador. Mapa Converter: Utilitário que converte mapas entre diferentes formatos, garantindo compatibilidade e facilitando a integração de mapas em diversos servidores. 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. 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. 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?nocache=1 Discord do Projeto: https://discord.gg/MGD55hPWYf
  2. Tela Estendida para OTClient V8 (TFS 0.4)

    Nother reagiu a L3K0T por uma resposta no tópico

    1 ponto
    Tela Estendida para OTClient V8 (TFS 0.4) Olá pessoal, hoje estou trazendo uma tela estendida para o OTClient V8 na versão mais recente. Espero que isso seja útil para vocês! Esta versão vem com atualizações de código que são fáceis de entender. Testado em TFS 0.4. Passo 1: Modificações no const.h Abra o arquivo const.h e encontre: #define NETWORK_MAX_SIZE ou #define NETWORKMESSAGE_MAXSIZE Altere para: #define NETWORK_MAX_SIZE 49180 ou, dependendo da sua source, #define NETWORKMESSAGE_MAXSIZE 49180 Passo 2: Modificações no Protocollgame.cpp Encontre: ((x >= myPos.x - 8 + offsetz) && (x <= myPos.x + 9 + offsetz) && //(y >= myPos.y - 6 + offsetz) && (y <= myPos.y + 7 + offsetz)); Altere para: ((x >= myPos.x - Map::maxClientViewportX + offsetz) && (x <= myPos.x + (Map::maxClientViewportX+1) + offsetz) && (y >= myPos.y - Map::maxClientViewportY + offsetz) && (y <= myPos.y + (Map::maxClientViewportY+1) + offsetz)); Passo 3: Atualizações nas descrições do mapa Encontre: GetMapDescription(pos.x - 8, pos.y - 6, pos.z, 18, 14, msg); Altere para: GetMapDescription(pos.x - Map::maxClientViewportX, pos.y - Map::maxClientViewportY, pos.z, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, msg); Passo 4: Atualizações na movimentação do personagem Encontre: if(oldPos.y > newPos.y) // north, for old x { msg->put<char>(0x65); GetMapDescription(oldPos.x - 8, newPos.y - 6, newPos.z, 18, 1, msg); } else if(oldPos.y < newPos.y) // south, for old x { msg->put<char>(0x67); GetMapDescription(oldPos.x - 8, newPos.y + 7, newPos.z, 18, 1, msg); } if(oldPos.x < newPos.x) // east, [with new y] { msg->put<char>(0x66); GetMapDescription(newPos.x + 9, newPos.y - 6, newPos.z, 1, 14, msg); } else if(oldPos.x > newPos.x) // west, [with new y] { msg->put<char>(0x68); GetMapDescription(newPos.x - 8, newPos.y - 6, newPos.z, 1, 14, msg); } Altere para: if (oldPos.y > newPos.y) { // north, for old x msg->put<char>(0x65); GetMapDescription(oldPos.x - Map::maxClientViewportX, newPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, 1, msg); } else if (oldPos.y < newPos.y) { // south, for old x msg->put<char>(0x67); GetMapDescription(oldPos.x - Map::maxClientViewportX, newPos.y + (Map::maxClientViewportY+1), newPos.z, (Map::maxClientViewportX+1)*2, 1, msg); } if (oldPos.x < newPos.x) { // east, [with new y] msg->put<char>(0x66); GetMapDescription(newPos.x + (Map::maxClientViewportX+1), newPos.y - Map::maxClientViewportY, newPos.z, 1, (Map::maxClientViewportY+1)*2, msg); } else if (oldPos.x > newPos.x) { // west, [with new y] msg->put<char>(0x68); GetMapDescription(newPos.x - Map::maxClientViewportX, newPos.y - Map::maxClientViewportY, newPos.z, 1, (Map::maxClientViewportY+1)*2, msg); } Passo 5: Atualizações na descrição dos pisos Encontre: GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 5, 18, 14, 3, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 4, 18, 14, 4, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 3, 18, 14, 5, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 2, 18, 14, 6, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 1, 18, 14, 7, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, 0, 18, 14, 8, skip); Altere para: GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 5, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 3, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 4, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 4, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 3, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 5, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 6, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 1, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 7, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, 0, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 8, skip); Passo 6: Outras modificações Encontre: GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, oldPos.z - 3, 18, 14, 3, skip); Altere para: GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, oldPos.z - 3, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, 3, skip); Passo 7: Modificações adicionais Encontre: GetMapDescription(oldPos.x - 8, oldPos.y + 1 - 6, newPos.z, 1, 14, msg); Altere para: GetMapDescription(oldPos.x - Map::maxClientViewportX, oldPos.y - (Map::maxClientViewportY-1), newPos.z, 1, (Map::maxClientViewportY+1)*2, msg); Passo 8: Atualizações finais Encontre: GetMapDescription(oldPos.x - 8, oldPos.y - 6, newPos.z, 18, 1, msg); ALTERE PARA GetMapDescription(oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, 1, msg); Passo 9: Mais modificações nas descrições de pisos Encontre: GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z, 18, 14, -1, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 1, 18, 14, -2, skip); GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 2, 18, 14, -3, skip); Altere para: GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -1, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 1, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -2, skip); GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -3, skip); Passo 10: Últimas modificações Encontre: GetFloorDescription(msg, oldPos.x - 8, oldPos.y - 6, newPos.z + 2, 18, 14, -3, skip); Altere para: GetFloorDescription(msg, oldPos.x - Map::maxClientViewportX, oldPos.y - Map::maxClientViewportY, newPos.z + 2, (Map::maxClientViewportX+1)*2, (Map::maxClientViewportY+1)*2, -3, skip); Passo 11: Ajustes finais Encontre: GetMapDescription(oldPos.x + 9, oldPos.y - 1 - 6, newPos.z, 1, 14, msg); Altere para: GetMapDescription(oldPos.x + Map::maxClientViewportX+1, oldPos.y - (Map::maxClientViewportY+1), newPos.z, 1, ((Map::maxClientViewportY+1)*2), msg); Passo 12: Atualizações em MAP.H Abra o arquivo MAP.H do servidor e encontre: static const int32_t maxViewportX = 11; //min value: maxClientViewportX + 1 static const int32_t maxViewportY = 11; //min value: maxClientViewportY + 1 static const int32_t maxClientViewportX = 8; static const int32_t maxClientViewportY = 6; Altere para: static const int32_t maxViewportX = 15; //min value: maxClientViewportX + 1 static const int32_t maxViewportY = 15; //min value: maxClientViewportY + 1 static const int32_t maxClientViewportX = 14; static const int32_t maxClientViewportY = 12; Pronto, agora é só compilar as sources do seu servidor no modo Rebuild para apagar o cache. Parte 2: OTClient 0.6.6 Abra o arquivo map.cpp das sources do OTClient V8 e encontre: void Map::resetAwareRange() { AwareRange range; range.left = 8; range.top = 6; range.bottom = 7; range.right = 9; setAwareRange(range); } Altere para: void Map::resetAwareRange() { AwareRange range; range.left = 14; //Change this to = maxClientViewportX range.top = 12; //Change this to = maxClientViewportY range.bottom = range.top+1; range.right = range.left+1; setAwareRange(range); } Compile a source do OTClient também no modo Rebuild e pronto!
  3. Instalando o PHP no Ubuntu 22.04

    L3K0T reagiu a luanluciano93 por uma resposta no tópico

    1 ponto
    Olá, esse tutorial é uma parte do tópico principal: "Tutorial completo de infraestrutura para montar um servidor TFS 1.x no Ubuntu 22.04" ... Ele faz parte da 3º instalação da pilha LEMP no Ubuntu 22.04: o PHP. PASSO 1 - COMO INSTALAR O PHP Você já tem instalado o Nginx para exibir seu conteúdo web e o MySQL para armazenar e gerenciar seus dados. Agora, você pode instalar o PHP para processar os códigos e gerar conteúdo dinâmico para o servidor Web. - Enquanto o Apache incorpora o interpretador PHP em cada solicitação, o Nginx necessita de um programa externo para lidar com o processamento PHP e atuar como uma ponte entre o próprio interpretador PHP e o servidor web. Isso permite um desempenho global melhor na maioria dos sites baseados em PHP, mas exige configuração adicional. Será necessário instalar o php-fpm, que significa “Gerenciador de processos PHP fastCGI”, e dizer ao Nginx para enviar as solicitações PHP para esse software para processamento. - Adicionalmente, você precisará do php-mysql php-mysqlnd, um módulo PHP que permite ao PHP se comunicar com os bancos de dados baseados em MySQL. Os pacotes básicos do PHP serão instalados automaticamente como dependências. Para instalar os pacotes php-fpm e php-mysql, execute e depois aperte Y para aceitar a instalação: sudo apt install php-fpm php-mysqlnd Agora confira o status do PHP-FPM para ver se ele está corretamente ativo: sudo systemctl status php8.1-fpm Deve aparecer algo assim: Como vocês podem ver em verde: active (running), ou seja, está ativo e funcionando. PASSO 2 - CONFIGURAÇÕES DO PHP JUNTO AO NGINX Crie duas pastas com os comandos: sudo mkdir /home/otserv sudo mkdir /home/www A pasta criada "otserv" é onde iremos deixar os arquivos do servidor e a pasta "www" que irá conter os arquivos do site. Usando o WinSCP, vá até a pasta /etc/nginx/sites-available/ e substitua o conteúdo do arquivo default por esse: https://raw.githubusercontent.com/luanluciano93/ESTUDOS/master/infraestrutura/default_nginx Quando estiver pronto, recarregue o nginx para aplicar as alterações: sudo systemctl reload nginx Agora, com o WinSCP vá até /home/www/ e crie um arquivo com o nome index.php e coloque isso dentro: <?php phpinfo(); ?> Após feito isso, entre com seu IP ou DOMÍNIO pelo navegador, e deverá aparecer as informações do PHP. PASSO 3 - CONFIGURAÇÕES DO PHP Com o WinScp, vá até o arquivo /etc/php/8.1/fpm/php.ini e altere: ignore_repeated_errors = Off Para: ignore_repeated_errors = On Altere: ;date.timezone = Para: date.timezone = America/Sao_Paulo Altere: post_max_size = 8M Para: post_max_size = 64M Altere: upload_max_filesize = 2M Para: upload_max_filesize = 64M Após feito as alterações use o comando para dar reload no php-fpm: sudo systemctl reload php8.1-fpm A princípio é isso! Siga as atualizações no tópico principal: "Tutorial completo de infraestrutura para montar um servidor TFS 1.x no Ubuntu 22.04" ... Fontes: - https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-20-04-pt - https://conectandonet.com.br/blog/como-instalar-a-pilha-lemp-no-ubuntu-20-04-server-desktop/
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo