Ir para conteúdo

Os Melhores

  1. csdrakan

    csdrakan

    Membro


    • Pontos

      18

    • Total de Posts

      4


  2. hanren

    hanren

    Membro Avançado


    • Pontos

      13

    • Total de Posts

      47


  3. hamiltoncw

    hamiltoncw

    VIP EXTREME Doador Comunidade


    • Pontos

      6

    • Total de Posts

      394


  4. Arkanun1000

    Arkanun1000

    Velha Guarda Ex-Staffer


    • Pontos

      5

    • Total de Posts

      2.179


Conteúdo popular

Mostrando conteúdo com a maior reputação em 02/09/2026 in todas as áreas

  1. Fala pessoal Joia ? Só vim aqui agradecer a todos da comunidade que colaboraram com desenvolvimento e divulgação, ajuda muito a comunidade ! Segura essa pancada, que estamos trazendo! Acredito que outros desenvolvedores tbm estão quase concluindo o projeto mobile de voces... Enfim veja o video e vamos trabalhar ! Vou deixar link do telegram ! Caso queiram ajudar dar suas opinião ! Se postei no lugar errado, me perdoem. [Hidden Content]
    18 pontos
  2. 9 pontos
  3. [Hidden Content] [Hidden Content] Discord:wyd8655 WhatsApp: +86-15297088464
    4 pontos
  4. Olá guys, estou criando um cheat externo de CF para fins de distribuição futura, é um cheat robusto (kernel) o projeto ja esta bem adiantado mas estou tento algumas problemas com readmemory gerando tela azul, oque é normal se tratando de um cheat desse porte, se você tem conhecimento sobre programação c++ e quiser participar do projeto deixe sua mensagem aqui ou me envie um PM. Obrigado. [Hidden Content]
    3 pontos
  5. ⚔️ AETHERION ONLINE — UM NOVO MUNDO ESTÁ NASCENDO Aetherion Online é um novo MMORPG 3D desenvolvido do zero, inspirado na essência dos grandes clássicos do gênero, mas construído com uma visão moderna, multiplataforma e totalmente preparada para o futuro. Não estamos apenas atualizando um jogo antigo. Estamos reconstruindo tudo. 🌎 UM MUNDO ONLINE VIVO Explore um universo fantástico repleto de cidades, florestas, desertos, masmorras, campos de batalha, monstros, chefes e lugares ainda desconhecidos. Em Aetherion Online, cada região será construída para fazer parte de um mundo conectado, com exploração, aventura, progressão e desafios constantes. ⚔️ COMBATE E PROGRESSÃO Escolha seu caminho, desenvolva seu personagem e enfrente criaturas cada vez mais poderosas. O projeto contará com: • Classes e especializações • Sistema de níveis e progressão • Atributos e equipamentos • Armas e armaduras • Habilidades e efeitos • Monstros e bosses • Quests e missões • Dungeons • PvE e PvP • Eventos • Ranking • Sistema de grupos e party • Guildas • Guerras entre jogadores • Comércio e economia • Crafting e evolução de equipamentos 👤 PERSONAGENS MODULARES Os personagens serão desenvolvidos pensando desde o início em um sistema de equipamentos realmente modular. Armaduras, armas, acessórios e outros elementos poderão ser equipados e removidos de forma independente. Isso permitirá criar personagens únicos e construir diferentes combinações de equipamentos. Site [Hidden Content] se voces quiserem ajuda , serei gratos apos pronto soltarei varias versoes do game aqui na web cheats (La ele ) 🏹 DIFERENTES ESTILOS DE JOGO O jogador poderá escolher diferentes formas de jogar. Entre as possibilidades estão: 🏹 Arqueiro 🔮 Mago ⚔️ Guerreiro 👻 Invocador Cada classe terá suas próprias habilidades, características, equipamentos e estilo de combate. 🌐 MULTIPLATAFORMA Uma das principais propostas do Aetherion Online é permitir que o jogador escolha onde quer jogar. 💻 Desktop 📱 Mobile 📲 Tablet 🌐 Web O projeto está sendo desenvolvido com uma arquitetura multiplataforma para que o mesmo universo possa ser acessado em diferentes dispositivos. A ideia é simples: Seu personagem pertence a você, não ao dispositivo onde você está jogando. 🎮 UM MMORPG FEITO PARA A WEB O Aetherion Online também possui uma proposta diferente: jogar diretamente pela Web. Sem depender obrigatoriamente de uma instalação pesada para começar sua aventura. O objetivo é oferecer uma experiência acessível através do navegador, permitindo que jogadores de Desktop, Mobile e Tablet possam acessar o mesmo universo. 🧱 RECONSTRUÍDO DO ZERO O projeto atual não é simplesmente uma atualização de uma versão antiga. O Aetherion Online está sendo refeito do zero, com uma nova arquitetura, novos sistemas, nova organização e uma base preparada para crescer. Estamos reconstruindo cada parte do projeto pensando em: • Escalabilidade • Segurança • Performance • Multiplayer • Compatibilidade multiplataforma • Otimização • Sistema de assets • Streaming de mundo • Gerenciamento de jogadores • Persistência de dados • Comunicação cliente/servidor • Atualizações futuras 🏰 UM MUNDO QUE PODE CRESCER Aetherion Online está sendo pensado como uma plataforma MMORPG em constante evolução. Novos mapas. Novas cidades. Novas classes. Novos equipamentos. Novos monstros. Novas dungeons. Novos eventos. Novos sistemas. A arquitetura do projeto será preparada para permitir que o mundo continue crescendo ao longo do tempo. 🔥 NOSSA VISÃO Queremos criar um MMORPG que combine a nostalgia dos grandes jogos online com tecnologias e conceitos modernos. Um jogo onde: Você cria seu personagem. Você escolhe seu caminho. Você conquista seu equipamento. Você encontra outros jogadores. Você cria sua história. E o mundo continua evoluindo. 🌌 AETHERION ONLINE Um novo universo está sendo construído. Do zero. Com uma nova visão. Para uma nova geração de jogadores. ⚔️ O mundo de Aetherion está apenas começando. Aetherion Online — Sua história começa aqui. Logo logo estarei atualizando com imagens ta bom
    2 pontos
  6. COMO USAR COOKIE-EDITOR Guia rápido para importar cookies em ambiente próprio. Atenção: Caso não acessar as contas, cookie está inválido. Certifique que esteja realmente funcional. Acesse a loja de extensões do seu navegador Abra a Web Store do Chrome, Brave ou outro navegador compatível com extensões do Chromium. Exemplo para Brave: [Hidden Content] Instale a extensão Cookie-Editor Procure pela extensão oficial Cookie-Editor e clique em instalar/adicionar ao navegador. Spoiler Abra o site autorizado onde o cookie será utilizado Com o site aberto, clique no ícone de extensões do navegador e selecione o Cookie-Editor. Spoiler Clique na opção de importar Dentro do Cookie-Editor, clique no botão IMPORTAR. Normalmente ele aparece como um dos últimos ícones da extensão. Spoiler Cole o cookie no campo de importação Após clicar em importar, será exibida uma área de texto. Cole ali o cookie em formato compatível, normalmente JSON, e confirme clicando novamente em IMPORTAR. Spoiler Atualize a página Depois da importação, recarregue a página pressionando F5 ou clicando no botão de atualizar do navegador. IMPORTAÇÃO FINALIZADA.
    2 pontos
  7. WYD FULL PVP 7662 E ai pessoal, eu tava meio a toa aqui e lembrei dessa release/source e resolvi dar uma editadinha pra ficar full PVP. Ela ja estava bem editava com os NPCs com os itens e tudo mais, mas faltava uns outros itens. O Cliente usado é o WReborn Updates: Destravar cele 40 = 100% de sucesso Destravar cele 90 = 100% de sucesso Poeira de fada = 100% de sucesso Comandos: /armia = Teleporte pra cidade de Armia /erion = Teleporte pra cidade de Erion /azran = Teleporte pra cidade de Azran /gelo = Teleporte pra cidade do Gelo /kefra = Teleporte pra cidade de Kefra /red = Teleporte pro Rei Red (Vermelho) /blue = Teleporte pro Rei Blue (Azul) /arch = Teleporte pra destravar levels 355/370 do Arch /destravar40 = Destrava o level 40 do celestial /combate = Teleporte pra enfrentar Mobs poderosos Na area de combate coloquei o Kefra e outros mobs la editados pra testar a força do seu personagem criado (não está 100%, mas da pra brincar ) DOWNLOAD [Hidden Content] DBSrv.exe [Hidden Content] TMSrv.exe [Hidden Content] Wyd.exe [Hidden Content] Creditos: WRebron por conta do cliente, a source/release eu acho que tbm sao eles que editaram a parte principal. Quem souber que foi o primeiro dono dessa release/source é so falar que edito aqui. vlw!
    2 pontos
  8. Conteúdo da MARTINA OLIVEIRA, conhecida também como BEIÇOLA DO PRIVACY, PRIVACY DELA GRATIS + Videos vazados totalmente pelada, mostrando e fazendo de tudo. Sem frescura e nem anuncios, basta clicar no link e dar play no video, para ver o Privacy gratis é só se cadastrar. PRIVACY OFICIAL GRÁTIS, BASTA SE CADASTRAR [Hidden Content] QUASE 40 VIDEOS VAZADOS [Hidden Content]
    2 pontos
  9. Eu olhando de hora em hora pela resposta hahahahahahaha Dá um help aí cara, qualquer coisa me manda msg no direct que conversamos sobre
    1 ponto
  10. Voce se refere aos itens Classe/Replantation. Será adicionado :) Adicionamos o primeiro craft ontem, de Poeiras(Jeff) ---------------------------------- ⚔️ NOVA ATUALIZAÇÃO DA ARENA PVP — BETA ⚔️ Guerreiros, preparamos uma grande revisão no combate para deixar o PvP mais justo, estratégico e adaptado ao formato IDLE do jogo. 🎮 ✨ O que mudou: 🛡️ Buffs preparados no início da batalha Os buffs de abertura não consomem mais aqueles primeiros segundos preciosos enquanto o adversário já está atacando. * O custo de MP continua existindo; * A ordem da barra de skills continua sendo respeitada; * Renovações durante uma luta longa ainda fazem parte da rotação; * Buffs não viraram passivas gratuitas. 🎯 Fim da vantagem de quem ataca primeiro A Arena agora processa ações que acontecem no mesmo instante de forma simultânea. Isso elimina a vantagem técnica que o atacante possuía apenas por ter iniciado o desafio. ⚡ Destreza reformulada A velocidade de ataque agora possui uma progressão mais saudável. * Pouca Destreza não alcança mais rapidamente o limite máximo; * Investir no atributo continua trazendo benefícios; * Valores muito altos possuem retornos progressivamente menores; * A regra é igual para todas as classes. 💪 Novo cálculo de Poder O Poder foi recalculado para representar melhor a força real do personagem. Agora ele considera: * Principal tipo de ataque do personagem; * Builds híbridas; * Velocidade de ataque; * HP e defesas; * Capacidade de sustentação com MP. ⚠️ O número do seu Poder pode diminuir ou mudar bastante. Isso não significa necessariamente que seu personagem ficou mais fraco! O Poder é um indicador para comparação e matchmaking. Ele não multiplica diretamente seu dano ou sua defesa. 🔥 Buffs e atributos visíveis Os ícones dos buffs ativos agora aparecem durante o combate e no replay da Arena. Os atributos exibidos também acompanham os valores realmente utilizados pelo servidor, incluindo buffs, transformações e efeitos ativos. 📜 Replays melhorados O replay agora mostra: * Buffs aplicados; * Buffs encerrados; * Ícones das skills; * Temporada da batalha; * Versão das regras utilizadas. 🏆 Nova temporada da Arena O ranking, rating, vitórias e derrotas serão reiniciados para que todos testem as novas regras em condições justas. ✅ O histórico das batalhas antigas será preservado. ✅ Nenhum personagem, item ou progresso geral será apagado. ✅ Apenas a classificação competitiva da Arena será reiniciada. ⚖️ Sem nerfs específicos por personagem As mudanças foram aplicadas nas regras gerais de combate. Não criamos vantagens ou punições exclusivas para uma classe ou personagem. 🧪 Precisamos da ajuda de vocês! Durante o beta, testem principalmente: * Personagens com e sem buffs; * Batalhas iniciadas por lados diferentes; * Builds com muita e pouca Destreza; * Diferentes combinações de classes e níveis; * Ícones e duração dos buffs; * Atributos mostrados durante o combate; * Replays das batalhas; * Novo valor de Poder; * Lutas muito rápidas ou muito demoradas. 📩 Ao enviar um problema, informe: 1️⃣ Nome, classe e nível do seu personagem; 2️⃣ Nome, classe e nível do adversário; 3️⃣ Skills utilizadas na barra; 4️⃣ O que aconteceu; 5️⃣ O que você esperava que acontecesse; 6️⃣ Print ou vídeo, se possível; 7️⃣ Horário aproximado da batalha. Quanto mais informações recebermos, melhor conseguiremos harmonizar as classes. ❤️ Nosso objetivo não é fazer uma classe vencer todas as outras, mas permitir que builds, equipamentos, skills e estratégias tenham importância dentro do WYD Idle. ---------------------------------- 🪄 Correção completa dos efeitos das skills Encontramos skills que eram ativadas normalmente, mas alguns de seus efeitos não eram considerados corretamente pela Arena. Agora o combate reconhece de forma unificada: ⚔️ Aumento de ataque físico; 🔮 Aumento de ataque mágico; 🛡️ Defesa física; ✨ Defesa mágica; ❤️ Aumento de HP; 💧 Aumento de MP; ⚡ Velocidade de ataque; 📊 Aumento de todos os atributos; 💪 Aumento adicional de Constituição; 🔄 Conversão de parte do MP máximo em HP; 🎯 Chance de crítico; 💨 Evasão; 🩸 Roubo de vida; 🪞 Reflexão de dano; 🛡️ Redução de dano recebido; 🔥 Aumento de dano geral; ⚔️ Aumento específico de dano físico; 🔮 Aumento específico de dano mágico; 💧 Redução ou alteração do custo de MP das skills; ✨ Resistência mágica percentual; 🛡️ Resistência geral adicional. Esses efeitos agora utilizam o mesmo sistema de cálculo na Arena, na caça e nas demais rotinas de combate, evitando que uma skill funcione de uma forma em um modo e de outra forma no PvP. 🧙 Transformações e invocações corrigidas Os bônus concedidos por transformações, summons e buffs temporários agora permanecem ativos enquanto o respectivo efeito estiver em funcionamento. Isso inclui, por exemplo: * Bônus de defesa concedidos por invocações; * Aumento de dano físico ou mágico; * Redução de dano; * Roubo de vida; * Resistências; * Alterações nos atributos; * Bônus concedidos por transformações. 🛡️ Escudo Mágico corrigido O aumento de defesa mágica do Escudo Mágico agora é realmente considerado no cálculo do dano mágico recebido na Arena. Antes, a skill podia ser ativada, mas parte da proteção não chegava corretamente ao cálculo final. ✅ Skills especiais revisadas Também revisamos e protegemos com testes o funcionamento de: * Flash e efeitos de evitar/reduzir o próximo ataque; * Renascimento e a recuperação após a primeira morte; * Skills de dano contínuo, com seus respectivos ticks; * Invocações e seus ataques periódicos; * Transformações; * Buffs temporários e suas expirações. Algumas dessas mecânicas já funcionavam, mas receberam testes adicionais para garantir que continuem funcionando junto das novas regras.
    1 ponto
  11. ⚔️WYD INFINITY ⚔️ 📅 Inaugurado dia: 01/05/2026 às 13h 📌 Informações Gerais Versão: 7.89 Dificuldade: Easy / Medium UP Rápido: Mortal/Arch UP Celestial: Easy até 200/200 - 200+ Medium Contas por IP: (5) 🔥 "O Farm te prepara. O PVP te define." 📌 Sistemas Guerras de Guilds Arena Real Pesadelo celestial liberado Dominação de Bosses com espólios valiosos Droplist com filtro de drop Sistema de Honra Valioso e Diferenciado Sistema Guerra entre Reinos Player Info Ranking atualizado Sistema de Balanceamento PVP e PVE Baú de carga com 4 slots Resoluções Widescreen sem distorções Loja desvinculada: Progrida livremente Loja de Donate: Acesse de qualquer lugar Novidades de NPCs: recicladores e compositores Novos slots: colar, cinto, traje montaria Sistema Revigorante (proteção de montaria) Fada Dourada: agrupador de itens, filtro e macro de água Auto Grupo Anti-Hack · Anti-DDoS Servidor Estável 24/7 Entre outros... 🌐Redes Sociais 🌍 Site: [Hidden Content] 💬 Discord: [Hidden Content] 📸 Instagram: [Hidden Content] 📱 WhatsApp: [Hidden Content] 🌐Download: Download do Cliente : DOWNLOAD DO CLIENT Scan CLIENT Scan EXE Administrador por: G2K 📌 Imagens sobre o WYD INFINITY Campo iniciante de ARMIA: Sistemas: Painéis no servidor: NPC'S (Se compra em gold e itens)(Ambos são FARM) VALE ESCONDIDO (CONTÉM 3 ANDARES) CAPAS CELESTIAIS
    1 ponto
  12. Pessoal, Se você também está viciado em IA e fica pedalando na hora de gerar os prompts, esse site reune uma lista imensa de prompts, todos focado em ajudar pessoas sem grandes conhecimentos. [Hidden Content] O mais legal é que dá para você postar e compartilhar seus próprios prompts. Diferente dos demais sites que só divulgam um texto, aqui eles oferecem um formulário para preencher e completar os campos necessários, tornando o prompt mais robosto e profissional. Espero que gostem.
    1 ponto
  13. Fraternais saudações.'. Venho através deste compilar as principais ferramentas e utilitários usados atualmente pelos jogadores do Priston Tale Brasil. São recursos não oficiais, mas, que também não são vistos como trapaça pela Zenit, logo, não há punição pelo uso, eles apenas não recomendam o uso por não ser oficial vindo deles. ~ UTILITÁRIOS ~ zzPTTOOLS - PRISTON TALE BRASIL Priston Tools é um gerenciador de mods para o jogo Priston Tale. Ele apenas personaliza os arquivos do cliente para melhorar o FPS e a arte. Esta ferramenta não oferece nenhuma vantagem ao jogador. Ela apenas adiciona melhorias na qualidade de vida e faz isso da maneira mais simples possível. Como por ex. ela adiciona bandeirinhas para as sheltons, itens ou itens bosses, muda a parte de HUD, Barras de HP, XP, Skills, Bordas de Diálogo. Todo o conteúdo é gratuito para a comunidade. ~ FERRAMENTAS ~ FERRAMENTAS P/ PRISTON TALE BRASIL AgeCalc - CALCULADORA DE AGING ONLINE - PRISTON TALE BRASIL Conheça o AgeCalc, a ferramenta que vai auxiliar você a conhecer ou planejar seus itens com age no Priston Tale! Com ele você conseguirá ver como um item ficará em determinado Aging do 0 ao +25 ou Ver como estava os status do item com aging quando ele estava limpo, para saber os -x-x-x. MundoBPT - CATÁLOGO DE ITENS E STATUS ONLINE - PRISTON TALE BRASIL Se trata de um catálogo completo de todos os itens existentes no Priston Tale Brasil atualmente, 100% atualizado Você poderá ver o status de itens de Defesa: Armaduras, Roupões, Escudos, Luvas, Braceletes e Botas Itens de Ataque: Foices, Machados, Cajados, Espadas, Garras, Lanças, Arcos, Martelos, Fantasmas, Adagas e Punhos Acessórios: Amuletos e Aneis e sheltons Você conseguirá ver exatamente os status de um item limpo e qual o perfeito dele. QUAL O TIME BOSS DO DIA? - PRISTON TALE BRASIL O Time Boss é o horário exato que o Boss (chefe) nasce, sabendo o Time Boss de cada subservidor você poderá estar no lugar e hora certa para matar o Boss desejado. É preciso descobri o minuto (XX:??) exato que o Boss nasce, pois ele será válido para qualquer outro Boss do mesmo subservidor até às 23:59h do mesmo dia. Para descobrir o Time Boss, é necessário logar no subservidor de sua preferência e aguardar um Boss, até que apareça. Visto isso, para facilitar para todos os jogadores de Priston Tale Brasil, existe um pessoal presta esse serviço de maneira gratuíta para a comunidade. Nesses sites que vou deixar abaixo, você encontrará além dos time bosses, todas as instruções sobre a localização, tipo do boss, e outras informações. ~ SKINS GRÁTIS ~ SKINS GRATUÍTAS P/ PRISTON TALE BRASIL SKINS BPT- SKINS PERSONALIZADAS - PRISTON TALE BRASIL A SKINSBPT é referência quando se fala em customizações no Priston Tale. Com uma trajetória marcada por Qualidade e Dedicação, Inovação, Excelência e Paixão em Cada Criação O mesmo trabalha diretamente com a venda de Skins, porém, ele disponibiliza diversos modelos de forma gratuíta, que inclusive eu mesmo utilizo. Basta escolher o modelo, baixar e seguir o tutorial, os arquivos são todos leves e não virais, não contem arquivos executáveis, tornando-os seguros e livres de qualquer vírus. ~ REMOVEDOR DE LAG ~ REMOVEDOR DE LAG P/ PRISTON TALE BRASIL EXITLAG - REMOVEDOR DE LATÊNCIA - PRISTON TALE BRASIL Com toda certeza a latência é algo que pode ser sentido pelo jogador de Priston Tale Brasil em momentos que há um número muito grande de jogadores a sua volta. Seja para o BC, ou PvP, ou UP, abrir um NPC, a latência está presente em alguns cenários dentro do BPT assim como em outros jogos. O ExitLag é a principal ferramenta utilizada pelos jogadores, visto que o servidor oficial do Priston Tale Brasil é localizado no Canadá, o programa ajuda o seu PC a encontrar as melhores rotas até o servidor. Acredite, FUNCIONA! Após se registrar você ganhará 3 dias de Teste Gratuíto. Eu mesmo assinei 1 ano de ExitLag somente por conta do BPT, sinto a diferença quando estou ou não utilizando. NOPING - REMOVEDOR DE LATÊNCIA - PRISTON TALE BRASIL Ferramenta semelhante, para não dizer identica, ao EXITLAG, cumpre exatamente o mesmo papel. Após se registrar você ganhará 7 dias de Teste Gratuíto. Eu mesmo já utilizei por uns 5 meses, e só parei de usar porque a promoção de BLACK FRIDAY do EXITLAG foi melhor. Eu estarei atualizando este tópico constântemente, e conforme aparecerem outros utilitários, ferramentas e skins, estarei adicionando. Cadastre-se e Deixe seu like Para conseguir visualizar o tópico e todos os seus links! Qualquer dúvida, pode comentar que estarei respondendo.
    1 ponto
  14. 📌 [LANÇAMENTO] FoxMap Studio V1 — Open Source O editor de mapas mais completo para WYD Fala galera da WebCheats! Se você administra ou está desenvolvendo um servidor de With Your Destiny, sabe o quão trabalhoso e limitado costuma ser o processo de criação e edição de mapas usando ferramentas antigas. Pensando nisso, foi desenvolvido o FoxMap Studio V1, uma ferramenta revolucionária que vai mudar completamente a forma como você customiza o seu servidor! Assista ao vídeo demonstrativo completo e veja a ferramenta em ação: 👉 [Hidden Content] 🔥 O que faz o FoxMap Studio ser diferente? O FoxMap Studio foi criado do zero para ser intuitivo, rápido e extremamente poderoso. Chega de sofrer com ferramentas travadas que exigem reinicializações constantes ou processos manuais complexos. [Hidden Content] [Hidden Content] [/hide] 🌟 Principais Recursos: Edição Visual Completa: Interface limpa, moderna e totalmente interativa para você focar no que realmente importa: a criatividade do seu mapa. Modificações em Tempo Real: Veja cada alteração de terreno, texturas e objetos acontecer instantaneamente na sua tela. Editor Avançado de Terrenos e Alturas: Suba montanhas, crie vales e ajuste o relevo do mapa com pincéis dinâmicos e precisos. Pintura Dinâmica de Texturas: Aplique e misture diferentes texturas de solo diretamente no mapa de forma suave e rápida. Importação e Posicionamento de Objetos 3D: Adicione construções, decorações, portais e elementos de cenário de maneira extremamente simples (com suporte a arquivos .glb/.gltf e conversão inteligente para o formato do cliente). Gestão de Atributos do Mapa: Configure zonas de PvP, áreas seguras (No-PvP), zonas de drop ou teleportes diretamente pela interface do estúdio. Integração Direta com o Cliente: Teste e salve suas alterações diretamente nos arquivos do jogo de forma prática. 📺 Veja o Passo a Passo no Vídeo! No vídeo oficial, mostramos desde a interface de login da plataforma WYD Fox Studio até a criação prática de um cenário completo: Como abrir e carregar os mapas existentes do seu cliente. Utilização das ferramentas de pintura de terreno e elevação de mesh. Importação e rotação livre de objetos e decorações 3D no cenário. Aplicação de efeitos climáticos e iluminação personalizada no mapa. Conversão e salvamento automático dos arquivos para rodar perfeitamente no jogo. Assista aqui: Como Criar Mapas Customizados para WYD — FoxMap Studio 🚀 Como ter acesso? [Hidden Content] A ferramenta conta com uma versão de testes gratuita para você conhecer o potencial do editor. Desenvolvedor: Foxdemo / WYD Fox Studio Para suporte, atualizações constantes e mais ferramentas da nossa suíte de desenvolvimento (Editores de Itens, NPCs, Monstros e Quests em breve!), entre no nosso Discord oficial (link disponível na descrição do vídeo do YouTube). Deixe seu comentário abaixo dizendo o que achou da ferramenta ou qual recurso você gostaria de ver nas próximas atualizações!
    1 ponto
  15. 🌑 SISTEMA DE SOMBRAS PARA TMPROJECT – WYD Código desenvolvido e compartilhado por mim para melhorar o visual do WYD, adicionando sombras ao projeto e deixando o ambiente mais bonito e moderno. Também criei um arquivo .md com as instruções necessárias para implementar corretamente o sistema no TMProject. ✅ Código completo ✅ Guia de implementação em .md ✅ Compatível com TMProject ✅ Melhoria visual para o cliente WYD 💻 compartilhado por João Frango ShadowProjectorMesh.cpp #include "pch.h" #include "ShadowProjectorMesh.h" #include "TMHuman.h" #include "TMGlobal.h" #include "RenderDevice.h" // ============================================================ // MANUAL SHADOW TUNING (AJUSTE MANUAL DA SOMBRA PROJETADA) // // 1) ROTACAO DA SOMBRA (direcao): // g_ShadowLightDir.x / y / z // // 2) ALTURA/ENCOSTE NO CHAO: // g_ShadowPlaneBias // // 3) INTENSIDADE: // g_ShadowAlphaMax // // Dica: ajuste primeiro a direcao (x/z), depois bias, depois alpha. // ============================================================ static D3DXVECTOR3 g_ShadowLightDir = D3DXVECTOR3(1.20f, -0.70f, 0.60f); static float g_ShadowPlaneBias = 0.005f; static float g_ShadowDirOffset = 2.80f; static DWORD g_ShadowAlphaMax = 120; static bool g_ShadowLockAtFeet = false; // false = projeta para o lado D3DXVECTOR3 ShadowProjectorMesh::s_vLightDir = D3DXVECTOR3(1.20f, -0.70f, 0.60f); DWORD ShadowProjectorMesh::s_sAlphaBlend, ShadowProjectorMesh::s_sSrcBlend, ShadowProjectorMesh::s_sDestBlend; DWORD ShadowProjectorMesh::s_sAlphaRef, ShadowProjectorMesh::s_sAlphaFunc, ShadowProjectorMesh::s_sAlphaTest; DWORD ShadowProjectorMesh::s_sZWrite, ShadowProjectorMesh::s_sZEnable, ShadowProjectorMesh::s_sZFunc, ShadowProjectorMesh::s_sDepthBias, ShadowProjectorMesh::s_sSlopeBias, ShadowProjectorMesh::s_sLighting; DWORD ShadowProjectorMesh::s_sFogEnable, ShadowProjectorMesh::s_sFogVertex, ShadowProjectorMesh::s_sCull; DWORD ShadowProjectorMesh::s_sTexFactor, ShadowProjectorMesh::s_sColorVertex; DWORD ShadowProjectorMesh::s_sTs0ColorOp, ShadowProjectorMesh::s_sTs0ColorArg1, ShadowProjectorMesh::s_sTs0ColorArg2; DWORD ShadowProjectorMesh::s_sTs0AlphaOp, ShadowProjectorMesh::s_sTs0AlphaArg1, ShadowProjectorMesh::s_sTs0AlphaArg2; DWORD ShadowProjectorMesh::s_sTs1ColorOp, ShadowProjectorMesh::s_sTs1ColorArg1, ShadowProjectorMesh::s_sTs1ColorArg2; DWORD ShadowProjectorMesh::s_sTs1AlphaOp, ShadowProjectorMesh::s_sTs1AlphaArg1, ShadowProjectorMesh::s_sTs1AlphaArg2; DWORD ShadowProjectorMesh::s_sStencilEnable, ShadowProjectorMesh::s_sStencilFunc, ShadowProjectorMesh::s_sStencilRef, ShadowProjectorMesh::s_sStencilMask; DWORD ShadowProjectorMesh::s_sStencilWriteMask, ShadowProjectorMesh::s_sStencilPass, ShadowProjectorMesh::s_sStencilFail, ShadowProjectorMesh::s_sStencilZFail; void ShadowProjectorMesh::SetupShadowMatrix(TMHuman* pHuman, float groundY) { if (!pHuman) return; if (groundY < -9000.0f) groundY = 0.0f; if (g_ShadowLockAtFeet) { D3DXMatrixIdentity(&pHuman->m_matShadow); pHuman->m_matShadow._22 = 0.0f; pHuman->m_matShadow._42 = groundY + g_ShadowPlaneBias; return; } D3DXVECTOR3 L = g_ShadowLightDir; D3DXVec3Normalize(&L, &L); // D3DXMatrixShadow com luz direcional rasante — projeta o mesh real no plano do chao // Quanto mais rasante o Y da luz, mais longa/deitada fica a sombra D3DXPLANE plane(0.0f, 1.0f, 0.0f, -(groundY + g_ShadowPlaneBias)); D3DXVECTOR4 lightDir(-L.x, -L.y, -L.z, 0.0f); // w=0 = luz direcional D3DXMatrixShadow(&pHuman->m_matShadow, &lightDir, &plane); } bool ShadowProjectorMesh::BeginShadow(IDirect3DDevice9* dev, float alpha) { if (!dev || !g_pDevice) return false; auto FloatToDWORD = [](float v) -> DWORD { DWORD out = 0; memcpy(&out, &v, sizeof(DWORD)); return out; }; // Salva via dev direto — estado real do device, sem cache dev->GetRenderState(D3DRS_ALPHABLENDENABLE, &s_sAlphaBlend); dev->GetRenderState(D3DRS_SRCBLEND, &s_sSrcBlend); dev->GetRenderState(D3DRS_DESTBLEND, &s_sDestBlend); dev->GetRenderState(D3DRS_ALPHAREF, &s_sAlphaRef); dev->GetRenderState(D3DRS_ALPHAFUNC, &s_sAlphaFunc); dev->GetRenderState(D3DRS_ALPHATESTENABLE, &s_sAlphaTest); dev->GetRenderState(D3DRS_ZWRITEENABLE, &s_sZWrite); dev->GetRenderState(D3DRS_ZENABLE, &s_sZEnable); dev->GetRenderState(D3DRS_ZFUNC, &s_sZFunc); dev->GetRenderState(D3DRS_DEPTHBIAS, &s_sDepthBias); dev->GetRenderState(D3DRS_SLOPESCALEDEPTHBIAS, &s_sSlopeBias); dev->GetRenderState(D3DRS_LIGHTING, &s_sLighting); dev->GetRenderState(D3DRS_FOGENABLE, &s_sFogEnable); dev->GetRenderState(D3DRS_FOGVERTEXMODE, &s_sFogVertex); dev->GetRenderState(D3DRS_CULLMODE, &s_sCull); dev->GetRenderState(D3DRS_TEXTUREFACTOR, &s_sTexFactor); dev->GetRenderState(D3DRS_COLORVERTEX, &s_sColorVertex); dev->GetTextureStageState(0, D3DTSS_COLOROP, &s_sTs0ColorOp); dev->GetTextureStageState(0, D3DTSS_COLORARG1, &s_sTs0ColorArg1); dev->GetTextureStageState(0, D3DTSS_COLORARG2, &s_sTs0ColorArg2); dev->GetTextureStageState(0, D3DTSS_ALPHAOP, &s_sTs0AlphaOp); dev->GetTextureStageState(0, D3DTSS_ALPHAARG1, &s_sTs0AlphaArg1); dev->GetTextureStageState(0, D3DTSS_ALPHAARG2, &s_sTs0AlphaArg2); dev->GetTextureStageState(1, D3DTSS_COLOROP, &s_sTs1ColorOp); dev->GetTextureStageState(1, D3DTSS_COLORARG1, &s_sTs1ColorArg1); dev->GetTextureStageState(1, D3DTSS_COLORARG2, &s_sTs1ColorArg2); dev->GetTextureStageState(1, D3DTSS_ALPHAOP, &s_sTs1AlphaOp); dev->GetTextureStageState(1, D3DTSS_ALPHAARG1, &s_sTs1AlphaArg1); dev->GetTextureStageState(1, D3DTSS_ALPHAARG2, &s_sTs1AlphaArg2); dev->GetRenderState(D3DRS_STENCILENABLE, &s_sStencilEnable); dev->GetRenderState(D3DRS_STENCILFUNC, &s_sStencilFunc); dev->GetRenderState(D3DRS_STENCILREF, &s_sStencilRef); dev->GetRenderState(D3DRS_STENCILMASK, &s_sStencilMask); dev->GetRenderState(D3DRS_STENCILWRITEMASK,&s_sStencilWriteMask); dev->GetRenderState(D3DRS_STENCILPASS, &s_sStencilPass); dev->GetRenderState(D3DRS_STENCILFAIL, &s_sStencilFail); dev->GetRenderState(D3DRS_STENCILZFAIL, &s_sStencilZFail); DWORD a = (DWORD)(alpha * 255.0f); if (a > g_ShadowAlphaMax) a = g_ShadowAlphaMax; DWORD shadowColor = D3DCOLOR_ARGB(a, 0, 0, 0); // Configura via g_pDevice para manter cache sincronizado g_pDevice->SetTexture(0, nullptr); g_pDevice->SetTexture(1, nullptr); g_pDevice->SetRenderState(D3DRS_TEXTUREFACTOR, shadowColor); g_pDevice->SetRenderState(D3DRS_COLORVERTEX, FALSE); g_pDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG2); g_pDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_TFACTOR); g_pDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG2); g_pDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_TFACTOR); g_pDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_DISABLE); g_pDevice->SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_DISABLE); g_pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); g_pDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ZERO); g_pDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); g_pDevice->SetRenderState(D3DRS_ALPHATESTENABLE, FALSE); g_pDevice->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_ALWAYS); g_pDevice->SetRenderState(D3DRS_ZWRITEENABLE, FALSE); g_pDevice->SetRenderState(D3DRS_ZENABLE, TRUE); g_pDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESS); g_pDevice->SetRenderState(D3DRS_DEPTHBIAS, FloatToDWORD(-0.00005f)); g_pDevice->SetRenderState(D3DRS_SLOPESCALEDEPTHBIAS, FloatToDWORD(-0.5f)); g_pDevice->SetRenderState(D3DRS_LIGHTING, FALSE); g_pDevice->SetRenderState(D3DRS_FOGENABLE, FALSE); g_pDevice->SetRenderState(D3DRS_FOGVERTEXMODE, D3DFOG_NONE); g_pDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); g_pDevice->SetRenderState(D3DRS_ALPHAREF, 0); g_pDevice->SetRenderState(D3DRS_STENCILENABLE, TRUE); g_pDevice->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_EQUAL); // so pinta onde stencil=0 (sem personagem) g_pDevice->SetRenderState(D3DRS_STENCILREF, 0x00); g_pDevice->SetRenderState(D3DRS_STENCILMASK, 0xFF); g_pDevice->SetRenderState(D3DRS_STENCILWRITEMASK, 0xFF); g_pDevice->SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_INCR); g_pDevice->SetRenderState(D3DRS_STENCILFAIL, D3DSTENCILOP_KEEP); g_pDevice->SetRenderState(D3DRS_STENCILZFAIL, D3DSTENCILOP_KEEP); return true; } void ShadowProjectorMesh::EndShadow(IDirect3DDevice9* dev) { if (!dev || !g_pDevice) return; // Restaura via g_pDevice para manter cache sincronizado // Textura null para limpar estado da sombra g_pDevice->SetTexture(0, nullptr); g_pDevice->SetTexture(1, nullptr); // Restaura render states via g_pDevice (atualiza cache + device) g_pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, s_sAlphaBlend); g_pDevice->SetRenderState(D3DRS_SRCBLEND, s_sSrcBlend); g_pDevice->SetRenderState(D3DRS_DESTBLEND, s_sDestBlend); g_pDevice->SetRenderState(D3DRS_ALPHAREF, s_sAlphaRef); g_pDevice->SetRenderState(D3DRS_ALPHAFUNC, s_sAlphaFunc); g_pDevice->SetRenderState(D3DRS_ALPHATESTENABLE, s_sAlphaTest); g_pDevice->SetRenderState(D3DRS_ZWRITEENABLE, s_sZWrite); g_pDevice->SetRenderState(D3DRS_ZENABLE, s_sZEnable); g_pDevice->SetRenderState(D3DRS_ZFUNC, s_sZFunc); g_pDevice->SetRenderState(D3DRS_DEPTHBIAS, s_sDepthBias); g_pDevice->SetRenderState(D3DRS_SLOPESCALEDEPTHBIAS, s_sSlopeBias); g_pDevice->SetRenderState(D3DRS_LIGHTING, s_sLighting); g_pDevice->SetRenderState(D3DRS_FOGENABLE, s_sFogEnable); g_pDevice->SetRenderState(D3DRS_FOGVERTEXMODE, s_sFogVertex); g_pDevice->SetRenderState(D3DRS_CULLMODE, s_sCull); g_pDevice->SetRenderState(D3DRS_TEXTUREFACTOR, s_sTexFactor); g_pDevice->SetRenderState(D3DRS_COLORVERTEX, s_sColorVertex); g_pDevice->SetRenderState(D3DRS_STENCILENABLE, s_sStencilEnable); g_pDevice->SetRenderState(D3DRS_STENCILFUNC, s_sStencilFunc); g_pDevice->SetRenderState(D3DRS_STENCILREF, s_sStencilRef); g_pDevice->SetRenderState(D3DRS_STENCILMASK, s_sStencilMask); g_pDevice->SetRenderState(D3DRS_STENCILWRITEMASK, s_sStencilWriteMask); g_pDevice->SetRenderState(D3DRS_STENCILPASS, s_sStencilPass); g_pDevice->SetRenderState(D3DRS_STENCILFAIL, s_sStencilFail); g_pDevice->SetRenderState(D3DRS_STENCILZFAIL, s_sStencilZFail); g_pDevice->SetTextureStageState(0, D3DTSS_COLOROP, s_sTs0ColorOp); g_pDevice->SetTextureStageState(0, D3DTSS_COLORARG1, s_sTs0ColorArg1); g_pDevice->SetTextureStageState(0, D3DTSS_COLORARG2, s_sTs0ColorArg2); g_pDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, s_sTs0AlphaOp); g_pDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, s_sTs0AlphaArg1); g_pDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, s_sTs0AlphaArg2); g_pDevice->SetTextureStageState(1, D3DTSS_COLOROP, s_sTs1ColorOp); g_pDevice->SetTextureStageState(1, D3DTSS_COLORARG1, s_sTs1ColorArg1); g_pDevice->SetTextureStageState(1, D3DTSS_COLORARG2, s_sTs1ColorArg2); g_pDevice->SetTextureStageState(1, D3DTSS_ALPHAOP, s_sTs1AlphaOp); g_pDevice->SetTextureStageState(1, D3DTSS_ALPHAARG1, s_sTs1AlphaArg1); g_pDevice->SetTextureStageState(1, D3DTSS_ALPHAARG2, s_sTs1AlphaArg2); // Força cache de textura a refletir nullptr — próximo render vai rebindar // Invalida cache para forçar rebind no próximo SetTexture g_pDevice->m_pTexture[0] = nullptr; g_pDevice->m_pTexture[1] = nullptr; } ShadowProjectorMesh.h #pragma once #include <d3d9.h> #include <d3dx9.h> class TMHuman; class ShadowProjectorMesh { public: static D3DXVECTOR3 s_vLightDir; static void SetupShadowMatrix(TMHuman* pHuman, float groundY); static bool BeginShadow(IDirect3DDevice9* dev, float alpha = 0.38f); static void EndShadow(IDirect3DDevice9* dev); private: // render states static DWORD s_sAlphaBlend, s_sSrcBlend, s_sDestBlend; static DWORD s_sAlphaRef, s_sAlphaFunc, s_sAlphaTest; static DWORD s_sZWrite, s_sZEnable, s_sZFunc, s_sDepthBias, s_sSlopeBias, s_sLighting; static DWORD s_sFogEnable, s_sFogVertex, s_sCull; static DWORD s_sTexFactor, s_sColorVertex; // stage 0 static DWORD s_sTs0ColorOp, s_sTs0ColorArg1, s_sTs0ColorArg2; static DWORD s_sTs0AlphaOp, s_sTs0AlphaArg1, s_sTs0AlphaArg2; // stage 1 static DWORD s_sTs1ColorOp, s_sTs1ColorArg1, s_sTs1ColorArg2; static DWORD s_sTs1AlphaOp, s_sTs1AlphaArg1, s_sTs1AlphaArg2; static DWORD s_sStencilEnable, s_sStencilFunc, s_sStencilRef, s_sStencilMask; static DWORD s_sStencilWriteMask, s_sStencilPass, s_sStencilFail, s_sStencilZFail; }; Implementação .md # ShadowProjectorMesh — Documentação Completa de Implementação ## Visão Geral O `ShadowProjectorMesh` é um sistema de sombras projetadas (planar shadow) usando DirectX 9. Ele projeta a geometria dos personagens e objetos no plano do chão como silhuetas escuras, utilizando **stencil buffer** para evitar sobreposição de sombras. --- ## Arquivos do Sistema | Arquivo | Descrição | |---|---| | `ShadowProjectorMesh.h` | Header com declaração da classe | | `ShadowProjectorMesh.cpp` | Implementação dos 3 métodos principais | | `TMHuman.cpp` | Integração com personagens (queue + render) | | `TMObject.cpp` | Integração com objetos estáticos (queue + render) | | `ObjectManager.cpp` | Pipeline de renderização (flush das filas) | | `TMProject.vcxproj` | Registro no projeto Visual Studio | | `TMProject.vcxproj.filters` | Filtro: `Source Files\Effects` / `Header Files\Effects` | --- ## 1. ShadowProjectorMesh.h ```cpp #pragma once #include <d3d9.h> #include <d3dx9.h> class TMHuman; class ShadowProjectorMesh { public: static D3DXVECTOR3 s_vLightDir; static void SetupShadowMatrix(TMHuman* pHuman, float groundY); static bool BeginShadow(IDirect3DDevice9* dev, float alpha = 0.38f); static void EndShadow(IDirect3DDevice9* dev); private: // render states static DWORD s_sAlphaBlend, s_sSrcBlend, s_sDestBlend; static DWORD s_sAlphaRef, s_sAlphaFunc, s_sAlphaTest; static DWORD s_sZWrite, s_sZEnable, s_sZFunc, s_sDepthBias, s_sSlopeBias, s_sLighting; static DWORD s_sFogEnable, s_sFogVertex, s_sCull; static DWORD s_sTexFactor, s_sColorVertex; // stage 0 static DWORD s_sTs0ColorOp, s_sTs0ColorArg1, s_sTs0ColorArg2; static DWORD s_sTs0AlphaOp, s_sTs0AlphaArg1, s_sTs0AlphaArg2; // stage 1 static DWORD s_sTs1ColorOp, s_sTs1ColorArg1, s_sTs1ColorArg2; static DWORD s_sTs1AlphaOp, s_sTs1AlphaArg1, s_sTs1AlphaArg2; static DWORD s_sStencilEnable, s_sStencilFunc, s_sStencilRef, s_sStencilMask; static DWORD s_sStencilWriteMask, s_sStencilPass, s_sStencilFail, s_sStencilZFail; }; ``` --- ## 2. ShadowProjectorMesh.cpp ```cpp #include "pch.h" #include "ShadowProjectorMesh.h" #include "TMHuman.h" #include "TMGlobal.h" #include "RenderDevice.h" // ============================================================ // MANUAL SHADOW TUNING (AJUSTE MANUAL DA SOMBRA PROJETADA) // // 1) ROTACAO DA SOMBRA (direcao): // g_ShadowLightDir.x / y / z // // 2) ALTURA/ENCOSTE NO CHAO: // g_ShadowPlaneBias // // 3) INTENSIDADE: // g_ShadowAlphaMax // // Dica: ajuste primeiro a direcao (x/z), depois bias, depois alpha. // ============================================================ static D3DXVECTOR3 g_ShadowLightDir = D3DXVECTOR3(1.20f, -0.70f, 0.60f); static float g_ShadowPlaneBias = 0.005f; static float g_ShadowDirOffset = 2.80f; static DWORD g_ShadowAlphaMax = 120; static bool g_ShadowLockAtFeet = false; // false = projeta para o lado D3DXVECTOR3 ShadowProjectorMesh::s_vLightDir = D3DXVECTOR3(1.20f, -0.70f, 0.60f); DWORD ShadowProjectorMesh::s_sAlphaBlend, ShadowProjectorMesh::s_sSrcBlend, ShadowProjectorMesh::s_sDestBlend; DWORD ShadowProjectorMesh::s_sAlphaRef, ShadowProjectorMesh::s_sAlphaFunc, ShadowProjectorMesh::s_sAlphaTest; DWORD ShadowProjectorMesh::s_sZWrite, ShadowProjectorMesh::s_sZEnable, ShadowProjectorMesh::s_sZFunc, ShadowProjectorMesh::s_sDepthBias, ShadowProjectorMesh::s_sSlopeBias, ShadowProjectorMesh::s_sLighting; DWORD ShadowProjectorMesh::s_sFogEnable, ShadowProjectorMesh::s_sFogVertex, ShadowProjectorMesh::s_sCull; DWORD ShadowProjectorMesh::s_sTexFactor, ShadowProjectorMesh::s_sColorVertex; DWORD ShadowProjectorMesh::s_sTs0ColorOp, ShadowProjectorMesh::s_sTs0ColorArg1, ShadowProjectorMesh::s_sTs0ColorArg2; DWORD ShadowProjectorMesh::s_sTs0AlphaOp, ShadowProjectorMesh::s_sTs0AlphaArg1, ShadowProjectorMesh::s_sTs0AlphaArg2; DWORD ShadowProjectorMesh::s_sTs1ColorOp, ShadowProjectorMesh::s_sTs1ColorArg1, ShadowProjectorMesh::s_sTs1ColorArg2; DWORD ShadowProjectorMesh::s_sTs1AlphaOp, ShadowProjectorMesh::s_sTs1AlphaArg1, ShadowProjectorMesh::s_sTs1AlphaArg2; DWORD ShadowProjectorMesh::s_sStencilEnable, ShadowProjectorMesh::s_sStencilFunc, ShadowProjectorMesh::s_sStencilRef, ShadowProjectorMesh::s_sStencilMask; DWORD ShadowProjectorMesh::s_sStencilWriteMask, ShadowProjectorMesh::s_sStencilPass, ShadowProjectorMesh::s_sStencilFail, ShadowProjectorMesh::s_sStencilZFail; void ShadowProjectorMesh::SetupShadowMatrix(TMHuman* pHuman, float groundY) { if (!pHuman) return; if (groundY < -9000.0f) groundY = 0.0f; if (g_ShadowLockAtFeet) { D3DXMatrixIdentity(&pHuman->m_matShadow); pHuman->m_matShadow._22 = 0.0f; pHuman->m_matShadow._42 = groundY + g_ShadowPlaneBias; return; } D3DXVECTOR3 L = g_ShadowLightDir; D3DXVec3Normalize(&L, &L); // D3DXMatrixShadow com luz direcional rasante D3DXPLANE plane(0.0f, 1.0f, 0.0f, -(groundY + g_ShadowPlaneBias)); D3DXVECTOR4 lightDir(-L.x, -L.y, -L.z, 0.0f); // w=0 = luz direcional D3DXMatrixShadow(&pHuman->m_matShadow, &lightDir, &plane); } bool ShadowProjectorMesh::BeginShadow(IDirect3DDevice9* dev, float alpha) { if (!dev || !g_pDevice) return false; auto FloatToDWORD = [](float v) -> DWORD { DWORD out = 0; memcpy(&out, &v, sizeof(DWORD)); return out; }; // Salva render states originais dev->GetRenderState(D3DRS_ALPHABLENDENABLE, &s_sAlphaBlend); dev->GetRenderState(D3DRS_SRCBLEND, &s_sSrcBlend); dev->GetRenderState(D3DRS_DESTBLEND, &s_sDestBlend); dev->GetRenderState(D3DRS_ALPHAREF, &s_sAlphaRef); dev->GetRenderState(D3DRS_ALPHAFUNC, &s_sAlphaFunc); dev->GetRenderState(D3DRS_ALPHATESTENABLE, &s_sAlphaTest); dev->GetRenderState(D3DRS_ZWRITEENABLE, &s_sZWrite); dev->GetRenderState(D3DRS_ZENABLE, &s_sZEnable); dev->GetRenderState(D3DRS_ZFUNC, &s_sZFunc); dev->GetRenderState(D3DRS_DEPTHBIAS, &s_sDepthBias); dev->GetRenderState(D3DRS_SLOPESCALEDEPTHBIAS, &s_sSlopeBias); dev->GetRenderState(D3DRS_LIGHTING, &s_sLighting); dev->GetRenderState(D3DRS_FOGENABLE, &s_sFogEnable); dev->GetRenderState(D3DRS_FOGVERTEXMODE, &s_sFogVertex); dev->GetRenderState(D3DRS_CULLMODE, &s_sCull); dev->GetRenderState(D3DRS_TEXTUREFACTOR, &s_sTexFactor); dev->GetRenderState(D3DRS_COLORVERTEX, &s_sColorVertex); dev->GetTextureStageState(0, D3DTSS_COLOROP, &s_sTs0ColorOp); dev->GetTextureStageState(0, D3DTSS_COLORARG1, &s_sTs0ColorArg1); dev->GetTextureStageState(0, D3DTSS_COLORARG2, &s_sTs0ColorArg2); dev->GetTextureStageState(0, D3DTSS_ALPHAOP, &s_sTs0AlphaOp); dev->GetTextureStageState(0, D3DTSS_ALPHAARG1, &s_sTs0AlphaArg1); dev->GetTextureStageState(0, D3DTSS_ALPHAARG2, &s_sTs0AlphaArg2); dev->GetTextureStageState(1, D3DTSS_COLOROP, &s_sTs1ColorOp); dev->GetTextureStageState(1, D3DTSS_COLORARG1, &s_sTs1ColorArg1); dev->GetTextureStageState(1, D3DTSS_COLORARG2, &s_sTs1ColorArg2); dev->GetTextureStageState(1, D3DTSS_ALPHAOP, &s_sTs1AlphaOp); dev->GetTextureStageState(1, D3DTSS_ALPHAARG1, &s_sTs1AlphaArg1); dev->GetTextureStageState(1, D3DTSS_ALPHAARG2, &s_sTs1AlphaArg2); dev->GetRenderState(D3DRS_STENCILENABLE, &s_sStencilEnable); dev->GetRenderState(D3DRS_STENCILFUNC, &s_sStencilFunc); dev->GetRenderState(D3DRS_STENCILREF, &s_sStencilRef); dev->GetRenderState(D3DRS_STENCILMASK, &s_sStencilMask); dev->GetRenderState(D3DRS_STENCILWRITEMASK,&s_sStencilWriteMask); dev->GetRenderState(D3DRS_STENCILPASS, &s_sStencilPass); dev->GetRenderState(D3DRS_STENCILFAIL, &s_sStencilFail); dev->GetRenderState(D3DRS_STENCILZFAIL, &s_sStencilZFail); DWORD a = (DWORD)(alpha * 255.0f); if (a > g_ShadowAlphaMax) a = g_ShadowAlphaMax; DWORD shadowColor = D3DCOLOR_ARGB(a, 0, 0, 0); // Configura via g_pDevice para manter cache sincronizado g_pDevice->SetTexture(0, nullptr); g_pDevice->SetTexture(1, nullptr); g_pDevice->SetRenderState(D3DRS_TEXTUREFACTOR, shadowColor); g_pDevice->SetRenderState(D3DRS_COLORVERTEX, FALSE); g_pDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG2); g_pDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_TFACTOR); g_pDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG2); g_pDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_TFACTOR); g_pDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_DISABLE); g_pDevice->SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_DISABLE); g_pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); g_pDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ZERO); g_pDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); g_pDevice->SetRenderState(D3DRS_ALPHATESTENABLE, FALSE); g_pDevice->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_ALWAYS); g_pDevice->SetRenderState(D3DRS_ZWRITEENABLE, FALSE); g_pDevice->SetRenderState(D3DRS_ZENABLE, TRUE); g_pDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESS); g_pDevice->SetRenderState(D3DRS_DEPTHBIAS, FloatToDWORD(-0.00005f)); g_pDevice->SetRenderState(D3DRS_SLOPESCALEDEPTHBIAS, FloatToDWORD(-0.5f)); g_pDevice->SetRenderState(D3DRS_LIGHTING, FALSE); g_pDevice->SetRenderState(D3DRS_FOGENABLE, FALSE); g_pDevice->SetRenderState(D3DRS_FOGVERTEXMODE, D3DFOG_NONE); g_pDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); g_pDevice->SetRenderState(D3DRS_ALPHAREF, 0); g_pDevice->SetRenderState(D3DRS_STENCILENABLE, TRUE); g_pDevice->SetRenderState(D3DRS_STENCILFUNC, D3DCMP_EQUAL); g_pDevice->SetRenderState(D3DRS_STENCILREF, 0x00); g_pDevice->SetRenderState(D3DRS_STENCILMASK, 0xFF); g_pDevice->SetRenderState(D3DRS_STENCILWRITEMASK, 0xFF); g_pDevice->SetRenderState(D3DRS_STENCILPASS, D3DSTENCILOP_INCR); g_pDevice->SetRenderState(D3DRS_STENCILFAIL, D3DSTENCILOP_KEEP); g_pDevice->SetRenderState(D3DRS_STENCILZFAIL, D3DSTENCILOP_KEEP); return true; } void ShadowProjectorMesh::EndShadow(IDirect3DDevice9* dev) { if (!dev || !g_pDevice) return; g_pDevice->SetTexture(0, nullptr); g_pDevice->SetTexture(1, nullptr); // Restaura todos os render states salvos g_pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, s_sAlphaBlend); g_pDevice->SetRenderState(D3DRS_SRCBLEND, s_sSrcBlend); g_pDevice->SetRenderState(D3DRS_DESTBLEND, s_sDestBlend); g_pDevice->SetRenderState(D3DRS_ALPHAREF, s_sAlphaRef); g_pDevice->SetRenderState(D3DRS_ALPHAFUNC, s_sAlphaFunc); g_pDevice->SetRenderState(D3DRS_ALPHATESTENABLE, s_sAlphaTest); g_pDevice->SetRenderState(D3DRS_ZWRITEENABLE, s_sZWrite); g_pDevice->SetRenderState(D3DRS_ZENABLE, s_sZEnable); g_pDevice->SetRenderState(D3DRS_ZFUNC, s_sZFunc); g_pDevice->SetRenderState(D3DRS_DEPTHBIAS, s_sDepthBias); g_pDevice->SetRenderState(D3DRS_SLOPESCALEDEPTHBIAS, s_sSlopeBias); g_pDevice->SetRenderState(D3DRS_LIGHTING, s_sLighting); g_pDevice->SetRenderState(D3DRS_FOGENABLE, s_sFogEnable); g_pDevice->SetRenderState(D3DRS_FOGVERTEXMODE, s_sFogVertex); g_pDevice->SetRenderState(D3DRS_CULLMODE, s_sCull); g_pDevice->SetRenderState(D3DRS_TEXTUREFACTOR, s_sTexFactor); g_pDevice->SetRenderState(D3DRS_COLORVERTEX, s_sColorVertex); g_pDevice->SetRenderState(D3DRS_STENCILENABLE, s_sStencilEnable); g_pDevice->SetRenderState(D3DRS_STENCILFUNC, s_sStencilFunc); g_pDevice->SetRenderState(D3DRS_STENCILREF, s_sStencilRef); g_pDevice->SetRenderState(D3DRS_STENCILMASK, s_sStencilMask); g_pDevice->SetRenderState(D3DRS_STENCILWRITEMASK, s_sStencilWriteMask); g_pDevice->SetRenderState(D3DRS_STENCILPASS, s_sStencilPass); g_pDevice->SetRenderState(D3DRS_STENCILFAIL, s_sStencilFail); g_pDevice->SetRenderState(D3DRS_STENCILZFAIL, s_sStencilZFail); g_pDevice->SetTextureStageState(0, D3DTSS_COLOROP, s_sTs0ColorOp); g_pDevice->SetTextureStageState(0, D3DTSS_COLORARG1, s_sTs0ColorArg1); g_pDevice->SetTextureStageState(0, D3DTSS_COLORARG2, s_sTs0ColorArg2); g_pDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, s_sTs0AlphaOp); g_pDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, s_sTs0AlphaArg1); g_pDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, s_sTs0AlphaArg2); g_pDevice->SetTextureStageState(1, D3DTSS_COLOROP, s_sTs1ColorOp); g_pDevice->SetTextureStageState(1, D3DTSS_COLORARG1, s_sTs1ColorArg1); g_pDevice->SetTextureStageState(1, D3DTSS_COLORARG2, s_sTs1ColorArg2); g_pDevice->SetTextureStageState(1, D3DTSS_ALPHAOP, s_sTs1AlphaOp); g_pDevice->SetTextureStageState(1, D3DTSS_ALPHAARG1, s_sTs1AlphaArg1); g_pDevice->SetTextureStageState(1, D3DTSS_ALPHAARG2, s_sTs1AlphaArg2); // Invalida cache para forcar rebind g_pDevice->m_pTexture[0] = nullptr; g_pDevice->m_pTexture[1] = nullptr; } ``` --- ## 3. Membros adicionados ao TMHuman.h Na classe `TMHuman`, os seguintes membros sao necessarios: ```cpp // TMHuman.h (dentro da classe TMHuman) int m_bShadowPass; // Flag: 1 durante render de sombra, 0 normal D3DXMATRIX m_matShadow; // Matriz de projecao da sombra no chao void QueueProjectedShadow(); void RenderProjectedShadowPass(); static void ClearProjectedShadowQueue(); static void FlushProjectedShadowQueue(); ``` Inicializado no construtor: ```cpp // TMHuman::TMHuman(TMScene* pParentScene) m_bShadowPass = 0; ``` --- ## 4. Codigo em TMHuman.cpp ### 4.1 Fila de sombras ```cpp // TMHuman.cpp — topo do arquivo #include "ShadowProjectorMesh.h" #include <vector> static std::vector<TMHuman*>& ProjectedShadowQueue() { static std::vector<TMHuman*> queue; return queue; } ``` ### 4.2 Queue / Clear / Flush ```cpp void TMHuman::QueueProjectedShadow() { auto& queue = ProjectedShadowQueue(); queue.push_back(this); } void TMHuman::ClearProjectedShadowQueue() { ProjectedShadowQueue().clear(); } void TMHuman::FlushProjectedShadowQueue() { auto& queue = ProjectedShadowQueue(); if (queue.empty()) return; // Um unico Begin/End por frame para humanos if (!ShadowProjectorMesh::BeginShadow(g_pDevice->m_pd3dDevice, 0.47f)) { queue.clear(); return; } for (TMHuman* pHuman : queue) { if (!pHuman || pHuman->m_cDeleted || pHuman->m_dwDelayDel || !pHuman->m_bVisible) continue; pHuman->RenderProjectedShadowPass(); } ShadowProjectorMesh::EndShadow(g_pDevice->m_pd3dDevice); queue.clear(); } ``` ### 4.3 RenderProjectedShadowPass (TMHuman) ```cpp void TMHuman::RenderProjectedShadowPass() { if (!g_pCurrentScene) return; bool isPlayerHuman = (g_pCurrentScene && g_pCurrentScene->m_pMyHuman == this); bool hideProjectedShadow = isPlayerHuman ? (g_bHidePlayerShadow != 0) : (g_bHideObjectShadow != 0); if (hideProjectedShadow || m_cHide || m_cShadow == 1) { return; } float groundY = g_pCurrentScene->GroundGetHeight( TMVector2(m_pSkinMesh->m_vPosition.x, m_pSkinMesh->m_vPosition.z)); // Sem montaria if (m_cMount <= 0) { if (!m_pSkinMesh || !m_pSkinMesh->m_pRoot) return; ShadowProjectorMesh::SetupShadowMatrix(this, groundY); m_bShadowPass = 1; m_pSkinMesh->m_pRoot->Render(); if (m_cMantua > 0 && m_pMantua) { TMHuman* prevOwner = m_pMantua->m_pOwner; m_pMantua->m_pOwner = this; m_pMantua->m_BaseMatrix = m_pSkinMesh->m_OutMatrix; m_pMantua->Render(0.0f, 1.0f, 0.0f); m_pMantua->m_pOwner = prevOwner; } m_bShadowPass = 0; return; } // Com montaria if (!m_pMount || !m_pMount->m_pRoot || !m_pSkinMesh || !m_pSkinMesh->m_pRoot) return; ShadowProjectorMesh::SetupShadowMatrix(this, groundY); m_bShadowPass = 1; m_pMount->m_pRoot->Render(); m_pSkinMesh->m_pRoot->Render(); if (m_cMantua > 0 && m_pMantua) { TMHuman* prevOwner = m_pMantua->m_pOwner; m_pMantua->m_pOwner = this; m_pMantua->m_BaseMatrix = m_pSkinMesh->m_OutMatrix; m_pMantua->Render(0.0f, 1.0f, 0.0f); m_pMantua->m_pOwner = prevOwner; } m_bShadowPass = 0; } ``` ### 4.4 Enfileiramento no Render() do TMHuman Dentro de `TMHuman::Render()`, apos preparar o mesh e antes de renderizar efeitos: ```cpp // Condicao para enfileirar a sombra projetada (dentro de TMHuman::Render) bool isPlayerHuman = (g_pCurrentScene && g_pCurrentScene->m_pMyHuman == this); bool hideProjectedShadow = isPlayerHuman ? (g_bHidePlayerShadow != 0) : (g_bHideObjectShadow != 0); bool canRenderProjectedShadow = (!hideProjectedShadow && !m_cHide && m_cShadow == 0); // Desativa sombra circular antiga if (m_pShade) m_pShade->m_bShow = 0; // Sem montaria: if (canRenderProjectedShadow && m_pSkinMesh->m_pRoot) QueueProjectedShadow(); // Com montaria: if (canRenderProjectedShadow && m_pMount->m_pRoot) QueueProjectedShadow(); ``` --- ## 5. Codigo em TMObject.cpp ### 5.1 Fila de sombras ```cpp // TMObject.cpp — topo do arquivo #include "ShadowProjectorMesh.h" #include <vector> static std::vector<TMObject*>& ProjectedObjectShadowQueue() { static std::vector<TMObject*> queue; return queue; } ``` ### 5.2 Declaracoes em TMObject.h ```cpp // TMObject.h (dentro da classe TMObject) void QueueProjectedShadow(); void RenderProjectedShadowPass(); static void ClearProjectedShadowQueue(); static void FlushProjectedShadowQueue(); ``` ### 5.3 Queue / Clear / Flush (TMObject) ```cpp void TMObject::QueueProjectedShadow() { ProjectedObjectShadowQueue().push_back(this); } void TMObject::ClearProjectedShadowQueue() { ProjectedObjectShadowQueue().clear(); } void TMObject::FlushProjectedShadowQueue() { auto& queue = ProjectedObjectShadowQueue(); // Modo otimizado: limpa fila sem processar sombras if (g_bModoOtimizado || g_bHideObjectShadow) { queue.clear(); return; } if (queue.empty()) return; // Um unico BeginShadow para todos os objetos if (!ShadowProjectorMesh::BeginShadow(g_pDevice->m_pd3dDevice, 0.47f)) { queue.clear(); return; } for (TMObject* pObj : queue) { if (!pObj || pObj->m_cDeleted || !pObj->m_bVisible) continue; pObj->RenderProjectedShadowPass(); } ShadowProjectorMesh::EndShadow(g_pDevice->m_pd3dDevice); queue.clear(); } ``` ### 5.4 RenderProjectedShadowPass (TMObject) ```cpp void TMObject::RenderProjectedShadowPass() { if (!g_pCurrentScene || g_pCurrentScene->m_eSceneType != ESCENE_TYPE::ESCENE_FIELD || g_bHideObjectShadow) return; TMMesh* pMesh = g_pMeshManager->GetCommonMesh(m_dwObjType, 0, 3_min); if (!pMesh) return; float groundY = g_pCurrentScene->GroundGetHeight(m_vecPosition); if (groundY <= -9000.0f) groundY = m_fHeight; D3DXVECTOR3 L = ShadowProjectorMesh::s_vLightDir; D3DXVec3Normalize(&L, &L); if (L.y > -0.01f) L.y = -0.01f; D3DXMATRIX mat{}, matPosition{}, matScale{}; D3DXMatrixScaling(&matScale, pMesh->m_fScaleH, pMesh->m_fScaleV, pMesh->m_fScaleH); D3DXMatrixTranslation(&matPosition, m_vecPosition.x, m_fHeight, m_vecPosition.y); D3DXMatrixRotationYawPitchRoll(&mat, m_fAngle, -D3DXToRadian(90), 0.0f); D3DXMatrixMultiply(&mat, &g_pDevice->m_matWorld, &mat); D3DXMatrixMultiply(&mat, &mat, &matScale); D3DXMatrixMultiply(&mat, &mat, &matPosition); D3DXMATRIX matProjected; D3DXPLANE plane(0.0f, 1.0f, 0.0f, -(groundY + 0.005f)); D3DXVECTOR4 lightDir(-L.x, -L.y, -L.z, 0.0f); // w=0 = luz direcional D3DXMATRIX matShadow{}; D3DXMatrixShadow(&matShadow, &lightDir, &plane); D3DXMatrixMultiply(&matProjected, &mat, &matShadow); // Begin/End e feito pelo FlushProjectedShadowQueue — apenas faz o draw aqui g_pDevice->m_pd3dDevice->SetTransform(D3DTS_WORLDMATRIX(0), &matProjected); pMesh->RenderDrawShadow(); } ``` --- ## 6. Pipeline de Renderizacao — ObjectManager.cpp ```cpp // ObjectManager::RenderObject() void ObjectManager::RenderObject() { if (g_pCurrentScene != nullptr) { // 1. Limpa filas e stencil buffer TMHuman::ClearProjectedShadowQueue(); TMObject::ClearProjectedShadowQueue(); if (g_pDevice && g_pDevice->m_pd3dDevice) g_pDevice->m_pd3dDevice->Clear(0, nullptr, D3DCLEAR_STENCIL, 0, 1.0f, 0); // 2. Renderiza cena principal (cada Render() enfileira sombras via QueueProjectedShadow) // ... (tree traversal renderizando todos os nodos exceto containers de efeito/extra) // 3. Flush das sombras projetadas (renderiza todas de uma vez) TMHuman::FlushProjectedShadowQueue(); TMObject::FlushProjectedShadowQueue(); if (g_pDevice) g_pDevice->SetRenderState(D3DRS_STENCILENABLE, FALSE); // 4. Renderiza Danos e Efeitos por ultimo (sobre as sombras) // ... (containers de efeito e extras) } } ``` --- ## 7. Registro no Projeto Visual Studio ### TMProject.vcxproj ```xml <ClInclude Include="ShadowProjectorMesh.h" /> <ClCompile Include="ShadowProjectorMesh.cpp" /> ``` ### TMProject.vcxproj.filters ```xml <ClInclude Include="ShadowProjectorMesh.h"> <Filter>Header Files\Effects</Filter> </ClInclude> <ClCompile Include="ShadowProjectorMesh.cpp"> <Filter>Source Files\Effects</Filter> </ClCompile> ``` --- ## 8. Dependencias / Includes | Arquivo | Includes necessarios | |---|---| | `ShadowProjectorMesh.h` | `<d3d9.h>`, `<d3dx9.h>` | | `ShadowProjectorMesh.cpp` | `"pch.h"`, `"ShadowProjectorMesh.h"`, `"TMHuman.h"`, `"TMGlobal.h"`, `"RenderDevice.h"` | | `TMHuman.cpp` | `"ShadowProjectorMesh.h"`, `<vector>` | | `TMObject.cpp` | `"ShadowProjectorMesh.h"`, `"OptimizationConfig.h"`, `<vector>` | --- ## 9. Variaveis Globais Utilizadas | Variavel | Tipo | Descricao | |---|---|---| | `g_pDevice` | `RenderDevice*` | Device wrapper com cache de estados | | `g_pCurrentScene` | `TMScene*` | Cena ativa (acessa `GroundGetHeight`, `m_pMyHuman`) | | `g_bModoOtimizado` | `bool` | Modo otimizado — pula sombras de objetos | | `g_bHideObjectShadow` | `DWORD/bool` | Esconde sombras de mobs/objetos | | `g_bHidePlayerShadow` | `DWORD/bool` | Esconde sombra do jogador | | `g_pMeshManager` | `MeshManager*` | Gerenciador de meshes estáticos | --- ## 10. Fluxo de Execucao Resumido ``` ObjectManager::RenderObject() | +-- TMHuman::ClearProjectedShadowQueue() +-- TMObject::ClearProjectedShadowQueue() +-- Clear(STENCIL) | +-- [Render cena] --> cada TMHuman::Render() chama QueueProjectedShadow() | --> cada TMObject::Render() chama QueueProjectedShadow() | +-- TMHuman::FlushProjectedShadowQueue() | +-- BeginShadow(alpha=0.47) // configura estados + stencil | +-- loop: RenderProjectedShadowPass() | | +-- SetupShadowMatrix() // calcula m_matShadow | | +-- m_bShadowPass = 1 | | +-- m_pSkinMesh->Render() // mesh usa m_matShadow quando m_bShadowPass=1 | | +-- m_bShadowPass = 0 | +-- EndShadow() // restaura todos os estados | +-- TMObject::FlushProjectedShadowQueue() | +-- BeginShadow(alpha=0.47) | +-- loop: RenderProjectedShadowPass() | | +-- D3DXMatrixShadow() // calcula matriz inline | | +-- SetTransform + RenderDrawShadow() | +-- EndShadow() | +-- SetRenderState(STENCILENABLE, FALSE) +-- [Render efeitos/danos] ``` --- ## 11. Parametros de Ajuste (Tuning) Definidos como `static` no topo de `ShadowProjectorMesh.cpp`: | Variavel | Valor Padrao | Descricao | |---|---|---| | `g_ShadowLightDir` | `(1.20, -0.70, 0.60)` | Direcao da luz (rotacao da sombra) | | `g_ShadowPlaneBias` | `0.005f` | Bias do plano (evita z-fighting) | | `g_ShadowDirOffset` | `2.80f` | Offset direcional (nao utilizado ativamente) | | `g_ShadowAlphaMax` | `120` | Alpha maximo da sombra (0-255) | | `g_ShadowLockAtFeet` | `false` | `true` = sombra direto embaixo; `false` = projecao lateral |
    1 ponto
  16. 100% ATUALIZADO(2026) INTRODUÇÃO A Fox com muito orgulho apresenta seu produto para Grand Chase Classic (Steam/Nexus/Megaxus/Epic Games/etc) Acesse nosso site e tenha acesso à mais produtos exclusivos: Forums - Fox Cheats FUNÇÕES 🎯 Categoria: Mission Hack Auto Kill Delay — Mata todos os mobs da missão automaticamente. Skip Dialog — Pula todos os diálogos possíveis durante a missão. Kill All — Usado junto com o Auto Kill Delay para matar mobs que suportam o sistema. Stealth — Faz com que os mobs não ataquem você. Monster Vac — Agrupa todos os mobs hostis em um único local. Item Vac — Coleta automaticamente todos os itens dropados. Item Hide — Esconde todos os itens da missão para melhor visualização. Auto Boss — Avança automaticamente para a Boss Fight quando disponível. Unlimited Dimensional Time — Permite ficar mais de 15 minutos no portão dimensional. Level Hack [VOID] — Permite jogar o VOID sem precisar ser level 85. Item Spawn — Dropa todos os itens que seriam obtidos na missão. Speed Farm — Carrega uma missão alternativa para acelerar o farm. Damage Mob — Multiplicador de dano que você sofrerá dos mobs. Damage Hack — Aumenta o dano que você causa aos mobs. Auto Portal — Passa as etapas automaticamente sem interação manual. Speed Hack — Acelera a velocidade do jogo. Super Talim Spam — Spama o ataque especial do evento de Talin em qualquer missão. 🏆 Categoria: Mission Result Rank Select — Escolha a pontuação de rank da missão (F até SS). Hits Count — Quantidade de hits que você causou na missão. Combo Count — Número total de combos realizados. Attack Back Count — Número de ataques realizados pelas costas dos inimigos. Hits Takken — Quantidade de hits que você sofreu durante a missão. Damage Count — Total de dano que você causou na missão. 👤 Categoria: Player Stats HP Infinity — Vida infinita para o seu personagem. MP Full — Mana infinita para usar habilidades sem restrição. Hide Nick — Esconde seu nick no jogo [STREAM MODE]. Potion CD — Remove o cooldown para usar poções sem tempo de espera. CoolDown Hack — Remove o cooldown das skills, podendo usar sem limite. Fly Hack — Permite que seu personagem voe livremente. Pet MP — Mana infinita para o seu Pet. Furia Full — Fúria sempre cheia para usar golpes especiais. Item Hack [N] — Permite usar itens do inventário [N] sem possuí-los. Status SS — Aumenta seus atributos para atingir status SS+ e completar eventos/missões especiais. 🤖 Categoria: Bots/Farming Drop Prediction — Permite visualizar os itens que irão dropar dos mobs na missão. Block Dialog — Bloqueia janelas de diálogo para farmar AFK. Anti Kick AFK — Impede o jogo de te expulsar por ficar AFK. Auto Start — Inicia automaticamente as missões. Auto Next Dungeon — Avança automaticamente para a próxima missão. Auto Ready — Confirma "Pronto" automaticamente nas missões. Auto Play Dungeon — Joga automaticamente a missão selecionada. Auto Farm Item — Farma repetidamente o item adicionado na lista. Auto Failed — Faz a missão falhar automaticamente. Auto Farm Cards — Farma cartas automaticamente na missão. 🎮 Categoria: Auto Collect And Quit Collect And Quit — Entra na missão que você desejar, coleta os itens desejado e quita (FARM AUTOMATICO DE ITENS 100% AFK E RAPIDO 🎮 Categoria: AUTO VOID 100% AFK 23 CHAR AUTO VOID 100% AFK 23 CHAR — Entra na missão do void desejada, completa automaticamente com todos os personagens desejados e para (100% AFK) ENTREGA AUTOMÁTICA COMPRE AQUI OU NO SITE: [Hidden Content] SCREEN SHOTS PREÇOS 30 Dias -> R$39,90 ONDE COMPRAR ? Nosso Site -> Forums - Fox Cheats Nosso Discord : [Hidden Content] COMO USAR Abra o cheat Abra o jogo Seja feliz! DOWNLOAD/SCAN DOWNLOAD x64 : [Hidden Content] SCAN x64 : VirusTotal - File - 4851f472de5f1be722f62b62c1da749723ca086eddda36347db9996da39a0850
    1 ponto
  17. Caso gostem enviarei mais. DOWNLOAD: [Hidden Content]
    1 ponto
  18. Proposta de Melhoria no Sistema de Chat do WYD Venho por meio deste apresentar uma iniciativa de aprimoramento no sistema de chat do jogo WYD (With Your Destiny), com o objetivo de modernizar a comunicação entre os jogadores e proporcionar uma experiência mais dinâmica, organizada e funcional. A principal inovação consiste na criação de um novo sistema de chat que permite a vinculação direta de itens às mensagens enviadas. Com essa funcionalidade, o jogador pode “linkar” um item no chat, possibilitando que outros usuários visualizem suas informações de forma rápida e prática. Essa melhoria facilita significativamente negociações, trocas, avaliações de equipamentos e discussões estratégicas sobre builds e atributos, tornando a interação mais eficiente e intuitiva. Além disso, o novo sistema implementa suporte a emojis, ampliando as possibilidades de expressão dentro do ambiente do jogo. Essa funcionalidade contribui para uma comunicação mais clara, descontraída e alinhada aos padrões modernos de interação digital, aproximando a experiência do jogador às plataformas contemporâneas de mensagem. O projeto ainda se encontra em fase de desenvolvimento, com ajustes e otimizações em andamento para garantir estabilidade, desempenho e integração adequada com os demais sistemas do jogo. A proposta é entregar uma solução robusta, organizada e escalável, que possa futuramente receber novas funcionalidades. Essa melhoria representa um avanço significativo na usabilidade e na qualidade da comunicação dentro do WYD, reforçando o compromisso com a evolução contínua do sistema e com a melhor experiência possível para a comunidade de jogadores. Discord
    1 ponto
  19. ⚔ FORGE YOUR DESTINY ⚔ Forged from Legends of Midgard Olá pessoal! Depois de muitos anos administrando o Legends of Midgard e aprendendo com milhares de jogadores, decidimos criar algo novo. Não um servidor diferente. Mas a evolução do WYD. O Forge Your Destiny mantém toda a essência clássica que marcou uma geração, porém trazendo recursos modernos, melhorias de qualidade de vida e sistemas inéditos que tornam a experiência muito mais divertida. ━━━━━━━━━━━━━━━━━━━━━━ 🎬 TRAILER OFICIAL ━━━━━━━━━━━━━━━━━━━━━━ O que você encontrará no FYD ✔ Interface moderna ✔ PvP raiz ✔ Guerras de Cidade ✔ Guerra de Torre ✔ Bosses Globais ✔ Eventos exclusivos ✔ Sistemas inéditos ✔ Reconect moderno ✔ Hud personalizada a sua preferência ✔ Economia ativa ✔ Balanceamento pensado para PvP ✔ Muito conteúdo para evolução ✔ Melhor qualidade de vida ✔ Sem perder a essência do WYD ━━━━━━━━━━━━━━━━━━━━━━ Recursos modernos • Macro de Pergaminho • Interface totalmente renovada • Cliente otimizado • Melhor desempenho • Diversas melhorias inéditas • Muito mais conforto para jogar ━━━━━━━━━━━━━━━━━━━━━━ 🔥 BETA ONLINE Todos os jogadores recebem: ✔ Donate liberado ✔ Composições liberadas ✔ UP acelerado ✔ Recompensas exclusivas para quem participar do Beta e cumprir os objetivos. ━━━━━━━━━━━━━━━━━━━━━━ 📅 LANÇAMENTO OFICIAL 13/08 às 19:00 ━━━━━━━━━━━━━━━━━━━━━━ 🌐 Site Oficial joguefyd.com ━━━━━━━━━━━━━━━━━━━━━━ 💬 WhatsApp Oficial Grupo WhatsApp Oficial ━━━━━━━━━━━━━━━━━━━━━━ 🎮 Discord discord.gg/SSRtZ7xdtw ━━━━━━━━━━━━━━━━━━━━━━ 📘 Facebook facebook.com/joguefyd ━━━━━━━━━━━━━━━━━━━━━━ 📺 YouTube youtube.com/@joguefyd ━━━━━━━━━━━━━━━━━━━━━━ A nostalgia permanece. A experiência evolui. ⚔ Forge Your Destiny ⚔
    1 ponto
  20. Explicando melhor o conteudo: São os arquivos-server files originais do wyd br (já tinham postado aqui no fórum a um tempo atrás) até aí nada de novo. Não achei o tópico pra dar creditos aqui a quem compartilhou. O que temos de diferente então? A tmsrvin vinha com a dll Core injetada, a source dela não havia sido compartilhada, então fiz uma dll para substituir e fiz algumas descompilações da tmsrvin migrando algumas funções essenciais como SendScore, GetCurrentScore, CloseUser, ProcessAttack, ProcessAffect, GetScoreBonus, CreateSummon, GridMulticast, StandingByProcessor, UseItem, GetAction, MobKilled, algumas relacionadas ao Kefra, ClientMessageChat, packet control e entre outros. A source está bem desorganizada e o objetivo real era tentar manter a originalidade da versão, descompilando as funções principais pra dentro da dll pra ter um gerenciamento/flexibilidade em pequenos ajustes Para quem busca um servidor completo, sem bugs loucos ou crash's (isso pode existir dentro das descompilações que fiz, então retire o naked, que tudo volta ao original ou corrija). [Hidden Content] Pode ser que existam algumas divergencias no codigo fonte original do arquivo map pro convertido pra dentro da dll, utilizei o codex e fiz alguns testes. Edit:: Para ativar o uso dos comandos de GM, vá em ClientCommand.cpp -> procure por "gm" ou "GM" -> aidicone isso: if (strcmp(command->Cmd, "GM") == 0 || strcmp(command->Cmd, "gm") == 0) { //pula verificação na dbsrv // p295h packetOut; packetOut.header.PacketId = 0x295; packetOut.header.ClientId = clientId; memcpy(packetOut.Name, mob->Mob.Name, 0x10); memcpy(packetOut.Comand, command->Msg, 0x60); ProcessClientMessage(clientId, (char*)&packetOut); return false;
    1 ponto
  21. segue video raro: [Hidden Content]
    1 ponto
  22. /* Estilos CSS adaptados para a cor exata do fórum (#272626) */ .gh-topic-container { font-family: 'Segoe UI', 'Roboto', Helvetica, Arial, sans-serif; background-color: #272626; color: #eeeeee; padding: 30px; border-radius: 10px; margin: 20px auto; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3); border: 1px solid #363535; } /* ---- Estilos do Banner ---- */ .gh-banner-wrapper { width: 100%; margin-bottom: 25px; border-radius: 12px; overflow: hidden; box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3); border-bottom: 3px solid #8b5cf6; } .gh-banner-img { width: 100%; height: auto; display: block; } /* ---- Badge de Atualizado (Gatilho de Novidade) ---- */ .gh-update-badge { background: #1e1b4b; border: 1px solid #8b8dff; color: #a4a6ff; display: inline-block; padding: 6px 16px; border-radius: 50px; font-size: 0.85rem; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; margin-bottom: 15px; } /* ---- Grade Lado a Lado (Contas Free) ---- */ .gh-streaming-grid { display: flex; justify-content: space-between; gap: 15px; margin: 25px 0 35px 0; } .gh-streaming-item { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: space-between; background: rgb(32 32 32); padding: 20px 10px; border-radius: 8px; border: 1px solid rgba(255, 255, 255, 0.05); position: relative; } .gh-status-indicator { font-size: 0.75rem; color: #22c55e; font-weight: bold; margin-bottom: 8px; text-transform: uppercase; } /* ---- Tipografia ---- */ .gh-main-title { font-size: 2.3rem; font-weight: 900; text-transform: uppercase; margin-bottom: 5px; text-align: center; letter-spacing: -1px; color: #ffffff; } .gh-grid-title { font-size: 1.3rem; font-weight: 900; text-transform: uppercase; margin-bottom: 15px; text-align: center; color: #ffffff; } .gh-highlight-purple { color: #a855f7; text-shadow: 0 0 10px rgba(168, 85, 247, 0.4); } /* ---- Caixas de Comparação (Gatilho de Valor) ---- */ .gh-feature-box { background: #1e2920; border: 1px solid rgba(34, 197, 94, 0.2); border-left: 5px solid #22c55e; padding: 25px; border-radius: 8px; margin-bottom: 20px; } .gh-feature-title { font-size: 1.4rem; color: #4ade80; font-weight: bold; margin-bottom: 12px; display: flex; align-items: center; } .gh-feature-title::before { content: '👑 '; } .gh-virustotal-box { background: #2d1919; border: 1px solid rgba(239, 68, 68, 0.2); border-left: 5px solid #ef4444; padding: 25px; margin: 20px 0; border-radius: 8px; } .gh-virustotal-title { font-size: 1.4rem; color: #f87171; font-weight: bold; margin-bottom: 12px; display: flex; align-items: center; } .gh-virustotal-title::before { content: '⚠️ '; } .gh-text-content { font-size: 1.05rem; line-height: 1.6; color: #cccccc; } /* ---- Botões ---- */ .gh-button-container { text-align: center; width: 100%; } /* Botão das Contas de Teste/Free */ .gh-cta-button { background: rgba(255, 255, 255, 0.08); color: #bbbbbb !important; padding: 12px 15px; text-decoration: none; font-size: 0.85rem; font-weight: 700; border-radius: 6px; transition: all 0.2s ease; display: inline-block; text-transform: uppercase; border: 1px solid rgba(255, 255, 255, 0.1); width: 95%; box-sizing: border-box; } .gh-cta-button:hover { background: #8b5cf6; color: white !important; border-color: #8b5cf6; box-shadow: 0 4px 12px rgba(139, 92, 246, 0.3); } /* Botão Principal de Vendas (Gatilho de Ação Irrecusável) */ .gh-cta-button-large { background: linear-gradient(to right, #8b5cf6, #6366f1); color: white !important; padding: 18px 55px; text-decoration: none; font-size: 1.25rem; font-weight: 800; border-radius: 8px; transition: all 0.2s ease; display: inline-block; text-transform: uppercase; border: none; cursor: pointer; box-shadow: 0 6px 25px rgba(139, 92, 246, 0.5); animation: gh-pulse 2s infinite; } .gh-cta-button-large:hover { transform: translateY(-2px); box-shadow: 0 10px 30px rgba(139, 92, 246, 0.7); filter: brightness(1.1); } /* Animação sutil para atrair os olhos para a compra */ @keyframes gh-pulse { 0% { box-shadow: 0 0 0 0 rgba(139, 92, 246, 0.5); } 70% { box-shadow: 0 0 0 15px rgba(139, 92, 246, 0); } 100% { box-shadow: 0 0 0 0 rgba(139, 92, 246, 0); } } /* Responsividade */ @media (max-width: 600px) { .gh-streaming-grid { flex-direction: column; gap: 15px; } .gh-cta-button-large { width: 100%; padding: 16px 20px; font-size: 1.1rem; } } Contas ATUALIZADAS 10/08/2026 Escolha uma das opções abaixo para testar o serviço gratuitamente: [Hidden Content] Cansado de quedas e telas cheias? O método gratuito é excelente para testar, mas as contas são públicas e mudam constantemente. Se você busca estabilidade total, suporte ativo e um perfil exclusivo só seu, veja a diferença abaixo: Vantagens Acesso Privada Acesso completo e ininterrupto por 30 dias com perfil e tela 100% privada. Ninguém mexe no seu histórico, ninguém altera sua senha. Entrega automática e instantânea via PIX com garantia de suporte completo via chat. Desvantagens Acesso Gratuito/Compartilhado Contas utilizadas por dezenas de pessoas simultaneamente. Limites de telas excedidos frequentemente, histórico completamente bagunçado e senhas alteradas a qualquer momento, tornando o acesso totalmente instável e temporário. Mais de 80% dos membros do fórum começaram testando as contas gratuitas e migraram para o plano privado. Garanta sua estabilidade hoje mesmo! Quero Minha Conta Privada Agora
    1 ponto
  23. TUTORIAL DE COMO INJETAR COOKIES [Hidden Content]
    1 ponto
  24. Pack Grátis - Lexi - Hot4lexi Spoiler Download Pack: [Hidden Content]
    1 ponto
  25. Já que postaram a source, resolvi postar a release também para acabar com a graça e o conteúdo ser completo. [Hidden Content] Scan release Scan source
    1 ponto
  26. HC CURSOS E TUTORIAIS 🎬 ▶️ PLAYLIST DO MEU CANAL NO YOUTUBE 🎬 ▶️ [Hidden Content] Vírus Total: [Hidden Content] Créidtos: vou deixando aqui os crédito para o criador do Programa de edição @Japon .
    1 ponto
  27. Olá! Quem conhece sabe: o produto fala por si, sempre inovando, trazendo funcionalidades novas e sendo constantemente atualizado. *Macro Lan *Filtro de drop com add *Auto agrupar *Auto utilizar *Procurar add com replation *Auto click em npc **Visual Script por nodes ( crie qual quer tipo de macro através de nodes, o céu é o limite ) * Diversas outras funcionabilidades *** Macro Agua para Cons ( auto grupo, notificação por sms ) *** Macro Pesa para Cons (auto grupo, notificação por sms) * Suporte a scripts em lua ( obsoleto, visual script é seu sucessor ) ** Em beta *** serviço extra, preço a parte Em breve vou documentar os nodes e criar os tutorais. Screenshots: Visual Script:
    1 ponto
  28. 1 ponto
  29. Scan da release caso algum literal CORAJOSO resolver abrir isso (tem que ser louco) 38/60 VirusTotal - File - 0ea47ddd395b92e4a14efed4974304b06fc4674fc67e0e15f0c5a38dba6f5304
    1 ponto
  30. Como usar? - Use no próprio navegador abrindo o .html, XAMPP ou Servidor WEB. Demostração: [Hidden Content] Scan: [Hidden Content]
    1 ponto
  31. Saudações, colegas de investigação e segurança Quero trazer ao conselho uma análise detalhada de uma plataforma que vem ganhando atenção dentro da comunidade de open-source intelligence: o World Monitor, acessível em [Hidden Content]. Trata-se de um dashboard OSINT gratuito e open-source para monitoramento global de eventos, tendências e sinais de risco em tempo real. O que é o World Monitor? World Monitor é um painel de inteligência em tempo real que agrega múltiplas fontes de dados — notícias, eventos geopolíticos, movimentos militares, infraestrutura crítica e indicadores macroeconômicos — em uma visualização única e interativa. A proposta da plataforma é fornecer situational awareness global de forma gratuita e open-source, algo historicamente reservado a ferramentas corporativas caras. Seu criador, Elie Habib, descreveu o projeto como algo semelhante a um “terminal Bloomberg para geopolítica”, integrando dezenas de feeds e APIs diferentes em um único dashboard. Funções e Componentes Principais Mapas Interativos e Camadas de Dados Permite visualizar eventos e sinais em um mapa global com várias camadas: Conflitos e protestos Infraestrutura estratégica (base militar, data centers, cabos submarinos) Indicadores de risco e instabilidade por região Movimentação de tráfego aéreo e marítimo (ADS-B e AIS) Agregador de Notícias e Sinais de Mídia Consolida dezenas de feeds de notícias de fontes confiáveis Possibilidade de buscar eventos por palavra-chave ou região Classificação e correlação de notícias em múltiplas línguas e zonas geográficas Rastreamento de Movimentação Real Integrado com data partners como Wingbits e APIs públicas: Tráfego aéreo militar em tempo real (via OpenSky e Wingbits) Rastreamento de navios e atividade marítima Controle de eventos correlacionados entre aeronaves, navios e notícias Esses sinais ajudam a detectar movimentações físicas, logísticas ou mudanças repentinas em regiões sensíveis. Indicadores Econômicos & Mercados O dashboard também agrega dados econômicos essenciais: Indicadores macroeconômicos Movimento de mercados financeiros relacionados a eventos globais Velocidade de notícias e reações de mercado analisadas em conjunto Permite correlacionar eventos políticos com movimentos econômicos em tempo real. Inteligência Assistida por AI A plataforma utiliza modelos de IA para: Resumir grandes volumes de informação rapidamente Agrupar eventos por semelhança semântica Destaque automático de tendências relevantes Esse tipo de processamento torna possível transformar dados brutos em insights de forma mais prática para analistas. Tecnologias e Arquitetura Open-Source & Transparente O projeto é publicado sob licença MIT e pode ser auditado, modificado e auto-hospedado por qualquer organização ou indivíduo interessado. Múltiplas Fontes Integradas APIs públicas e gratuitos Feeds de notícia curados por autoridade Dados de rastreamento de tráfego global Indicadores econômicos em tempo real Design Edge-First e Processamento Distribuído Camadas de arquitetura com cache inteligente e funções distribuídas mantêm o dashboard rápido mesmo sob grandes volumes de dados, além de permitir resiliência em face de falhas de APIs externas. Formas de Uso Prática Inteligência Operacional Analistas podem: Observar eventos globais que impactam segurança e operações Combinar sinais físicos (aviões/navios) com notícias Identificar tendências emergentes antes que se tornem crises Análise Estratégica Ideal para: Estudos geopolíticos Briefings de risco para equipes executivas Produção de relatórios integrados com correlação de dados Investigação OSINT Embora não substitua ferramentas especializadas, o World Monitor pode ser um ponto central de referência visual durante investigações que exigem visão global ou contextualização geoespacial de eventos. Considerações Técnicas e Segurança Vale reforçar que o site é novo e, como qualquer serviço web, deve ser acessado com cautela. Informações de reputação online são limitadas, e verificadores automáticos indicam apenas que o domínio possui conexão segura (HTTPS), mas não garantem legitimidade absoluta. Para uso em ambientes sensíveis ou de alta confidencialidade, a recomendação é não importar executáveis não verificados e sempre avaliar as fontes de dados integradas antes de tomar decisões críticas.
    1 ponto
  32. Sempre tive vontade de experimentar como seria usar cheat ESP no valorant, mas tenho receio de ser banido por apenas usar um dia. Tem recomendação de algum que realmente não daria ban por usar um dia?
    1 ponto
  33. Só funcionará com servidores que não tem proteção para o Cheat Engine COMENTE O POST E CLIQUE NO BOTÃO DE LIKE PARA LIBERAR OS CHEATS Primeiramente faça o download do Cheat Engine: [Hidden Content] One Hit [Hidden Content] HP Hack [Hidden Content] MP Hack [Hidden Content] Speed Hack [Hidden Content] Stage Hack [Hidden Content] Créditos: ---Tinho---
    1 ponto
  34. [Hidden Content] [Hidden Content]
    1 ponto
  35. 🔥 WYD OBSIDIAN – SERVIDOR ATIVO, EVENTOS CONSTANTES E PROGRESSÃO JUSTA! 🔥 Se você procura um servidor econômico, fácil de jogar e com eventos competitivos, o WYD Obsidian é a escolha certa. Aqui a evolução é acessível, a comunidade é ativa e sempre há desafios acontecendo. 🎁 KIT NOVATO – COMEÇE COM VANTAGEM! Todos os novos jogadores recebem benefícios iniciais para facilitar o começo da jornada: 🍗 Frango inicial ⏳ 12 horas de experiência (XP) ✨ 7 dias de Poção Divina Entre no jogo e comece evoluindo desde o primeiro minuto! 👥 KIT MIGRAÇÃO PARA GUILDAS Possui uma guilda e quer começar já competitivo? O Kit Migração está disponível para grupos organizados. 📌 Disponível para guildas com mínimo de 10 jogadores 📌 Suporte especial para adaptação ao servidor 📌 Benefícios exclusivos para início acelerado 📩 Para solicitar o kit migração, entre em contato com a administração. ⚔️ SISTEMAS E CONTEÚDOS DISPONÍVEIS 👹 Sistema de Bosses com recompensa donate 🏟️ Arena Real ativa 🧬 Sistema de Composições 🎯 Servidor econômico e equilibrado 🟢 Fácil de jogar, ideal para novos e veteranos 📅 CRONOGRAMA DE EVENTOS FIXOS 🏰 Guerra de Torre 🕙 Segunda a Sexta – 22:00 🌆 Cidades e Noatun 📅 Domingo – 21:00 e 22:00 🎉 Eventos Exclusivos 📆 Realizados 2 vezes por mês Sempre há atividade acontecendo — prepare sua guilda e participe! 🌟 POR QUE JOGAR NO WYD OBSIDIAN? ✅ Servidor ativo e estável ✅ Progressão rápida e acessível ✅ Eventos frequentes ✅ Ambiente competitivo ✅ Ideal para jogadores solo e guildas ✅ Administração presente e suporte ativo Aqui você evolui, compete e se diverte sem complicação. 🌐 SITE: [Hidden Content] 💬 DISCORD: ([Hidden Content] 🔥 Reúna sua guilda, prepare seus itens e venha dominar o WYD Obsidian! Nos vemos dentro do jogo!
    1 ponto
  36. Este é um bot completo e personalizável para WYD, inspirado no vHK. Trabalhamos com licença mensal. Edit: Projeto vendido, em comum acordo, não farei mais a venda de licenças do mesmo. Importante: ✅ Não injetamos DLL, não removemos proteções dos servidores, não é detectável caso não abuse das ferramentas. Recursos: ✅ Auto lan; ✅ Auto evoc (você define o delay); ✅ Auto quest (faz quest sozinho, usa os itens, vai pros spots, tudo aleatório); ✅ Auto eventos (módulo pago à parte, funciona em qualquer tipo de evento (teleport, hit, drop, etc..)); ✅ Filtro de drop completo com duas opções de uso (drop ou tempo) sem limitações e filtro por add (usa, deleta, agrupa); ✅ Distribuição de pontos automática (de acordo com sua personalização de build e delay para distribuição); ✅ Ajuste de todos os delays (agrupar, usar, deletar, andar, distribuir pontos e invocar); ✅ É possível ocultar players, mobs, evocação ou lista personalizada (você não visualiza mas ele estará la); ✅ Usar ou não dados aleatórios do computador para login (como mac, entre outros); ✅ Macro teleport (ao morrer retorna a cidade e usa o pergaminho do teleporte, voltando pra onde salvou a gema); ✅ Comando para separa itens por quantidade ou pack; ✅ Comando para agrupar itens; ✅ Comando para comprar itens do npc; Todos os delays e recursos são personalizáveis, ao andar pelo mapa as coordenadas são aleatórias, não anda igual um bot... Sua sugestão é bem-vinda! Fotos do sistema: [Hidden Content] Contato via inbox.
    1 ponto
  37. Atualmente funcionando em vários MuOnline TUTORIAL [Hidden Content] DOWNLOAD [Hidden Content] [Hidden Content] Scan VirusTotal (Arquivo Compactado) [Hidden Content] VirusTotal (Arquivo .exe) [Hidden Content] VirusTotal (Arquivo .dll) [Hidden Content]
    1 ponto
  38. Boa noite galera, venho aqui repassar um projeto que estava trabalhando a um bom tempo atrás. Se trata de um sistema feito em python, para automatizar a exclusão de itens indesejados no inventário do game com base nas imagens configuradas. (Para quem quer saber mais, o código trabalha conforme alguns robôs de produção, os mesmos que separam produtos com defeitos nas fabricas, se quiser saber mais posso explicar depois). O sistema foi feito com python e usa bibliotecas como Opencv, Pyautogui e mss para capturar a tela, identificar itens por imagem e realizar o drop automaticamente em clientes com interfaces que contem a lixeira no inventário (confirmação de exclusão) ou descarte jogando no chão. Por se tratar de um projeto não concluido, estou repassando para estudos e aprimoramento, espero que quem utilize-o, não faça algo que de alguma forma prejudique os servidores. Também vale ressaltar, que por se trata de um macro de imagem, ele captura a tela do computador e consequentemente o wyd.exe aberto, fazendo com que você precise identificar as coordenadas em sua tela e utilizar tais coordenadas para estar aplicando a configuração do macro (ele se torna indetectável para anti-cheats) Como usar: Código: Observações importantes: 1. Certifique-se de criar a pasta Templates e colocar as imagens dos itens que deseja excluir dentro dela. 2.As coordenadas de região do inventário, slot de exclusão e botão de confirmação precisam ser ajustadas de acordo com sua tela. Podendo usar o pyautogui.position() para pegar as coordenadas corretas. 3. Talvez a função de capturar coordenadas em modo de tela cheia do WYDFAK possa pegar as coordenadas. (não testei) 4. Isso é só a ponta de um projeto incrível que pode ser feito NÃO TESTE COM SEUS ITENS OU DROPS QUE TEM VALOR ALTO Tive essa ideia de projeto, quando estava fazendo uma automação que separa paçocas quebradas.
    1 ponto
  39. HC CURSOS E TUTORIAIS 🎬 ▶️ PLAYLIST DO MEU CANAL NO YOUTUBE 🎬 ▶️
    1 ponto
  40. QUICK LIST Para procurar algo com mais facilidade dê um CTRL + F para buscar! Cliente Todos os Clientes do WYD disponiveis e patchs de atualizações Hook's Hook de resolução HD - Widscreen 7.56 Source & Release Versão 7.54 Versão 7.56 Versão 7.59 / 7.62 Codigos e Hook's Leitura da ItemList em Runtime Macro ItemList [HOOK] Retirar barra de HP de novas esferas [HOOK] Additemsanc 759 [HOOK] Widscreen 762 [HOOK] Mofificar atributos das montarias-759 [HOOK] Adicionar-novos-trajes-759 [HOOK] Trajes com brilho 759 [HOOK] createscene world mobtarget-759 [HOOK] Additemsanc-759 [HOOK] Trajes Completo 759 Exemplos de npcs de evento [HOOK] [FIX] crash no pacote-0xfdf 756 [HOOK] Side maps 7556 [HOOK] Resoluções FULL HD [HOOK] Adicionando local e o valor do cp 7556 [HOOK] Modo foto no wyd [HOOK] Native Func 756 atualizada para 754 cliente [PARTE 1] [HOOK] Native Func 756 atualizada para 754 cliente [PARTE 2] [HOOK] Keypress newbutton 754 [HOOK] Fixmobcount contador laranja 754 Tool's E-MAPS Editor Source Fieldscene editor Leitura da itemlistcsv runtime Macro itemlist by seitbnao [TOOL] Meshtexturelist meshs wyd.exe para novos trajes [7.59] Editor e conversor skilldata v761 [TOOL] Editor serverlist bin WYD Global W2 mixlist editor Launcher customizado e traduzido [SOURCE] Wyd launcher by seitbnao WebSite Artes e .PSD PSD imagem para divulgação PSD imagem para divulgação 2 PSD imagem para divulgação 3 PSD imagem para divulgação 4 PSD imagem para divulgação 5 PSD imagem para divulgação 6 Outros Pacote de Guildmark Trajes separados e organizados Links dos clientes e patchs de atualizações by Reechdan Novos psds para client 756 Icones itens wyd Pack de DLL para melhorar os graficos 756 Struct do config.bin do launcher [SOURCE] Premium neil wyd Re-Ups Caso algum link esteja offline, contate a moderação do Fórum! QuickList será atualizada a cada 15 dias por um Moderador da área caso tenha algum novo tópico relevante. Atenciosamente, Equipe Webcheats
    1 ponto
  41. ✔ Hack para Combat Arms Classic e BR Apenas baixe o loader, use normalmente e seja feliz! 🎮✨ Obs: Você estará utilizando a versão Free. ✔ ULTILIZAÇÃO SIMPLES PARA USAR O LOADER ✔ "Tutorial de como usar disponível. Em caso de dúvidas, assista ao vídeo no YouTube" ✔ Download e Scan de Vírus Credits:WalisonBR, Absolut,Well11, LuizinLoko, TheHacker/Mod
    1 ponto
  42. Na época era tudo gratuito, hoje mudaram a estrutura para ter recursos pagos. Link atualizado: [Hidden Content]
    1 ponto
  43. DUMP DA CSHELL_X64.DLL E DO CROSSFIRE.EXE PRA QM ESTA COMEÇANDO JÁ É ALGO.. [Hidden Content]
    1 ponto
  44. Funcional em vários mu online [Hidden Content] Scan VirusTotal (Arquivo Compactado) [Hidden Content]
    1 ponto
  45. De volta... Talvez... AIMBOT/Aim Ghost. Crânio, Pescoço, Corpo. FOV. Suavização da Mira. ESP. BOX, Line, LIFE. Memory. No Recoil/Spred Etc Misc. Não testei !!! Caso o Menu não apareça siga os paços desse tópico abaixo! CLICK AQUI Scan [Hidden Content] Modo de Configurar/Injeção da DLL Automatico Manual Map Stealth Inject Erase PE Hide Module INJETORES TESTADO NO STEAM POREM FUNCIONA NO VFUN LAUNCHER CRED: Release By @TheHackerMod Coop: Mike024 Chriis aka xk3y DisOwned Dark7OveRR qqshutup WaterSmoke
    1 ponto
Esta tabela de classificação está definida para São Paulo/GMT-03:00
×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.