Ir para conteúdo

Os Melhores

Conteúdo popular

Mostrando conteúdo com a maior reputação em 30/08/2026 em Posts

  1. ⚔️ 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
    5 pontos
  2. 🔥 INSIGHT CHEATS - POINT BLANK BRASIL 🔥 (Atualizado em 06/08/2026) 💎 Estamos há 3 anos sem nenhum banimento por detecção do loader! 💎 🚀 FUNCIONALIDADES INCRÍVEIS 🔍 ESP's: Visualize inimigos através das paredes! Inclui Boxes, Esqueleto, Linhas, Nomes, Distância e muito mais. 🎯 Aimbot: • Silent: Muda a trajetória do tiro diretamente para o inimigo. • CrossHair: Puxa a mira até o inimigo automaticamente. 🧠 Aim FOV: Define a área de atuação do Aimbot. 👀 Visible Check: A mira trava apenas em inimigos visíveis. 🛡️ Anti Vote Kick: Previne que você seja expulso da partida por votação. 🖥️ FullScreen Mode: Ativa o modo tela cheia do jogo automaticamente. ⚡ FPS Ilimitado: Remove limites de FPS, garantindo o máximo desempenho! 🎯 Anti Helmet Protection: Inimigos não recebem proteção de capacete, mesmo com boina ou máscara. 📺 Stream Mode: Oculta menus e ESPs em transmissões no OBS Studio. 🔫 TriggerBot: Disparo automático ao detectar inimigo na mira. ⚡ Fast Quick Weapon: Reduz em 50% o tempo de troca de arma (simula item "Troca Rápida"). 🔄 Fast Reload Reduction: Reduz em 50% o tempo de recarga (simula item "Recarregamento Rápido"). E muito mais opções! SITE PARA COMPRAS - INSIGHT CHEATS COMPRE CLICANDO AQUI!
    5 pontos
  3. Função responsável por recalcular o ganho de velocidade de ataque baseado na destreza, calculo oficial do Global. //----------------------------------------------------------------------------- // BASE_GetDiminishedAttackSpeed (WYD-Global client 0x588260) -- ENHANCEMENT // // Sistema de Velocidade Avancado do WYD-Global. O ganho de attack-speed pela // Destreza foi RECALCULADO p/ ter RETORNOS DECRESCENTES por faixa de Dex (ficou // "mais dificil subir a velocidade" -- anuncio oficial dos devs). Validado // byte-a-byte no binario do client (0x588260): soma de 4 tiers. // Dex 0-1000 -> /1 (cheio) // Dex 1000-3000-> /3 (0x55555556) // Dex 3000-9000-> /9 (0x38E38E39, sar1) // Dex 9000+ -> /15 (0x88888889, sar3) // Exemplos: Dex 1000=1000, 3000=1666, 9000=2332, 15000=2732. O caller // (GetCurrentScoreGlobal) faz: MultiHitThreshold = attSpeed_equip + isto. //----------------------------------------------------------------------------- int BASE_GetDiminishedAttackSpeed(int Dex) { const int t0 = (Dex < 1000) ? Dex : 1000; // 0x58826B faixa 0-1000 /1 int d1 = Dex - 1000; if (d1 < 0) d1 = 0; else if (d1 > 2000) d1 = 2000; // 0x588277 clamp 0-2000 int d2 = Dex - 3000; if (d2 < 0) d2 = 0; else if (d2 > 6000) d2 = 6000; // 0x588292 clamp 0-6000 int d3 = Dex - 9000; if (d3 < 0) d3 = 0; // 0x5882AD max(.,0) return t0 + d1 / 3 + d2 / 9 + d3 / 15; // 0x5882B9..F4 soma dos tiers } Segue tbm a função que implementei para calcular a chance de critico x4. void BASE_ApplyAdvancedSpeedTiers(STRUCT_MOB* mob, char* bDoubleCritical) { const int mht = mob->MultiHitThreshold; // metrica de attack-speed; AS% = (mht+1000)/10 *bDoubleCritical &= ~0x30; // limpa SO' 0x10/0x20 (x3/x4); PRESERVA 0x08 (x2 fiel do roll) // OFICIAL: x3 400%->800% ; x4 800%->1500% (acima de 1500%: x4 fica 100%). // TESTE : x3 300%->400% ; x4 400%->800%. Trocar ADVSPEED_TEST p/ false p/ usar o OFICIAL. constexpr bool ADVSPEED_TEST = true; // flag implementada para facilitar testes, ja que as rates oficiais para x4 são endgame constexpr int INIT = 15; // chance inicial (%) ao cruzar o checkpoint const int x3s = ADVSPEED_TEST ? 2000 : 3000; // x3 abre: TESTE 300% / oficial 400% const int x3f = ADVSPEED_TEST ? 3000 : 7000; // x3 chega a 100%: TESTE 400% / oficial 800% const int x4s = x3f; // x4 abre onde x3 satura const int x4f = ADVSPEED_TEST ? 7000 : 14000; // x4 chega a 100%: TESTE 800% / oficial 1500% if (mht >= x4s) // zona de x4: x3 garantido + rola x4 (INIT% -> 100%) { int ch = INIT + (mht - x4s) * (100 - INIT) / (x4f - x4s); if (ch > 100) ch = 100; *bDoubleCritical |= (std::rand() % 100 < ch) ? 0x20 : 0x10; } else if (mht >= x3s) // zona de x3: rola x3 (senao fica so' no x2 = 0x08) { int ch = INIT + (mht - x3s) * (100 - INIT) / (x3f - x3s); if (ch > 100) ch = 100; if (std::rand() % 100 < ch) *bDoubleCritical |= 0x10; } } Segue tbm o BASE_GetDoubleCriticalGlobal int BASE_GetDoubleCriticalGlobal(STRUCT_MOB* mob, unsigned short* cProgress, char* bDoubleCritical) { *bDoubleCritical = 0; // 0x58363A if (!cProgress) return 0; if (*cProgress >= 1024) // 0x583646 cmp 0x400 *cProgress = 0; // 0x58364B const int hitRate = g_pHitRate[*cProgress]; // 0x583653 [*cProgress*4 + tabela] if (hitRate < mob->MultiHitThreshold) // 0x583670 cmp / jge *bDoubleCritical |= 0x08; // 0x583674 or [edi],8 (x2 elegivel, PROBABILISTICO) if ((1000 - hitRate) < 4 * mob->Critical) // 0x58367E cmp / jge *bDoubleCritical |= 0x01; // 0x583683 or [edi],1 (double, crit-stat) ++(*cProgress); // 0x583686 return 1; // 0x583689 } mob->MultiHitThreshold -> variavel nova dentro da struct_mob que guarda o novo calculo da velocidade de ataque. e o mesmo principio pode ser aplicado para o critico magico
    4 pontos
  4. 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;
    4 pontos
  5. Somos o primeiro servidor do Genero Idle, inpirado no no jogo RPG: With Your Destiny ! Site: [Hidden Content] WhatsApp: [Hidden Content] - Equipamentos Padrão - Mercado Global - Arena PVP - Sistema de GUILD - Sistema de Montaria - Guerras: Torre, Cidades e Noatun - Quests Mortal - Lans - Crafts Padrão (Em Breve) Projeto em Desenvolvimento
    3 pontos
  6. /* 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
    3 pontos
  7. Sejam bem vindos a mais um conteudo da FOX Cheat, dessa vez viemos fazer o lançamento do produto VIP de CS2 e podemos garantir que é um dos produtos mais seguros para o game por se tratar de um cheat totalmente externo, ou seja não feito nenhum tipo de modificação no jogo ou injeção nele. Além disso a versão grátis como já é de costume desse produto está sendo desenvolvida e será postada em um tópico separado. Para conhecer mais sobre esse e outros produtos da FOX acesse. LOJA SITE DISCORD Windows 11 → Funcional Windows 10 - 2204 ou posterior → Funcional Windows 8 → Não funcional ESP [BOX, DISTANCE, LINES, HEAD, HEALTBAR, SHIELD, ETC] AIMBOT CONFIGURAVEL SPECTATOR LIST RAGE BOT - DESENVOLVIMENTO 7 dias → R$ 30,00 R$ 20,00 30 dias → R$ 50,00 R$ 40,00 Preço promocional de lançamento, o mesmo pode ser alterado sem aviso prévio. Adquira o produto direto na LOJA ou nosso DISCORD
    3 pontos
  8. Hello Guys Download link: [Hidden Content] __________________ Selling combo high quality with guarantee➖ Selling: EMAIL: PASS USER: PASS MAILLIST AOL, YAHOO, HOTMAIL, OUTLOOK, FRANCE, UK, GERMANY, USA, ESPAIN, ITALY, CANADA, AUSTRALIA… To buy msg me TELEGRAM: @KOCsupport
    2 pontos
  9. Oi :) Passando pra divulgar meu servidor season 1 com vocês. É a última versão da season 1, ainda de 2008. O foco do servidor é o PvP. Plays todos os dias, com 3 a 6 pessoas online, em geral. O mote do servidor é: joga, te diverte. Quando sair, esquece que o jogo existe. 100% gratuito e sem fins lucrativos. Sem sistema de cash, recompensas, token, nada. É pelo play. Minha proposta é manter o GC Farofa ativo pra sempre, mesmo que pouca gente jogue. Pra gente ter sempre aquele gczinho antigo pra meter um PvP quando der vontade, sem compromisso. As outras modalidades funcionam normalmente: missão, expedição, tiro ao alvo, caçada... você pode matar a saudade de passar raiva dessas modalidades tranquilamente. Na criação da conta, todos os personagens já vêm lvl 75 e todas as classes liberadas: da Elesis ao Ryan até 4ª classe, e Ronan até a 2ª. Loja 100% liberada, com status zerado, pra montar seu set visual. Colares +9 na loja. Às vezes adicionamos novos sets, como por exemplo o pacote do Ovo, do Rato e os da Copa. Pra balancear o PvP, ao invés de criar um servidor balanceado, optei por criar itens acessórios com status específicos nas notas B+, C+ e C-, com três modalidades cada: um com mais ataque (furioso), um balanceado (equilibrista) e outro com mais def e vit (encouraçado). Assim, você pode se adaptar melhor às condições das partidas em questão, seja por gosto ou necessidade. Em geral, jogamos C+. Nos comentários, com o passar dos dias, postarei alguns replays de partidas. Servidor localizado em SP. Idealizado por Faro Fino e desenvolvido por TheCash. Combinações de jogo: Utilizamos, principalmente, o canal no WhatsApp. Com o tempo, virou uma pequena central de conversas, que inclusive joga Grand Chase diariamente, também em outros servidores amigos. É ali que alguém chega querendo jogar e diz: "vamos?", e lá vamos nós. Segue o link para entrar no grupo: [Hidden Content]. Fiz agora também um canal no Discord, usado ocasionalmente para calls. Usamos pouco, mas tudo que você perguntar lá, será respondido e atendido por mim. Link do Discord: [Hidden Content] Download: Você tem duas opções. Instalar o client, ou baixar a pasta em zip pronta. Instalador .exe: Opção 1: [Hidden Content] Opção 2:) [Hidden Content] Pasta .zip: Opção 1) [Hidden Content] Opção 2) [Hidden Content] WhatsApp: [Hidden Content] Discord: [Hidden Content] Site do TheCash: [Hidden Content] Instruções: Client: execute o arquivo GC Farofa Installer.exe como administrador e escolha a pasta onde você quer instalar o jogo. Selecione para criar o atalho na área de trabalho se quiser. Execute o atalho. Pronto. Pasta: extraia a pasta, abra ela e execute o arquivo Launcher.exe. Pronto. Scan do client no virustotal.com, isentando-o de malwares num geral: PRINTS DO CLIENT Ninja Pelado na cidade abandonada, um clássico: Espada C+, um clássico que não pode faltar:
    2 pontos
  10. 🌑 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 |
    2 pontos
  11. 🔥 WYD CORE — ABERTURA OFICIAL 🔥 Chegou a hora de começar uma nova história no WYD! 📅 LANÇAMENTO: 04/09/2026 ⏰ 19:00 — Horário de Brasília Depois de muito desenvolvimento, testes, balanceamento e milhares de horas de trabalho, o WYD CORE finalmente abrirá oficialmente suas portas. ⚔️ UM WYD RECONSTRUÍDO POR DENTRO! 🔥 Mais de 100 Bosses configurados 🎁 Mais de 1.000 Drops por Campo 👹 Mais de 5.000 Mobs organizados 🗺️ Drop e EXP controlados por área 💎 Sistema Ancient com bônus REAL 👑 Bosses de Campo 📜 Quests remodeladas e drops garantidos ⚒️ Sistema de Replation reformulado 🐎 Evolução de montarias 🏪 Mercado Global 💰 Loja Donate e Loja de Honra integradas 📊 Ranking em tempo real 🎁 Recompensas e eventos 🛡️ Launcher próprio e sistemas Anti-Jogo 📋 Sistemas completos de logs e auditoria ⚙️ Estrutura preparada para ajustes de EXP, Drop e eventos em tempo real E isso representa apenas uma parte dos sistemas desenvolvidos para o servidor. 💰 FARM REAL. ⚖️ ECONOMIA REAL. ⚔️ PROGRESSÃO REAL. Nossa proposta é simples: Não queremos que você jogue por uma semana. Queremos que cada conquista continue tendo valor amanhã. Monte sua guild, reúna seus amigos e prepare-se. 🌐 SITE OFICIAL www.wydcore.com 💬 GRUPO OFICIAL DO WHATSAPP [Hidden Content] 📅 04/09/2026 ⏰ 19:00 — Horário de Brasília 🔥 WYD CORE 🔥 O mundo está esperando por você.
    2 pontos
  12. eWYD Construído para ser o editor definitivo para o jogo WYD Antes de executar a primeira vez, altere o arquivo Cfg.json para corresponder ao caminho do seu cliente/jogo Mantenha o mesmo padrão, se o cliente estiver em P:\WYD754 coloque P:\\WYD754\\ Download: v0.1.0 - Google Drive Scan: Virustotal Acusou Trojan, verificando motivo Use por sua conta em risco =) Não concordo em esconder conteúdo atrás de like, se gostou, curta para saber se vale a pena continuar o editor. Funcionalidades: Home Ignore por enquanto Texture Leitura / Exportação / Importação de todas as imagens/texturas do jogo ( WYS ou WYT ) Selecione uma textura para visualizar/exportar/importar somente ela. A conversão adiciona o prefixo _eWYD ao arquivo final, NÃO remova o prefixo, ele é usado para importar A importação deleta o arquivo tga/dds. Os arquivos originais wys/wyt nunca são deletados Export All / Import All Exporta/Importa TODAS as texturas do jogo Export / Import Exporta/Importa uma textura selecionada Compatibilidade: Clientes 7.54 Demais versões não foram testadas, favor testar. Se encontrar erros, informe a versão e como reproduzir Problemas conhecidos: - Layout horrível | Será tratado assim que finalizadas todas as funcionalidades e componentes - Lentidão ao inicializar | Ele lê todos os arquivos do jogo, aguarde =), posteriormente posso melhorar - Acusou vírus : Trojan | Aplicação .Net 9 WPF, provavelmente um falso positivo, verificando. Versões: v0.1.0 - Lançamento inicial Leitura/Escrita | Texturas
    2 pontos
  13. Tópico Atualizado - 07/08/2024 O Chase Fantasy é um servidor já a 3 anos na ativa e esperamos nos manter na ativa por muito tempo, com missões originais desenvolvidas por nós, visuais exclusivos, mascotes exclusivos, eventos exclusivos, sistemas exclusivos e muitos eventos para você obter desde visuais até mascotes incríveis. Diferente da maioria dos servidores que abrem logo para fechar as portas, prometendo o impossível para atrair a sua atenção, fazer você gastar dinheiro e fechar as portas logo em seguida, nós sempre fomos diferentes e sempre seremos diferentes, temos o foco em trazer a diversão e a sensação que a sua progressão de fato faz efeito, sem fazer você perder seu tempo com grinds exagerados, jogando seu tempo fora pra pouca coisa. Site do servidor para cadastro/download: [Hidden Content] Discord Oficial do Chase Fantasy: [Hidden Content] Recomendamos que entre no Discord pois lá é dado tokens semanais, recompensas por quantidade de membros e compensações de atualização Informações Básicas do Servidor: Nível Máximo: 200 VP Inicial: 15.000 de VP Crie sua conta e receba um kit de iniciante: Confira abaixo imagens com explicações sobre nosso servidor: Sistema de Coleção de Artefatos exclusivo. Sistema de Passe de Batalha sempre com recompensas incríveis e uma loja exclusiva para as moedas do passe de batalha. Pokemons, Chibis e muitos outros pets exclusivos e únicos. Reformulação de Interfaces, mais organizadas e funcionais. Sistema de Runas e Equipamentos do Mestre do Vento (Mais forte atualmente para o nível 200). Continente Vanimir com muitas missões exclusivas sendo desenvolvidas. Refúgio Devastado dos Espíritos - Missão Exclusiva Sacrário dos Espíritos - Missão Exclusiva Vazio (Invasão) Personagem recém lançada: Kallia Personagem já lançada: Decane Personagem já lançada: Ai Forja exclusiva bem organizada com tudo o que você precisa. Muitos sistemas de recompensas para você personalizar seus personagens. Loja VIP com muitos visuais exclusivos e adaptados do Grand Chase Mobile. (Diamantes podem ser obtidos em eventos no DIscord, em missões e outros eventos especiais) Loja de CASH com muitos visuais exclusivos. (VP podem ser obtidos em eventos no DIscord, em quase todas as missões e outros eventos especiais) O que está esperando? Crie sua conta agora mesmo e venha fazer parte da Fantasia.
    2 pontos
  14. Hoje vim compartilhar uma base w2pp 7.59 que é um clone do rogue Não tenho créditos em nada só estou repassando... Scam Virus Total: Scam ZIP [Hidden Content]
    2 pontos
  15. Hello Guys Download link: [Hidden Content] __________________ Selling combo high quality with guarantee➖ Selling: EMAIL: PASS USER: PASS MAILLIST AOL, YAHOO, HOTMAIL, OUTLOOK, FRANCE, UK, GERMANY, USA, ESPAIN, ITALY, CANADA, AUSTRALIA… To buy msg me TELEGRAM: @KOCsupport
    1 ponto
  16. Hello Guys Download link: [Hidden Content] __________________ Selling combo high quality with guarantee➖ Selling: EMAIL: PASS USER: PASS MAILLIST AOL, YAHOO, HOTMAIL, OUTLOOK, FRANCE, UK, GERMANY, USA, ESPAIN, ITALY, CANADA, AUSTRALIA… To buy msg me TELEGRAM: @KOCsupport
    1 ponto
  17. 🎁 NEWBIE PACKAGE – KIT INICIAL GRÁTIS! 💥 Você está pronto para começar sua jornada em WYD International Nós preparamos um pacote especial gratuito recheado de itens essenciais para te ajudar a dominar desde o primeiro dia! ⚔️🛡️ 🔥 O que vem incluso? ✅ 16 itens diferentes no total ✅ Escolhidos a dedo para impulsionar sua jornada inicial ✅ Disponível para TODOS os novos jogadores – sem pegadinhas! Basta criar sua conta e iniciar a aventura. 🧙‍♂️ Seja você Guerreiro, Mago ou Caçador — esse é o seu impulso inicial definitivo. 🎮 Não perca! Entre no jogo agora e resgate seu pacote GRATUITO! 🌍 Atualização Oficial - WYD International com Suporte PT-BR! Saudações, aventureiros do WYD! Temos novidades empolgantes: o WYD International agora possui suporte completo em PT-BR! Você pode escolher o idioma diretamente no Launcher do Jogo, com opção de alternar entre EN/PT-BR tanto para o site quanto para o cliente do jogo. Além disso, o servidor segue recebendo atualizações constantes desde o lançamento da Fase Beta em 17/10/2024. Nossa jornada continua com ainda mais força, e agora convidamos todos os jogadores da comunidade brasileira a se juntar a nós! 🛍️ Novidade: Loja de Cupons da Vitória (NPC Comerciante Divino) Quer alcançar os veteranos mais rápido? Agora o NPC Comerciante Divino vende Pedra Ideal e Pedra Eterna por preços acessíveis, permitindo que novos jogadores tenham chance real de alcançar os mais antigos. Aproveite! 🎮 Core Game Features 🏆 True Play to Win 🎁 Free Starter KIT (Newbie Package) 📢 Multi-Channel Support (Ch 1 PVP+Ch 2 Non-PVP) 🥋 New 9th - 12th Skills (Fully functional) 👫 Party Player Follow Missions Menu 📊 Advanced Character Stats Menu Advanced Guild Menu Advanced Settings Menu Bless Refine Fusion 💧 Auto Water Macro via CC 🎯 Level Reward System 🗺️ Map CC + Movement ⚔️ New Speed System (x3/x4 hits) 🎲 Advanced Drop System with Tiers 🛒 Divine Merchant NPC (Victory Coupon Shop) 🌟 Celestial LV 240-360 Unlocks 😄 In-game Emoji System 🎨 Custom Enamels (New Colors) 👻 Ghost Shop (Open a shop and go hunt) Academy System 🖥️ Stable Client with No Crashes Honor Coins System with Honor Shop Reworked Ingame Chat (Copy/Paste/Select options with CTRL+V/CTRL+C etc) Celestial Level 280+ Zone (Bloody Kefra) Coupon System VIP System Hunting Log UI Party Listing UI Party Leader Swap 🚀 Launcher with: 🔁 Auto Update 🛠️ Auto Repair Settings 🌐 Multi-Language (EN/PT-BR) 🌐 Feature and Info-rich Website 📜 Quests Mortal Quests up to level 400 🧙‍♂️ God LVL 50-200 Quest (The Troll's Domain) [Hidden Content] 🏜️ God LVL 201-400 Quest (Desert Fury) [Hidden Content] 💍 God Circlet Hunt Quest (LV 301-330) 💠 God Circlet Hunt Quest 2 (LV 400) 🏞️ Celestial LV 240-400 Daily Quest (Unknown Desert) 🗼 Daily Infinite Tower: [Hidden Content] - 🔁 Unique Daily Party EXP Quest, With Rankings 🗼 Daily Loot Hunter Quest: [Hidden Content] HellGate Event ⚔️ PvP Events 👑 Royal Arena (Team Battles) 🗼 Tower Wars 🛡️ Nauton Wars ☠️ Kefra Battles ☠️Academy War 📆 Monthly Automated Events Calendar [Hidden Content] 🏹Hunt Missions (e.g., Hunt X Tarons) 📦 Collect Missions (e.g., Collect X Laks) 🧪 Use Missions (e.g., Use X Laks) Participate MIssions (e.g., Participate in Royal Arena X Times) 💎 Treasure Box Hunt: [Hidden Content] Blessings: [Hidden Content] 🙏 Freya Blessing ⚡ Odin Blessing 🔮 Agatha Blessing 🌸 Aylin Blessing 🧬 Compounder Blessing 🌀 Teleport Event: [Hidden Content] 🐉 Golden Invasion 👹 Boss Fights 🔤 Scramble Words 👾 Monsters Raid Happy Hour Last Man Standing: [Hidden Content] 💎 Special Items 💧 Water Fragment (Exchange for Water Scrolls) 😈 Nightmare Scraps (Exchange for Nightmare Scrolls) 🌠 MVP Buff (Atmosphere) +50% EXP & DROP for nearby players (1 Hour) 📈 50% EXP Buff (15 minutes) 💰 50% DROP Buff (15 minutes) 😎 Premium Emojis Coupon (30 Days – Press B for menu) 📦 Premium Stack Expansion (30 Days – Stack up to 250) 🧍 Premium Change of Body 🔁 Premium Change of Class Premium Feed Item Noob Set Mount Revival 🔧 Special Commands 🖼️ /graphics – Toggle old graphics on/off /exp - Toggle exp on/off 💉 /heal – Toggle FM or MK heal effects 🎞️ /fps – Toggle FPS counter /vip - Check whether VIP status is active 🤝 /join | /joinparty | /enter – Join someone’s party 🔐 /setpass | /setpassword | /password | /pass – Set a password for your party /setleader <name> - set party leader 🔤 /scramble – Answer the Scramble Words event 🛍️ /closeshop – Close the Ghost Shop /events - Check Today's Automated Events /block & /unlock - mute ingame character /add <stat> - Add stats using command /daily - command to check the daily events participation /joinlms - register the Last Man Standing Event /leavelms - cancel the LMS registration 🌐 Links Importantes: 📘 Facebook: facebook.com/wyd.international 💬 Discord: discord.gg/wydint 🌍 Site Oficial: [Hidden Content] Register: [Hidden Content]sign-up Download: [Hidden Content]downloads-list 🚀 Lançamos nosso novo Marketplace na web: 👉 [Hidden Content]market Character Search + Inventory view: [Hidden Content]character/N604 Char Rankings: [Hidden Content]rankings?type=celestial&page=1 Guild Rankings: [Hidden Content]guild-rankings Information: [Hidden Content]information Server Economy: [Hidden Content]item-economy Guides: [Hidden Content]guides Twitch Streamers Linking + Stream Rewards: [Hidden Content]dashboard?content=streamers Vote Reward (Free Donate Points every 12 hours): [Hidden Content]dashboard?content=vote-reward Guild Cargo: [Hidden Content]dashboard?content=guild-cargo Affiliate system: [Hidden Content]dashboard?content=affiliate Nos vemos em Armia, adventurer! 🛡️⚔️ Equipe WYD International
    1 ponto
  18. ● EVENTO ESPECIAL • GLOBALHAX GRAND THEFT AUTO GTA VI TRAILER • QUINTA-FEIRA, 27 DE AGOSTO Prepare-se para acompanhar um dos lançamentos mais aguardados do mundo dos games. Nesta quinta-feira, dia 27, reúna-se com a comunidade da GlobalHax e acompanhe o trailer através da Netflix utilizando o GlobalLoader. 27 DATA QUINTA-FEIRA ▶ EVENTO TRAILER GTA VI N STREAMING NETFLIX ● PREPARE-SE PARA O DIA 27 ASSISTA AO GTA VI NO GLOBALLOADER Abra o GlobalLoader, acesse a opção da Netflix disponível em sua conta e prepare-se para acompanhar o trailer junto com a comunidade. ▶ ACESSAR GLOBALLOADER GLOBALHAX • GLOBALLOADER • NETFLIX 01 — EVENTO Quinta-feira é dia de GTA VI. O dia 27 de agosto promete movimentar a comunidade com novas imagens, informações e detalhes de Grand Theft Auto VI. A proposta da GlobalHax é reunir a comunidade para acompanhar este momento utilizando o GlobalLoader. 02 — GLOBALLOADER GLOBALLOADER Centralize os serviços disponibilizados pela GlobalHax em uma única aplicação e consulte as opções disponíveis para sua conta. ⬇ BAIXAR GLOBALLOADER 03 — PREPARE-SE Como participar 01. Baixe o GlobalLoader Utilize a versão oficial disponibilizada pela GlobalHax. 02. Entre na sua conta Faça login utilizando sua conta da GlobalHax. 03. Acesse a opção disponível Confira no GlobalLoader quais serviços estão atualmente liberados para sua conta. 04. Prepare a pipoca Dia 27, acompanhe o evento junto com a comunidade GlobalHax. ▶ TUTORIAL Ainda não utiliza o GlobalLoader? Assista ao tutorial e veja como instalar, acessar e utilizar o software. GLOBALHAX • GTA VI NOS VEMOS DIA 27. Abra o GlobalLoader, prepare-se para o evento e acompanhe tudo junto com a comunidade. GTA VI • GLOBALHAX • GLOBALLOADER
    1 ponto
  19. [Hidden Content] Telegram Channel: [Hidden Content] TG: @BossBrowz
    1 ponto
  20. ⚔️ WAR OF DESTINY — BETA ABERTO 🔥 O WYD agora cabe no seu navegador. O War of Destiny está em BETA e queremos você junto nessa fase. Nosso objetivo é transformar a experiência do WYD em algo mais acessível, moderno e prático, permitindo jogar tanto no PC quanto no celular, diretamente pelo navegador. 🌐 Jogue sem instalação tradicional 💻 Jogue no PC 📱 Jogue no celular ⚔️ Experiência MMORPG inspirada no WYD 🚀 Atualizações e melhorias constantes 🔥 O QUE ESTAMOS CONSTRUINDO? O projeto vai muito além de simplesmente levar o jogo para o navegador. Estamos trabalhando para criar uma experiência que facilite a vida dos players e permita que o jogo flua de forma cada vez mais prática. 📂 Várias contas no mesmo navegador Pensado para facilitar o gerenciamento e a utilização de múltiplas contas de forma prática. 🏰 Gerenciamento de instâncias Futuramente, teremos recursos voltados ao gerenciamento das diferentes instâncias do jogo. 💰 Modo Economia Um modo pensado para otimizar o uso de recursos e tornar a experiência mais eficiente. 📱 PC + Celular A ideia é permitir que você tenha mais liberdade para jogar, independentemente do dispositivo. 🚀 Evolução contínua Novos sistemas, otimizações, correções e funcionalidades serão adicionados ao longo do desenvolvimento. 🛠️ BETA EM EVOLUÇÃO Já temos diversas correções e melhorias implementadas: ✅ Compra de Skills ✅ Skills e Buffs ✅ EXP e Level ✅ Mixlist / Composição ✅ Criação de Arch ✅ Face correta do personagem ✅ Leitura da textura Alpha ✅ NPCs de Skills ✅ Rebuild Cache ✅ Senha numérica E seguimos trabalhando em: 🔄 Respawn dos mobs 🔄 Mercado Negro 🔄 Correção do CP 🔄 Posição do slot da capa ao virar Celestial 🔄 Novos sistemas e melhorias 🐛 VOCÊ PODE FAZER PARTE DESSE DESENVOLVIMENTO O BETA existe justamente para testar, encontrar problemas e evoluir junto com os players. Encontrou um bug? Algum sistema não funcionou como deveria? Tem uma sugestão? 👉 Reporte para nossa equipe no grupo oficial do WhatsApp: 💬 [Hidden Content] 🌐 ENTRE NO BETA 👉 warofdestiny.com.br Abra o navegador. Entre no jogo. Crie seu personagem. E venha testar. ⚔️ War of Destiny 🔥 O WYD no navegador. 💻 PC. 📱 Celular. 🌐 Onde você estiver. Seu destino começa no navegador.
    1 ponto
  21. Sinceramente, ja que esta mudando a interface, implemente o .pane fica extremamente mais facil de trabalhar/criar paineis... vc tem controle total sem toda a frescura do sistema nativo antigo... simplifica muito mais o codigo... Se a ideia é evoluir a interface, na minha opnião o sistema .pane do global é o que vc vai ter de melhor, a arte vc pode modificar a seu criterio... veja alguns prints, aposentei todo o sistema nativo da interface e implementei o .pane, com isso facilitou muito a criação de um filtro de drop para fadas douradas e prateadas, onde com a fada equipada basta clicar com o botão direito nela e abre o .pane do filtro... o sistema de linkar itens no chat, o sistema de coleção que inclusive esta desabilitado no global, ampliei ele para incluir os trajes de montaria... o menu de configuração ingame... tudo via .pane... estou corrigindo algumas questoes de linguagem pq o cliente suporta ingles e portugues, porem tem algumas strings em ptbr que precisam ser corrigidas, ou nem existem no global, mas no geral fica muito mais facil de trabalhar.
    1 ponto
  22. Epa! Tópico Movido! Seu tópico não foi postado na área correta e, devido a isso, foi movido para o local adequado. Por favor, preste mais atenção da próxima vez. Atenciosamente, WebCheats.
    1 ponto
  23. [Hidden Content] Telegram Channel: [Hidden Content] TG: @BossBrowz
    1 ponto
  24. /* 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; } PRIME VÍDEO ACESSAR DADOS DA CONTA Crunchyroll ACESSAR DADOS DA CONTA paramount ACESSAR DADOS DA CONTA 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
  25. /* 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 21/07/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
  26. Olá galera, 🎮 Fatal Chase Cheats disponíveis: AutoKill – Mata automaticamente os mobs AutoBoss – Avança direto para o stage do boss ItemVac – Coleta os drops Automaticamente Serviços (sem precisar passar dados da conta): XP Hack → Sobe do nível 0 ao 85 em poucos minutos Complete Quest → Finaliza quests de matar monstros ou pegar chaves em segundos (sem precisar matar 1000+ monstros) [Hidden Content] [Hidden Content] 📌 Discord para suporte e mais informações: 0iiveira
    1 ponto
  27. body { font-family: Arial, sans-serif; margin: 0; padding: 20px; } h1 { text-align: center; margin-bottom: 30px; color: #38bdf8; } .container { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; } .card { background: #1e293b; border-radius: 12px; padding: 15px; box-shadow: 0 4px 12px rgba(0,0,0,0.3); } .card h2 { font-size: 16px; margin-bottom: 10px; color: #60a5fa; } .field { margin-bottom: 8px; } .label { font-weight: bold; color: #94a3b8; } ul { padding-left: 18px; margin: 0; } li { margin-bottom: 4px; } .warning { margin-top: 20px; text-align: center; font-size: 12px; } 🎁 Contas Steam com Jogos Pagos [Hidden Content]
    1 ponto
  28. Fala pessoal blz? atualizei meu conversor para extrair arquivos do Loki Season novo e vou compartilhar com vocês os conversores de ItemList e SkillData. Trabalha com todas as versões, do 7.00 a Loki Season atual, Structs de 140B 168B e a nova de 172B, ainda tem alguns EFs que nao consegui extrair, vai precisar de um pouco mais de analise, mas não interfere no funcionamento das ferramentas. Não lembro o size das structs das versões 6.XX se for os mesmos 140B vai funcionar tbm. Se for menor ai preciso das structs pra implementar o suporte. O app já calcula o checksum e pode ser recompilado no código para não ter erros de loading isso para quem usa o sistema sem bypass no checksum. Sem segredo, podem abrir arrastando o arquivo ou selecionando manualmente, o arquivo convertido vai pra mesma pasta do arquivo base. Um backup é salvo para qualquer problema. No caso da SkillData, se você tiver o ItemList na mesma pasta ele já insere o nome das skills no SkilData.csv basicamente é isso. segue alguns prints Segue o Download GuiCan Não coloquei scan, mas se alguém tiver duvida pode analisar o arquivo por si mesmo.
    1 ponto
  29. 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]
    1 ponto
  30. CHASE HEROES — NOVA ERA DOS HEROES COMEÇOU ! 14/05/2026 [ ON ] Grand Chase Heroes - Servidor Season 5 PT 3 CADASTRO DE CONTAS NO LAUCHER A O CADASTRAR GANHE BONUS PARA COMEÇAR ALGUNS TOKENS PARA ACELERAR SUA EVOLUÇÃO KitPergaMistico SUPORTE-INICIANTE INICIANTEHEROES HARKYON-KIT-FREE ( APENAS OS 50 PRIMEIROS KIT-BERKAS001 BAUDECARTAENDGAME1 Chase_Heroes#143415 ( SET MAGI ) GLADIADOR2026 ( VISUAL GLADIADOR ) NO SERVIDOR GRAND CHASE HEROES ALGUNS CHAR TOMARAM ALGUNS REWORKS EM SUAS HABILIDADES LIRE MUDANÇAS EM VIDEO ARME MUDANÇAS EM VIDEO LASS MUDANÇAS EM VIDEO ⚡ PERSONAGENS EM DESTAQUE ✔️ Lin — META ✔️ Ryan — Todas classes buffadas ✔️ Elesis — Todas classes buffadas ✔️ Ronan - Buffado ✔️ Uno — Buffado ✔️ Azin — Buffado ✔️ Jin — Buffado ✔️ Zero — Buffado ✔️ Dio — Balanceado ✔️ Veigas — Balanceado ✔️ Holy - Buffado ✔️ Mari - Buffado ✔️ Ai - Balanceado ✔️ Peryton - Buffado TODOS OS CHARS ATE DECANE E AI KALLIA E IRIS EM TRABALHO TAMBEM TEMOS CONTEUDOS PARA DONATE 🔥 ALGUMAS OUTROS INFORMAÇÃO 🔥 ⚔️ Level Máximo 101 🎮 Farme de CASH através de Mini Games no Launcher 🎉 Eventos dos GMs constantemente ativos 💬 Eventos exclusivos no Discord valendo CASH 📖 Guias Evolutivos disponíveis no Discord 🛡️ Staff extremamente ativa e sempre presente no chat ✨ ITENS E CONTEÚDOS EXCLUSIVOS ✨ 🔹 Títulos Exclusivos PLACA JONNY THUG Pierc do Void Pierc do Renak - Necessário Craftar Apenas Uma Vez Pode ser utilizado em TODOS os personagens ⚖️BALANCEAMENTO CONFORME VOCÊS PEDEM ⚖️ No Chase Heroes o feedback dos jogadores realmente importa. Estamos constantemente ajustando personagens, skills e conteúdos para deixar o servidor mais divertido e equilibrado. DISCORD : CLICA AQUI Atraves do Discord você tem acesso ao Cadastro e Download
    1 ponto
  31. 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
    1 ponto
  32. E todo mundo agora vai poder ser uma delas. Source do wHook: [Hidden Content] Compilação, uso ou demais dúvidas? Consultem alguma IA, não vou responder. Scan? Não possui executáveis no link. Pode até ser fanfic, mas o que tem de servidor por aí adicionando PC em lista de exclusão do anti-virus do windows o WYD.exe ou ClientPatch.dll pra tirar print de tela e "DEMAIS FINALIDADES" tem vários, fiquem espertos ai inclusive quem usa banco ou outras coisas junto com wyd private. Eu não jogaria um servidor sem compilação assinada digitalmente pelo dono do servidor ou que precise adicionar excessão em anti-virus. Se fosse vcs faria o mesmo, pois se fosse realmente necessário burlar isso também seria necessário fazer todos esses processos no Global, acordem.
    1 ponto
  33. Aquela época foi muito insana kkkk. Eu hackei muita gente com ele.. Coloquei um Keylogger e fiz a festa bem no começo do whook. Galera usava mesmo com KL pois ele funcionava normalmente, porém tinha surpresa. Eu analisava a conta e via se realmente compensava entrar, esperava a pessoa desligar o PC. E entrava com tudo. Mesmo sem saber a senha numérica eu burlava rapidinho(com internet discada, pois não tinha banda larga ainda), pois o KL só pegava oque a pessoa digitava no teclado. Enfim foi muito doido. Muita conta do Malech até dos top 1 rodou. E não levei ban, pois fazia uns negocio doido também para burlar. Criava conta fake com nome estranhos e depois apagava. Sumia os rastreio da conta e do personagem e também dos trade in game. Enfim era doido mesmo, sem comentário.
    1 ponto
  34. Download banco de dados : [Hidden Content] Download site : [Hidden Content] banco de dados: [Hidden Content] do site: [Hidden Content] Ss :
    1 ponto
  35. Olá WC, Conforme pedidos no meu último post do cheat de Grand Chase Season 2 Estou trazendo esse trainer para a Season Chaos. Espero que ajude vocês nas missões! Como Utilizar: 1- Abra o Grand Chase e entre no servidor 2- Abra o "Grand Chase Chaos Trainer by ObscureArt" como Administrador 3- Agora é só ativar as funções Funções: Multiplicador de Dano / Defesa: 1- Marcar a caixa para ativar o multiplicador 2- Colocar um número no edit "multiplicador" e apertar ENTER para aplicar 3- Clicar nos botões "Mais Dano" / "Menos Dano" Aumenta o multiplicador de 1 em 1 Dano base = 1 1 = 10 dano 2= 20 dano 3= 30 dano e assim por diante... Selecionar um número alto ex: 20000 resultará em One Hit. Perfect Mission - Atualiza a porcentagem de combo para 100% ao terminar o estágio, possibilitando +EXP +GP no fim da partida. (Similar ao RANK SS no Classic) Poções Infinitas - Atualiza e trava em 99 todas poções equipadas. (Desaparece ao relogar) Poções Zero Cooldown - Zera o Cooldown das poções. possibilitando *HP / MP Infinito* Monster Vac - Trava a posição de todos monstros do mapa em um ponto fixo. Valor fixado não foi testado em todas missões. IMAGEM ILUSTRATIVA: [Hidden Content] [Hidden Content] SCAN: VirusTotal Sobre detecções: Seu anti virus pode detectar um HackTool como arquivo perigoso, isso é normal. Edit: Trainer Atualizado
    1 ponto
  36. Olá! Alguns aqui devem me conhecer, vez ou outra eu apareço mostrando algum servidor privado de GRAND CHASE que eu achei por ai mas hoje, pretendo fazer uma lista com TODOS os servidores online atualmente que eu achei garimpando internet a fora. Antes de começarmos, deixo avisado aqui que todos os servidores dessa lista foram testados por esse quem vos fala, logo, todos estão livres de qualquer tipo de virus! também aviso que, por mais que eu tenha visitado todos os servidores divulgados abaixo, vou deixar apenas informações básicas, pra não me estender muito, o resto fica por sua conta. chega de enrolação, bora pra ação CHASE HISTORY (SEASON V) provavelmente o mais conhecido dentre os servidores privados de GRAND CHASE Personagens: ELESIS ao UNO Quantidade de Players: Média/Baixa LINKS: Site Fórum Telegram Chase Hope (Season Chaos) Sim, finalmente um servidor SEASON CHAOS online pra quem sente falta dessa época lembrando que o Chase Hope existiu há 2 anos atrás e as contas foram mantidas, se você jogava antigamente pode usar sua conta do Chase Hope normalmente. Personagens: ELESIS ao LUPUS Quantidade de Players: Baixa LINKS: Site Fórum Discord Chase Revenant (Season 6) atualmente o servidor com mais recompensas pra quem é ativo no discord (sério, tem uns 10 tokens permanentes pra resgatar, desfrute) também conta com um continente totalmente novo intitulado "Rime" Personagens: ELESIS ao UNO (+ Peryton) Quantidade de Players: Média/Baixa LINKS: Site Discord Ernasis Online (Season V) um servidor gringo de GRAND CHASE atualmente na season V, mas é só isso mesmo, não tenho muito o que falar se você não mora no brasil, talvez deva considerar. Personagens: ELESIS ao UNO Quantidade de Players: Baixa LINKS: Site Discord Agnesia Online (Season V) antigo GRAND CHASE PRIME, mas eu resumiria ele como uma versão brasileira do Ernasis Online, apenas isso mesmo Personagens: ELESIS ao UNO Quantidade de Players: Baixa LINKS: Site Discord Chase Fantasy (Season 6) na minha HUMILDE opinião, o melhor servidor atualmente, o tanto de conteúdo inédito desse servidor é INACREDITAVEL e só visitando pra você entender conta com um continente totalmente novo, aumento do nivel maximo, novos personagens, sistemas de recompensar e muito mais Personagens: ELESIS ao UNO (+ PERYTON, ALICE) Quantidade de Players: Média/Alta LINKS: Site Fórum Discord Chase Remains (Season 3) sim, é isso mesmo, um servidor season 3 online atualmente recentemente migrado da season 2 pra 3, Chase Remains conta com algumas novidades dessa temporada, mas com o nível de dificuldade que você esperaria das seasons antigas. Personagens: ELESIS a MARI Quantidade de Players: Baixa/Média LINKS: Site Discord Chase Origin (Season 6) provavelmente o servidor que bate de frente com o Chase Fantasy em questão de conteúdo, mas com algumas diferenças uma coisa bem diferente dos outros servidores, é que no Origin todos os personagens contam com suas versões de missões GP, incluindo personagens novos como uno, peryton e alice ou seja, nada de precisar comprar slots de personagens, algo que todos os servidores poderiam adotar! Personagens: ELESIS ao UNO (+PERYTON, ALICE) LINKS: Site Fórum Discord Chase GO (Season 6) o último servidor lançado até o momento, que basicamente adaptou algumas coisas do classic, mas com grande parte do conteúdo sendo original deles. prometendo novos conteúdos (mas espero que cumpra) como 2 novos personagens, intitulados ASVERO e KAEL (tirados do próprio post aqui na webcheats), caso eu esteja errado, podem me corrigir nos comentários. Personagens: ELESIS a DECANEE Quantidade de Players: Baixa/Média LINKS: Site Discord Rizer Online (MOBILE) lembra da surpresa citada no titulo? pois é, Rizer Online promete uma experiência similar do GRAND CHASE de PC diretamente no seu Smartphone deixarei linkado um vídeo no youtube demonstrando um pouco do que ja foi feito lembrando que esse projeto está em sua fase inicial, então muita coisa deve ser melhorada/implementada. LINKS: Vídeo demonstração Discord enfim, foi longo, trabalhoso, mas foi tudo que eu consegui achar, espero que tenha lhe servido de algo se possivel, deixa um like no tópico, não custa nada do seu tempo, mas me motiva a trazer mais listas como essa. caso eu tenha esquecido de algum servidor, fique a vontade para cita-lo abaixo, que testarei e colocarei na lista caso seu servidor esteja na lista e por algum você quer que seja removido da mesma, basta comentar também e assim será feito até uma próxima, chaser!
    1 ponto
  37. [Hidden Content] 📝 Descrição: Olá, desenvolvedores WYD! 🎉 Chegou a Parte 2 do tutorial mais aguardado: como implementar no código fonte as modificações para que seus painéis e botões toggle criados na Parte 1 funcionem perfeitamente no cliente do jogo! 🛠️💻 Neste vídeo, você vai aprender passo a passo como editar a source do cliente WYD para integrar elementos de UI personalizados. Tudo explicado de forma clara e detalhada, mesmo se você for iniciante em programação! 📌 O que você vai aprender neste vídeo (Parte 2): ✅ Introdução à estrutura do código fonte do cliente WYD. ✅ Localização dos arquivos responsáveis pela interface (UI). ✅ Modificação das funções de painéis e botões. ✅ Implementação da lógica toggle (ligar/desligar) para botões. ✅ Correção de bugs comuns e testes de integração. 🔧 Download do Tutorial Completo em PDF (Google Drive): 📥 [Hidden Content] Vírus Total do Tutorial: [Hidden Content] ⚡ Ferramentas Necessárias (já mencionadas na Parte 1): 🔗 Links Úteis da Parte 1: 🚀 (Parte 1): COMO CRIAR PAINÉIS e BOTÕES TOGGLE NO WYD | Design Profissional para Seu Server! 🎮✨ 🎬▶️ Assita no Youtube 💬 Dúvidas? Deixe nos comentários! Respondo pessoalmente e pode virar conteúdo para a Parte 3! 🔥 Não esqueça de curtir, compartilhar e se inscrever! Isso ajuda demais o canal!
    1 ponto
  38. Hello everyone! We are the BreachLock team, we work with private suppliers, every day we post 68k lines of free samples, there is a wide variety of goods, take a look! We use a professional approach to our clients, and we also have a 24/7 support line for all issues of interest! contact admin: @BreachLock_Official Channel: BreachLock_free_channel - telegram
    1 ponto
  39. Gostaria de comprar seu curso, más está indisponivel !!! :[Hidden Content]
    1 ponto
  40. ue tu não estava alugando servidor meses passados e não sabe arrumar um bug simples ? '-'
    1 ponto
  41. Boa tarde Pessoal, alguem tem alguma dica como faz para corrigir os traje de montaria. Eu ajustei o codigo na UseItem mais mesmo assim nao acontece nda quando clica com direito em cima do item. if (item->sIndex >= 4500 && item->sIndex <= 4549) { int Traje = item->sIndex - 4500 + 22; for (int i = 1; i < 16; i++) { if (pUser[conn].Keys[i] == 0) { pUser[conn].Keys[i] = Traje; SendClientMessage(conn, "Traje Salvo com Sucesso!"); break; } if (pUser[conn].Keys[i] == Traje) { SendClientMessage(conn, "Esse Traje já foi utilizado"); SendItem(conn, m->SourType, m->SourPos, item); break; } if (i == 15 && pUser[conn].Keys[i] != 0) { SendClientMessage(conn, "Não há slots de trajes disponíveis"); SendItem(conn, m->SourType, m->SourPos, item); return; } } SendKeys(conn); if (amount > 1) BASE_SetItemAmount(item, amount - 1); else memset(item, 0, sizeof(STRUCT_ITEM)); return; SendItem(conn, m->SourType, m->SourPos, &pMob[conn].MOB.Carry[m->SourPos]); }
    1 ponto
  42. DOWNLOAD: [Hidden Content]
    1 ponto
  43. CHASE HOPE - SEASON ETERNAL: SERVIDOR ONLINE ! Site para Download e Cadastro: [Hidden Content] Fórum do Servidor: [Hidden Content] Discord do Servidor: [Hidden Content] Servidor conta com a turma da Elesis até o Veigas, vivendo toda a nostalgia das antigas, se re-encontrando com o pessoal do "PvP" se divertindo acima de tudo, o servidor foi configurado com status dos monstros e boss da season 2 para garantir uma experiência OLD e nada fácil e enjoativo, o servidor também conta com visuais exclusivos, missões novas futuras, sistema conquista Speed Run, títulos personalizados e tudo que tem direito ! ta esperando o que para viver tudo isso novamente? abaixo deixarei algumas imagens como degustação do melhor servidor season Eternal do momento ! Vídeo Demonstrativo da RAID: "Antigo Castelo (Season 1)" Vídeo Demonstrativo da Missão: "O Eclipse" ABAIXO ALGUMAS SCREENSHOTS DO SERVIDOR: Mapa repleto de nostalgia com as missões originais. Missões de Evento com rotação e drops exclusivos. Missões de Eventos com novas dificuldades e drops diferenciados. Novas Raids como "O Antigo Castelo" que traz uma dificuldade maior aqueles que gostam de um desafio e nostalgia da melhor missão da Season 1! Novos Títulos para evento de desafios como "Speed Run" onde você atingi os requísitos do evento no discord e escolhe uma imagem qualquer sua para usar um título totalmente personalizado! Vários Pacotes Exclusivos criados pela nossa equipe de Modeladores. Vários Visuais novos para você combinar e criar seu próprio estilo. Um lista imensa de novos mascotes para você se divertir! Espero que tenha gostado de tudo que viu e queira conhecer nosso servidor. Te espero em breve guerreiro, até mais ! Site para Download e Cadastro: [Hidden Content] Fórum do Servidor: [Hidden Content] Discord do Servidor: [Hidden Content]
    1 ponto
  44. kkkk , 50 reais ? ta doido , Primeiro amigo meu alugo base desse yokoshen e do brum so se ferrou , pagava pra desbugar as coisas , tenho dó do mulek , base tinha mais bugs do que tudo , e maoria das coisas visual , outra eu tenho sim essa base e veio de um desses progamador seu ai que coloca desenhos em cliente , ate o banco de dados e igual o meu sobre os mobs e tudo kkkkk confia
    1 ponto
  45. Funcional em vários mu online [Hidden Content] Scan VirusTotal (Arquivo Compactado) [Hidden Content]
    1 ponto
  46. Salve salve comunidade! Dei uma atualizada no meu curso de desenvolvimento de cheats do zero para qualquer jogo e coloquei um módulo EXCLUSIVO de priston tale, vejam por cima o que vocês vão aprender a fazer em QUALQUER servidor: Além disso, são + de 60 aulas diretamente focadas em fazer você criar seus próprios cheats! Para aprender, basta clicar AQUI
    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.