Ir para conteúdo
Faça parte da equipe! (2024) ×

Os Melhores

Conteúdo popular

Mostrando conteúdo com a maior reputação em 25-04-2024 in todas as áreas

  1. // TMSrv 7.56 004C1FC0 | TMSrv 7.57 00573A30 void ProcessRanking() { if (RankingTime > 0) { --RankingTime / 5; if (!(RankingTime % 5)) { int kRank1 = 0; int kRank2 = 0; for (int i = 1; i < MAX_USER; ++i) { if (pUser[i].Mode == USER_PLAY && pMob[i].MOB.CurrentScore.Hp > 0) { int TargetX = pMob[i].TargetX; int TargetY = pMob[i].TargetY; if (TargetX >= kRanking1X && TargetX <= kRanking2X && TargetY >= kRanking1X && TargetY <= kRanking2Y) { if (RankingProcess == 1) { if (i == Ranking1) ++kRank1; if (i == Ranking2) ++kRank2; } else { if (pMob[i].MOB.Guild == Ranking1) kRank1 += pMob[i].MOB.CurrentScore.Level; if (pMob[i].MOB.Guild == Ranking2) kRank2 += pMob[i].MOB.CurrentScore.Level; } } } } if (!kRank1 || !kRank2) RankingTime = 0; } if (RankingTime < 60) { SendDamage(142, 4007, 195, 4042); SendDamage(142, 4046, 195, 4082); SendEnvEffect(142, 4007, 168, 4018, 32, 0); SendEnvEffect(142, 4071, 168, 4082, 32, 0); SendEnvEffect(142, 4019, 168, 4030, 32, 0); SendEnvEffect(142, 4059, 168, 4070, 32, 0); SendEnvEffect(142, 4031, 168, 4042, 32, 0); SendEnvEffect(142, 4047, 168, 4058, 32, 0); SendEnvEffect(168, 4007, 195, 4018, 32, 0); SendEnvEffect(168, 4071, 195, 4082, 32, 0); SendEnvEffect(168, 4019, 195, 4030, 32, 0); SendEnvEffect(168, 4059, 195, 4070, 32, 0); SendEnvEffect(168, 4031, 195, 4042, 32, 0); SendEnvEffect(168, 4047, 195, 4058, 32, 0); } else if (RankingTime < 120) { SendDamage(142, 4007, 195, 4034); SendDamage(142, 4055, 195, 4082); SendEnvEffect(142, 4007, 168, 4018, 32, 0); SendEnvEffect(142, 4071, 168, 4082, 32, 0); SendEnvEffect(142, 4019, 168, 4030, 32, 0); SendEnvEffect(142, 4059, 168, 4070, 32, 0); SendEnvEffect(168, 4007, 195, 4018, 32, 0); SendEnvEffect(168, 4071, 195, 4082, 32, 0); SendEnvEffect(168, 4019, 195, 4030, 32, 0); SendEnvEffect(168, 4059, 195, 4070, 32, 0); } else if (RankingTime < 180) { SendDamage(142, 4007, 195, 4019); SendDamage(142, 4070, 195, 4082); SendEnvEffect(142, 4007, 168, 4018, 32, 0); SendEnvEffect(142, 4071, 168, 4082, 32, 0); SendEnvEffect(169, 4007, 195, 4018, 32, 0); SendEnvEffect(169, 4071, 195, 4082, 32, 0); } } if (RankingTime <= 0) { int nRank1 = 0; int nRank2 = 0; int mScore1 = 0; int mScore2 = 0; int TotalScore1 = 0; int TotalScore2 = 0; for (int j = 1; j < MAX_USER; ++j) { if (pUser[j].Mode == USER_PLAY && pMob[j].MOB.CurrentScore.Hp > 0) { int TargetX = pMob[j].TargetX; int TargetY = pMob[j].TargetY; if (TargetX >= kRanking1X && TargetX <= kRanking2X && TargetY >= kRanking1X && TargetY <= kRanking2Y) { if (RankingProcess == 1) { if (j == Ranking1) ++nRank1; if (j == Ranking2) ++nRank2; } else { if (pMob[j].MOB.Guild == Ranking1) nRank1 += pMob[j].MOB.CurrentScore.Level; if (pMob[j].MOB.Guild == Ranking2) nRank2 += pMob[j].MOB.CurrentScore.Level; } if (pMob[j].MOB.Equip[13].sIndex == 769) { if (j == Ranking1) mScore1 += pMob[j].MOB.Equip[13].stEffect[0].cValue; if (j == Ranking2) mScore2 += pMob[j].MOB.Equip[13].stEffect[0].cValue; } } } } nRanking1[NAME_LENGTH - 1] = 0; nRanking1[NAME_LENGTH - 2] = 0; nRanking2[NAME_LENGTH - 1] = 0; nRanking2[NAME_LENGTH - 2] = 0; TotalScore1 = nRank1 + mScore1; TotalScore2 = nRank2 + mScore2; for (int k = 1; k < MAX_USER; ++k) { if (pUser[k].Mode == USER_PLAY) { int isRank = false; if (RankingProcess == 1) { if (k == Ranking1 || k == Ranking2) isRank = true; } else { if (pMob[k].MOB.Guild == Ranking1 || pMob[k].MOB.Guild == Ranking2) isRank = false; } if (isRank) { if (TotalScore1 == TotalScore2) { SendClientSignalParm(k, ESCENE_FIELD, _MSG_StartTime, 0); snprintf(Buffer, 0x80u, g_pMessageStringTable[_SS_S_S_Draw], nRanking1, nRanking2, TotalScore1, TotalScore2); SendClientMessage(k, Buffer); } else { SendClientSignalParm(k, ESCENE_FIELD, _MSG_StartTime, 0); if (TotalScore1 > TotalScore2) snprintf(Buffer, 0x80u, g_pMessageStringTable[_SS_S_WinBy_S], nRanking1, nRanking2, TotalScore1, TotalScore2); else snprintf(Buffer, 0x80u, g_pMessageStringTable[_SS_S_WinBy_S], nRanking2, nRanking1, TotalScore1, TotalScore2); SendClientMessage(k, Buffer); } } } } MSG_MessageDBRecord stDBRecord; memset(&stDBRecord, 0, sizeof(MSG_MessageDBRecord)); stDBRecord.Type = _MSG_MessageDBRecord; stDBRecord.ID = 0; stDBRecord.Size = sizeof(MSG_MessageDBRecord); ClearPocessRanking(); } } // TMSrv 7.56 004C3A90 | TMSrv 7.57 00575300 void ClearPocessRanking() { RankingProcess = 0; RankingTime = 0; Ranking1 = 0; Ranking2 = 0; nRanking1[0] = 0; nRanking2[0] = 0; ClearAreaTeleport(kRanking1X, kRanking1Y, kRanking2X, kRanking2Y, 2572, 1752); }
    3 pontos
  2. Pack Grátis - Aline Faria & Bunniemai1591 Aline Faria Spoiler Download Pack: [Hidden Content] Bunniemai1591 Spoiler Download Pack: [Hidden Content]
    3 pontos
  3. Print Screen Tutorial em Escrita Execute o Loader Como administrador Vai perguntar em qual disco o seu CrossFire está instalado, e você informa se é no disco D ou no C e da ENTER Depois vai perguntar se você deseja executar o Cheat, e você da S e da ENTER Após isso ele vai aparecer a mensagem "Aguardando o CrossFire" e você abre o CrossFire E pronto, o cheat será injetado após 5 segundos, mantenha o seu crossfire aberto. WALLHACK É AUTO ON Bom jogo Download/Scanner Download: [Hidden Content] Virustotal: https://www.virustotal.com/gui/file-analysis/MzBkZjFjZjAyYzVhOWJlNWI4ZTNhZmVhODk1NDRmNDE6MTcxMzU1NzM4Nw==
    3 pontos
  4. UPDATE MARÇO/2024 INTRODUÇÃO Iniciamos o fórum para controlar as vendas dos cheats, todas as noticiais e novidades são postadas lá. Fórum exclusivo para VIP, então se tem interesse em adquirir entre: Forums - Fox Cheats FUNÇÕES AUTO KILL (FUNCIONAL EM EVENTOS E PORTAL) 1 HIT KILL HP HACK (VIDA FICA 500K E NÃO DIMINUI) MP HACK (JÁ INICIA PARTIDA CHEIO, SEM NECESSIDADE DE HIT) TIME FREEZE (COLOCA O TEMPO DA PARTIDA EM 12'59) RANK SS ITEM VAC (TODOS OS ITENS DROPAM NO MESMO LUGAR) MONSTER VAC (TODOS OS MOBS SPAWNAM NO MESMO LUGAR) FLY HACK (AO SEGURAR A TECLA CTRL E PULAR, VOCÊ CONSEGUE VOAR) NO CD (REMOVE O COOL DOWN DAS SKILLS STEALTH (OS MONSTROS NÃO TEM ATACAM) ITEM SPAWN (TODOS OS ITENS DO MAPA SPAWNAM) T. JULGAMENTO (AUMENTA TODOS SEUS ATRIBUTOS) CRITICAL (TODO DANO QUE VOCÊ FIZER SERÁ CRITICO) CONTINENTE HACK - PERMITE VOCÊ ACESSAR QUALQUER CONTINENTE (MESMO QUE NÃO O TENHA LIBERADO) ROOM HACK - PERMITE VOCÊ ACESSAR QUALQUER MISSÃO (MESMO QUE NÃO CUMPRA OS REQUISITOS) TIME FREEZE PROFECIA - DEIXA O TEMPO EM 22 MINUTOS SPEED HACK - AUMENTA A VELOCIDADE DO JOGO EXP HACK UP DO 1 AO 90 EM 5 MINUTOS AUTO BOSS - TE LEVA DIRETO AO BOSS DA MISSÃO BERKAS SOLO - PERMITE JOGAR BERKAS SOLO DEMONSTRAÇÃO SCREEN SHOTS PREÇOS 30 Dias -> R$30,00 90 Dias -> R$70,00 ONDE COMPRAR ? Nosso Site -> Forums - Fox Cheats Link da Loja -> Loja - FoxCheats Nosso Discord : Fox Cheats (discord.com) COMO USAR Abra seu Grand Chase Na tela de Servidores abra o FREE GCH.exe Clique em Injetar Pronto, o menu estará aberto dentro do jogo! QUALQUER PROBLEMA NO DOWNLOAD, DESATIVE SEU ANTI-VÍRUS OBS : PARA USAR O MP HACK, BASTA ATIVAR ANTES DE ENTRAR NA MISSÃO FREE VERSION [Hidden Content] https://www.virustotal.com/gui/file-analysis/ODYxMTVlMDkzMjg3ODVhN2IxMTg0YTU5YTEzYjJjY2Y6MTYzMjM0MTU4NQ==
    2 pontos
  5. 100% ATUALIZADO(ABRIL 2024) INTRODUÇÃO A Fox com muito orgulho apresenta seu produto para Grand Chase Classic (Steam/Nexus/Megaxus/Epic Games/etc) Acesse nosso site e tenha acesso à mais produtos exclusivos: Forums - Fox Cheats FUNÇÕES AutoKill - mata todos os monstros da fase Item Vac - puxa todos os itens dropados para o seu personagem STATUS SS - deixa o Status do seu personagem SS permitindo adentrar em missões que ele não atenda os requisitos [ EX : Berkas, VOID/Vazio,etc] Skip Dialog - pula todos os diálogos automaticamente Item Hide - oculta todos os drops para não encher seu inventário de itens fracos/inuteis Level Hack [VOID] - permite que seu personagem entre na missão VAZIO/VOID mesmo que ele não tenha o level necessário Auto Kill Delay - mata todos os monstros da fase mais lentamente Monster VAC - Puxa todos os mobs para um determinado local do mapa. Auto Boss - Ao entrar na missão você vai direto para o BOSS. Item Spawn - Dropa todos os itens que seriam dropados naquela dungeon INTEIRA. Damage Mob - Com essa função você consegue escolher quanto de dano o mob irá lhe causar. Stage Hack - Completa a fase sozinho, de acordo com os delays que você programar. Speed Hack - Aumenta a velocidade do jogo de acordo com o multiplicador desejado. Rank Select - Define qual é o seu rank naquela dungeon (vocÊ pode escolher a pontuação para ir de F até SS) Time Count - O tempo da missão irá começar contar de 10'43 Time Freeze - O Tempo da missão irá ficar parado em 00:00 Hits Count - Falsifica os logs da partida, com você selecionando quantos hits causou na partida Combo Count - Você seleciona qual foi o combo mais alto que deu na partida, além de falsificar os logs da partida também completa AUTOMATICAMENTE as missões de combo ATK Back Count - Você seleciona quantos ataques por trás realizou na missão, além de falsificar os logs da partida também completa AUTOMATICAMENTE as missões de ataque por trás Hits Taken Count - Falsifica os logs da partida com você selecionando quantos hits sofreu na partida Damage Count - Falsifica os logs da partida com você selecionando quanto de dano causou na partida HP Infinity - Deixa seu HP Infinito MP FULL - Deixa seu MP sempre cheio CRITICAL 100% - Seus ataques sempre serão criticos Furia Infinita - Os personagens que possuem furia terão ela infinita Potion CD - Remove o cooldown das poções Fly Hack - Permite seu personagem voar NO PVP - deixa o dano do inimigo no PVP em 1. CoolDown - Cooldown das skills é 0. Pet MP - Deixa o MP do pet sempre cheio Predict Drop - Permite saber o'que irá dropar na missão só de entrar nela, decidindo assim se a recompensa vale o esforço ou se vale a pena quitar pra trocar o drop Speed Farm - Permite carregar uma missão bem mais fácil no lugar da que você esta jogando, permitindo coletar titulos/abrir todos os mapas muito mais rapido! Auto Title - Starta e completa automaticamente as missões BYPASS ANTICHEAT EMBUTIDO - VOCÊ CONSEGUE JOGAR COM MACROS, COM CHEAT ENGINE ABERTO, WPE PRO E MUITO MAIS QUE O JOGO BLOQUEIA MULTI CLIENT EMBUTIDO - VOCÊ CONSEGUE ABRIR QUANTOS GRANDCHASES O SEU COMPUTADOR AGUENTAR SEM MAQUINAS VIRTUAIS OU COISA DO TIPO! SCREEN SHOTS PREÇOS 30 Dias -> R$33,00 ONDE COMPRAR ? Nosso Site -> Forums - Fox Cheats Nosso Discord : https://discord.gg/wQy3zgBJPU COMO USAR Abra o cheat Abra o jogo Seja feliz! DOWNLOAD/SCAN CASO QUEIRA SUPORTE DEDICADO, COM MEMBRO DA EQUIPE INDO EM ANYDESK E TUDO MAIS; AI VOCÊ COMPRA O PRODUTO VIP. [Hidden Content] SCAN : VirusTotal - File - 6ddb4a159c634bc79841a30a3a1238804e2d20e6624e55651705d37dee1e83f6
    2 pontos
  6. Como muitos de vocês já me conhecem, tenho tido o prazer de colaborar com diversos projetos na criação de sistemas inovadores. Agora, estou estou abrindo espaço para esta área que pode elevar ainda mais a experiência dos jogadores. As imagens apresentadas em cada seção exemplificam alguns dos serviços que já ofereci e demonstram modelos que podem ser adicionados. Serviços Oferecidos: Meus serviços incluem, mas não se limitam a: • Criação de Novos Mapas Temáticos • Armas • Novos Objetos Criação de Novos Mapas Temáticos Podendo ser para Datas Comemorativas, Eventos, Sistemas... Armas Introdução de novas Armas no jogo a qual podem ser Personalizadas. Novos Objetos Estátuas/Monumentos/Pôsteres/Banners o céu é o limite... Se você está pronto para levar seu projeto para o próximo nível, entre em contato para discutir suas ideias. CONTATO: [Hidden Content]
    1 ponto
  7. Print Screen Tutorial em Escrita Execute o Loader Como administrador Vai perguntar em qual disco o seu CrossFire está instalado, e você informa se é no disco D ou no C e da ENTER Depois vai perguntar se você deseja executar o Cheat, e você da S e da ENTER Após isso ele vai aparecer a mensagem "Aguardando o CrossFire" e você abre o CrossFire E pronto, o cheat será injetado após 5 segundos, mantenha o seu crossfire aberto. INSERT ABRE E FECHA MENU Bom jogo Download/Scanner Download: [Hidden Content] Virustotal: https://www.virustotal.com/gui/file-analysis/ZGZmMDY3MzVjMTIyNjI4ZjY4MGU0MDVkMDBjODQwOGE6MTcxMzU1NzQ5MA==
    1 ponto
  8. 1 ponto
  9. Bom após anos longe deste amado forum, voltei para mostrar um dos meus trabalhos recentes. Trata-se deste bot, no Telegram, para assistir a XVideos Red, Tufos, Brazzers etc.. Com o bot você consegue assistir de forma rápida e fácil os vídeos do XVideos Red, Bangbros, Brazzers, Tufos E em breve vou adicionar mais site para bot. O bot está no Telegram, então para usar o bot, você tem que ter uma conta no Telegram. No bot Você começa com 5 créditos, mas você consegue mais créditos de graça ou pagando, a escolha é sua. #### A imagem mostra como o bot funciona, basta você enviar a URL, do vídeo para o bot, e ele vai te gerar um link para assistir. Aqui outro exemplo do bot funcionando com tufos. #### Tutorial de como usar o bot, e o site para encontrar os vídeos do XVídeos Red Clique aqui, para ver o tutorial #### ## Lista de sites suportados brazzers.com xvideos.red tufos.com.br bangbros.com Em breve essa lista vai aumentar, pois já estou trabalhando pra isso. #### [Hidden Content]
    1 ponto
  10. • Belle DelphinePack Grátis - Belle Delphine • • Download Pack: [Hidden Content]
    1 ponto
  11. TMSecurity.h #pragma once #include <cstdint> // Para tipos de dados padrão #include <cassert> // Para assert class TMSecurity { public: TMSecurity(); virtual ~TMSecurity(); char GetKeyword(int pos); char GetPasswordKey(); void InitializeKeys(); public: char GameKeyWords[512]; char PasswordKey; }; void MSHDecrypt(unsigned int* v, unsigned int* k); void MSHEncrypt(unsigned int* v, unsigned int* k); char* MSHEncDec(int Mode, const char* filename, char* ptr, int size); unsigned int* getkey(const char* file); TMSecurity.cpp #include "pch.h" #include "TMGlobal.h" const unsigned int DELTA = 0x9E3779B9; //0090AA50 TMSecurity::TMSecurity() //Função Ok { memset(GameKeyWords, 0, 512); PasswordKey = 180; //-76 } //0090AAF0 TMSecurity::~TMSecurity() //Função Ok { memset(GameKeyWords, 0, 512); } //0090AB90 char TMSecurity::GetKeyword(int pos) //Função Ok { char result = 0; if (GameKeyWords[pos]) result = GameKeyWords[pos]; return result; } //0090AC10 char TMSecurity::GetPasswordKey() //Função Ok { return PasswordKey; } //0090AC70 void TMSecurity::InitializeKeys() //Função Ok { std::string fileName = "Conf/VibrantGames.bin"; FILE* fp = NULL; if(!fopen_s(&fp, fileName.c_str(), "rb")) { fseek(fp, 0, 2); int file_size = ftell(fp); rewind(fp); char* buffer = (char*)malloc(file_size); if (buffer) { fread(buffer, 1, file_size, fp); fclose(fp); for (int i = 0; i < file_size; i++) buffer[i] ^= PasswordKey; char* p2 = MSHEncDec(1, (char*)fileName.c_str(), buffer, file_size); if (p2) { if (file_size > 512) file_size = 512; memcpy(&GameKeyWords, p2, file_size); free(p2); free(buffer); } } } else MessageBoxA(0, "Please, reinstall the game, data corrupted!", "Vibrant Games", 0); } //00950210 char* MSHEncDec(int Mode, const char* filename, char* ptr, int size) //Função Ok { if (!filename || !ptr || !size) return NULL; const char* file = filename; for (int i = strlen(filename) - 1; i > 0; i--) { if (filename[i] == '/' || filename[i] == '\\') { file = &filename[i + 1]; break; } } int blocks = size / 8; char* out = (char*)malloc(size); if (!out) return NULL; unsigned int* key = getkey(file); if (!key) { free(out); return NULL; } unsigned char* pout = reinterpret_cast<unsigned char*>(out); unsigned int v[2]; for (int i = 0; i < blocks; i++, ptr += 8, pout += 8) { memcpy(v, ptr, sizeof(v)); if (!Mode) MSHEncrypt(v, key); else MSHDecrypt(v, key); memcpy(pout, v, sizeof(v)); } SecureZeroMemory(key, 4 * sizeof(unsigned int)); free(key); return out; } //00950080 void MSHDecrypt(unsigned int* v, unsigned int* k) //Função Ok { unsigned int v0 = v[0]; unsigned int v1 = v[1]; unsigned int sum = DELTA * 32; for (int i = 0; i < 32; i++) { v1 -= ((v0 << 4) + k[2]) ^ (v0 + sum) ^ ((v0 >> 5) + k[3]); v0 -= ((v1 << 4) + k[0]) ^ (v1 + sum) ^ ((v1 >> 5) + k[1]); sum -= DELTA; } v[0] = v0; v[1] = v1; } //00950440 void MSHEncrypt(unsigned int* v, unsigned int* k) //Função Ok { unsigned int v1 = v[0]; unsigned int v0 = v[1]; unsigned int sum = 0; for (int i = 0; i < 32; i++) { sum += DELTA; v0 += ((v1 << 4) + k[0]) ^ (v1 + sum) ^ ((v1 >> 5) + k[1]); v1 += ((v0 << 4) + k[2]) ^ (v0 + sum) ^ ((v0 >> 5) + k[3]); } v[0] = v0; v[1] = v1; } //00950920 unsigned int* getkey(const char* file) //Função Ok { unsigned int* key = (unsigned int*)malloc(4 * sizeof(unsigned int)); if (!key) return NULL; int len = strlen(file); char* newFile = (char*)malloc(len); if (!newFile) { free(key); return NULL; } for (int i = 0; file[i] && i < len; i++) newFile[i] = tolower(file[i]); memset(key, (13 * len) + 73, 4 * sizeof(unsigned int)); for (int j = 0; j < len; j++) key[j % 4] ^= newFile[j]; free(newFile); return key; } BaseDef.cpp //0067F240 bool BASE_IsEncrypted(const char* file) //Função Ok { FILE* fp = fopen(file, "rb"); if (!fp) return false; bool encrypted = false; int code[3]{}; if (fread(code, 1, 4, fp) == 4) { if(strstr(file, ".msa") || strstr(file, ".vgo")) { if (code[0] && code[0] != 322 && code[0] != 274) encrypted = true; } else if (strstr(file, ".msh") || strstr(file, ".vgm")) { if (code[0]) encrypted = true; } else if (strstr(file, ".wys") || strstr(file, ".vgt")) { if (code[0] && code[0] != 0x30315357 && code[0] != 0x30315457) encrypted = true; } else if (strstr(file, ".wyt") || strstr(file, ".vgi")) { if (code[0] && code[0] != 0x30315457 && code[0] != 0x30315357) encrypted = true; } } fclose(fp); return encrypted; } Criem uma variaval global para a classe TMSecurity, nome original g_pSecurityManager A g_pSecurityManager->InitializeKeys() dever ser chamada dentro da NewApp A função de decode é chamada nesses locais //00690380 int CMesh::LoadMesh(char* file) //Função Ok //0075E550 int TextureManager::LoadUITexture(int nIndex, int nSrcIndex) //Função Ok //0075C110 int TextureManager::LoadEffectTexture(int nIndex) //Função Ok //0075D940 int TextureManager::LoadModelTexture(int nIndex) //Função Ok //0075CCA0 int TextureManager::LoadEnvTexture(int nIndex) //Função Ok //008E3B10 int TMMesh::LoadMsa(const char* szFileName) //Função Ok //00697C90 char* CPSock::ReadMessage(int* ErrorCode, int* ErrorType) //Função Ok //00697340 int CPSock::AddMessage(char* pMsg, int Size, int FixedKeyWord) //Função Ok A implementacao delas é com vcs
    1 ponto
  12. Não altere o email ou a senha para que todos possam usar. Sem garantias, não testei nenhuma, mas me informe se não funcionar. [Hidden Content]
    1 ponto
  13. Pack Grátis - Nati Sweetmlr & Mariana Ladeira & Emanuelly Raquel Nati Sweetmlr Download Pack: [Hidden Content] Mariana Ladeira Download Pack: [Hidden Content] Emanuelly Raquel Download Pack: [Hidden Content]
    1 ponto
  14. ESSE CHEAT FAZ PARTE DO PROJETO CHEAT SOB DEMANDA Olá! Abaixo segue cheat pro WARTALE!!!! Download: [Hidden Content] Scan: https://www.virustotal.com/gui/file/eb8d1a774d77779a7c0f98c93b766f565bf4f59c0ca33b965aebc600695057dd?nocache=1 Modo de uso: Abra o cheat e clique em reload, aperte em cima do nick do seu personagem que queira usar o hack e pode apertar em set pid, depois disso vai liberar a caixinha de hack a direita. Caso queira algo diferenciado pode falar comigo no discord, whatsapp ou aqui na webcheats mesmo.
    1 ponto
  15. Prova de funcionamento Tutorial em Escrita Execute o Loader Como administrador Vai perguntar em qual disco o seu CrossFire está instalado, e você informa se é no disco D ou no C e da ENTER Depois vai perguntar se você deseja executar o Cheat, e você da S e da ENTER Após isso ele vai aparecer a mensagem "Aguardando o CrossFire" e você abre o CrossFire E pronto, o cheat será inhjetado após 10 minutinhos, mantenha o seu crossfire aberto, na tela de lobby ou fique jogando até dar os 10 minutos, tem a contagem regressiva na telinha do loader. F12 ABRE E FECHA MENU Bom jogo [Hidden Content] [Hidden Content]
    1 ponto
  16. Um dia bateu a curiosidade sobre como seriam feito os servidores privados do WYD, e resolvi procurar para ver se encontrava algo sobre. Acabei encontrando o projeto do Open WYD e a série de vídeos "Emulador WYD em NodeJS" do @ Rechdan (fiquei inconformado quando cheguei no 5º vídeo e percebi que era o último ). Vim aqui compartilhar um pouco do que aprendi para aqueles que, assim como eu, não sabe nada de programação de jogos, mas sabe alguma coisa de programação no geral. Início Primeiramente, é importante escolher uma Client do WYD (ex: BR 7.54, 7.55 e assim por diante). Pra muitos pode parecer óbvio, mas a parte visual do jogo já está toda pronta, o que estaremos fazendo será apenas conectar nosso Client com o nosso próprio Servidor. O jogo funciona a partir da comunicação entre o Client e o Servidor. Ao interagirmos com o jogo, o mesmo envia pacotes para o Servidor com as informações necessárias para que o mesmo processe a informação, enviando uma resposta ao jogo. Ou seja, durante o desenvolvimento do Servidor, precisamos ser capazes de receber um pacote do Cliente conectado, processarmos o pacote específico, e enviarmos uma resposta de volta para o cliente, atualizando-o. 1º Passo O primeiro passo é escolhermos um Client como base, como dito anteriormente. Na minha tentativa, comecei com o 7.54. A lista de Clients pode ser encontrada neste link. Tentei utilizar uma versão mais atual (se não me engano, a 7.62 foi utilizada na série pelo Rechdan), mas não conseguir iniciar o jogo com versões superiores a 7.55. Agradeceria se alguém puder disponibilizar o método de como atualizar os Clients através dos patches (entendi que seria essa a maneira de atualizar o jogo para versões posteriores, mas posso estar enganado). Com um Client em mãos, precisamos descobrir o IP da sua máquina, que será responsável por hostear o Servidor. Para encontrar seu endereço abra o Prompt de Comando e digite "ipconfig -all" (sem aspas) e procure pelo "Endereço IPv4". Agora será necessário editar o arquivo serverlist.bin dentro da pasta do WYD. Esse é o arquivo que armazena a informação dos servidores que o Client tentará se conectar. Se você baixar os Client da OnGame, por exemplo, lá estarão os servidores do antigo WYD BR, que obviamente não estão mais ativos, e por isso, todos os canais estarão offline. Existem alguns programas específicos para editarmos esse arquivo, já que você não consegue abrir esse arquivos e visualiza-los de maneira convencional. Perdi o link de onde baixei o meu, mas procurando na internet por "WYD serverlist editor" você também conseguirá encontrar. (adicionarei o link no post quando e se encontrar). Ao abrir o arquivo com o editor, vemos alguns ip's, como por exemplo: "http://www.wyd.com.br/wyd_br/servers/serv01.asp". Entendo que esse primeiro link seja responsável por retornar a quantidade de players no server. Você deve substituir pelo seu endpoint responsável por fazer o mesmo. No meu caso, coloquei como: "http://[meu ip]:3000/server". Juntamente com esse primeiro link, teremos uma lista de IP's. Já nessa lista, entendo que seja o IP de cada canal. No meu caso, substitui apenas o primeiro IP por [meu ip], que será utilizado hostname no server socket. (isso foi o que entendi vendo os vídeos e experimentando algumas coisas, por favor, se estiver errado, corrijam!) (caso alguém saiba e queira compartilhar também, acharia interessante explicar como funciona o editor do serverlist.bin, o que precisaria ser feito para visualizar o arquivo como txt ou algo do tipo) 2º Passo Tendo o serverlist editado, precisamos por no ar o nosso próprio servidor e você pode utilizar diversas tecnologias para isso. O Rechdan utilizou o NodeJS, mas no meu caso, por ter mais familiaridade com Kotlin, escolhi utilizar o KTOR. O primeiro passo é disponibilizar um endpoint responsável por retornar a quantidade de players no server. Esse endpoint deve ser o mesmo que você definiu na edição do serverlist. Nesse caso, criei um server na porta 3000 com o endpoint "http://[meu ip]:3000/server" que retorna um texto. Esse texto é a quantidade de players logados (acredito que seja entre 0 e 750), caso você mande 0, aparecerá um server vazio, e caso mande 750, o servidor aparecerá como FULL (pode ser que esses limites variem de acordo com cada Client, não tenho certeza). Inicialmente você pode deixar o endpoint retornando um valor fixo, como "100". Assim, ao menos um canal já deverá aparecer como disponível no jogo. 3º Passo Agora devemos criar a parte responsável por gerenciar o servidor do game propriamente dito. Nesse caso, o servidor tenta se conectar a um Socket na porta 8281. O IP deverá ser o definido na serverlist também. Caso tudo esteja correto, após preencher um ID e Senha, ao clicar em conectar, o Client se conectará com o seu server socket. 4º Passo Crie um listener para ficar escutando as mensagens enviadas pelo Client, geralmente os pacotes serão armazenados em um Buffer. (atente-se na ordenação dos bytes no Buffer, eles devem estar ordenados em Little Endian. No meu caso estava em Big Endian, e demorei um tempinho até descobrir isso). Ao tentar conectar, o client provavelmente enviará um pacote nas seguintes condições: - Um pacote de tamanho 4 seguido de um pacote de tamanho 116. - Um pacote de tamanho 120. O pacote de 4 bytes pode ser ignorado, é apenas uma msg para dizer que se conectou ao server. Caso ele venha no formato de 120 bytes, apenas ignore os 4 primeiros. São os 116 bytes que nos interessam. Todo pacote do WYD deve seguir a mesma estrutura. Os primeiros 12 bytes são o cabeçalho do pacote, e contém as seguintes informações: Os Bytes 0 e 1 são um Unsigned Short que indicam o tamanho do pacote. Nesse primeiro caso, será 116. O Byte 2 é um Unsigned Byte que contem a key para criptografia. O Byte 3 é um Unsigned Byte que contem a hash para verificação da criptografia/decriptografia. Os Bytes 4 e 5 são um Short que indicam o código do pacote (cada pacote é identificado através desse código, o código do pacote de conexão, por exemplo, é o 525). Os Bytes 6 e 7 são um Short que indicam o ID do cliente que enviou o pacote. Os Bytes 8, 9, 10 e 11 são um Unsigned Int que indicam um timestamp. Os demais Bytes são o conteúdo do pacote. (mais infos sobre byte, short, int, long, signed e unsigned) Os pacotes chegam ao seu servidor criptografados. Apenas os primeiros bytes não estão criptografados. Ou seja, as informações sobre o código do pacote, ID do cliente, timestamp e conteúdo estará completamente criptografado, e você não conseguirá manipula-lo. 5º Passo Precisamos agora descriptografar/criptografar os nossos pacotes. O algoritmo para tal está no repositório do Rechdan e também achei esse artigo interessante do @ raphaelts3 que fala um pouco mais a fundo sobre a criptografia do WYD (link do artigo). Estude os códigos e tente implementar a criptografia. (No meu caso, utilizei o ChatGPT para me ajudar no entendimento do código e converter para Kotlin). Para verificar se a criptografia está funcionando, descriptografe o pacote de conexão. Os 12 primeiros bytes do conteúdo do pacote (desconsiderando o header) são o login e os bytes 16 a 26 são a senha. Você pode transformar o pacote inteiro para uma string UTF-8. Se tudo estiver correto, você irá conseguir ver o ID e a Senha inseridos no cliente em seu pacote descriptografado. 6º Passo Agora que estamos nos recebendo os pacotes do Client e conseguindo descriptografá-los, vamos tentar enviar um pacote para o Client. Por enquanto, o único pacote que consegui enviar foi o que exibe um banner no topo da tela do Client com uma mensagem. Para o header desse pacote, utilize o código "257" e tamanho "108". Pode ser enviado um ID de cliente "0" e a chave de criptografia pode ser um Byte Unsigned aleatório entre 0 e 256. Para o conteúdo do pacote, converta uma string (sua mensagem) para um array de bytes. Após construir o seu pacote, criptográfe-o e envie para o Client, que deverá exibir a mensagem no topo da tela. Próximos passos Acredito que isso seja o básico do básico para que você seja capaz de criar um servidor de WYD inteiramente do zero. Para dar continuidade ao projeto, é importante entender o que o Client envia em cada pacote e o que ele espera receber como resposta. Até o momento, nem mesmo consegui ir para a tela de seleção de personagens (não sei se estou enviando um pacote diferente do que o Client 7.54 espera ou se há algum erro no mesmo). Será necessário entender as estruturas dos dados utilizados no jogo (mobs, itens, status, etc...) Também será necessário conectar-se com um banco de dados. Ou seja, praticamente nada foi feito, mas achei interessante compartilhar essa informações para quem, assim como eu, soubesse alguma coisa de programação mas não soubesse nada de servidores privados de WYD. (usuários avançados provavelmente vão achar esse conteúdo bem inútil, haha) Se eu conseguir avançar com algo além disso, volto aqui para atualizar o post. Link para o meu repositório (precisa de java para rodar) Dúvidas (minhas ou de vocês) P: É viável construir um servidor inteiramente do zero dessa forma? R: Não faço ideia, estou fazendo mais pela diversão. P: E a performance de um servidor feito dessa maneira? R: Também não sei como seria, afinal, nem ao menos consegui chegar na tela de personagens. P: Como faço para descobrir todos os pacotes que o jogo envia e espera receber? R: Gostaria muito de saber isso também, mas infelizmente não faço ideia. Espero que alguém possa dar uma luz nisso. Provavelmente escrevi alguma coisa que pode estar errada, então sintam-se a vontade para corrigir! (por favor)
    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.