Ir para conteúdo

Os Melhores

Conteúdo popular

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

  1. Olá, pessoal! Estou compartilhando um projeto de ClientPatch v757 de 2019, da época em que comecei a estudar a UI do game com o Wed. Então já aviso: não julguem o código kkk. O executável e o arquivo .c do cliente estão no repositório. [Hidden Content]
    22 pontos
  2. Oi, estava meio entediado então peguei o projeto W2PP, e fiz (algumas) pequenas modificações para rastrear todos os packets enviados e de onde eles vem/para onde vão (TMSrv). Ai você me pergunta, qual o objetivo? E é muito simples e claro: ter visibilidade do protocolo e poder arrumar bugs e falhas além de poder plugar essas informações em uma IA para te dar uma mãozinha (quem sabe até escrever um emulador?). [Hidden Content] Se tiver sugestão de algo relacionado, manda ai
    4 pontos
  3. 3 pontos
  4. [Hidden Content]
    2 pontos
  5. 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
    2 pontos
  6. MEUS CANAIS DE VÍDEOS HC CURSOS E TUTORIAIS 🎬 ▶️ PLAYLIST DO MEU CANAL NO YOUTUBE 🎬 ▶️ VEICARECA GAMES 🎬 ▶️ PLAYLIST DO MEU CANAL NO YOUTUBE 🎬 ▶️
    2 pontos
  7. A melhor base para iniciar é New World. Eu tenho uma base bem legal e limpa, caso tenha interesse em comprar eu vendo barato, me adiciona no discord eogoldenboy_08570
    2 pontos
  8. Atenção: Este conteúdo estou disponibilizando de forma gratuita apenas com a intenção de apresentar meu trabalho. Para conteúdos personalizados deixo aqui abaixo o link do meu anuncio no Marketplace da WebCheats: Dessa forma, estou disponibilizando um Pack de renders em alta resolução do Beastmaster com set Arch. Confira abaixo e aproveite o material como desejar! Este mesmo modelo se encontra a venda de forma animada, ideal para background de site. Recomendo dar uma olhada: Modelos: [Hidden Content]
    2 pontos
  9. Link:⁨ Clique Aqui começa com 5 créditos iniciais, tem para vários sites
    2 pontos
  10. Discord: [Hidden Content] Site: [Hidden Content] Informações: 2 Anos Online: Abertura em 20/02/2022 Level Máximo: 99 Novos Visuais Novas Missões Contando também com 5 Sets diferentes para um melhor EndGame 24 Personagens Disponíveis Novidades 20/05/2024 1º Servidor com Vazio Disponível NOVOS EQUIPAMENTOS Armas do Devorador do Vazio - Nv. mínimo: 99 [Lendário e Místico] Atributos Base Ataque 5065 VAZIO (INVASÃO) Dificuldade: Normal Área: Irrupção do Vazio Nível Recomendado: 90 ~99 ACESSO Para acessar a nova Raid, você precisará clicar na área do Irrupção do Vazio localizada no mapa do mundo e parte superior direita do jogo, ao lado dos continentes de Arquimídia e Áton. Após acessá-lo, uma tela de escolha dos estágio do Vazio aparecerá e você poderá escolher entre os disponíveis para jogar e se aventurar. Localização da Irrupção do Vazio no Mapa do Mundo Irrupção do Vazio REQUISITOS DE ENTRADA Para aqueles que decidirem encarar a raid do Vazio será necessário conter o nível mínimo 90, possuir o rank SS, ter o Poder de Batalha igual ou superior a 1.850kk no personagem de escolha e ter completado a missão "Altar da Invocação". ENTRADA A Raid poderá ser acessada 3x (três) vezes ao dia por personagem, após esse limite diário o jogador poderá utilizar o "Ticket de Entrada do Vazio" para continuar se aventurando e receber as recompensas ao concluir a missão. O mesmo também estará disponível para venda na loja: Ticket de Entrada do Vazio 500 diamantes A nova entrada também estará disponível na forja temporariamente e poderá ser construída utilizando os Pedaços do Ticket de Entrada do Vazio. Para garantir estes pedaços, o Invasor do vazio poderá aparecer em todas as missões do mundo de Elyos, Tempo e Espaço de Henir, Berço da Origem e no próprio Vazio, portanto, vocês precisarão derrotá-lo para receber um Baú Alternativo do Pedaço da Entrada do Vazio e garantir aleatoriamente qualquer uma das 03 (três) peças. Pedaços 1,2 e 3 do Ticket de Entrada do Vazio, respectivamente Durante o período de lançamento do Vazio, o Invasor do Vazio terá 20% de chance de aparecer na dificuldade comum e 60% de chance de aparecer na dificuldade heroico das missões citadas anteriormente. STAGE A nova missão conterá 03 (três) estágios, sendo 02 comuns e 01 secreto. STAGE SECRETO Para ter acesso a esse stage e enfrentar o boss secreto, você precisará derrotar todas as versões do Devorador do Vazio e quebrar o portal que aparecerá ao final do 2º stage. Caso você opte em quebrar o portal, será levado diretamente ao boss secreto, podendo receber uma recompensa exclusiva ao derrotá-lo, entretanto, também é possível optar em não enfrentá-lo e sair com tudo que já adquiriu até aquele momento clicando "ESC" e aguardando finalizar a missão. Preparado para encarar este desafio? TEMPO Cada stage e versão do boss Devorador do Vazio terá um tempo em tela para finalização, caso você não o derrote dentro do prazo estipulado, a missão dará falha e será necessário recomeçar a partida. Caso isso ocorra, você também perderá as recompensas conquistadas. DROP Confira a lista de DROP disponível: NOVOS TÍTULOS Início do Caos Início do Caos (Verdadeiro) Atributos Base Ataque 520 Defesa 610 HP 610 - Efeitos Acerto Crítico + 3.50% Dano Crítico + 30.00% Ataque Especial + 670 MP Recuperado + 7.80% GP Adquirido + 6.00% EXP Adquirido + 24.00% Resistência a Corrupção + 110 Limite de Recup. de HP em missão + 20.00% Efetividades das Poções de HP aumentada em 17% Resist. a Status Anormais + 17.50% Atributos Base Ataque 520 Defesa 610 HP 610 - Efeitos Acerto Crítico + 4.50% Dano Crítico + 40.00% Ataque Especial + 750 MP Recuperado + 9.00% GP Adquirido + 8.00% EXP Adquirido + 29.00% Resistência a Corrupção + 150 Limite de Recup. de HP em missão + 25.00% Efetividades das Poções de HP aumentada em 22% Resist. a Status Anormais + 22.50% Como obter? Disponível após a realização de 750 idas Como obter? Forja - Irrupção do Vazio NOVAS CARTAS Atributos Vitalidade +165 Atributos Ataque + 900 Atributos Dano Crítico + 54.00% Resistência a Corrupção + 30 Apresentando a vocês mais um pacote com visual único e imperdível desta Segunda temporada, o "Dragão Ascendente" ja está disponível em nosso Sistema VIP, trazendo consigo uma nova exclusividade, o facilitador. Considerada uma "Vestimenta Sagrada", o Dragão Ascendente é o nome dado para as vestimentas vivas que só deverão ser trajadas por aqueles que conseguirem elevar ao máximo sua mente e seu corpo. Ele foi criado pelas Deusas antes da guerra afim de se evitar um massacre e poder utilizar este poder a favor do bem na batalha que estava por acontecer. Para ativar seu poder ilimitado, a mente e o corpo precisam ser elevados a ponto de entrar em um estado de fúria interior, invocando assim cada vez mais poder e concedendo mais habilidades desconhecidas ao seu portador. É possível que outras armaduras também tenham sido forjadas a pedido das Deusas, porém cabe aos nossos heróis descobrirem este novo poder e utiliza-lo para eliminar os males de Ernas. Confira as novidades abaixo: Pacote Visual VIP do Dragão Ascendente + Mascote Tian Atributo no Sistema de Coleção VIP: Dano Crítico + 35.00% NOVO MASCOTE Mascote Tian Ataque do Mascote Tian Efeito do Ataque: Escudo + Aumento de todos os atributos +10% AI - Já Disponível para Jogar! 🔸 EXCLUSIVIDADE ETERNAL SAGE 🔸 Apresentando a vocês uma exclusividade de nosso servidor, AI possui um modo mágico que pode ser acessado através da Árvore de Talentos da Galatea (classe especial). Quando ativado e alternado durante a batalha, sua arma se torna um objeto mágico capaz de ser arremessado, lhe permitindo utilizar novos combos, técnicas e skills, se assemelhando ao modo original de troca de classe. Confira abaixo: “C” MODO MÁGICO: ALTERNAR COMBO BÁSICO + GOLPE CRESCENTE + ATAQUE CRÍTICO + ATAQUE AÉREO CORRIDA + ATAQUE DURANTE A CORRIDA + AGARRÃO Possuidora de duas classes, ambas terão em sua árvore de talentos, a Aba Ativo, que refere-se ao aprimoramento dos combos básicos, e a Aba Passivo, que aprimora suas habilidades que são ativadas automaticamente. [Suprema] Vigilância Orbital Seleção de Personam Tela de Servidor Novo Continente Sistema de Customização
    2 pontos
  11. LINK ATUALIZADO 08/05/2026: [Hidden Content] PATROCINADORA streamingsbarato.com Diversos Serviços streamings com 70% OFF
    2 pontos
  12. LINK ATUALIZADO 15/04/2026: [Hidden Content] PATROCINADORA streamingsbarato.com Diversos Serviços streamings com 70% OFF
    2 pontos
  13. Pessoal, abaixo está um breve tutorial de como fazer unhook em api e qual a necessidade de faze-lo, lembrando que caso queira algo mais profundo em relação a programação, não deixe de adquirir o MELHOR CURSO DE CRIAÇÃO DE CHEATS, que está na minha bio ou apertando aqui. Fazer um unhook de API significa remover um gancho (hook) que foi colocado em uma função de API do Windows para interceptar chamadas. Isso pode ser necessário, por exemplo, para desfazer modificações feitas por softwares de terceiros que alteram o comportamento de funções do sistema. 🔹 Como funciona um Hook de API? Um hook é basicamente uma modificação no código de uma função de API para que, ao ser chamada, ela execute um código alternativo antes ou depois (ou substitua completamente o comportamento original). Isso pode ser feito alterando a tabela de importação (IAT Hooking), substituindo bytes no código da função (Inline Hooking) ou usando técnicas mais avançadas como detours. 🔹 Como desfazer um Hook (Unhook)? O processo de unhook consiste em restaurar a função ao seu estado original, geralmente sobrescrevendo as instruções alteradas pelo hook com as instruções originais da função. 🟢 Unhook de API em Delphi Aqui está um exemplo de unhooking de uma função da API no Delphi. Vamos considerar que a função MessageBoxW foi hookada e queremos restaurá-la. Passos: Obter o endereço original da função. Comparar os primeiros bytes da função com os esperados. Restaurar os bytes originais caso tenham sido modificados. ✅ Esse código restaura os primeiros 5 bytes da função MessageBoxW no user32.dll. 🟢 Unhook de API em C++ Agora, vamos fazer algo similar em C++. ✅ Esse código também restaura os primeiros bytes da função MessageBoxW. 🛑 Considerações Importantes: Nem sempre os primeiros bytes são os mesmos. Cada versão do Windows pode ter variações. Se o hook for por tabela de importação (IAT), você deve restaurar a IAT e não sobrescrever os bytes da função. Pode ser necessário obter os bytes originais dinamicamente, por exemplo, extraindo de um backup da DLL original. Se um antivírus estiver protegendo a função hookada, pode ser que o unhook falhe. Esses métodos são básicos e podem não funcionar em hooks mais avançados. Se quiser algo mais robusto, pode-se usar ferramentas como Detours ou técnicas de engenharia reversa para extrair os bytes originais dinamicamente.
    2 pontos
  14. Tutorial 🔰 Passo 1 — Abrir o Loader: Clique com o botão direito no Loader e selecione “Executar como administrador”. 🔰 Passo 2 — Login: Digite seu usuário e senha cadastrados no site FRCHEATS para acessar o painel do Loader. 🔰 Passo 3 — Escolha do Jogo: Selecione o jogo que deseja usar o cheat: CrossFire BR ou CrossFire West. Clique em Injetar Cheat WALLHACK É AUTO ON Atenção Sabemos que ao baixar ou executar nosso Loader (FRLOADER) alguns antivírus podem exibir alertas como "Trojan", "Malware" ou "Aplicativo Potencialmente Indesejado (PUA)". Queremos tranquilizar todos: o nosso loader não é um vírus, trojan ou ameaça real. Essa detecção acontece porque o Loader realiza operações que são comuns também em ferramentas maliciosas, como: Comunicação com servidor remoto (para autenticação do token) Criação e leitura de arquivos locais Download e execução de arquivos compactados (cheats) Injeção de código na memória do jogo (para o funcionamento do cheat) Esses comportamentos são essenciais para que o Loader funcione, mas também são parecidos com os de alguns malwares — por isso alguns antivírus marcam o loader como suspeito por padrão, mesmo sem nenhuma ameaça real. Download/Scanner [Hidden Content]
    1 ponto
  15. 1 ponto
  16. 1 ponto
  17. 1 ponto
  18. ⚔️ 𝗦𝗼𝗯𝗿𝗲 𝗱𝗼 𝗦𝗲𝗿𝘃𝗶𝗱𝗼𝗿 🔸 Versão: Clássica 🔸 Experiência: Médio / Médio 🔸 Drop: Médio / Médio 🔸 Progressão dinâmica 🔸 Quests Mortais: Do Lv. 40 até o 351 🔸 Diversas mecânicas 🔥 𝗦𝗜𝗦𝗧𝗘𝗠𝗔𝗦 𝗘𝗫𝗖𝗟𝗨𝗦𝗜𝗩𝗢𝗦 O servidor foi construído para oferecer uma experiência diferenciada: 🔹 Codex 🔹 Mineração 🔹 Pescaria 🔹 Dungeon Guilda 🔹 Gemas Mágicas 🔹 Montarias Lendárias 🔹 Consumíveis Exclusivos 🔹 Arena para até 104 jogadores 🔹 Mercado Global 🔹 Painel Guilda 🔹 Loja de Guilda 🔹 Info do Jogador 🔹 World Bosses 🔹 LAN Reformulada 🔹 Guerra de Torres Reformulada 🔹 Guerra de Noatun Reformulada 🔹 Castelo de Loki 🔹 Sistema de Roleta 🔹 Passe de Batalha completo 🔹 VIP para qualidade de vida do jogador 🔹 Sistema de tradução em tempo real 🔹 Drop 100% refeito do zero 🏰 𝗖𝗢𝗠𝗨𝗡𝗜𝗗𝗔𝗗𝗘, 𝗚𝗨𝗜𝗟𝗗𝗔𝗦 𝗘 𝗟𝗢𝗡𝗚𝗔 𝗩𝗜𝗗𝗔 Poderíamos repetir o mesmo discurso de sempre... "Não somos um servidor de 3 meses" "Sem Pay2Win" "PvP balanceado" Mas você já cansou de ler isso. E a gente também. A diferença é simples: Aqui você não vai ouvir promessa, vai acontecer. Sem sistema quebrado Sem vantagem comprada Sem conteúdo que morre em semanas Aqui cada conquista é suada Cada guerra tem peso Cada jogador faz diferença Se você quer mais do mesmo, esse não é o seu servidor. Agora, se você quer um desafio de verdade... Bem vindo ao Mystic Destiny! Projetos & Oportunidades 🔸 Programa de Criadores de Conteúdo 🔸 Auxílio para Guildas 🔸 Vagas para Divulgadores Quer crescer junto com o servidor ? Aqui você tem espaço. 📷 𝗜𝗠𝗔𝗚𝗘𝗡𝗦 𝗗𝗢 𝗦𝗘𝗥𝗩𝗜𝗗𝗢𝗥 🔗 𝗘𝗡𝗧𝗥𝗘 𝗡𝗢𝗦 𝗖𝗔𝗡𝗔𝗜𝗦 𝗢𝗙𝗜𝗖𝗜𝗔𝗜𝗦 Site: [Hidden Content] Discord: [Hidden Content]
    1 ponto
  19. Trata-se de uma licença brinde, com validade até 11/09/2026 [Hidden Content] Para ativar é simples, pesquise no google e faça o download do DriverBooster v13.4 free através do site da IObit, siga a instrução na imagem abaixo: Irá abrir uma tela para você inserir a licença, após inserir clique em Ativar O Driver Booster é um programa desenvolvido pela IObit que serve para escanear, baixar e atualizar automaticamente os drivers desinstalados ou desatualizados do seu computador com Windows. Ele é muito utilizado para melhorar o desempenho do sistema e corrigir falhas de hardware, como problemas de áudio, vídeo ou conexão de rede. Se este conteúdo foi útil para você, retribua com a reação de curtida, não custa nada!
    1 ponto
  20. /* 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; /* Cor exata solicitada */ 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; /* Borda sutil levemente mais clara que o fundo */ } /* ---- Estilos do Banner ---- */ .gh-banner-wrapper { width: 100%; margin-bottom: 35px; 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; transition: transform 0.5s ease; } .gh-banner-wrapper:hover .gh-banner-img { transform: scale(1.01); } /* ---- Tipografia e Conteúdo ---- */ .gh-main-title { font-size: 2.8rem; font-weight: 900; text-transform: uppercase; margin-bottom: 0px; text-align: center; letter-spacing: -1px; color: #ffffff; } .gh-highlight-purple { color: #a855f7; text-shadow: 0 0 10px rgba(168, 85, 247, 0.4); } .gh-subtitle-topic { font-size: 1.3rem; color: #bbbbbb; text-align: center; margin-bottom: 40px; font-weight: 300; border-bottom: 1px solid #363535; } /* Caixa de Destaque Positiva (Ajustada para o fundo #272626) */ .gh-feature-box { background: #1e2920; /* Tom verde escuro fechado para contrastar com o grafite */ border: 1px solid rgba(34, 197, 94, 0.2); border-left: 5px solid #22c55e; padding: 25px; border-radius: 8px; margin-bottom: 25px; } .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: '✓'; margin-right: 10px; font-weight: 900; } .gh-text-content { font-size: 1.05rem; line-height: 1.6; color: #e0e0e0; margin-bottom: 20px; } /* ---- Botão estilo o "Desbloquear" do print ---- */ .gh-button-container { text-align: center; margin: 0px 30px 30px 30px; } .gh-cta-button { background: linear-gradient(to right, #8b5cf6, #6366f1); /* Roxo vibrante idêntico à imagem */ color: white !important; padding: 16px 45px; text-decoration: none; font-size: 1.15rem; font-weight: 700; border-radius: 8px; transition: all 0.2s ease; display: inline-block; text-transform: uppercase; border: none; cursor: pointer; box-shadow: 0 5px 20px rgba(139, 92, 246, 0.4); } .gh-cta-button:hover { transform: translateY(-2px); box-shadow: 0 8px 25px rgba(139, 92, 246, 0.6); filter: brightness(1.1); } .gh-footer-topic { text-align: center; font-size: 0.85rem; color: #888888; margin-top: 40px; } .gh-footer-topic a { color: #a855f7; text-decoration: none; } /* ---- Caixa Alerta (Ajustada para o fundo #272626) ---- */ .gh-virustotal-box { background: #2d1919; /* Tom avermelhado escuro para contrastar com o grafite */ border: 1px solid rgba(239, 68, 68, 0.2); border-left: 5px solid #ef4444; padding: 25px; margin: 25px 0; border-radius: 8px; } .gh-virustotal-title { font-size: 1.4rem; color: #f87171; font-weight: bold; margin-bottom: 12px; } canva pro LINK DE CONVITE CANVA PRO Manter este projeto ativo tem custos. Se você gostar da experiência e quiser mais estabilidade, suporte 24h e um perfil exclusivo para você, considere apoiar o projeto adquirindo uma assinatura a partir de R$ 1,90. Sua Conta Privada Acesso completo por 30 dias com perfil exclusivo e tela privada — apenas você assiste, sem limites ou interrupções. Seu histórico fica organizado e protegido, sem interferências. Entrega automática em segundos via PIX, com suporte garantido via chat. ❌ Conta Compartilhada Compartilhada com dezenas de pessoas, sem tela privada — outros usuários veem seu histórico e o que você assiste. Limite de telas excedido frequentemente, causando interrupções. Senha alterada periodicamente, tornando o acesso temporário e instável. Perfis bagunçados e histórico misturado, gerando recomendações erradas baseadas no consumo de terceiros. Perfis genéricos, sem personalização de nome ou foto. Sem suporte ou garantia em caso de problemas. 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
  21. ⚔️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é 120/UP 120 - 120+ 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
  22. [Hidden Content]
    1 ponto
  23. 🚀 STATUS DO SERVER ( ON! ) 🟢 PING LISO: 4ms (Radmin) ⚔️- 🔥👑[Chase Heroes]👑🔥 -⚔️ Tokens ❤️ Token: INICIANTEHEROES Token: HARKYON-KIT-FREE Token: SUPORTE-INICIANTE Token: KitPergaMistico 🔹 OBRIGATORIO – ENTRAR NA REDE DO RADMIN VPN Ja vem baixado no instalador! No Radmin VPN, clique em: Rede → Ingressar em uma rede existente Escolha apenas uma das redes abaixo: Nome da rede: grandchaselospikas Senha: 123456789 Nome da rede: gclospikas Senha: 123456789 Nome da rede: grand.pika Senha: 123456789 Clique em Entrar Tutorial completo a baixo. do download Disponível: Windows 7, Windows 10 e WINDOWS 11 Requisitos: minimo 4gb ram e win 7 Vai c/ Pacote Essenciais: Net 10, direct x e Microsoft C++ e Driver Booster 13 + Crack e Radmin com - Instalador Facilitado. 😤 Cansado de farmar parecendo um mendigo? 😾 Ou jogar com pet inútil que não dá dano nenhum? 💸 Cansado de colocar dinheiro na KOG e receber zero consideração? 🌎 Nem valorizam nossa moeda — mesmo sendo a maior parte do servidor. 🔥 Foi por isso que este servidor nasceu. Feito para quem vive de salário mínimo. ❤️ Para quem ama Grand Chase, mas cansou de pagar caro por promessas vazias, 🚫 Aqui não tem investidor. Não tem empresa por trás, muita coisa ainda sai do meu bolso. ⭐ O VIP existe por um único motivo: Apena Manter o Servidor online e trazer Atualização. ❌ Não é sobre lucro. ✅ É sobre respeito ao jogador e a Historia de Grand Chase, Quem jogou Dede o Beta sabe oq eu estou falando, 💭 Se isso fez sentido pra você… talvez valha a pena conhecer mais. INVENTARIO e PET COMPARTILHADO A COMPRA DE CASH È AUTOMATICA DIRETO NO LAUNCHER QRCODE PIX Pagou? Cash caiu na conta de forma Automatica <3 Novos Pets Free To Play Coleção de Herois BUFFADA! Free tbm consegue jogar tranquilo COMO BAIXAR? 📌 Discord: [Hidden Content] 📌 Link do Blog: [Hidden Content] 📌 Link do youtube: [Hidden Content] 🛡️ VAMOS REERGUER ESSA LENDA JUNTOS! 🛡️
    1 ponto
  24. 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
  25. 1 ponto
  26. Sem muitas delongas, segue o repositório abaixo do cliente do wyd descompilado. [hide][Hidden Content]] Este projeto é uma descompilação e o mesmo pode e contém problemas. Sinta-se a vontade para reportá-los e abrir um pull request para o projeto (esperamos que você faça isso). Autores: Eric Santos (SKEWED) Wed Souza (FREEDOM) Kevin Kouketsu (shepher)
    1 ponto
  27. Fala rapaziada, beleza? Tenho visto muita gente tomando banimento por HWID no CrossFire e até no Valorant, então resolvi trazer um Spoofer funcional e gratuito pra vocês. 📌 O que é um Spoofer? Um spoofer é um programa que altera e mascara as informações do seu hardware (HWID, Disco, BIOS, GUID, etc.) para que os anti-cheats não consigam identificar sua máquina como “banida”. Ou seja, mesmo que você leve HWID ban, com o spoofer você consegue voltar a jogar sem precisar formatar ou trocar peças do PC. ⚙️ Funcionalidades do Spoofer ✔️ Spoof HWID ✔️ Spoof Discos ✔️ Spoof GUID ✔️ Spoof MAC ID ✔️ Spoof Hardware Information ✔️ Spoof PC Name ✔️ Spoof SMBIOS ✔️ Spoof System SKU ✔️ Spoof System Time ✔️ Spoof BIOS Information ✔️ Spoof Registry Settings ✔️ Delete Cache do Valorant ✔️ Check Registry Paths ✔️ Get System Informations 🖼️ Print do Spoofer Segue a interface para vocês verem como é simples e direto: 📋 Como usar Abra o spoofer como Administrador. Pressione 1 para SPOOF. Ele vai aplicar as mudanças automaticamente. Download:[Hidden Content] Scan: Clique Aqui
    1 ponto
  28. Sou seu fã, carneiro . Bom ainda ver suas artes por aqui !
    1 ponto
  29. Galera, alguém sabe como descriptografar esses arquivos .rez, preciso descriptografar eles para poder extrair, se alguém poder me ajudar, se possível deixar também o método ou ferramenta usada para descriptografar seria muito bom, pois estou trabalhando em uma versão offline do crossfire mas para isso vou precisar mexer nesses arquivos que esta dentro dessas rez, mas infelizmente não consigo extrair eles com os programas tradicionais já que eles tem criptografia. DOWNLOAD
    1 ponto
  30. Trabalho fino. Gostaria de uma com a imagem da minha foto de perfil. Será que é pedir muito?
    1 ponto
  31. Um salve pra geral ! Bom, eu comprei essa base (das maos do ~rooh) tem um tempo e estou subindo ela no github para compartilhar com a comunidade, subirei tambem com algumas mudanças que fiz. A base é relativamente boa, e como estou aprendeendo a bricar na parte de programação tem me gerado bons desafios e aprendizados. Infelizmente, estou upando do jeito que peguei direto com quem me vendeu, sem algumas alterações de codigos que ja fiz, mas assim que conseguir editarei aqui colocando isso no github e com algumas alterações. # Fixs que fiz ! - - A interação em grande parte do cliente com a db usa atoi e as vezes retornava null. ! - - Ajustar a validação de janelas que tambem retornava null. ! - - Ajustar e validar as rows de algumas consultas na db( Não me lembro ao certo onde era o problema) tambem retorna null. Tem algumas coisas a mais que fiz, mas essas foram essenciais para que o server não "crashe" e derrube o cliente e/ou a TM. Espero que seja de grande valia para a comunidade e aprendizado de outros. LINK: [Hidden Content] SCAN RAR : [Hidden Content] SCAN .SLN CLIENT: [Hidden Content] SCAN .sln Server: [Hidden Content] Creditos: BnkBrum, SeiTbNao, Guga, BabyLoves, Arkanun1000 [W2PP] VKlafke, hiccupsman, andresantacruz, ErickAlcan, kevinkouketsu
    1 ponto
  32. E ai pessoal, com vai? Então, peguei esse projeto postado aqui e dei uma atualizada, logo de cara digo que não sou um exímio programador em C#, mas sei o básico pois já mexi com XNA uns anos atrás. Usei o gepeto (vulgo chatGPT) para auxiliar no projeto, pois é um dos propósitos dessa ferramenta. Entao bora lá pro projeto? :) Peço que por favor leiam o post todo antes de postar alguma duvida, no finalzinho farei um mini faq com possíveis duvidas \o/ ⟣──────〈 CRÉDITOS 〉──────⟢ Ja quero começar com os créditos já que o projeto não é meu. Peguei ele nesse topico postado pelo @ MUITOLOCOK99 e la ele diz ser do skewed (Eric) Tentei por o @ dele mas tem alguns skewed, entao deixarei assim (se alguem souber o link do perfil dele aqui pode me mandar por gentileza. Edit.: me informaram que o arroba do Eric é esse @ skewed2 Topico onde peguei o projeto ⟣──────〈 O QUE É O PROJETO? 〉──────⟢ Ele carrega seus arquivos .dat e .trn do WYD dentro do Unity3D para fazer modificações como adicionar objetos ja existentes, mudar de posição, mudar texturas etc... Toda a logica dele está no script feito em C# (NewBehaviourScript1.cs), ele carrega os arquivos .dat e .trn localizados na raiz do projeto Unity, então, não adianta por varios arquivos la dentro, somente 2 de cada vez (1 de cada extensão), edite, salve e veja como ficou no WYD. Um resumo do scritp C#: Usando declarações: Importa namespaces necessários para o script. Declaração de classe: Declara a classe NewBehaviourScript1, que herda de MonoBehaviour. Variáveis estáticas públicas: Define variáveis estáticas públicas para armazenar informações sobre o nome do arquivo, estrutura do terreno (TrnStruct.Tile), nome do arquivo de terreno e listas de objetos e texturas no jogo. Método Start(): Chamado uma vez no início. Inicializa as variáveis e lê arquivos necessários. Região do arquivo de objeto: Define uma região para leitura do arquivo de objeto. Leitura do arquivo MeshList: Lê o arquivo MeshList.txt e preenche a lista de objetos (MeshList) com informações sobre cada objeto. Leitura do arquivo .dat: Lê o primeiro arquivo .dat encontrado no diretório atual e cria objetos com base nas informações lidas. Região do terreno: Define uma região para manipulação do terreno. Leitura do arquivo de textura de terreno: Lê o arquivo EnvTextureList3.txt e preenche a lista de texturas (TextureList) com informações sobre cada textura. Leitura do arquivo .trn: Lê o arquivo .trn encontrado no diretório atual e gera o terreno do jogo com base nas informações lidas. Método Update(): Chamado a cada quadro. Lida com a lógica de salvar arquivos quando as teclas F5 ou F6 são pressionadas. Salvando .dat: Ao pressionar F5, o script tenta salvar as informações do jogo em um novo arquivo .dat. Salvando .trn: Ao pressionar F6, o script tenta salvar as informações do terreno em um novo arquivo .trn. Esse script realiza a leitura de arquivos de dados, criação de objetos e terrenos no jogo e permite que o jogador salve as alterações feitas no mundo do jogo. ⟣──────〈 ABRINDO O PROJETO 〉──────⟢ A versão usada do Unity3D é a 2019.3.7f1 (no final da postagem tem o link do torrent dele, pois to usando uma versao full crackeado pois quero fazer umas outras coisas que a versão free nao me deixa srrsrs) Abra o HUB e clique em ADD Nota: Uma vez ja aberto, so abrir o hub e clicar em cima do Project Name Seleciona e a pasta Ele ira carregar os arquivos e pronto Os seus arquivos .dat e .trn devem ficar nessa pasta do seu projeto Nota: Ele SEMPRE irá carregar o PRIMEIRO .dat e .trn que encontrar na pasta, então por exemplo, ao salvar ele irá gerar um "new_Field1616.dat", se voce nao apagar ou mover o "Field1616.dat", se clicar no play no Unity ele irá carregar novamente o "Field1616.dat" sabe pq ? A letra "F" vem primeiro que a letra "N". ⟣──────〈 EDITANDO SEU MAPA .DAT 〉──────⟢ Fiz um video para melhor ilustrar, aproveitem Recomendação: FAÇAM alterações pequenas e aos poucos, e SALVEM, pra caso dê erro, nao perder todo o progresso, então, façam o que desejam fazer aos poucos, salva, dando certo, faça uma copia e modifiquem ela, pra, caso de errado, nao perder aquele .dat ⟣──────〈 EDITANDO SEU TERRENO .TRN 〉──────⟢ Mesma coisa para o .trn Mas vejam o video todo, pois nessa parte tem uma peculiaridade sobre o "tile" e o "mtile" ⟣──────〈 BONUS 〉──────⟢ Como andar pelo mapa :) ⟣──────〈 FAQ 〉──────⟢ P: Esse projeto e seu? R: Nao, com dito al em cima, so peguei ele e deu uma atualizada para todos usarem P: Deu erro no meu, o que faço? R: Assim nao da pra saber que erro é, sem print ou qualquer informação, então, antes de falar q deu erro, leia todo o tutorial e veja o que fez de diferente, e se mesmo assim deu erro, seja mais claro dizendo qual e aonde e com print pra facilitar P: Consigo baixar objetos 3d e inserir no mapa? R: Nao, no estado atual do projeto nao, a menos que vc saiba como os obj funciona e tals para ser inserido, que pretendo com o tempo aprender (criar novos objetos) P: Consigo inserir NOVAS texturas? R: Ate dá, mas nao pude testar pois não tenho aquelas ferramentas de texturas pro WYD, pra abrir no photoshop, tratar e tals P: Consigo usar isso numa outra versão do Unity3D? R: Nao sei, eu usei a citado acima (download abaixo), tente ai e me diga depois >.< ⟣──────〈 CONSIDERAÇÕES FINAIS 〉──────⟢ Dito isso, se quaiqer problemas der, e eu nao souber, vou dizer, pois como dito acima, nao sei tudo, então podemos aprender todos nós juntos, mas com esse basico ai já da pra fazer muita coisa pro seu WYD. Obrigado! ⟣──────〈 DOWNLOAD 〉──────⟢ [Hidden Content]
    1 ponto
  33. @ Grego Comprei uma conta disney em [Hidden Content] por conta deste post, e agora fica pedindo o código para confirmar a tela ou se estou fora de casa, já tem uma semana suporte n responde, nem email, nem whatsapp, usei o serviço apenas uma vez... Não recomendo. [edit] Comentei no discord da wc falando do problema, e me fizeram o reembolso.
    1 ponto
  34. 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!
    1 ponto
  35. ATENÇÃO! O CHEAT FICARÁ FREE ATÉ 01/05/2026,APROVEITE! Fala seus arr0mbados, trago para a comunidade um WALLHACK INDETECTÁVEL, já faz ANOS que utilizo e nunca desatualizou, joguem com responsabilidade! Sem enrolação, vamos direto ao ponto! 1 - EXECUTE O SEU POINT BLANK E LOGUE NA SUA CONTA; 2 - ATIVE O MODO JANELA (PARA O MELHOR FUNCIONAMENTO DO CHEAT, EVITANDO TRAVAMENTOS); 3 - EXECUTE O ARQUIVO "WALL PREMIUM - LOADER PB" COMO ADMINISTRADOR E FECHE A JANELA DO NAVEGADOR QUE ABRIRÁ; 4 - VOLTE PARA O POINT BLANK, O WALLHACK JÁ ESTARÁ ATIVO (OBS: NÃO EXISTE A OPÇÃO PARA ATIVAR/DESATIVAR). WALLHACK PREMIUM VITALÍCIO APENAS R$25,00 >> CLIQUE AQUI PARA COMPRAR! <<
    1 ponto
  36. LINK ATUALIZADO 02/04/2026: [Hidden Content] PATROCINADORA streamingsbarato.com Diversos Serviços streamings com 70% OFF
    1 ponto
  37. no WYDConverter eu fiz uma área de tutorial e um deles é a criação de novos itens/mobs, veja se te ajuda. copia e crie um .md pode ser no próprio VS que vai ficar bem mais legível. # Guia: Criar Mobs, Objetos e Meshes Novos para o WYD > Passo a passo completo para criar conteudo 3D novo e integrar no cliente WYD. > Cobre mobs (MSH skinned), objetos estaticos (MSA), modelagem, exportacao, > conversao e registro nos arquivos do cliente. --- ## 1. Sistema de Arquivos do WYD ### 1.1 Arquivos 3D por mob | Arquivo | Exemplo | Conteudo | Formato | |---|---|---|---| | `.msh` | `nm010101.msh` | Mesh skinned (vertices, indices, bones, skinning) | Binario 32B header | | `.bon` | `nm01.bon` | Hierarquia do esqueleto (pares parentID/boneID) | Binario 8B por bone | | `.ani` | `nm010101.ani` | Animacao (matrizes 4x4 locais por bone por frame) | Binario 8B header + matrices | | `.wys` | `nm010101.wys` | Textura DXT1 comprimida | Binario WYS | | `.wyt` | `nm010101.wyt` | Textura BGRA raw (formato antigo) | Binario WYT | ### 1.2 Convencao de nomes ``` {prefixo}{PPVV}.ext prefixo = skeleton type (4 chars): nm01, ch01, ch02, tr09, hs01... PP = parte/slot (2 digitos): 01=corpo, 02=helm, 03=armor... VV = visual/variante (2 digitos): 01=base, 02=alt... ``` **Regra critica:** os primeiros 4 caracteres definem o skeleton. Todos os arquivos com mesmo prefixo compartilham o mesmo `.bon` e os mesmos `.ani`. Exemplos: - `nm010101.msh`, `nm010102.msh` → usam `nm01.bon` - `ch010597.msh` → usa `ch01.bon`, slot 05 (luva), visual 97 ### 1.3 Arquivos de registro do cliente Estes arquivos precisam ser editados para o cliente reconhecer mobs novos. | Arquivo | Path | Funcao | Editar quando | |---|---|---|---| | `BoneAni4.txt` | `Mesh\BoneAni4.txt` | Registra skeletons: index, num ANIs, num partes, prefixo | Skeleton NOVO | | `ValidIndex.bin` | `Mesh\ValidIndex.bin` | Mapeia quais ANIs existem para cada skeleton | Skeleton NOVO | | `MeshTextureList.bin` | `Mesh\MeshTextureList.bin` | Tabela de texturas de meshes (nome → index) | Textura NOVA | | `MeshList.txt` | `Mesh\MeshList.txt` | Registra objetos estaticos MSA: index → path | MSA NOVO | | `AniSound4.txt` | `AniSound4.txt` | Tabela de animacoes/velocidades/sons por skeleton type | Skeleton NOVO | | `ItemList.bin` | Server-side | Define nClass do mob → mapeia para skeleton via `BASE_DefineSkinMeshType` | Mob NOVO | | `Basedef.cpp` | Compilado no .exe | `BASE_DefineSkinMeshType(nClass)` → nBoneAniIndex (hardcoded switch) | Skeleton NOVO (recompilacao) | **Para mob com skeleton EXISTENTE:** nenhum destes arquivos precisa ser editado. Basta colocar o MSH + WYS na pasta `Mesh\` com o prefixo correto. **Para mob com skeleton NOVO:** todos os arquivos acima precisam ser editados. --- ## 2. Formatos Binarios Detalhados ### 2.1 MSH (Mesh Skinned) ``` Header (32 bytes): [00] DWORD dwParentID — ID do bone pai (0xFFFFFFFF = root) [04] DWORD dwMeshID — ID do bone deste mesh [08] DWORD dwFVF — Flexible Vertex Format (D3D9) [0C] DWORD sizeVertex — Bytes por vertice [10] DWORD numFaceInfluence — Numero de face influences [14] DWORD numPalette — Numero de bones na palette [18] DWORD vertexCount — Numero de vertices [1C] DWORD faceCount — Numero de INDICES (nao faces!) Bones (se numPalette > 0): XMFLOAT4X4[numPalette] — Offset matrices (64 bytes cada) DWORD[numPalette] — Bone IDs (4 bytes cada) Vertices: Layout depende do FVF. Tipico para skinned: Position XYZ (12B) + BlendWeights (4-12B) + PackedBoneIndices (4B) + Normal (12B) + UV (8B) Indices: uint16[faceCount] — Index buffer 16-bit ``` ### 2.2 BON (Bone Hierarchy) ``` Arquivo = array de pares (8 bytes cada): [parentID: DWORD] [boneID: DWORD] parentID = 0xFFFFFFFF ou 0 → root (sem pai) parentID = N → bone filho de bone N Tamanho total = numBones * 8 bytes ``` Exemplo para esqueleto com 5 bones: ``` [0xFFFFFFFF] [0] — Bone 0 e root [0] [1] — Bone 1 filho de Bone 0 [0] [2] — Bone 2 filho de Bone 0 [1] [3] — Bone 3 filho de Bone 1 [1] [4] — Bone 4 filho de Bone 1 ``` ### 2.3 ANI (Animation) ``` Header (8 bytes): [00] DWORD numTicks — Numero de keyframes (frames de animacao) [04] DWORD numBones — Numero de bones no skeleton Dados: Para cada tick (0..numTicks-1): XMFLOAT4X4[numBones] — Matriz LOCAL de cada bone neste frame (64 bytes cada) Tamanho total = 8 + (numTicks * numBones * 64) bytes ``` As matrizes sao LOCAL (relativas ao pai na hierarquia BON). O cliente propaga pela hierarquia para obter as combined (world) matrices: `combined[bone] = local[bone] * combined[parent]` ### 2.4 BoneAni4.txt ``` Formato texto, uma linha por skeleton: {index} {numAniTypes} {numParts} {szAniName} Campos: index — Indice no array m_BoneAnimationList (0-99) numAniTypes — Quantos ANIs diferentes este skeleton tem numParts — Quantos slots de equipamento (1 para mobs simples, 7 para players) szAniName — Prefixo completo com path (ex: mesh\nm01, mesh\ch01) ``` Exemplo: ``` 0 38 7 mesh\ch01 <- personagem masculino, 38 animacoes, 7 partes 1 37 7 mesh\ch02 <- personagem feminino 2 1 1 mesh\hs01 <- cavalo, 1 animacao, 1 parte 3 2 1 mesh\nm01 <- mob tipo 1, 2 animacoes, 1 parte ... ``` ### 2.5 ValidIndex.bin ``` Array binario fixo: stValidAniList[100][186] stValidAniList = struct { int nI; } — 4 bytes Tamanho total = 100 * 186 * 4 = 74.400 bytes Indexacao: m_stValidAniList[skeletonIndex][aniSlot].nI = aniFileIndex O cliente usa nI+1 para montar o nome do ANI: sprintf(szTemp, "%s%04d.ani", szAniName, m_stValidAniList[nCount][nFI].nI + 1) Exemplo: m_stValidAniList[3][0].nI = 0 → mesh\nm010001.ani (idle) m_stValidAniList[3][1].nI = 1 → mesh\nm010002.ani (walk) m_stValidAniList[3][2].nI = 100 → mesh\nm010101.ani (arma 01, idle) ``` Codificacao dos 4 digitos do ANI: ``` XXYY onde: XX = tipo de arma (weapon): nArrayIndex / 100 - 1 YY = tipo de acao (motion): nArrayIndex % 100 - 1 Exemplos (nI+1 → arquivo): 0001 → arma 0, acao 0 (idle) 0002 → arma 0, acao 1 (walk) 0003 → arma 0, acao 2 (run) 0004 → arma 0, acao 3 (attack1) 0101 → arma 1, acao 0 (idle com espada) ``` ### 2.6 MeshList.txt ``` Formato texto, uma linha por objeto estatico: {index} {path_relativo} Campos: index — Indice no array m_stCommonMesh (0-3047) path_relativo — Caminho do MSA relativo ao diretorio do cliente ``` Exemplo: ``` 0 mesh\cas001.msa 1 mesh\cas002.msa 50 mesh\tree01.msa 100 mesh\sword01.msa ``` O engine chama `GetCommonMesh(dwObjType)` onde dwObjType = index. Mapas (.trn) referenciam objetos pelo dwObjType. ### 2.7 MeshTextureList.bin ``` Array binario fixo de stTextureListInfo (264 bytes cada): char szFileName[255] — path relativo da textura (ex: "mesh\nm010101.wys") char cAlpha — tipo de alpha: 'N'=none, 'A'=alpha, 'a'=1bit, 'C'=compressed DWORD dwLastUsedTime — runtime (ignorar, preencher com 0) DWORD dwShowTime — runtime (ignorar, preencher com 0) Tamanho por versao: TMProject classico: 2048 slots = 540.672 bytes WYD Global: 6096 slots = 1.609.344 bytes ``` O cliente busca textura por nome (`GetModelTextureIndex`): percorre TODOS os slots comparando `szFileName` com o nome calculado pelo `TMSkinMesh`. Se nao encontra, o mesh **NAO CARREGA** (retorna erro). **Para adicionar textura nova:** 1. Encontrar um slot vazio (szFileName[0] == '\0') 2. Preencher szFileName com path relativo (ex: `mesh\xx010101.wys`) 3. Preencher cAlpha com 'N' (sem alpha) ou 'A' (com alpha) 4. dwLastUsedTime e dwShowTime = 0 ### 2.8 AniSound4.txt ``` Formato texto. Uma secao por skeleton type (MAX_ANI_TYPE = 60 skeletons). Cada secao tem 56 linhas (MAX_ANI_MOTION), uma por tipo de acao. Para skeleton types 0 e 1 (players): {nomeAcao} {ani0} {speed0} {ani1} {speed1} {ani2} {speed2} {ani3} {speed3} {sound} Para skeleton types 2+ (mobs/NPCs): {nomeAcao} {aniIndex} {speed} {sound} Campos: nomeAcao — label (ex: "IDLE", "WALK", "ATK1") — ignorado pelo parser aniIndex — indice na lista de animacoes do skeleton (posicao no array concatenado) speed — velocidade da animacao (ticks por frame) sound — indice do som a tocar ``` Controla qual animacao tocar para cada acao do mob (idle, walk, attack, death, etc.) e a velocidade de reproducao. Se o skeleton novo for um mob simples, basta preencher as acoes basicas (idle=0, walk=1, attack=2, death=3). ### 2.9 Fluxo de resolucao no cliente ``` Servidor envia pacote com mob → nClass (tipo do mob) ↓ BASE_DefineSkinMeshType(nClass) → nBoneAniIndex (switch hardcoded em Basedef.cpp) ↓ BoneAni4.txt[nBoneAniIndex] → szAniName (ex: "mesh\nm01"), numParts, numAniTypes ↓ Skeleton: szAniName + ".bon" → mesh\nm01.bon Mesh: szAniName + PPVV + ".msh" → mesh\nm010101.msh Textura: szAniName + PPVV + ".wys" → mesh\nm010101.wys → GetModelTextureIndex(texName) → busca em MeshTextureList.bin Animacao: ValidIndex.bin[nBoneAniIndex][slot] → nI+1 → mesh\nm010001.ani → AniSound4.txt[nBoneAniIndex] → mapeia acao → indice de animacao ``` ### 2.10 STRUCT_ITEMLIST (ItemList.bin) ``` Struct STRUCT_ITEMLIST — 120 bytes por item: char Name[64] — Nome do item short nIndexMesh — Indice visual do mesh short nIndexTexture — Indice visual da textura short nIndexVisualEffect — Efeito visual (brilho, aura) short nReqLvl — Nivel minimo short nReqStr / nReqInt / — Requisitos de atributo nReqDex / nReqCon STRUCT_STATICEFFECT stEffect[12] — 12 efeitos estaticos (4 bytes cada) int nPrice — Preco do item short nUnique — Tipo de raridade short nPos — Bitmask de slots onde pode equipar short nExtra — Dados extras short nGrade — Grau/rank do item ``` **nIndexMesh e nIndexTexture** sao os campos que conectam o item ao mesh visual. O significado muda COMPLETAMENTE dependendo do tipo de item: **ARMAS E ESCUDOS (slots 6 e 7 — MSA):** nIndexMesh = indice DIRETO no MeshList.txt O cliente chama: GetCommonMesh(nIndexMesh) → LoadMsa(MeshList[nIndexMesh]) Nenhuma formula intermediaria. Se a arma esta no index 500 do MeshList, nIndexMesh = 500. nIndexTexture = preenche LOOK_INFO.SkinX mas NAO e usado para renderizar a arma 3D. A textura da arma vem do nome embeddado no MSA → MeshTextureList. Na pratica, para armas, nIndexTexture = 0. **EQUIPAMENTOS SKINNED (slots 0-5 — MSH):** nIndexMesh = variante visual usada na FORMULA do nome do MSH: sprintf("%s%02d%02d.msh", szAniName, slot+1, nIndexMesh + offset + 1) NAO e um indice de MeshList. E um numero de variante (0, 1, 2...). Exemplo: nIndexMesh=5 no slot coat → ch010306.msh (prefixo + slot03 + visual06) nIndexTexture = modificador de textura na FORMULA do nome da WYS: sprintf("%s%02d%02d.wys", szAniName, slot+1, (nIndexTexture & 0xFFF) + nIndexMesh + offset + 1) Permite usar texturas diferentes para o mesmo mesh visual. Exemplo: nIndexMesh=5, nIndexTexture=2 + 1 → ch010308.wys **MONTARIAS (slot 14 — MSH skinned, skeleton proprio):** O item de montaria fica em Equip[14]. sIndex do item → transformado (sIndex - 2045, com overrides hardcoded) → sIndex final usado como indice no g_pItemList: nIndexMesh = g_pItemList[sIndex].nIndexMesh → Mesh0 (variante visual) nIndexTexture = g_pItemList[sIndex].nIndexTexture → Skin0 (variante textura) nClass (efeito 18) → BASE_DefineSkinMeshType(nClass) → skeleton da montaria Funciona igual a equipamentos skinned: nIndexMesh e variante visual, NAO indice do MeshList. Vem do ItemList.bin. **nPos** — bitmask de slots de equipamento: ``` Bit 0 (0x01) = Slot 0: Face/Corpo Bit 1 (0x02) = Slot 1: Helm (elmo) Bit 2 (0x04) = Slot 2: Coat (armadura) Bit 3 (0x08) = Slot 3: Pants (calca) Bit 4 (0x10) = Slot 4: Gloves (luva) Bit 5 (0x20) = Slot 5: Boots (bota) Bit 6 (0x40) = Slot 6: Left (mao esq/escudo) Bit 7 (0x80) = Slot 7: Right (mao dir/arma) ``` **nClass (efeito 18)** — tipo de classe que determina o skeleton: Usado por `BASE_DefineSkinMeshType(nClass)` para mobs e montarias. Para players: nClass 1/4 = masculino (ch01), 2/8 = feminino (ch02). Para mobs: nClass 16-74 mapeiam para indices 2-57 no BoneAni4.txt. ### 2.11 Fluxo visual de armas ``` Item no Equip[7] (mao direita) ou Equip[6] (mao esquerda) ↓ g_pItemList[sIndex].nIndexMesh → nIndexMesh ↓ GetCommonMesh(nIndexMesh) ← DIRETO, sem formula intermediaria! ↓ MeshList.txt[nIndexMesh] → path do MSA (ex: mesh\wp001.msa) ↓ TMMesh::LoadMsa(path) → carrega MSA ↓ Textura: nome embeddado no MSA → GetModelTextureIndex → MeshTextureList.bin ``` ### 2.12 Fluxo visual de equipamentos (armaduras, helmos, etc.) ``` Item no Equip[0-5] (face, helm, coat, pants, gloves, boots) ↓ g_pItemList[sIndex].nIndexMesh → LOOK_INFO.MeshX (variante) g_pItemList[sIndex].nIndexTexture → LOOK_INFO.SkinX (textura mod) ↓ TMSkinMesh monta nome do arquivo: Mesh: sprintf("%s%02d%02d.msh", szAniName, slot+1, MeshX + offset + 1) Tex: sprintf("%s%02d%02d.wys", szAniName, slot+1, (SkinX & 0xFFF) + MeshX + offset + 1) ↓ Exemplo: ch01, slot 3 (coat), nIndexMesh=5, nIndexTexture=0 Mesh: ch010306.msh Tex: ch010306.wys ``` --- ## 3. Restricoes Tecnicas do Cliente ### 3.1 MSH (Skinned Meshes) | Item | Limite | Origem | |---|---|---| | Bones por mesh | 40 max | `safePalette = min(n, 40)` em CMesh | | Influences por vertice | 4 max | FVF XYZB1-B4 + LASTBETA_UBYTE4 | | Vertices por mesh | 65535 max | Indices 16-bit no MSH | | Textura por mesh | 1 | MSH nao tem attribute ranges | | Textura dimensao | Potencia de 2 | DXT1 | | Coordenadas | Z-Up | Nativo WYD | | UV | V=0 no topo (D3D) | Nativo WYD e 3ds Max | | Skeletons registrados | 100 max | MAX_BONE_ANIMATION_LIST | | ANIs por skeleton | 186 max | Array fixo ValidAniList | | Bones por skeleton | Sem limite hard | Limitado pela RAM | ### 3.2 MSA (Static Meshes) | Item | Limite | Origem | |---|---|---| | Vertices por mesh | 65535 max | Indices 16-bit | | Materiais por mesh | 32 max | dwAttCount no header | | Texturas por material | 1 | Uma WYS por attribute range | | Textura dimensao | Potencia de 2 | DXT1 | | Coordenadas | Z-Up | Nativo WYD | | UV | V=0 no topo (D3D) | Nativo WYD | | Objetos em MeshList | 3048 max | MAX_COMMON_MESH | | FVF suportados | 274 (normal) ou 322 (diffuse) | Engine hardcoded | --- ## 4. Workflow: Novo Mob com Skeleton Existente **Cenario:** criar um mob novo que reutiliza o esqueleto e animacoes de um mob existente. Este e o caminho mais rapido e seguro. ### Passo 1 — Exportar mob de referencia No WYDConverter, abrir o MSH do mob que quer reusar (ex: `nm010101.msh`). Exportar como FBX (target 3ds Max). O FBX contem: - Geometria do mob original - Esqueleto completo com bone IDs - Animacao do ANI companion - Textura companion como PNG ### Passo 2 — Importar no 3ds Max Importar o FBX. O mesh aparece: - Z-Up (nativo do Max e do WYD — sem conversao) - Escala amplificada (conversor aplica x100 para edicao confortavel) - Bones com nomes `Bone_000`, `Bone_001`, etc. **NAO mover, rotacionar ou escalar o Armature.** A posicao dos bones e o bind pose que as animacoes existentes esperam. ### Passo 3 — Modelar - Deletar a geometria do mob original (so poligonos, NAO os bones) - Modelar o novo mob ao redor do esqueleto existente - Manter o mesh alinhado com os bones na posicao de bind Regras: - Apenas triangulos (sem quads/n-gons) - Max 65535 vertices - 1 material/textura por mesh - Polycount razoavel (~500-3000 tris para mobs) ### Passo 4 — Skinning - Aplicar Skin modifier no mesh - Adicionar os bones do esqueleto importado - Pintar weights: max 4 influences por vertice - Weights devem somar 1.0 - Todo vertice deve ter pelo menos 1 bone com peso > 0 ### Passo 5 — UV e Textura - UV Unwrap no Max (UV convention D3D: V=0 topo — default do Max) - Textura PNG/TGA em potencia de 2 (256x256 ou 512x512) - O WYDConverter converte para WYS automaticamente ### Passo 6 — Exportar FBX File → Export → FBX: - Formato: FBX Binary - Eixos: Z-Up (default Max) - Smoothing Groups: ON - Skin/Deformers: ON - Embed Media: OFF ### Passo 7 — Converter No WYDConverter: 1. Abrir o FBX exportado 2. Converter para MSH 3. Nomear: `nm010199.msh` (mesmo prefixo, numero livre) 4. Converter textura PNG → WYS: `nm010199.wys` 5. Copiar para `Mesh\` do cliente ### Passo 8 — Testar O cliente carrega automaticamente: - `nm010199.msh` — mesh novo - `nm01.bon` — hierarquia (ja existe) - `nm010001.ani` etc — animacoes (ja existem) - `nm010199.wys` — textura nova Nenhuma edicao de BoneAni4.txt ou ValidIndex.bin necessaria (mesmo skeleton). --- ## 5. Workflow: Mob com Skeleton e Animacoes Novas **Cenario:** criar um mob completamente novo com esqueleto e animacoes proprias. Requer ferramentas adicionais e edicao de arquivos de registro. ### Passo 1 — Modelar e Riggar no 3ds Max - Modelar o mob - Criar esqueleto com bones (usar nomes `Bone_000`, `Bone_001`, etc.) - Bone 0 deve ser o root - Max 40 bones - Skin modifier com max 4 influences ### Passo 2 — Criar Animacoes No 3ds Max, criar as animacoes necessarias: - Idle (parado) - Walk (andando) - Run (correndo) - Attack (atacando) - Death (morrendo) - etc. Cada animacao sera exportada como um FBX separado (ou ranges no mesmo FBX). ### Passo 3 — Exportar Exportar cada animacao como arquivo separado com mesh + skeleton + animation. Formatos suportados: - **FBX Binary** (3ds Max, Maya, Blender via plugin) - **GLB/GLTF** (Blender nativo, qualquer DCC moderno) ### Passo 4 — Converter Usar o WYDConverter para gerar: | De | Para | Ferramenta | Status | |---|---|---|---| | FBX mesh | `.msh` | MSHEncoder (FBX→MSH) | ✅ Funciona | | GLB/GLTF mesh | `.msh` | MSHEncoder (GLTF→MSH) | ✅ Funciona | | FBX skeleton | `.bon` | **BONEncoder (FBX)** | ❌ NAO EXISTE | | GLB/GLTF skeleton | `.bon` | **BONEncoder (GLTF)** | ❌ NAO EXISTE | | FBX animation | `.ani` | **ANIEncoder (FBX)** | ❌ NAO EXISTE | | GLB/GLTF animation | `.ani` | **ANIEncoder (GLTF)** | ❌ NAO EXISTE | | PNG textura | `.wys` | WYSEncoder | ✅ Funciona | ### Passo 5 — Registrar no cliente Para um skeleton completamente novo, TODOS estes arquivos precisam ser editados: #### 5.1 Editar BoneAni4.txt Adicionar uma linha para o novo skeleton: ``` {novoIndex} {numAnis} {numParts} mesh\{prefixo} ``` Exemplo: adicionar mob `xx01` com 3 animacoes, 1 parte: ``` 50 3 1 mesh\xx01 ``` O index (50) deve ser um slot livre no array (0-99). #### 5.2 Editar ValidIndex.bin Adicionar as entradas para mapear os ANIs do novo skeleton: ``` m_stValidAniList[50][0].nI = 0 → mesh\xx010001.ani (idle) m_stValidAniList[50][1].nI = 1 → mesh\xx010002.ani (walk) m_stValidAniList[50][2].nI = 2 → mesh\xx010003.ani (attack) ``` O ValidIndex.bin e um array binario fixo de 74400 bytes. Offset para skeleton index N = N * 186 * 4 bytes. Cada slot = 4 bytes (int). #### 5.3 Editar MeshTextureList.bin Adicionar a textura do novo mob em um slot vazio: ``` Slot livre → szFileName = "mesh\xx010101.wys", cAlpha = 'N' ``` **CRITICO:** sem esta entrada, o cliente NAO encontra a textura e o mesh nao carrega. O `GetModelTextureIndex` faz busca linear por nome — se nao encontra, retorna -1, e o CMesh aborta o carregamento. Para encontrar slots vazios: qualquer entrada com `szFileName[0] == '\0'`. Cada slot tem 264 bytes. Para editar diretamente no binario: ``` Offset = slotIndex * 264 [+0..+254] = szFileName (null-terminated, zero-padded) [+255] = cAlpha ('N' ou 'A') [+256..+259] = dwLastUsedTime (0) [+260..+263] = dwShowTime (0) ``` #### 5.4 Editar AniSound4.txt Adicionar uma secao para o novo skeleton type. A posicao na lista corresponde ao nBoneAniIndex. Para mob simples (56 linhas, formato `{nome} {aniIdx} {speed} {sound}`): ``` TYPE50 IDLE 0 30 0 WALK 1 30 0 RUN 1 20 0 ATK1 2 25 0 ATK2 2 25 0 DEATH 2 30 0 ... (preencher restante com 0 0 0) ``` #### 5.5 Editar BASE_DefineSkinMeshType (recompilacao) Em `Basedef.cpp`, a funcao `BASE_DefineSkinMeshType(nClass)` e um switch hardcoded que mapeia o nClass do item/mob → nBoneAniIndex. Para adicionar um novo mob com nClass=75: ```cpp case 75: return 50; // nosso novo skeleton xx01, index 50 no BoneAni4.txt ``` **Isto requer recompilacao do cliente.** Nao ha como evitar — o mapeamento e hardcoded no executavel. #### 5.6 Registrar no servidor (ItemList) O servidor define o `nClass` de cada mob/NPC no `ItemList.bin` ou na tabela de mobs. O nClass e o que o cliente recebe no pacote e usa para chamar `BASE_DefineSkinMeshType`. #### 5.7 Colocar arquivos ``` Mesh\xx01.bon — hierarquia Mesh\xx010001.ani — idle Mesh\xx010002.ani — walk Mesh\xx010003.ani — attack Mesh\xx010101.msh — mesh Mesh\xx010101.wys — textura ``` --- ## 6. Plano de Implementacao: Encoders Faltantes ### 6.1 BONEncoder (FBX/GLTF/GLB → BON) **Complexidade:** Baixa (formato trivial: pares de DWORDs) **Input:** FBX ou GLTF/GLB com skeleton **Output:** arquivo .bon **Algoritmo (FBX path):** 1. Percorrer todos os FbxNode com FbxSkeleton attribute 2. Para cada bone, extrair o boneID do nome (`Bone_XXX` → XXX) 3. Para cada bone, determinar o parentID: - Root: parentID = 0xFFFFFFFF - Outros: parentID = boneID do pai 4. Escrever pares [parentID, boneID] em ordem (root primeiro, BFS) **Algoritmo (GLTF/GLB path):** 1. Carregar documento GLTF com glTF SDK 2. Ler `doc.skins[0].jointIds` — lista de nodes que sao joints 3. Para cada joint node, extrair boneID do nome (`Bone_XXX` → XXX) 4. Para cada joint, determinar parentID pela hierarquia de nodes: - Se parent node nao esta em jointIds → root (0xFFFFFFFF) - Senao → boneID do parent node 5. Escrever pares [parentID, boneID] **Arquivos a criar:** - `Conversores/BON/BONEncoder.h` — declaracao - `Conversores/BON/BONEncoder.cpp` — `FromFBX()` e `FromGLTF()` + `SaveBON()` compartilhado **Estimativa:** ~120 linhas de codigo, 2-3 horas. ### 6.2 ANIEncoder (FBX/GLTF/GLB → ANI) **Complexidade:** Media (precisa avaliar animacao por frame e extrair matrizes locais) **Input:** FBX ou GLTF/GLB com skeleton + animation **Output:** arquivo .ani **Algoritmo (FBX path):** 1. Ler o FBX com FBX SDK 2. Determinar numBones (do skeleton) e numTicks (do animation stack) 3. Para cada tick (frame): a. Setar o tempo: `FbxTime::SetFrame(tick, eFrames30)` b. Para cada bone (por boneID, 0..numBones-1): - Avaliar `node->EvaluateLocalTransform(time)` → FbxAMatrix - Converter FbxAMatrix para XMFLOAT4X4 - Se o FBX veio do WYDConverter: reverter anchor correction e scale - Se e novo conteudo: usar local transforms direto c. Gravar as numBones matrizes para este tick 4. Escrever header (numTicks, numBones) + todas as matrizes **Algoritmo (GLTF/GLB path):** 1. Carregar documento GLTF com glTF SDK 2. Ler `doc.animations[0]` — channels e samplers 3. Determinar numTicks pelo max timestamp / (1/30) + 1 4. Para cada tick: a. Calcular tempo: `t = tick / 30.0f` b. Para cada bone: - Interpolar TRS dos samplers (translation, rotation, scale) no tempo t - Rotation: quaternion → matrix (GLTF usa quaternions nativamente) - Compor local matrix: S * R * T - Converter Y-Up → Z-Up (GLTF e Y-Up, ANI e Z-Up) c. Gravar as numBones matrizes 5. Escrever header + matrizes **Cuidados comuns:** - As matrizes no ANI sao LOCAL (relativas ao pai), nao world - FBX: `EvaluateLocalTransform` ja retorna local - GLTF: channels ja sao local (por spec) - FBX Z-Up (nosso export) = WYD Z-Up → sem conversao - GLTF Y-Up → precisa converter para Z-Up: conjugar cada local matrix - Scale: matrizes ANI sao puras (rotacao + translacao) - Normalizar rotation columns para magnitude 1.0 antes de salvar - Frame rate: WYD usa 30fps - GLTF: samplers podem ter interpolacao LINEAR ou STEP - LINEAR: interpolar entre keyframes - STEP: usar valor anterior **Arquivos a criar:** - `Conversores/ANI/ANIEncoder.h` — declaracao - `Conversores/ANI/ANIEncoder.cpp` — `FromFBX()`, `FromGLTF()` + `SaveANI()` compartilhado **Estimativa:** ~350 linhas de codigo, 5-8 horas. ### 6.3 ValidIndexEditor (editor de ValidIndex.bin) **Complexidade:** Baixa (array binario fixo, UI simples) **Funcionalidade:** - Carregar ValidIndex.bin (74400 bytes) - Mostrar grid: skeleton index × ani slot → nI value - Editar nI values - Salvar ValidIndex.bin **Integracao:** nova tab ou dialog no WYDConverter. **Estimativa:** ~150 linhas, 2-3 horas. ### 6.4 BoneAni4Editor (editor de BoneAni4.txt) **Complexidade:** Baixa (texto simples, UI simples) **Funcionalidade:** - Carregar BoneAni4.txt - Mostrar tabela: index, numAniTypes, numParts, szAniName - Adicionar/remover/editar linhas - Salvar BoneAni4.txt **Integracao:** mesma tab do ValidIndexEditor. **Estimativa:** ~100 linhas, 1-2 horas. ### 6.5 MeshTextureListEditor (editor de MeshTextureList.bin) **Complexidade:** Baixa (array binario fixo, ja temos decoder) **Funcionalidade:** - Carregar MeshTextureList.bin (auto-detecta classico 2048 vs Global 6096 slots) - Mostrar tabela: index, szFileName, cAlpha - Busca por nome (filtro) - Adicionar textura em slot vazio (auto-encontrar proximo livre) - Editar/remover entradas - Salvar MeshTextureList.bin **Nota:** Ja temos `MeshTextureListDecoder` com `LoadBIN`, `SaveBIN`, `LoadTXT`, `SaveTXT`. O editor so precisa de UI — a logica de I/O ja existe. **Integracao:** tab no DataEditor do WYDConverter. **Estimativa:** ~120 linhas (UI apenas), 2-3 horas. ### 6.6 AniSound4Editor (editor de AniSound4.txt) **Complexidade:** Baixa (texto formatado, parser simples) **Funcionalidade:** - Carregar AniSound4.txt - Mostrar: skeleton type → 56 linhas (acao, aniIndex, speed, sound) - Editar valores por celula - Duplicar secao de skeleton existente (template para novo mob) - Salvar AniSound4.txt **Integracao:** mesma tab dos editores de registro. **Estimativa:** ~150 linhas, 2-3 horas. ### 6.7 Ordem de Implementacao ``` Fase 1 — BONEncoder FBX + GLTF/GLB (2-3h) Permite: criar hierarquia de skeleton novo de qualquer formato Dependencias: nenhuma Teste: exportar mob existente MSH→FBX→BON e MSH→GLB→BON, comparar com original Fase 2 — ANIEncoder FBX (3-5h) Permite: criar animacoes novas a partir de FBX Dependencias: nenhuma Teste: exportar mob existente MSH+ANI→FBX→ANI, comparar com original Fase 3 — ANIEncoder GLTF/GLB (3-5h) Permite: criar animacoes novas a partir de GLTF/GLB Dependencias: SaveANI() da Fase 2 Teste: exportar mob existente MSH+ANI→GLB→ANI, comparar com original Nota: GLTF usa quaternions + timestamps flutuantes (vs FBX Euler + frames fixos) Precisa: interpolacao de samplers, quat→matrix, Y-Up→Z-Up Fase 4 — Editores de registro (5-8h) 4a. BoneAni4Editor (1-2h) — ja temos parser 4b. ValidIndexEditor (2-3h) — binario fixo 4c. MeshTextureListEditor (2-3h) — ja temos LoadBIN/SaveBIN 4d. AniSound4Editor (2-3h) — parser texto Permite: registrar skeleton, animacoes, texturas e sons Teste: adicionar entradas, verificar que cliente carrega Fase 5 — Workflow integrado (3-4h) Batch: FBX/GLB → MSH + BON + ANI + WYS em um click Auto-registro: adiciona entradas nos 4 arquivos de registro UI: wizard "Novo Mob" no WYDConverter Validacao: checar limites (40 bones, 65535 verts, etc.) Suporte: arrastar FBX ou GLB, detectar conteudo automaticamente ``` **Total estimado: 18-27 horas de desenvolvimento.** --- ## 7. Checklist Final ### Para mob com skeleton existente: - [ ] Exportar mob de referencia como FBX ou GLB - [ ] Modelar novo mesh no DCC ao redor do skeleton - [ ] Skin com max 4 influences, weights somam 1.0 - [ ] UV unwrap, textura potencia de 2 - [ ] Exportar FBX Binary Z-Up ou GLB - [ ] Converter FBX/GLB → MSH no WYDConverter - [ ] Converter textura → WYS - [ ] Adicionar textura nova em MeshTextureList.bin (se textura nova) - [ ] Copiar MSH + WYS para Mesh\ do cliente - [ ] Testar in-game ### Para mob com skeleton novo: - [ ] Tudo acima + - [ ] Criar skeleton com bones `Bone_000` a `Bone_NNN` - [ ] Criar animacoes (idle, walk, attack, death) - [ ] Exportar FBX ou GLB por animacao - [ ] Gerar BON via BONEncoder (FBX ou GLTF) - [ ] Gerar ANIs via ANIEncoder (FBX ou GLTF) - [ ] Editar BoneAni4.txt (adicionar linha com index, numAnis, numParts, prefixo) - [ ] Editar ValidIndex.bin (mapear slots → nI para cada ANI) - [ ] Editar MeshTextureList.bin (adicionar textura em slot vazio) - [ ] Editar AniSound4.txt (adicionar secao com aniIndex/speed/sound por acao) - [ ] Editar BASE_DefineSkinMeshType em Basedef.cpp (nClass → nBoneAniIndex) - [ ] Registrar mob no servidor (ItemList: nClass + LOOK_INFO) - [ ] Copiar BON + ANIs + MSH + WYS para Mesh\ do cliente - [ ] Testar in-game --- ## 8. Criar Objetos Estaticos Novos (MSA) Objetos MSA sao meshes estaticos SEM bones nem animacao. Usados para: - Construcoes (casas, torres, portais, altares) - Decoracoes de cenario (arvores, pedras, caixas, barris) - Armas e itens de chao (espadas, escudos, pocoes) - Efeitos estaticos (circulos, plataformas) ### 8.1 Diferenca entre MSH e MSA | Aspecto | MSH (Skinned) | MSA (Static) | |---|---|---| | Bones/Skeleton | Sim (max 40) | Nao | | Animacao | Sim (.ani + .bon) | Nao | | Skinning/Weights | Sim (max 4 por vertice) | Nao | | Multi-material | Nao (1 textura) | Sim (1-32 attribute ranges) | | Diffuse color | Nao (FVF 274) | Opcional (FVF 322) | | Uso tipico | Personagens, mobs, montarias | Cenario, itens, armas | ### 8.2 Sistema de registro MSA MSA sao registrados via **MeshList.txt** — uma tabela texto simples: ``` {index} {path_relativo} Exemplo: 0 mesh\cas001.msa 1 mesh\cas002.msa 2 mesh\tree01.msa ... ``` O index e o `dwObjType` que o engine usa para referenciar o objeto. `GetCommonMesh(dwObjType)` busca o path no MeshList e chama `LoadMsa()`. As texturas sao resolvidas de 2 formas: 1. Nome embeddado no MSA (campo de 11 bytes por attribute range) 2. Busca em MeshTextureList.bin por `mesh\{nomeBase}.wys` ### 8.3 Formatos de vertice MSA (FVF) | FVF | Hex | Layout | Bytes | Uso | |---|---|---|---|---| | 274 | 0x112 | Position(12) + Normal(12) + UV(8) | 32 | Maioria dos objetos | | 322 | 0x142 | Position(12) + Diffuse(4) + UV(8) | 24 | Objetos com vertex color | **CRITICO:** o FVF deve ser preservado no round-trip. Converter um MSA de FVF 322 para FVF 274 QUEBRA a renderizacao no cliente (o engine trata 322 de forma especial). ### 8.4 Workflow: Criar MSA Novo #### Passo 1 — Modelar Crie o objeto no 3ds Max ou Blender: - Apenas geometria (sem bones, sem skeleton) - Triangulos apenas (sem quads/n-gons) - Max 65.535 vertices - Escala: 1 unidade = proporcional ao mundo WYD (exporte um objeto existente como referencia) #### Passo 2 — Multi-material (opcional) MSA suporta ate 32 materiais/texturas por mesh: - Atribua materiais diferentes a grupos de faces - Cada material pode ter sua propria textura - Os attribute ranges sao preservados no round-trip Para objetos simples, 1 material e suficiente. #### Passo 3 — UV e Textura - UV Unwrap normal - Textura PNG ou TGA em potencia de 2 (256x256, 512x512) - Para multi-material: 1 textura por material - O WYDConverter converte PNG → WYS #### Passo 4 — Exportar No 3ds Max: File > Export > FBX Binary, Z-Up, Smoothing Groups ON No Blender: File > Export > glTF 2.0 (.glb), +Y Up, Apply Modifiers ON **NAO precisa** incluir Skin/Deformers (MSA e estatico). #### Passo 5 — Converter no WYDConverter 1. Abrir o FBX ou GLB no WYDConverter 2. Dropdown "MSA" > "FBX -> MSA" (ou "GLB -> MSA") 3. Nomear: `cas999.msa` (ou qualquer nome livre) 4. Converter textura: PNG -> WYS: `cas999.wys` #### Passo 6 — Registrar **MeshList.txt** — adicionar linha: ``` {indexLivre} mesh\cas999.msa ``` O index deve ser um slot livre (0-3047, MAX_COMMON_MESH = 3048). **MeshTextureList.bin** — adicionar textura: ``` Slot vazio → szFileName = "mesh\cas999.wys", cAlpha = 'N' ``` Para multi-material, adicionar CADA textura separadamente. #### Passo 7 — Colocar e testar ``` Mesh\cas999.msa ← mesh estatico Mesh\cas999.wys ← textura ``` O engine carrega via `GetCommonMesh(index)` quando o terreno ou objeto referencia o `dwObjType` correspondente ao index. Para testar: colocar o objeto em um mapa editando o .trn (terrain file) com o index do MeshList.txt. ### 8.5 Checklist MSA - [ ] Modelar objeto (sem bones, triangulos apenas) - [ ] UV unwrap, textura potencia de 2 - [ ] Exportar FBX ou GLB (sem skeleton) - [ ] Converter FBX/GLB → MSA no WYDConverter - [ ] Converter textura → WYS - [ ] Adicionar textura em MeshTextureList.bin - [ ] Adicionar entrada em MeshList.txt (index + path) - [ ] Copiar MSA + WYS para Mesh\ do cliente - [ ] Testar no mapa (colocar objeto no .trn)
    1 ponto
  38. 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
  39. Essa source foi vendida para alguns na comunidade, e como sempre, o pessoal confia em outros programadores pra mexer e ai acaba virando bagunça. Caiu na mão de uma pessoa (que não vou citar), e essa pessoa está revendendo como se fosse dela o projeto. Se tratando de um projeto antigo (já a um pouco mais de um ano), e ainda utilizar clientpatch, vou estar disponibilizando aqui para estudos. Não encontrei a release do projeto ou o client do mesmo. Se eu encontrar posto depois. Trata-se da Source do The New World. Projeto feito por mim em cima da w2pp, com hooks do SeiTbNao e uma parcela de ajuda do Guga quanto a vTable do hook de grid. Está na versão 759 porém com modificações de versões superiores. Como dano mágico azul, slot de cinto e colar, e vários sistemas únicos. Para compilar vão precisar do MySql Connector 6.1 instalado na maquina [hide][Hidden Content]] Client: [Hidden Content] Scan: [Hidden Content] No scan acusou um virus mas no meu computador o antivirus não encontrou nada. De qualquer forma ta ai o scan e é por conta risco de vocês. Não há nenhum arquivo .exe na release, sugiro que vocês compilem db e tm. Editores de mob serve qualquer um da 759, inclusive os do SeiTbNao. Serverlist se não me engano ta direto no clientpatch. Download: [Hidden Content] Scan: [Hidden Content] Download Ferramentas: [Hidden Content] Scan Ferramentas: [Hidden Content] Banco de dados MySQL também está na release Segue o vídeo ensinando a instalar o banco de dados: [Hidden Content] Vídeo do server:
    1 ponto
  40. STATUS : INDETECTAVEL Atualizado Outubro/2025 INTRODUÇÃO Agora temos a API para revenda dos cheats, keys são entregues automaticamente e pela API é possível visualizar todos os produtos com valores, informações sobre updates e slots atualizados. Plataforma exclusiva para revendedores, então se tem interesse em adquirir entre: [Hidden Content] FUNÇÕES - AIMBOT . Aimbot Classico - Aimbot clássico com movimento de mira . Totalmente configurável (Bone, FOV, priorização, suavização)Tem todas opções visuais para facilitar sua jogatina, revelando onde esta o inimigo(Bone, FOV, priorização, sobreposição de configuração) - VISUALS (WALLHACK) . Tem todas opções visuais para facilitar sua jogatina, revelando onde esta o inimigo e muito mais ONDE COMPRAR ? Nosso Site -> [Hidden Content] Nosso Discord : [Hidden Content] VIDEOS [Hidden Content] [Hidden Content] POSSUI VERSÃO FREE? O BloodStrike tem um ótimo anticheat e disponibilizar versões gratuitas do produto só colocaria em risco a segurança da versão paga. Pensando nisso, optamos por não liberar uma versão FREE.
    1 ponto
  41. Isso é o cliver... a versão do servidor esta diferente do cliente..
    1 ponto
  42. Quero ajuda para ajustar sistema de party/grupo dessa versão, veio um painel que a principio funciona, mas depois começa a bugar, desaparecem membros, as vezes mostra que personagem está sem grupo porém ele ganha xp de um outro personagem upando como se fosse só bug visual. Quero remover o painel e usar sistema de grupo da 7.59 como do the new world mais ou menos assim: #pragma region Grupo com Senha if (strcmp(m->MobName, "Grupo") == 0 || strcmp(m->MobName, "grupo") == 0) { char Chave[4096] = { 0, }; memset(Chave, 0x0, 4096); int valorGerado = rand() % (9999 - 1000 + 3333) + 1110; std::string s = std::to_string(valorGerado); sprintf_s(Chave, 4096, "%s", s.c_str()); memset(&pUser[conn].Ingame.PartyPassword, 0, sizeof(pUser[conn].Ingame.PartyPassword)); strncpy(pUser[conn].Ingame.PartyPassword, Chave, 6); SendEtc(conn); pUser[conn].Ingame.GrupoAceitarSolicitação = TRUE; SendClientMessage(conn, strFmt("!Sua senha :%s", pUser[conn].Ingame.PartyPassword)); SendClientMessage(conn, strFmt("!Novo membro deve usar /entrar %s %s", pMob[conn].MOB.MobName, pUser[conn].Ingame.PartyPassword)); pUser[conn].Ingame.GrupoAceitarSolicitação = TRUE; return; } if (strcmp(m->MobName, "entrar") == 0) { char TargetName[16]; memset(TargetName, 0, sizeof(TargetName)); char Password[7]; memset(Password, 0, sizeof(Password)); if (sizeof(m->String) > 100 || sizeof(m->String) <= 0) return; if (strnlen(m->MobName, 16) <= 0 || strnlen(m->String, 100) > 23) return; if (sscanf_s(m->String, "%15s %6s", TargetName, _countof(TargetName), Password, _countof(Password))) { if (sizeof(m->MobName) <= 0 || sizeof(m->MobName) > 16) { SendClientMessage(conn, "Nome inválido."); return; } if (sizeof(Password) <= 0 || sizeof(Password) > 7) { SendClientMessage(conn, "Senha inválida."); return; } //debug /*SendClientMessage(conn, strFmt("size password %d", sizeof(Password))); SendClientMessage(conn, strFmt("password %s", Password));*/ auto idx = GetUserByName(TargetName); int leaderID = pMob[idx].Leader; if (pUser[idx].Mode != 22) { SendClientMessage(conn, "Este personagem não está conectado."); return; } if (pMob[idx].Leader != 0) { SendClientMessage(conn, "Este personagem não é lider de grupo."); return; } if (conn == idx) { SendClientMessage(conn, "Não é possivel."); return; } if (pMob[conn].Leader != 0) { SendClientMessage(conn, "Você já faz parte de um grupo."); return; } for (int i = 0; i < MAX_PARTY; i++) { if (pMob[conn].PartyList != 0) { SendClientMessage(conn, "Você é lider de um grupo."); return; } } if (strcmp(pUser[idx].Ingame.PartyPassword, "") == 0) { SendClientMessage(conn, "Proibido a entrada em grupos sem senha"); return; } if (strcmp(pUser[idx].Ingame.PartyPassword, Password) != 0) { SendClientMessage(conn, "Senha incorreta."); return; } SendReqParty(conn, idx, 0); return; } return; } link imagem: [Hidden Content] Whatsapp 41 991956264
    1 ponto
  43. 1 ponto
  44. Boa noite, segue repositório github, com uma src 762 com algumas modificações (base w2pp) Obs: recomendo apenas para retirar conteúdo/ideias que achem interessante. [Hidden Content] Release Base: Server-Eternal
    1 ponto
  45. Para ter acesso a ferramentas exclusivas, material personalizado e diversas sources para montar seus próprios hacks, seja para uso próprio ou para comercializar, acesse o link abaixo: [Hidden Content]
    1 ponto
  46. Pré-requisitos Windows 10 ou superior (64 bits) Conexão com a internet Conta na Microsoft 1. Baixar o Instalador Acessar: [Hidden Content] Clique em "Baixar Visual Studio" e escolha a versão Community 2022 ou 2024 (que são gratuita). ⚙️ 2. Executar o Instalador Execute o instalador baixado como Administrador (botão direito > Executar como administrador). Aguarde o carregamento do instalador. Após abrir, você verá as "Cargas de trabalho" (Workloads). 🧱 3. Escolher Cargas de Trabalho (Workloads) Escolha o que deseja desenvolver: Exemplos: ✅ Desenvolvimento para desktop com .NET (utilizado para C#) ✅ Desenvolvimento web com ASP.NET e HTML/JS (utilizado para sites) ✅ Desenvolvimento Python (utilizado para python) ✅ Desenvolvimento com C++ (utilizado para jogos, apps nativos de performance) 📦 4. Escolher Local de Instalação e Instalar Defina onde instalar (prefiro que deixe o padrão). Clique em "Instalar". O Visual Studio será baixado e instalado. 🔓 5. Finalizar e Abrir Após a instalação, clique em "Iniciar Visual Studio". Faça login com sua conta Microsoft (opcional, mas vamos tornar obrigatório). Escolha um tema (claro, escuro ou azul - todo bom dev usa tema escuro, quem usa claro tem desvio de caráter). Pronto! A IDE estará aberta.
    1 ponto
  47. Primeiro passo: realizar login no GitHub via visual studio. Abra o Visual Studio. Vá até o menu superior e clique em: View (Exibir) > Git Changes ou Git > Manage Connections No canto superior direito, clique em “Sign in to GitHub”. Faça login com sua conta do GitHub. Feito! Segundo passo: clonar um repositório do GitHub. Se você já tem um repositório: Vá em: Git > Clone Repository No GitHub, copie o link HTTPS do seu repositório. Exemplo: [Hidden Content] Cole esse link no campo "Repository Location" e escolha a pasta local. Clique em “Clone”. O Visual Studio vai abrir o projeto direto da nuvem. Terceiro passo: criar um novo repositório GitHub a partir do visual studio. Se você quer subir um projeto novo para o GitHub: Crie ou abra seu projeto normalmente no Visual Studio. Vá até o menu Git > Create Git Repository. Marque a opção “Push to GitHub”. Preencha os dados: Nome do repositório Visibilidade: Público ou Privado Clique em Create and Push. O Visual Studio cria o repositório local e envia para o GitHub automaticamente. Dica extra: fazer commit e push Vá no menu Git > Git Changes. No painel lateral, veja os arquivos modificados. Escreva uma mensagem de commit (ex: Adiciona tela de login). Clique em Commit All. Depois clique em Push (para enviar ao GitHub). Dica extra²: fazer pull Se outra pessoa fez alterações no GitHub: Vá em Git > Pull ou clique em "Pull" no painel Git Changes. Isso atualiza seu projeto local com as últimas alterações do repositório.
    1 ponto
  48. Para ter acesso a ferramentas exclusivas, material personalizado e diversas sources para montar seus próprios hacks, seja para uso próprio ou para comercializar, acesse o link abaixo: [Hidden Content]
    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.