Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×

Os Melhores

Conteúdo popular

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

  1. 100% ATUALIZADO(JUNHO 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 : [Hidden Content] 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. [hide]DOWNLOAD x86 : [Hidden Content]] SCAN X86 : VirusTotal - File - 6ddb4a159c634bc79841a30a3a1238804e2d20e6624e55651705d37dee1e83f6 DOWNLOAD x64 : [hide]DOWNLOAD x64 : [Hidden Content]] SCAN x64 : VirusTotal - File - f8365bdad743280aa82f47ad3d3cf242421b15445dbe493f9aa894b17342b0d8
    9 pontos
  2. Recomendo não criar novos perfis e usar os que já tem,pode durar mais tempo
    4 pontos
  3. Print Screen Tutorial em Escrita Execute o Loader como administrador No Loader, logue em sua conta do fórum Selecione se deseja a area de CFBR/WEST ou PH (O CrossFire West pode ser selecionado a opção Rage,pois não tem a opção legit para wallhack) Selecione a Função Legit e clique em injetar após isso pode abrir o CrossFire o Wallhack á auto on Bom jogo Download/Scanner Download: [hide] [Hidden Content]] Virustotal: [Hidden Content]
    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 [hide][Hidden Content]] [Hidden Content]==
    3 pontos
  5. Pack com fotos/vídeos da Hannah OwO. Basta curtir o tópico para revelar o conteúdo. [hide][Hidden Content]]
    2 pontos
  6. Pack Grátis - Jade Teen Download Pack: [Hidden Content]
    2 pontos
  7. //0057EB60 int GetMountBonus(int Index, int Damage) { if (Index >= 1000) return Damage; int MountHP = 0; int MountIndex = pMob[Index].MOB.Equip[14].sIndex; if (MountIndex >= 2360 && MountIndex < 2390 && pMob[Index].MOB.Equip[14].stEffect[0].sValue > 0) { int MountDam = g_pMountBonus[ MountIndex - 2360][0]; if (pMob[Index].MOB.Equip[14].stEffect[1].cEffect == 120) MountDam += 10; if (MountDam > 99) MountDam = 99; MountHP = Damage * MountDam / 100; if (MountHP > 0) { if (MountHP >= 5000) MountHP = 5000; ProcessAdultMount(Index, MountHP); } } else if (MountIndex >= 3980 && MountIndex < 4000) { MountHP = Damage * g_pMountBonus2[MountIndex - 2380][0] / 100; } int FinalDam = Damage - MountHP; if (Damage - MountHP <= 0) return true; return FinalDam; }
    2 pontos
  8. 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
    2 pontos
  9. 2 pontos
  10. Caso gostem enviarei mais. DOWNLOAD: [Hidden Content]
    1 ponto
  11. Tópico bem simples para mostrar um novo cheat sem detect para o jogo Battlefield 1 está disponível para download gratuito. Aimbot, Wallhack, ESP, AutoShoot, AutoAim, sistema de configuração e muitos outros recursos. Use o cheat para se divertir ou para punir outros cheaters. O hack no BF1 é muito simples, fácil de controlar por meio de uma GUI prática, muitos recursos diferentes. Instruções: Extraia o conteúdo numa pasta; Abra o BF1 e minimize; Execute o inject.bat (se não capturar o processo imediatamente, então verifique se não está executando bf1trial.exe ou invés de bf1.exe como padrão). Faça antes de entrar numa partida. Peculiaridades para execução perfeita do cheat: o jogo precisa estar na resolução 1920x1080 e desativar a entrada bruta do mouse nas configurações do jogo. Ás vezes o jogo crasha misteriosamente sem dar sequer algum aviso. Download: [hide][Hidden Content]] Scan: [Hidden Content] Vídeo Tutorial (em russo):
    1 ponto
  12. WEBCHEATS A P R E S E N T A MACRO BINDADO - PUBG O PRODUTO A SEGUIR É DESENVOLVIDO EM AHK, PORTANTO, PRECISA TER INSTALADO O AUTO HOT KEY NA SUA MÁQUINA ANTES DE USAR. FUNÇÕES INCLUSAS ✅ NO RECOIL | ✅ NO SPRAY | ✅ TODAS AS ARMAS DOWNLOAD & SCAN a) DOWNLOAD [Hidden Content] b) SCANNER [Hidden Content] CRÉDITOS Até o momento não conseguir identificar o autor responsável pelo soft.
    1 ponto
  13. VAGAS ABERTAS PARA NOVOS STAFFERS! Olá caro membro, Tudo bem? Hoje venho anunciar mais uma vez a reabertura do tópico de recrutamento. Mas como vai funcionar? Quais cargos teremos? Como me inscrever? Bom... segue abaixo: 👮 MODERADOR Gosta de Wyd? Genshin? LOL? Ou curte mais as áreas de Programação? Design? Noticias? Tem sugestões sólidas e acha que pode nos ajudar a melhora-las? E principalmente, quer estar plenamente envolvido nas mudanças? Então deixa um comentário seguindo o modelo abaixo e vamos juntos! Atualmente temos 3 vagas abertas na posição de Moderador. 👨‍💻 CHEATER Tem seu próprio cheat? Que tal nos ajudar com uma versão free e em troca, citar seu site/contato e seu tópico fixado em área? Ou quem sabe, irmos além e planejarmos algo juntos? Estamos dispostos a ouvir e conversar. Preencha a ficha a baixo. Atualmente não há limites para a posição Cheater. Tópicos Importantes: Guia - Hierarquia do Fórum Como a nova resolução de dúvidas funciona Sobre as Regras: Infrações/Explicações Aprendendo a fazer comentários construtivos RIP e Direitos Autorais - Entenda! Modelo de inscrição: Entraremos em contato via MP com os selecionados para a equipe! Atenciosamente, Atenciosamente, Administração.
    1 ponto
  14. [hide][Hidden Content]]
    1 ponto
  15. Meu primeiro combo de qualidade com contas valorant. [Hidden Content]
    1 ponto
  16. CHEAT PARA VALORANT TRIGGERBOT INFORMAÇÕES O Fell trigger é um tools/cheat externo para Valorant; Posso ser banido? Sim, porém o cheat é externo, não detectável pelo Vanguard e não injeta nada dentro do jogo.; O fell trigger só funcionará em todas as resoluções do Valorant. TUTORIAL Abra o jogo e deixe na tela inicial Abra o Fell Triggerbot com admin Selecione a cor que voce usa no jogo ligue o Toggle para on ajuste o FOV (área que o triggerbot vai atirar) Clique em BIND e selecione a tecla desejada para o trigger E pronto só jogar RECURSOS DO CHEAT FOV: área que o triggerbot vai atirar DELAY: tempo de resposta do trigger Fire Delay: Tempo de resposta que ele irá atirar Draw FOV: Vai mostrar a area que você escolheu pro fov Toggle On: Quando ativo você pode escolher uma tecla para ligar/desligar Bind: Tecla que você irá ativar, basta clicar em Bind e depois pressionar a tecla Color (Canto inferior direito): Recomendado é usar roxo, você precisa alterar a cor do inimigo no jogo Gui color: Apenas a cor da interface do hack isso é cosmético DOWNLOAD & SCAN Download: [Hidden Content] Scan: [Hidden Content] Créditos ao Raposão Mito (EU MESMO)
    1 ponto
  17. Demonstração Tutorial 1. Abra o CS2 2. depois de aberto, execute o Loader da FRCHEATS e logue em sua conta do fórum 3. Selecione a area de CS2 4.Escolha o Counter Strike 2 Legit Clique em Injetar Bom jogo :) ATENÇÃO: EU NÃO CRIEI ESSE CHEAT POR COMPLETO, OS CRÉDITOS VAI AO CRIADOR "CLIV", MANTEREI AS ATUALIZAÇÕES DIARIAS. DOWNLOAD SENDSPACE: [Hidden Content] Scann: [Hidden Content]
    1 ponto
  18. Salve pessoal, adaptei esse script para ler os arquivos .msh e .bon do WYD no blender 2.8 +, carregando a malha e os ossos, créditos a um amigo que me ajudou no entendimento da base desse conteúdo, não sei o nick dele na WC para usar é muito simples, basta definir o caminho do arquivo .msh e do arquivo .bon correspondente, e também o caminho da textura em jpg ou png. import bpy import os import struct import logging import mathutils from typing import NamedTuple FilePath = "C:\\......\\be010101.msh" FileName = "be010101" FilePathBon = "C:\\.......\\be01.bon" IMAGEPATH = 'C:\\.........\\be010101.png' print("----------------- Start Script -----------------") class BoneNode: def __init__(self, Owner, Children, Matrix): self.Owner = Owner self.Children = Children self.Matrix = Matrix class BoneData: def __init__(self, dwName, Matrix): self.dwName = dwName self.Matrix = Matrix class BoneWeight: def __init__(self, b0Weight, b0Index, b1Weight, b1Index, b2Weight, b2Index, b3Weight, b3Index): self.b0Weight = b0Weight self.b0Index = b0Index self.b1Weight = b1Weight self.b1Index = b1Index self.b2Weight = b2Weight self.b2Index = b2Index self.b3Weight = b3Weight self.b3Index = b3Index print ("---------------------Load Bon---------------------") bNodes = [] TreeNodes = [] with open(FilePathBon, "rb") as binFileBone: binFileBone.seek(0,os.SEEK_END) binFileBoneSize = binFileBone.tell() binFileBone.seek(0,os.SEEK_SET) BytesRead = 0 while(BytesRead < binFileBoneSize): Own = struct.unpack('i', binFileBone.read(4))[0] Chd = struct.unpack('i', binFileBone.read(4))[0] bNodes.append(BoneNode(Own,Chd, None)) BytesRead += 8 print("---------------------Load Mesh-------------------") with open(FilePath, "rb") as file: # b is important -> binary _dwParentID = struct.unpack('i', file.read(4))[0] _dwID = struct.unpack('i', file.read(4))[0] _dwFVF = struct.unpack('i', file.read(4))[0] _sizeVertex = struct.unpack('i', file.read(4))[0] _numFaceInflunce = struct.unpack('i', file.read(4))[0] _numPalette = struct.unpack('i', file.read(4))[0] _VertexCount = struct.unpack('i', file.read(4))[0] _FaceCount = struct.unpack('i', file.read(4))[0] _numFaces = int(_FaceCount / 3) print("dwParent: ",_dwParentID) print("_dwID: ",_dwID) print("_dwFVF: ",_dwFVF) print("_sizeVertex: ",_sizeVertex) print("_numFaceInflunce: ",_numFaceInflunce) print("_numPalette: ",_numPalette) print("_VertexCount: ",_VertexCount) print("_FaceCount: ", _FaceCount) print("_numFaces: ",_numFaces) lVertxPos = [] lNormalPos = [] lUvPos = [] lIndices = [] lBonesPos = [] ldwName = [] lBoneWeight = [] for i in range(0,_numPalette): bMatrix = mathutils.Matrix().to_4x4() bMatrix[0][0] = struct.unpack('f', file.read(4))[0] bMatrix[1][0] = struct.unpack('f', file.read(4))[0] bMatrix[2][0] = struct.unpack('f', file.read(4))[0] bMatrix[3][0] = struct.unpack('f', file.read(4))[0] bMatrix[0][1] = struct.unpack('f', file.read(4))[0] bMatrix[1][1] = struct.unpack('f', file.read(4))[0] bMatrix[2][1] = struct.unpack('f', file.read(4))[0] bMatrix[3][1] = struct.unpack('f', file.read(4))[0] bMatrix[0][2] = struct.unpack('f', file.read(4))[0] bMatrix[1][2] = struct.unpack('f', file.read(4))[0] bMatrix[2][2] = struct.unpack('f', file.read(4))[0] bMatrix[3][2] = struct.unpack('f', file.read(4))[0] bMatrix[0][3] = struct.unpack('f', file.read(4))[0] bMatrix[1][3] = struct.unpack('f', file.read(4))[0] bMatrix[2][3] = struct.unpack('f', file.read(4))[0] bMatrix[3][3] = struct.unpack('f', file.read(4))[0] bMatrix.invert() '''print("Invert2:") print(bMatrix) print(loc, rot, sca)''' loc, rot, sca = bMatrix.decompose() '''loc.z = loc.z * - 1''' bMatrix = mathutils.Matrix().LocRotScale(loc, rot, sca) lBonesPos.append(BoneData(0, bMatrix)) for i in range(0,_numPalette): dwName = struct.unpack('i', file.read(4))[0] lBonesPos[i].dwName = dwName print("dwName: ",dwName) ldwName.append(dwName) for i in range(0,_VertexCount): vX = struct.unpack('f', file.read(4))[0] vY = struct.unpack('f', file.read(4))[0] vZ = struct.unpack('f', file.read(4))[0] Vertex = (vX, vY, vZ) if _numFaceInflunce == 4: bweight0 = struct.unpack('f', file.read(4))[0] bweight1 = struct.unpack('f', file.read(4))[0] bweight2 = struct.unpack('f', file.read(4))[0] bboneIndex0 = struct.unpack('b', file.read(1))[0] bboneIndex1 = struct.unpack('b', file.read(1))[0] bboneIndex2 = struct.unpack('b', file.read(1))[0] struct.unpack('b', file.read(1))[0] bw = BoneWeight(bweight0,bboneIndex0,bweight1,bboneIndex1,bweight2,bboneIndex2, 0, 0) lBoneWeight.append(bw) elif _numFaceInflunce == 3: bweight0 = struct.unpack('f', file.read(4))[0] bweight1 = struct.unpack('f', file.read(4))[0] bboneIndex0 = struct.unpack('b', file.read(1))[0] bboneIndex1 = struct.unpack('b', file.read(1))[0] u1 = struct.unpack('b', file.read(1))[0] u2 = struct.unpack('b', file.read(1))[0] bw = BoneWeight(bweight0,bboneIndex0,bweight1,bboneIndex1,0, 0, 0, 0) lBoneWeight.append(bw) elif _numFaceInflunce == 2: bweight0 = struct.unpack('f', file.read(4))[0] bboneIndex0 = struct.unpack('b', file.read(1))[0] struct.unpack('b', file.read(1))[0] struct.unpack('b', file.read(1))[0] struct.unpack('b', file.read(1))[0] bw = BoneWeight(bweight0,bboneIndex0,0,0,0, 0, 0, 0) lBoneWeight.append(bw) else: print("este arquivo possuie faceinfluence: ", _numFaceInflunce) nX = struct.unpack('f', file.read(4))[0] nY = struct.unpack('f', file.read(4))[0] nZ = struct.unpack('f', file.read(4))[0] Normal = (nX, nY, nZ) uX = struct.unpack('f', file.read(4))[0] uY = struct.unpack('f', file.read(4))[0] uV = (uX,uY * -1) lVertxPos.append(Vertex) lNormalPos.append(Normal) lUvPos.append(uV) for i in range(0, _numFaces): f1 = struct.unpack('H', file.read(2))[0] f2 = struct.unpack('H', file.read(2))[0] f3 = struct.unpack('H', file.read(2))[0] triangulos = (f1, f2, f3) lIndices.append(triangulos) edge = [] new_mesh = bpy.data.meshes.new('mesh') new_mesh.from_pydata(lVertxPos, edge, lIndices) new_mesh.update() obj_mesh = bpy.data.objects.new(FileName, new_mesh) obj_mesh.data.normals_split_custom_set_from_vertices(lNormalPos) obj_mesh.modifiers.new(name = 'Skeleton', type = 'ARMATURE') '''Set UV''' uvlayer = obj_mesh.data.uv_layers.new() obj_mesh.data.uv_layers.active = uvlayer pos = 0 for face in obj_mesh.data.polygons: for vert_idx, loop_idx in zip(face.vertices, face.loop_indices): uvlayer.data[loop_idx].uv = lUvPos[vert_idx] pos += 1 '''mat = bpy.data.materials['Material'] tex = bpy.data.textures.new("SomeName", 'IMAGE') slot = mat.texture_slots.add() slot.texture = tex''' amt = bpy.data.armatures.new('root') Container = bpy.data.objects.new('Armature', amt) obj_mesh.modifiers['Skeleton'].object = Container '''obj_mesh.modifiers['Skeleton'].object = armt''' # make collection new_collection = bpy.data.collections.new('Loaded@'+FileName) bpy.context.scene.collection.children.link(new_collection) new_collection.objects.link(Container) new_collection.objects.link(obj_mesh) obj_mesh.parent = Container bpy.context.view_layer.objects.active = Container bpy.ops.object.mode_set(mode='EDIT') print("-----------------Create Three Node-------------------") class BoneTreeStruct: def __init__(self, dwname, Fater, Bone,Owner,Children ): self.dwname = dwname self.Fater = Fater self.Bone = Bone self.Owner = Owner self.Children = Children ignoreCount = 0 for b in bNodes: if ignoreCount > 0: ignoreCount -= 1 continue chk = BoneTreeStruct(0,0,None,0,0) ischk = False for tr in TreeNodes: if tr.Owner == b.Children: chk = tr ischk = True break if ischk == False: '''chk.Bone = bpy.data.objects.new(str(b.Children), None)''' chk = BoneTreeStruct(b.Children,0, None,b.Children,0) chk.Bone = amt.edit_bones.new(str(b.Children)) chk.Bone.head = (0,0,0) chk.Bone.tail = (0,0,0.1) TreeNodes.append(chk) print("definindo filhos") for fi in bNodes: if fi.Owner == chk.Owner: nFilho = BoneTreeStruct(fi.Children, chk,0,fi.Children,0) '''nFilho.Bone = bpy.data.objects.new(str(fi.Children), None)''' nFilho.Bone = amt.edit_bones.new(str(fi.Children)) nFilho.Bone.head = (0,0,0) nFilho.Bone.tail = (0,0,0.1) nFilho.Bone.parent = chk.Bone TreeNodes.append(nFilho) for bTree in TreeNodes: print(bTree.Bone.name) for dwInfo in lBonesPos: if(int(dwInfo.dwName) == int(bTree.Bone.name)): print("set matrix bone "+str(dwInfo.dwName)) bTree.Bone.matrix = dwInfo.Matrix bpy.context.view_layer.objects.active = obj_mesh vertexGroup = [] for i in range(0,_numPalette): new_vertex_group = bpy.context.active_object.vertex_groups.new(name=str(lBonesPos[i].dwName)) vertexGroup.append(vertexGroup) for i in range(0,_VertexCount): if _numFaceInflunce == 4: bpy.context.active_object.vertex_groups[lBoneWeight[i].b0Index].add([i], lBoneWeight[i].b0Weight, 'ADD') bpy.context.active_object.vertex_groups[lBoneWeight[i].b1Index].add([i], lBoneWeight[i].b1Weight, 'ADD') bpy.context.active_object.vertex_groups[lBoneWeight[i].b2Index].add([i], lBoneWeight[i].b2Weight, 'ADD') elif _numFaceInflunce == 3: bpy.context.active_object.vertex_groups[lBoneWeight[i].b0Index].add([i], lBoneWeight[i].b0Weight, 'ADD') bpy.context.active_object.vertex_groups[lBoneWeight[i].b1Index].add([i], lBoneWeight[i].b1Weight, 'ADD') elif _numFaceInflunce == 2: bpy.context.active_object.vertex_groups[lBoneWeight[i].b0Index].add([i], lBoneWeight[i].b0Weight, 'ADD') else: print("este arquivo possuie faceinfluence: ", _numFaceInflunce) mat = bpy.data.materials.new(name="New_Mat") mat.use_nodes = True bsdf = mat.node_tree.nodes["Principled BSDF"] texImage = mat.node_tree.nodes.new('ShaderNodeTexImage') texImage.image = bpy.data.images.load(IMAGEPATH) mat.node_tree.links.new(bsdf.inputs['Base Color'], texImage.outputs['Color']) if obj_mesh.data.materials: obj_mesh.data.materials[0] = mat else: obj_mesh.data.materials.append(mat)
    1 ponto
  19. 100% funcional ,tem hacker vip também? Gostei muito do cheat.
    1 ponto
  20. [Hidden Content] Telegram Channel: @databasefromstorm My telegram: @BrowzData
    1 ponto
  21. [Hidden Content] Telegram Channel: @databasefromstorm My telegram: @BrowzData
    1 ponto
  22. int g_pMountBonus[30][6] = { // ATK,MG,PR, Imu, Spped, Abs { 10, 1, 0, 0, 4, 75 },//Porco { 10, 1, 0, 0, 4, 75 },//Javali { 50, 10, 0, 0, 6, 75 },//Lobo { 80, 15, 0, 0, 6, 75 },//Dragão_Menor { 100, 20, 0, 0, 6, 75 },//Urso { 150, 25, 0, 0, 6, 75 },//Dente_de_Sabre { 250, 50, 40, 0, 6, 75 },//Cavalo_s/Sela_N { 300, 60, 50, 0, 6, 75 },//Cavalo_Fantasm_N { 350, 65, 60, 0, 6, 75 },//Cavalo_Leve_N { 400, 70, 70, 0, 6, 75 },//Cavalo_Equip_N { 500, 85, 80, 0, 6, 73 },//Andaluz_N { 250, 50, 0, 16, 6, 75 },//Cavalo_s/Sela_B { 300, 60, 0, 20, 6, 75 },//Cavalo_Fantasm_B { 350, 65, 0, 24, 6, 75 },//Cavalo_Leve_B { 400, 70, 0, 28, 6, 75 },//Cavalo_Equip_B { 500, 85, 0, 32, 6, 73 },//Andaluz_B { 550, 90, 0, 0, 6, 73 },//Fenrir { 600, 90, 0, 0, 6, 66 },//Dragão { 550, 90, 0, 20, 6, 73 },//Fenrir Sombrio { 650, 100, 60, 28, 6, 65 },//Tigre_de_Fogo { 700, 110, 80, 32, 6, 65 },//Dragão_Vermelho { 570, 90, 20, 16, 6, 71 },//Unicórnio { 570, 90, 30, 8, 6, 71 },//Pegasus { 570, 90, 40, 12, 6, 69 },//Unisus { 590, 95, 30, 20, 6, 69 },//Grifo { 600, 95, 40, 16, 6, 65 },//Hipogrifo { 600, 95, 50, 16, 6, 65 },//Grifo_Sangrento { 600, 40, 60, 28, 6, 65 },//Svadilfari { 300, 95, 60, 28, 6, 65 },//Sleipnir { 150, 25, 0, 20, 6, 75 }//Pantera Negra }; int g_pMountTempBonus[20][6] = { // ATK, MG, PR, Imu, Spped, Abs { 35, 7, 0, 0, 6, 75 },//Shire(3dias) { 350, 55, 10, 28, 6, 74 },//Thoroughbred(3dias) { 450, 55, 0, 0, 6, 74 },//Klazedale(3dias) { 35, 7, 0, 0, 6, 75 },//Shire(15dias) { 450, 72, 10, 28, 6, 74 },//Thoroughbred(15dias) { 450, 72, 0, 0, 6, 74 },//Klazedale(15dias) { 120, 45, 0, 0, 6, 75 },//Shire(30dias) { 450, 72, 10, 28, 6, 74 },//Thoroughbred(30dias) { 450, 72, 0, 0, 6, 74 },//Klazedale(30dias) { 325, 35, 16, 28, 6, 65 },//Gullfaxi(30dias) { 350, 45, 10, 4, 6, 65 },//Tigre_de_Fogo { 250, 25, 0, 31, 6, 65 },//Dragão_Vermelho { 80, 15, 0, 31, 6, 75 },//Dragão_Menor { 950, 145, 60, 20, 6, 75 },//Dragão_Akelo { 950, 145, 60, 20, 6, 75 },//Dragão_Hekalo { 300, 60, 50, 0, 6, 75 },//Aranha_Infernal { 350, 65, 60, 0, 6, 75 },//Lobo_Ártico { 400, 70, 70, 0, 6, 75 },//Dragão_de_Osso { 500, 85, 80, 0, 6, 73 },//Tarântula { 0, 0, 0, 0, 0, 0 }//Corça };
    1 ponto
  23. //0x4010BE; int GetTownTax(int Zone, int conn) { long long Tax = TownTax[Zone]; int Coin = (int)(Tax / 1000000000); int SilverBar = (int)(Tax / 1000000000); int TotalCoin = pMob[conn].MOB.Coin + Coin; if (TotalCoin >= 2000000000) { SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_get_more_than_2G]); return false; } STRUCT_ITEM Item; memset(&Item, 0, sizeof(STRUCT_ITEM)); Item.sIndex = 4011; if (SilverBar) { int EmptySlot = 0; for (int i = 0; i < MAX_CARRY - 4; ++i) { if (BASE_CanCarry(pMob[conn].MOB.Carry, i)) { if (!pMob[conn].MOB.Carry[i].sIndex) ++EmptySlot; } } if (SilverBar > EmptySlot) { SendClientMessage(conn, g_pMessageStringTable[_NN_You_Have_No_Space_To_Trade]); return false; } for (int j = 0; j < MAX_CARRY - 4; ++j) { if (!pMob[conn].MOB.Carry[j].sIndex) { if (BASE_CanCarry(pMob[conn].MOB.Carry, j)) { memcpy(&pMob[conn].MOB.Carry[j], &Item, sizeof(STRUCT_ITEM)); SendItem(conn, ITEM_PLACE_CARRY, j, &Item); snprintf(szLog, 0x80u, "etc, Town tax silver 10 send (%d)", Zone); Log(szLog, pUser[conn].AccountName, pUser[conn].IP); if (!--SilverBar) break; } } } } TownTax[Zone] = 0; snprintf(szLog, 0x80u, "etc, Town tax coin %d(%d)", Coin, Zone); Log(szLog, pUser[conn].AccountName, pUser[conn].IP); pMob[conn].MOB.Coin = TotalCoin; SendCoin(conn); DrawConfig(1); return true; }
    1 ponto
  24. [Hidden Content] Tenho várias contas , mande mensagem no privado .
    1 ponto
  25. Tentem alguma dessas, são do dia 17/03 e outras são de ontem. [Hidden Content]
    1 ponto
  26. void ProcessKings(int conn, int npcId, int confirm) { if (pMob[conn].MOB.Equip[ORB].Index == 1742 && pMob[conn].MOB.Equip[STONE].Index >= 1760 && pMob[conn].MOB.Equip[STONE].Index <= 1763) { if (!BASE_GetCheckFace(pMob[conn].MobFace)) //Criar o Arch { if (!confirm) { SendClientMessage(npcId, TRUE, _NN_NewCharacter); return; } if (pMob[conn].MOB.BaseScore.Level < TransLevel - 1) { SendClientMessage(npcId, TRUE, _NN_NeedMoreExp); return; } int archSlot = -1; int archClass = (((pMob[conn].MobFace / 10) * 4) + (pMob[conn].MOB.Equip[STONE].Index - 1760)) + 4; char archName[NAME_LENGTH]{}; sprintf_s(archName, "%s", pMob[conn].MOB.MobName); strupr(archName); int sameNameCount = 0; for (int i = 0; i < MOB_PER_ACCOUNT; i++) { if (!pUser[conn].SelChar.Name[i]) continue; char tmpName[NAME_LENGTH]{}; strcpy(tmpName, pUser[conn].SelChar.Name[i]); strupr(tmpName); if (!strcmp(tmpName, archName)) { sameNameCount++; if (sameNameCount >= 2) { SendClientMessage(conn, FALSE, _NN_SameCharAlready); return; } } } for (int i = 0; i < MOB_PER_ACCOUNT; i++) { if (pUser[conn].SelChar.Name[i]) continue; archSlot = i; break; } if (archSlot == -1) { SendClientMessage(conn, FALSE, _NN_NoEmptySlot); return; } sprintf_s(temp, "que,transchar: %s, class: %d, slot: %d", pMob[conn].MOB.MobName, archClass, archSlot); Log(temp, pUser[conn].AccountName, pUser[conn].IP); pMob[conn].MOB.Equip[ORB].Index = 0; pMob[conn].MOB.Equip[STONE].Index = 0; CharLogOut(conn); MSG_NewCharacter pNewChar{}; pNewChar.Header.Type = _MSG_DBNewCharacter; pNewChar.Header.Size = sizeof MSG_NewCharacter; pNewChar.Header.ID = conn; strncpy(pNewChar.MobName, pMob[conn].MOB.MobName, NAME_LENGTH); pNewChar.Slot = archSlot; pNewChar.Class = archClass; pUser[conn].Mode = USER_WAITDB; DBServerSocket.SendOneMessage((char*)&pNewChar, pNewChar.Header.Size); SendClientMessage(conn, FALSE, _NN_Congratulations_Trans); SendClientSignalParm2(conn, 0, _MSG_SendArchEffect, archSlot, 0); return; } //Criar a Ideal int secretStoneSlot[4]{ -1, -1, -1, -1 }; for (int i = 0; i < MAX_VISIBLE_INVENTORY; i++) { if (pMob[conn].MOB.Inventory[i].Index == 5334) secretStoneSlot[0] = i; else if (pMob[conn].MOB.Inventory[i].Index == 5335) secretStoneSlot[1] = i; else if (pMob[conn].MOB.Inventory[i].Index == 5336) secretStoneSlot[2] = i; else if (pMob[conn].MOB.Inventory[i].Index == 5337) secretStoneSlot[3] = i; } if (secretStoneSlot[0] == -1 || secretStoneSlot[1] == -1 || secretStoneSlot[2] == -1 || secretStoneSlot[3] == -1) return; if (SendPutItemInvCarry(conn, 5338, 0)) { for (int i = 0; i < 4; i++) { memset(&pMob[conn].MOB.Inventory[secretStoneSlot[i]], 0, sizeof STRUCT_ITEM); //ebp-0bc8 SendItem(conn, INVEN_TYPE, secretStoneSlot[i], &pMob[conn].MOB.Inventory[secretStoneSlot[i]]); } memset(&pMob[conn].MOB.Equip[ORB], 0, sizeof STRUCT_ITEM); SendItem(conn, EQUIP_TYPE, ORB, &pMob[conn].MOB.Equip[ORB]); memset(&pMob[conn].MOB.Equip[STONE], 0, sizeof STRUCT_ITEM); SendItem(conn, EQUIP_TYPE, STONE, &pMob[conn].MOB.Equip[STONE]); pMob[conn].GetCurrentScore(conn); SendScore(conn); } sprintf_s(temp, "que,transchar 2 make 5338: %s", pMob[conn].MOB.MobName); Log(temp, pUser[conn].AccountName, pUser[conn].IP); return; } //Capas int npcKingdom = pMob[npcId].MOB.Clan; int curLvl = pMob[conn].MOB.CurrentScore.Level; int capeLvl = 0; if (pMob[conn].CheckEvolution() == CELESTIAL) curLvl += MAX_LEVEL; int capeId = pMob[conn].MOB.Equip[CAPE].Index; int kingdomEmblem = FALSE; if (pMob[conn].MOB.Equip[PET].Index == 4081) kingdomEmblem = TRUE; int curKingdom = BASE_GetKingdom(capeId); if (capeId == 3197 || capeId == 3198 || capeId == 3199) //Mestre_de_Hekalotia - Mestre_de_Akelonia - Mestre_dos_Aventureiros capeLvl = 4; if (capeId == 3194 || capeId == 3195 || capeId == 3196) //Herói_de_Hekalotia - Herói_de_Akelonia - Herói_dos_Aventureiros capeLvl = 4; if (capeId == 3191 || capeId == 3192 || capeId == 3193) //Elite_de_Hekalotia - Elite_de_Akelonia - Elite_dos_Aventureiros capeLvl = 3; if (capeId == 543 //Manto_do_Guerreiro || capeId == 544 //Manto_de_Shiner || capeId == 1766 //Capa_dos_Campeões || capeId == 1767 //Capa_dos_Campeões || capeId == 1768 //Capa_dos_Campeões || capeId == 1769 //Capa_dos_Campeões || capeId == 1770 //Capa_dos_Campeões || capeId == 1771) //Capa_dos_Campeões { capeLvl = 2; } if (capeId == 545 || capeId == 546 || capeId == 549) //Manto_Hekalotia - Manto_Akelonia - Manto_do_Aventureiro capeLvl = 1; if (curKingdom == 6) curKingdom = 0; if (curKingdom && curKingdom != npcKingdom) return; if (Sapphire < 1) Sapphire = 1; int calcSapphireBlue = Sapphire / 100; int calcSapphireRed = 64 - calcSapphireBlue; if (calcSapphireBlue < 4) calcSapphireBlue = 4; if (calcSapphireRed < 4) calcSapphireRed = 4; int reqSapphire = 0; if (npcKingdom == KINGDOM_BLUE) reqSapphire = calcSapphireBlue; if (npcKingdom == KINGDOM_RED) reqSapphire = calcSapphireRed; if (confirm) { if (capeLvl >= 2 && curKingdom) { if (npcKingdom == KINGDOM_BLUE) { SendClientMessage(conn, FALSE, _NN_My_King_Bless1); return; } if (npcKingdom == KINGDOM_RED) { SendClientMessage(conn, FALSE, _NN_My_King_Bless2); return; } } if (curLvl < 219 || (capeLvl == 1 && curLvl < 255)) { SendClientMessage(conn, FALSE, _NN_Need_Level); return; } int unitSapphire = 0; int packSapphire = 0; if (!kingdomEmblem) { for (int i = 0; i < MAX_VISIBLE_INVENTORY; i++) { if (pMob[conn].MOB.Inventory[i].Index == 697 || pMob[conn].MOB.Inventory[i].Index == 4131) { int amount = BASE_GetItemAmount(&pMob[conn].MOB.Inventory[i]); if (amount == 0) unitSapphire++; if (amount > 0) { if (amount == 10) packSapphire = 1; unitSapphire += amount; } } } if (unitSapphire < reqSapphire) { sprintf(temp, "%d", reqSapphire); SendClientMessage(conn, FALSE, _DN_Need_D_Sapphire, temp); return; } if (unitSapphire > reqSapphire && packSapphire > 0) { SendClientMessage(conn, FALSE, _NN_NeedOverSapp); return; } } else { if (capeLvl == 1) return; if(curLvl < 220) { SendClientMessage(conn, FALSE, _NN_Level_Limit2); return; } if (BASE_CheckQuestBit(pMob[conn].Ext2.Quest[1], 7)) { SendClientMessage(conn, FALSE, _NN_Youve_Done_It_Already); return; } } int saveSapphire = reqSapphire; if (!kingdomEmblem) { for (int i = 0; i < MAX_VISIBLE_INVENTORY; i++) { if (pMob[conn].MOB.Inventory[i].Index == 697 || pMob[conn].MOB.Inventory[i].Index == 4131) { int amount = BASE_GetItemAmount(&pMob[conn].MOB.Inventory[i]); if (amount == 0) reqSapphire--; if (amount > 0) { if (amount == 10) packSapphire = 1; reqSapphire -= amount; } memset(&pMob[conn].MOB.Inventory[i], 0, sizeof STRUCT_ITEM); SendItem(conn, INVEN_TYPE, i, &pMob[conn].MOB.Inventory[i]); if (reqSapphire <= 0) break; } } } else { memset(&pMob[conn].MOB.Equip[PET], 0, sizeof STRUCT_ITEM); SendItem(conn, EQUIP_TYPE, PET, &pMob[conn].MOB.Equip[PET]); BASE_SetQuestBit(&pMob[conn].Ext2.Quest[1], 7); } if (capeId >= 3197 && capeId <= 3199 && npcKingdom == KINGDOM_BLUE) pMob[conn].MOB.Equip[CAPE].Index = 3197; else if (capeId >= 3197 && capeId <= 3199 && npcKingdom == KINGDOM_RED) pMob[conn].MOB.Equip[CAPE].Index = 3198; else if (capeId == 572 && npcKingdom == KINGDOM_BLUE) pMob[conn].MOB.Equip[CAPE].Index = 1766; else if (capeId == 572 && npcKingdom == KINGDOM_RED) pMob[conn].MOB.Equip[CAPE].Index = 1769; else if (capeId == 573 && npcKingdom == KINGDOM_BLUE) pMob[conn].MOB.Equip[CAPE].Index = 1767; else if (capeId == 573 && npcKingdom == KINGDOM_RED) pMob[conn].MOB.Equip[CAPE].Index = 1770; else if (capeId == 574 && npcKingdom == KINGDOM_BLUE) pMob[conn].MOB.Equip[CAPE].Index = 1768; else if (capeId == 574 && npcKingdom == KINGDOM_RED) pMob[conn].MOB.Equip[CAPE].Index = 1771; else if (capeId >= 3191 && capeId <= 3193 && npcKingdom == KINGDOM_BLUE) pMob[conn].MOB.Equip[CAPE].Index = 3191; else if (capeId >= 3191 && capeId <= 3193 && npcKingdom == KINGDOM_RED) pMob[conn].MOB.Equip[CAPE].Index = 3192; else if (capeId >= 3194 && capeId <= 3196 && npcKingdom == KINGDOM_BLUE) pMob[conn].MOB.Equip[CAPE].Index = 3194; else if (capeId >= 3194 && capeId <= 3196 && npcKingdom == KINGDOM_RED) pMob[conn].MOB.Equip[CAPE].Index = 3195; else { if (capeLvl == 1) { if (capeId != 549) memset(&pMob[conn].MOB.Equip[CAPE], 0, sizeof STRUCT_ITEM); if (npcKingdom == KINGDOM_BLUE) pMob[conn].MOB.Equip[CAPE].Index = 543; else pMob[conn].MOB.Equip[CAPE].Index = 544; } else { if (capeId != 548) memset(&pMob[conn].MOB.Equip[CAPE], 0, sizeof STRUCT_ITEM); if (npcKingdom == KINGDOM_BLUE) pMob[conn].MOB.Equip[CAPE].Index = 545; else pMob[conn].MOB.Equip[CAPE].Index = 546; } } SendItem(conn, EQUIP_TYPE, CAPE, &pMob[conn].MOB.Equip[CAPE]); if (npcKingdom == KINGDOM_BLUE) SendClientMessage(conn, FALSE, _NN_My_King_Bless1); else SendClientMessage(conn, FALSE, _NN_My_King_Bless2); sprintf(temp, "que,get mantle %d - sapphire:%d - newbie:%d", pMob[conn].MOB.Equip[CAPE].Index, saveSapphire, kingdomEmblem); Log(temp, pUser[conn].AccountName, pUser[conn].IP); SendEquip(conn, FALSE); pMob[conn].GetCurrentScore(conn); SendScore(conn); return; } if (!kingdomEmblem) { sprintf(temp, "%d", reqSapphire); SendClientMessage(conn, FALSE, _DN_Need_D_Sapphire, temp); } }
    1 ponto
  27. class CMob // TMSrv 7.57 Size da CMob 2344 { public: // O size original da STRUCT_MOB na TMSrv 7.57 é 1024 bytes STRUCT_MOB MOB; // - CORRETO - TMSrv 7.57 7D84AC0 - 0 - 1023 STRUCT_EXT1 Ext1; // - CORRETO - TMSrv 7.57 7D84EC0 - 1024 - 1027 - 0x400 STRUCT_EXT2 Ext2; // - CORRETO - TMSrv 7.57 7D84FE0 - 1312 - 0x520 STRUCT_AFFECT Affect[MAX_AFFECT]; // - CORRETO - TMSrv 7.57 7D85148 - 1672 - 1927 - 0x688 char Tab[MAX_TAB_LENGTH]; // - CORRETO - TMSrv 7.57 7D85248 - 1928 - 1953 - 0x788 int SegmentExp; // - CORRETO - TMSrv 7.57 7D85268 - 1960 - 1963 - 0x7A8 int SegmentCreate; // - CORRETO - TMSrv 7.57 7D8526C - 1964 - 1967 - 0x7AC int SegmentX; // - CORRETO - TMSrv 7.57 7D85270 - 1968 - 1971 - 0x7B0 int SegmentY; // - CORRETO - TMSrv 7.57 7D85274 - 1972 - 1975 - 0x7B4 int SegmentListX[MAX_SEGMENT]; // - CORRETO - TMSrv 7.57 7D85278 - 1976 - 1995 - 0x7B8 int SegmentListY[MAX_SEGMENT]; // - CORRETO - TMSrv 7.57 7D8528C - 1996 - 2015 - 0x7CC int SegmentWait[MAX_SEGMENT]; // - CORRETO - TMSrv 7.57 7D852A0 - 2016 - 2035 - 0x7E0 int SegmentDirection; // - CORRETO - TMSrv 7.57 7D852B4 - 2036 - 2039 - 0x7F4 int SegmentProgress; // - CORRETO - TMSrv 7.57 7D852B8 - 2040 - 2043 - 0x7F8 int GenerateIndex; // - CORRETO - TMSrv 7.57 7D852BC - 2044 - 2047 - 0x7FC unsigned short CurrentTarget; // - CORRETO - TMSrv 7.57 7D852C0 - 2048 - 2049 - 0x800 unsigned short EnemyList[MAX_ENEMY]; // - CORRETO - TMSrv 7.57 7D852C2 - 2050 - 2057 - 0x802 unsigned short PartyList[MAX_PARTY]; // - CORRETO - TMSrv 7.57 7D852CA - 2058 - 2081 - 0x80A int Mode; // - CORRETO - TMSrv 7.57 7D852E4 - 2084 - 2087 - 0x824 int Leader; // - CORRETO - TMSrv 7.57 7D852E8 - 2088 - 2091 - 0x828 int Formation; // - CORRETO - TMSrv 7.57 7D852EC - 2092 - 2095 - 0x82C int RouteType; // - CORRETO - TMSrv 7.57 7D852F0 - 2096 - 2099 - 0x830 int LastX; // - CORRETO - TMSrv 7.57 7D852F4 - 2100 - 2103 - 0x834 int LastY; // - CORRETO - TMSrv 7.57 7D852F8 - 2104 - 2107 - 0x838 int LastTime; // - CORRETO - TMSrv 7.57 7D852FC - 2108 - 2111 - 0x83C int LastSpeed; // - CORRETO - TMSrv 7.57 7D85300 - 2112 - 2115 - 0x840 int TargetX; // - CORRETO - TMSrv 7.57 7D85304 - 2116 - 2119 - 0x844 int TargetY; // - CORRETO - TMSrv 7.57 7D85308 - 2120 - 2123 - 0x848 int NextX; // - CORRETO - TMSrv 7.57 7D8530C - 2124 - 2127 - 0x84C int NextY; // - CORRETO - TMSrv 7.57 7D85310 - 2128 - 2131 - 0x850 int NextAction; // - CORRETO - TMSrv 7.57 7D85314 - 2132 - 2135 - 0x854 char Route[MAX_ROUTE]; // - CORRETO - TMSrv 7.57 7D85318 - 2136 - 2159 - 0x858 int WaitSec; // - CORRETO - TMSrv 7.57 7D85330 - 2160 - 2163 - 0x870 int WeaponDamage; // - CORRETO - TMSrv 7.57 7D85334 - 2164 - 2167 - 0x874 int Summoner; // - CORRETO - TMSrv 7.57 7D85338 - 2168 - 2171 - 0x878 int PotionCount; // - CONFIRMAR - TMSrv 7.57 7D8533C - 2172 - 2175 - 0x87C int GuildDisable; // - CORRETO - TMSrv 7.57 7D85340 - 2176 - 2179 - 0x880 int DropBonus; // - CORRETO - TMSrv 7.57 7D85344 - 2180 - 2183 - 0x884 int ExpBonus; // - CORRETO - TMSrv 7.57 7D85348 - 2184 - 2187 - 0x888 int Range; // - CORRETO - TMSrv 7.57 7D8534C - 2188 - 2191 - 0x88C int AgmoState; // - CORRETO - TMSrv 7.57 7D85350 - 2192 - 2195 - 0x890 0:mob comum 1:mob agmo int unk_7D85354; // - CONFIRMAR - TMSrv 7.57 7D85354 - 2196 - 2199 - 0x894 Só é inicializada no construtor da CMob e nao é mais usada! int MobFace; // - CORRETO - TMSrv 7.57 7D85358 - 2200 - 2203 - 0x898 // Calculo é feito com MobFace % 10 < 5 Mortal ou Transformações do BM retorna 0 // > 5 verifica no Learn se tem soul se nao tiver retorna 1 // se tiver soul retorna 2 int QuestIndex; // - CORRETO - TMSrv 7.57 7D8535C - 2204 - 2207 - 0x89C int KhepraState; // - CORRETO - TMSrv 7.57 7D85360 - 2208 - 2211 - 0x8A0 int SpecialMobControl; // - CORRETO - TMSrv 7.57 7D85364 - 2212 - 2215 - 0x8A4 int LegendVeridState; // - CORRETO - TMSrv 7.57 7D85368 - 2216 - 2219 - 0x8A8 int BossEmotion; // - CORRETO - TMSrv 7.57 7D8536C - 2220 - 2223 - 0x8AC int ForceDamage; // - CORRETO - TMSrv 7.57 7D85370 - 2224 - 2227 - 0x8B0 int TmpSpeed; // - CORRETO - TMSrv 7.57 7D85374 - 2228 - 2231 - 0x8B4 int CurTime; // - CORRETO - TMSrv 7.57 7D85378 - 2232 - 2235 - 0x8B8 int QuestRegisterPos; // - CORRETO - TMSrv 7.57 7D8537C - 2236 - 2239 - 0x8BC Salva em qual posição vc registrou a pista - Usada tbm na guerra de torres!! int ServerKingdom; // - CORRETO - TMSrv 7.57 7D85380 - 2240 - 2243 - 0x8C0 int SpecialMobUnspawnTime; // - CORRETO - TMSrv 7.57 7D85384 - 2244 - 2247 - 0x8C4 Nome Provisório ate analizar melhor int mobAttackControl; // - CORRETO - TMSrv 7.57 7D85388 - 2248 - 2251 - 0x8C8 Controla quantas vezes o mob usara uma skill de area int enemyPosX; // - CORRETO - TMSrv 7.57 7D8538C - 2252 - 2255 - 0x8CC TargetX do alvo que sera atacado com skill int enemyPosY; // - CORRETO - TMSrv 7.57 7D85390 - 2256 - 2259 - 0x8D0 TargetY do alvo que sera atacado com skill int unk_7D85394; // - CONFIRMAR - TMSrv 7.57 7D85394 - 2260 - 2263 - 0x8D4 Inicializada no Construtor da CMob e checada na GetEnemyFromView! int CountHpDamage; // - CORRETO - TMSrv 7.57 7D85398 - 2264 - 2267 - 0x8D8 int countHP; // - CORRETO - TMSrv 7.57 7D8539C - 2268 - 2271 - 0x8DC int countMP; // - CORRETO - TMSrv 7.57 7D853A0 - 2272 - 2275 - 0x8E0 int PerfBonus; // - CORRETO - TMSrv 7.57 7D853A4 - 2276 - 2279 - 0x8E4 int AbsBonus; // - CORRETO - TMSrv 7.57 7D853A8 - 2280 - 2283 - 0x8E8 int unk_7D853AC; // - CONFIRMAR - TMSrv 7.57 7D853AC - 2284 - 2287 - 0x8EC Relacionado a itens premium com data int SummonType; // - CORRETO - TMSrv 7.57 7D853B0 - 2288 - 2291 - 0x8F0 int ItemUser; // - CORRETO - TMSrv 7.57 7D853B4 - 2292 - 2295 - 0x8F4 int ItemSummoner; // - CORRETO - TMSrv 7.57 7D853B8 - 2296 - 2299 - 0x8F8 short DamagePvP; // - CORRETO - TMSrv 7.57 7D853BC - 2300 - 2301 - 0x8FC short DefensePvP; // - CORRETO - TMSrv 7.57 7D853BE - 2302 - 2303 - 0x8FE unsigned short MobList[MAX_PARTY]; // - CORRETO - TMSrv 7.57 7D853C0 - 2304 - 2327 - 0x900 PartyList para as Evocações!! int nAffectInfo; // - CORRETO - TMSrv 7.57 7D853D8 - 2328 - 2331 - 0x918 /* //0 off - 1 on Bit 0 : Controle de Mana (1 << 0) Bit 1 : Imunidade (1 << 1) Bit 2 : Encantar Gelo (1 << 2) Bit 3 : Possuido (1 << 3) Bit 4 : Toxina da Serpente (1 << 4) Bit 5 : Evasão Aprimorada (1 << 5) Bit 6 : Invisibilidade (1 << 6) Bit 7 : Velocidade (1 << 7) Bit 8 : Immunity (1 << 8) Bit 9 : Cancel (1 << 9) Bit 10 : Frozen (1 << 10) Bit 11 : Invulnerable (1 << 11) Bit 12 : Flash (1 << 12) */ int nSkillDalay; // - CORRETO - TMSrv 7.57 7D853DC - 2332 - 2335 - 0x91C int Accuracy; // - CORRETO - TMSrv 7.57 7D853E0 - 2336 - 2339 - 0x920 int Evasion; // - CORRETO - TMSrv 7.57 7D853E4 - 2340 - 2343 - 0x924 public: //TMSrv 7.57 004CC7B0 CMob(); //TMSrv 7.57 004CCA00 ~CMob(); //TMSrv 7.57 004CCA30 void InitMob(); //TMSrv 7.57 004CCC00 void ProcessorSecTimer(); //TMSrv 7.57 004CCC30 int StandingByProcessor(); //TMSrv 7.57 004CD190 int BattleProcessor(); //TMSrv 7.57 004CD7D0 void AddEnemyList(short TargetId); //TMSrv 7.57 004CD8E0 void RemoveEnemyList(short TargetId); //TMSrv 7.57 004CD960 void SelectTargetFromEnemyList(); //TMSrv 7.57 004CDDF0 // 1:ShipMove 0:DeleteObject int SetSegment(); //TMSrv 7.57 004CE1C0 void GetCurrentScore(int conn); //TMSrv 7.57 004CFA60 void GetTargetPosDistance(int TargetId); //TMSrv 7.57 004CFDE0 void GetRandomPos(); //TMSrv 7.57 004D0080 void GetTargetPos(int TargetId); //TMSrv 7.57 004D0300 int CheckGetLevel(); //TMSrv 7.57 004D07E0 void GetNextPos(); //TMSrv 7.57 004D0AB0 int GetEnemyFromView(); //TMSrv 7.57 004D0DB0 int CheckLevelBlock(); //TMSrv 7.57 004D1020 int CheckPvPZone(); //TMSrv 7.57 004D1170 int CheckEvolution(); //TMSrv 7.57 004D2460 int CheckKhepra(); }; struct STRUCT_SUBCLASS { unsigned int LearnedSkill; // - CORRETO - TMSrv 7.57 7D84FF0 - 7D85050 - - - salva o Learn do celestial/subcelestial unsigned int nLearnedSkill; // - CORRETO - TMSrv 7.57 7D84FF4 - 7D85054 - - - salva o Learn2 do celestial/subcelestial STRUCT_ITEM Equip; // - CORRETO - TMSrv 7.57 7D84FF8 - 7D85058 - - - salva Face do personagem STRUCT_SCORE CurrentScore; // - CORRETO - TMSrv 7.57 7D85000 - 7D85060 - - - salva os Score long long Exp; // - CORRETO - TMSrv 7.57 7D85030 - 7D85090 - salva a Exp char ShortSkill[20]; // - CORRETO - TMSrv 7.57 7D85038 - 7D85098 - salva a SkilBar1[4] e a SkillBar2[16] unsigned short ScoreBonus; // - CORRETO - TMSrv 7.57 7D8504C - 7D850AC - salva os pontos de Score que ainda nao foram distribuidos unsigned short SkillBonus; // - CORRETO - TMSrv 7.57 7D8504E - 7D850AE - salva os pontos para compra de skills }; struct STRUCT_EXT1 { int Data[8]; STRUCT_AFFECT Affect[MAX_AFFECT]; }; struct STRUCT_EXT2 { char Quest[12]; unsigned int LastConnectTime; STRUCT_SUBCLASS SubClass[2]; char ItemPassWord[16]; unsigned int ItemPos; int SendLevItem; short AdminGuildItem; char Dummy[126]; }; struct STRUCT_MOB { char MobName[NAME_LENGTH]; //Nome do MOB/NPC/Player TMSrv 7.57 7D84AC0 char Clan; //Reino ou Grupo do MOB/NPC/Player TMSrv 7.57 7D84AD0 unsigned char Merchant; //Identificador da merchant TMSrv 7.57 7D84AD1 unsigned short Guild; //Identificador da Guild do MOB/NPC/Player TMSrv 7.57 7D84AD2 char Class; //Identificador da classe do MOB/NPC/Player TMSrv 7.57 7D84AD4 unsigned char Rsv; //AffectInfo TMSrv 7.57 7D84AD5 unsigned short Quest; //QuestInfo TMSrv 7.57 7D84AD6 int Coin; //Gold atual do MOB/NPC/Player TMSrv 7.57 7D84AD8 long long Exp; //Experiencia atual do MOB/NPC/Player TMSrv 7.57 7D84AE0 0x20 32 short HomeTownX; //Ultima posição X salva com a Gema Estelar TMSrv 7.57 7D84AE8 short HomeTownY; //Ultima posição Y salva com a Gema Estelar TMSrv 7.57 7D84AEA STRUCT_SCORE BaseScore; //Status base TMSrv 7.57 7D84AEC 0x2C 44 STRUCT_SCORE CurrentScore; //Status atual TMSrv 7.57 7D84B1C 0x5C 92 STRUCT_ITEM Equip[MAX_EQUIP]; //Itens equipados no personagem TMSrv 7.57 7D84B4C 0x8C 140 STRUCT_ITEM Inventory[MAX_INVENTORY]; //Itens do inventario TMSrv 7.57 7D84BCC unsigned int LearnedSkill; //Skills Aprendidas - Dividido em 4 categorias TMSrv 7.57 7D84DCC 0x30C 780 unsigned int nLearnedSkill; //Novas Skills - Dividido em 4 categorias TMSrv 7.57 7D84DD0 0x310 784 unsigned short ScoreBonus; //Pontos de Status (Str, Int, Dex, Con) TMSrv 7.57 7D84DD4 0x314 788 unsigned short SpecialBonus; //Pontos de Apreendizagem TMSrv 7.57 7D84DD6 0x316 790 unsigned short SkillBonus; //Pontos de Skill TMSrv 7.57 7D84DD8 0x318 792 unsigned char Critical; //Chance de Hits Criticos TMSrv 7.57 7D84DDA 0x31A 794 unsigned char SaveMana; // TMSrv 7.57 7D84DDB 0x31B 795 char SkillBar1[4]; //Salva o id de 4 skills da barra 1 //char SkillBar1[0]; TMSrv 7.57 7D84DDC //char SkillBar1[1]; TMSrv 7.57 7D84DDD //char SkillBar1[2]; TMSrv 7.57 7D84DDE //char SkillBar1[3]; TMSrv 7.57 7D84DDF char GuildLevel; //Identifica se o Player é membrou ou lider do clan TMSrv 7.57 7D84DE0 unsigned char RegenHP; //Regeneração de HP TMSrv 7.57 7D84DE2 0x322 802 unsigned char RegenMP; //Regeneração de MP TMSrv 7.57 7D84DE3 0x323 803 unsigned char dummy[206]; //Bytes reservados short Resist[4]; //Resistencias Sagrado - Trovão - Fogo - Gelo //short Resist[0]; TMSrv 7.57 7D84EB2 0x3F2 1010 //short Resist[1]; TMSrv 7.57 7D84EB4 0x3F4 1012 //short Resist[2]; TMSrv 7.57 7D84EB6 0x3F6 1014 //short Resist[3]; TMSrv 7.57 7D84EB8 0x3F8 1016 unsigned short Magic; //Multiplicador de dano magico TMSrv 7.57 7D84EBA 0x3FA 1018 short CurrentKill; //max 1200 TMSrv 7.57 7D84EBC 0x3FC 1020 short TotalKill; //max 20000 TMSrv 7.57 7D84EBE 0x3FE 1022 };
    1 ponto
  28. 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 [hide]Download: [Hidden Content]] [hide]Scann: [Hidden Content]]
    1 ponto
  29. Bom o codigo está quase funicionando, não sei onde foi que eu errei, que toda hora que vai abrir a TMRsv ela manda a seguinte menssagem "not game-server generated gameconfig.txt - Line6". Logo em seguida ela abre, mais renicia as infors salvas toda vez que tu abre. Então quem quiser arrumar sinta-se avontade, a pior parte foi feita. // 0x401154 void Draw(int Draw) { int EncodeValue = *(int*)0xBAF180; int g_NonePKServer = *(int*)0xAACD54; if (GameConfig) { int x = 0; int y = 0; int len = 0; int color = 255; int BlackColor = 0; char String[264]; HDC hdc = GetDC(*hWndMain); if (hdc) { if (!hFont || SelectObject(hdc, hFont)) { FILE* fp = NULL; if (Draw) fp = fopen("gameconfig.txt", "wt"); y -= pMainWndProc->nPos; SetTextColor(hdc, color); sprintf_s(String, "Drop Item Event Settings:"); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); SetTextColor(hdc, BlackColor); sprintf_s(String, " evindex %d evdelete %d evon %d evitem %d evrate %d evstart %d %d %d %d", evIndex, evDelete, evOn, evItem, evRate, evStartIndex, evCurrentIndex, evEndIndex, evNotice); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); SetTextColor(hdc, color); sprintf_s(String, "Etc Event Settings:"); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); SetTextColor(hdc, BlackColor); sprintf_s(String, " double %d deadpoint %d dungeonevent %d statsapphire %d battleroyal %d VS: %d translevel: %d", DOUBLEMODE, DEADPOINT, DUNGEONEVENT, StatSapphire, BRItem, VS, TRANSLEVEL); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); SetTextColor(hdc, color); sprintf_s(String, "Billing Settings:"); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); SetTextColor(hdc, BlackColor); sprintf_s(String, " BILLMODE %d FREEEXP %d CHARSELBILL %d POTIONCOUNT %d PARTYBONUS %d GUILDBOARD %d", BILLING, FREEEXP, CHARSELBILL, POTIONCOUNT, PARTYBONUS, GUILDBOARD); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); SetTextColor(hdc, color); sprintf_s(String, "Item Drop Bonus Settings:"); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); SetTextColor(hdc, BlackColor); for (int i = 0; i < 4; ++i) { int pos = 16 * i; sprintf_s(String, " %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d", g_pDropBonus[0 + pos], g_pDropBonus[1 + pos], g_pDropBonus[2 + pos], g_pDropBonus[3 + pos], g_pDropBonus[4 + pos], g_pDropBonus[5 + pos], g_pDropBonus[6 + pos], g_pDropBonus[7 + pos], g_pDropBonus[8 + pos], g_pDropBonus[9 + pos], g_pDropBonus[10 + pos], g_pDropBonus[11 + pos], g_pDropBonus[12 + pos], g_pDropBonus[13 + pos], g_pDropBonus[14 + pos], g_pDropBonus[15 + pos]); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); } SetTextColor(hdc, color); sprintf_s(String, "Treasure Settings:"); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); SetTextColor(hdc, BlackColor); for (int j = 0; j < 16; ++j) { char Buffer[264]{}; STRUCT_TREASURE* Treasure = &g_pTreasure[j]; sprintf_s(Buffer, "%-4d ", g_pTreasure[j].Source); for (int k = 0; k < 5; ++k) { STRUCT_ITEM* TreasureItem = &Treasure->Target[k]; sprintf_s(String, " %-4d %2d %2d %2d %2d %2d %2d ", TreasureItem->sIndex, Treasure->Target[k].stEffect[0].cEffect, Treasure->Target[k].stEffect[0].cValue, Treasure->Target[k].stEffect[1].cEffect, Treasure->Target[k].stEffect[1].cValue, Treasure->Target[k].stEffect[2].cEffect, Treasure->Target[k].stEffect[2].cValue); strcat(Buffer, String); } len = strlen(Buffer); TextOutA(hdc, x, y, Buffer, len); y += 16; if (Draw) fprintf(fp, "%s\n", Buffer); sprintf_s(String, " %-5d %-5d %-5d %-5d %-5d", Treasure->Rate[0], Treasure->Rate[1], Treasure->Rate[2], Treasure->Rate[3], Treasure->Rate[4]); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); } SetTextColor(hdc, color); sprintf_s(String, "Rare Item Drop Settings:"); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); SetTextColor(hdc, BlackColor); sprintf_s(String, "rare mode : %d StopGoldCoin: %d LocalServer : %d Stop Quest : %d", RARESWITCH, STOPGOLDCOIN, LOCALSERVER, STOPQUEST); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); SetTextColor(hdc, color); sprintf_s(String, "Game Option Settings:"); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); SetTextColor(hdc, BlackColor); sprintf_s(String, "NonePKServer: %d GambleServer: %d KhepraOpen: %d", g_NonePKServer, GAMBLESERVER, KHEPRAOPEN); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); sprintf_s(String, "ItemDestroy: %d ItemMaster: %d EXP_NOT_DOUBLE_ZONE: %d", ITEMDESTROY, ITEMMASTER, DOUBLEZONE); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); sprintf_s(String, "USE_GUILDWAR_MANTLE: %d USE_FREE_GAMBLE: %d CASINOTICKET: %d", USE_GUILDWAR_MANTLE, USE_FREE_GAMBLE, CASINOTICKET); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); sprintf_s(String, "LOTTOTICKET: %d MAXLEVEL: %d CREATECHAR: %d", LOTTOTICKET, MAXLEVEL, CREATECHAR); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); sprintf_s(String, "USE8THSKILL: %d MAXLEVELTICKET: %d eventhour: %d", USE8THSKILL, MAXLEVELTICKET, EventHour); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); sprintf_s(String, "DUELLETTERLIMIT: %d %d", DUELLETTERLIMIT, DUELLETTERLIMIT2); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", String); sprintf_s(String, "TownTax: %I64d %I64d %I64d %I64d %I64d", TownTax[0], TownTax[1], TownTax[2], TownTax[3], TownTax[4]); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); sprintf_s(String, "RANDOMQUIZ: %d Exp:%d Coin:%d", RANDOMQUIZ, RandomQuizExp, RandomQuizCoin); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); sprintf_s(String, "ITEMPRICE: %d %d SEALOFSOUL:%d", ITEMPRICE1, ITEMPRICE2, SEALOFSOUL); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); sprintf_s(String, "NIGHTMARE: %d BLESSMONEY: %I64d", NIGHTMARE, BLESSMONEY); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); sprintf_s(String, "ADDCRACKERROR: %d", ADDCRACKERROR); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); sprintf_s(String, "Encode %d", EncodeValue); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); sprintf_s(String, "logdemon %s %s", cp, LOGDEMON); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); sprintf_s(String, "KINGDOMFIELD %d", KINGDOMFIELD); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); sprintf_s(String, "ITEMDELETEMODE %d", ITEMDELETEMODE); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); sprintf_s(String, "GAMBLEMONEY %d", GAMBLEMONEY); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); sprintf_s(String, "CREATEHARDCHARACTER %d", CREATEHARDCHARACTER); len = strlen(String); TextOutA(hdc, x, y, String, len); y += 16; if (Draw) fprintf(fp, "%s\n", &String); ReleaseDC(*hWndMain, hdc); if (fp) fclose(fp); } } } } //0x4019B5 void ReloadDraw() { int g_NonePKServer = *(int*)0xAACD54; int EncodeValue = *(int*)0xBAF180; FILE* fp = fopen("gameconfig.txt", "rt"); if (fp) { char String[512]; char Buffer[16][32]; int Value[36]; fgets(String, 255, fp); if (strcmp(String, "Drop Item Event Settings:\n")) { MessageBoxA(*hWndMain, "not game-server generated gameconfig.txt - Line1", "Error", 0x1000u); fclose(fp); } else { for (int i = 0; i < 16; ++i) { Value[i] = -1; memset(Buffer[i], 0, sizeof(Buffer[i])); } fgets(String, 255, fp); sscanf(String, "%s %d %s %d %s %d %s %d %s %d %s %d %d %d %d", Buffer[0], &Value[0], Buffer[1], &Value[1], Buffer[2], &Value[2], Buffer[3], &Value[3], Buffer[4], &Value[4], Buffer[5], &Value[5], &Value[6], &Value[7], &Value[8]); if (strcmp(Buffer[0], "evindex") || strcmp(Buffer[1], "evdelete") || strcmp(Buffer[2], "evon") || strcmp(Buffer[3], "evitem") || strcmp(Buffer[4], "evrate") || strcmp(Buffer[5], "evstart") || Value[0] == -1 || Value[1] == -1 || Value[2] == -1 || Value[3] == -1 || Value[4] == -1 || Value[5] == -1 || Value[6] == -1 || Value[7] == -1) { MessageBoxA(*hWndMain, "not game-server generated gameconfig.txt - Line2", "Error", 0x1000u); fclose(fp); } else { evIndex = Value[0]; evDelete = Value[1]; evOn = Value[2]; evItem = Value[3]; evRate = Value[4]; evStartIndex = Value[5]; evCurrentIndex = Value[6]; evEndIndex = Value[7]; evNotice = Value[8]; fgets(String, 255, fp); if (strcmp(String, "Etc Event Settings:\n")) { MessageBoxA(*hWndMain, "not game server generated gameconfig.txt - Line3", "Error", 0x1000u); fclose(fp); } else { for (int j = 0; j < 16; ++j) { Value[j] = -1; memset(Buffer[j], 0, sizeof(Buffer[j])); } fgets(String, 255, fp); sscanf(String, "%s %d %s %d %s %d %s %d %s %d %s %d %s %d", Buffer[0], &Value[0], Buffer[1], &Value[1], Buffer[2], &Value[2], Buffer[3], &Value[3], Buffer[4], &Value[4], Buffer[5], &Value[5], Buffer[6], &Value[6]); if (strcmp(Buffer[0], "double") || strcmp(Buffer[1], "deadpoint") || strcmp(Buffer[2], "dungeonevent") || strcmp(Buffer[3], "statsapphire") || Value[0] == -1 || Value[1] == -1 || Value[2] == -1 || Value[3] == -1) { MessageBoxA(*hWndMain, "not game-server generated gameconfig.txt - Line4", "Error", 0x1000u); fclose(fp); } else { DOUBLEMODE = Value[0]; DEADPOINT = Value[1]; DUNGEONEVENT = Value[2]; StatSapphire = Value[3]; BRItem = Value[4]; VS = Value[5]; TRANSLEVEL = Value[6]; if (Value[6] < 200 || TRANSLEVEL > 400) TRANSLEVEL = 300; fgets(String, 255, fp); if (strcmp(String, "Billing Settings:\n")) { MessageBoxA(*hWndMain, "not game server generated gameconfig.txt - Line5", "Error", 0x1000u); fclose(fp); } else { for (int k = 0; k < 16; ++k) { Value[k] = -1; memset(Buffer[k], 0, sizeof(Buffer[k])); } fgets(String, 255, fp); sscanf(String, "%s %d %s %d %s %d %s %d %s %d %s %d", Buffer[0], &Value[0], Buffer[1], &Value[1], Buffer[2], &Value[2], Buffer[3], &Value[3], Buffer[4], &Value[4], Buffer[5], &Value[5]); if (strcmp(Buffer[0], "billmode") || strcmp(Buffer[1], "freeexp") || Value[0] == -1 || Value[1] == -1) { MessageBoxA(*hWndMain, "not game-server generated gameconfig.txt - Line6", "Error", 0x1000u); fclose(fp); } else { BILLING = Value[0]; FREEEXP = Value[1]; CHARSELBILL = Value[2]; POTIONCOUNT = Value[3]; PARTYBONUS = Value[4]; GUILDBOARD = Value[5]; if (Value[4] < 50 || PARTYBONUS > 200) PARTYBONUS = 100; fgets(String, 255, fp); if (strcmp(String, "Item Drop Bonus Settings:\n")) { MessageBoxA(*hWndMain, "not game server generated gameconfig.txt - Line7", "Error", 0x1000u); } else { fgets(String, 255, fp); sscanf(String, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", &Value[0], &Value[1], &Value[2], &Value[3], &Value[4], &Value[5], &Value[6], &Value[7], &Value[8], &Value[9], &Value[10], &Value[11], &Value[12], &Value[13], &Value[14], &Value[15]); for (int l = 0; l < 16; ++l) { if (Value[l] < 0 || Value[l] > 3000) { MessageBoxA(*hWndMain, "not game-server generated gameconfig.txt - Line8", "Error", 0x1000u); fclose(fp); return; } g_pDropBonus[l] = Value[l]; Value[l] = -1; } fgets(String, 255, fp); sscanf(String, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", &Value[0], &Value[1], &Value[2], &Value[3], &Value[4], &Value[5], &Value[6], &Value[7], &Value[8], &Value[9], &Value[10], &Value[11], &Value[12], &Value[13], &Value[14], &Value[15]); for (int l = 0; l < 16; ++l) { if (Value[l] < 0 || Value[l] > 3000) { MessageBoxA(*hWndMain, "not game-server generated gameconfig.txt - Line9", "Error", 0x1000u); fclose(fp); return; } g_pDropBonus[l + 16] = Value[l]; Value[l] = -1; } fgets(String, 255, fp); sscanf(String, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", &Value[0], &Value[1], &Value[2], &Value[3], &Value[4], &Value[5], &Value[6], &Value[7], &Value[8], &Value[9], &Value[10], &Value[11], &Value[12], &Value[13], &Value[14], &Value[15]); for (int l = 0; l < 16; ++l) { if (Value[l] < 0 || Value[l] > 3000) { MessageBoxA(*hWndMain, "not game-server generated gameconfig.txt - Line10", "Error", 0x1000u); fclose(fp); return; } g_pDropBonus[l + 32] = Value[l]; Value[l] = -1; } fgets(String, 255, fp); sscanf(String, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", &Value[0], &Value[1], &Value[2], &Value[3], &Value[4], &Value[5], &Value[6], &Value[7], &Value[8], &Value[9], &Value[10], &Value[11], &Value[12], &Value[13], &Value[14], &Value[15]); for (int l = 0; l < 16; ++l) { if (Value[l] < 0 || Value[l] > 3000) { MessageBoxA(*hWndMain, "not game-server generated gameconfig.txt - Line11", "Error", 0x1000u); fclose(fp); return; } g_pDropBonus[l + 48] = Value[l]; Value[l] = -1; } fgets(String, 255, fp); if (strcmp(String, "Treasure Settings:\n")) { MessageBoxA(*hWndMain, "not game server generated gameconfig.txt - Line12", "Error", 0x1000u); fclose(fp); } else { memset(g_pTreasure, 0, sizeof(g_pTreasure)); for (int j = 0; j < 16; ++j) { STRUCT_TREASURE* Treasure = &g_pTreasure[j]; for (int i = 0; i < 36; i++) Value[i] = -1; fgets(String, 255, fp); sscanf(String, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", &Value[0], &Value[1], &Value[2], &Value[3], &Value[4], &Value[5], &Value[6], &Value[7], &Value[8], &Value[9], &Value[10], &Value[11], &Value[12], &Value[13], &Value[14], &Value[15], &Value[16], &Value[17], &Value[18], &Value[19], &Value[20], &Value[21], &Value[22], &Value[23], &Value[24], &Value[25], &Value[26], &Value[27], &Value[28], &Value[29], &Value[30], &Value[31], &Value[32], &Value[33], &Value[34], &Value[35]); if (!strncmp(String, "Rare", 4)) break; Treasure->Source = Value[0]; for (int i = 0; i < 5; ++i) { STRUCT_ITEM* TreasureItem = &Treasure->Target[i]; TreasureItem->sIndex = Value[7 * i + 1]; TreasureItem->stEffect[0].cEffect = Value[7 * i + 2]; TreasureItem->stEffect[0].cValue = Value[7 * i + 3]; TreasureItem->stEffect[1].cEffect = Value[7 * i + 4]; TreasureItem->stEffect[1].cValue = Value[7 * i + 5]; TreasureItem->stEffect[2].cEffect = Value[7 * i + 6]; TreasureItem->stEffect[2].cValue = Value[7 * i + 7]; } fgets(String, 255, fp); sscanf(String, "%d %d %d %d %d", &Value[0], &Value[1], &Value[2], &Value[3], &Value[4]); for (int i = 0; i < 5; ++i) Treasure->Rate[i] = Value[i]; } fgets(String, 255, fp); if (strcmp(String, "Rare Item Drop Settings:\n")) { MessageBoxA(*hWndMain, "not game server generated gameconfig.txt - Line29", "Error", 0x1000u); fclose(fp); } else { RARESWITCH = 0; char Str[4][64]{}; for (int i = 0; i < 4; ++i) memset(Str[i], 0, sizeof(Str[i])); int Draw = false; fgets(String, 255, fp); sscanf_s(String, "%s %d %s %d %s %d %s %d", Str[0], 64, &RARESWITCH, Str[1], 64, &STOPGOLDCOIN, Str[2], 64, &LOCALSERVER, Str[3], 64, &STOPQUEST); fgets(String, 255, fp); if (strcmp(String, "Game Option Settings:\n")) { g_NonePKServer = 0; ITEMDESTROY = 100; ITEMMASTER = 0; DOUBLEZONE = 0; Draw = true; } String[0] = 0; if (fgets(String, 255, fp)) sscanf_s(String, "%s %d %s %d %s %d", Str[0], 64, &g_NonePKServer, Str[1], 64, &GAMBLESERVER, Str[3], 64, &KHEPRAOPEN); String[0] = 0; if (fgets(String, 255, fp)) sscanf_s(String, "%s %d %s %d %s %d", Str[0], 64, &ITEMDESTROY, Str[1], 64, &ITEMMASTER, Str[3], 64, &DOUBLEZONE); String[0] = 0; fgets(String, 255, fp); sscanf_s(String, "%s %d %s %d %s %d", Str[0], 64, &USE_GUILDWAR_MANTLE, Str[1], 64, &USE_FREE_GAMBLE, Str[3], 64, &CASINOTICKET); String[0] = 0; if (fgets(String, 255, fp)) sscanf_s(String, "%s %d %s %d %s %d", Str[0], 64, &LOTTOTICKET, Str[1], 64, &MAXLEVEL, Str[3], 64, &CREATECHAR); String[0] = 0; fgets(String, 255, fp); sscanf_s(String, "%s %d %s %d %s %d ", Str[0], 64, &USE8THSKILL, Str[1], 64, &MAXLEVELTICKET, Str[3], 64, &EventHour); String[0] = 0; fgets(String, 255, fp); sscanf_s(String, "%s %d %d", Str[0], 64, &DUELLETTERLIMIT, &DUELLETTERLIMIT2); memset(TownTax, 0, 0x28u); String[0] = 0; fgets(String, 255, fp); sscanf_s(String, "%s %I64d %I64d %I64d %I64d %I64d", Str[0], 64, &TownTax[0], &TownTax[1], &TownTax[2], &TownTax[3], &TownTax[4]); String[0] = 0; fgets(String, 255, fp); sscanf_s(String, "%s %d %s %d %s %d", Str[0], 64, &RANDOMQUIZ, Str[1], 64, &RandomQuizExp, Str[3], 64, &RandomQuizCoin); String[0] = 0; fgets(String, 255, fp); sscanf_s(String, "%s %d %d %s %d", Str[0], 64, &ITEMPRICE1, &ITEMPRICE2, Str[1], 64, &SEALOFSOUL); String[0] = 0; fgets(String, 255, fp); sscanf_s(String, "%s %d %s %I64d", Str[0], 64, &NIGHTMARE, Str[1], 64, &BLESSMONEY); String[0] = 0; if (fgets(String, 255, fp)) sscanf_s(String, "%s %d", Str[0], 64, &ADDCRACKERROR); String[0] = 0; if (fgets(String, 255, fp)) sscanf_s(String, "%s %d", Str[0], 64, &EncodeValue); String[0] = 0; if (fgets(String, 255, fp)) { sscanf_s(String, "%d %s %s", Str[0], cp, LOGDEMON); BLOCKEDIP = inet_addr(cp); } String[0] = 0; if (fgets(String, 255, fp)) sscanf_s(String, "%s %d", Str[0], 64, &KINGDOMFIELD); if (fgets(String, 255, fp)) sscanf_s(String, "%s %d", Str[0], 64, &ITEMDELETEMODE); if (fgets(String, 255, fp)) sscanf_s(String, "%s %d", Str[0], 64, &GAMBLEMONEY); if (fgets(String, 255, fp)) sscanf_s(String, "%s %d", Str[0], 64, &CREATEHARDCHARACTER); fgets(String, 255, fp); fclose(fp); if (Draw) { GameConfig = 1; DrawConfig(1); } } } } } } } } } } } else { MessageBoxA(*hWndMain, "no gameconfig.txt, server will generate default setting.", "Error", 0x1000u); GameConfig = 1; DrawConfig(1); } }
    1 ponto
  30. void ProcessShaman(int conn, int npcId) { int circleId = pMob[conn].MOB.Equip[PET].Index; int circleType = 0; int circleMode = 0; if (circleId == 448 || circleId == 449 || circleId == 450) { if (pMob[conn].MOB.Quest & 0x10) { SendClientMessage(npcId, TRUE, _NN_Youve_Done_It_Already); return; } circleType = circleId - 448; circleMode = 1; } else if (circleId == 693 || circleId == 694 || circleId == 695) { circleType = circleId - 693; circleMode = 2; } else { SendClientMessage(npcId, TRUE, _NN_Need_Pure_Divine); return; } int maxResetPoint = 50; if (circleMode == 2) maxResetPoint = 100; int specialPoints = pMob[conn].MOB.SpecialBonus; for (int i = 0; i < 4; i++) { if (pMob[conn].MOB.BaseScore.Special[i] > maxResetPoint) { specialPoints += maxResetPoint; pMob[conn].MOB.BaseScore.Special[i] -= maxResetPoint; } else { specialPoints += pMob[conn].MOB.BaseScore.Special[i]; pMob[conn].MOB.BaseScore.Special[i] = 0; } if (pMob[conn].MOB.BaseScore.Special[i] > 200) { int moreThan200 = pMob[conn].MOB.BaseScore.Special[i]; pMob[conn].MOB.BaseScore.Special[i] = 200; specialPoints = (moreThan200 + specialPoints) - 200; } } pMob[conn].MOB.SpecialBonus = specialPoints; if (circleType == 0) { pMob[conn].MOB.LearnedSkill &= 0xFFFFFF00; pMob[conn].MOB.nLearnedSkill &= 0xFF0; } if (circleType == 1) { pMob[conn].MOB.LearnedSkill &= 0xFFFF00FF; pMob[conn].MOB.nLearnedSkill &= 0xF0F; } if (circleType == 2) { pMob[conn].MOB.LearnedSkill &= 0xFF00FFFF; pMob[conn].MOB.nLearnedSkill &= 0x0FF; } BASE_GetBonusSkillPoint(&pMob[conn].MOB, pMob[conn].MobFace); memset(&pMob[conn].MOB.Equip[PET], 0, sizeof STRUCT_ITEM); SendItem(conn, EQUIP_TYPE, PET, &pMob[conn].MOB.Equip[PET]); SendEtc(conn); SetTick(conn, 44, 20, 20); //pode ser setaffect em algumas sources SendScore(conn); SendClientMessage(npcId, TRUE, _NN_Initialize_Skill); if (circleMode == 1) pMob[conn].MOB.Quest |= 0x10; else if(circleMode == 2) pMob[conn].MOB.Quest |= 0x20; SendClientMessage(conn, FALSE, _NN_Qest06Complete); sprintf_s(temp, "que,divice circle quest item:%d mode:%d type:%d", circleId, circleMode, circleType); Log(temp, pUser[conn].AccountName, pUser[conn].IP); MSG_SetSkillBar pSkillBar{}; pSkillBar.Header.Type = _MSG_SetSkillBar; pSkillBar.Header.ID = ESCENE_FIELD; pSkillBar.Header.Size = sizeof MSG_SetSkillBar; memcpy(pSkillBar.SkillBar1, pMob[conn].MOB.SkillBar1, 4); memcpy(pSkillBar.SkillBar2, pUser[conn].SkillBar2, 16); pUser[conn].cSock.AddMessage((char*)&pSkillBar, pSkillBar.Header.Size); } att
    1 ponto
  31. Parou de postar há um mês, n sei se vai voltar, mas vale a pena. Vendia packs também.
    1 ponto
  32. Estou aqui para ensinar vocês a como pedir seu acesso gratuito! +3.700 Filmes de Porno Legendado em Português do Brasil - Maior site de conteúdo legendado da internet! [Hidden Content] CURTA O TÓPICO PARA RECEBER O TUTORIAL DE COMO CONSEGUIR SEU ACESSO [hide]Siga o que se pede no tópico no fórum para garantir seu acesso ou adquira. Criar uma conta no site: [Hidden Content]/signup Você deve esperar 5 minutos para sua conta ser sincronizada no fórum, só assim você vai conseguir sua conta no fórum, caso você tenha criado a conta usando login pela google, você deve redefinir sua senha e aguardar ate 5 minutos para conseguir entrar no fórum usando a mesma senha que você criou. Mais informações sobre isso: [Hidden Content]/page/nova-conta-redefinir-senha Após você ter feito sua conta, logado no fórum, para garantir seu primeiro dia de acesso, basta ler o que se pede ou adquirir. [Hidden Content]]
    1 ponto
  33. void ProcessGoldenDragon(int conn, int npcId, int future) { int ret = FALSE; if (pMob[conn].MOB.Equip[PET].Index == 4060) //Immaturity_Angel { int itemSanc = BASE_GetItemSanc(&pMob[conn].MOB.Equip[PET]); int sanc9plus = TRUE; if (itemSanc < 9) sanc9plus = FALSE; if (pMob[conn].Affect[MAX_AFFECT - 1].Type) sanc9plus = FALSE; if (pMob[conn].CheckEvolution() != ARCH) { sanc9plus = FALSE; SendClientMessage(conn, FALSE, _NN_Need_Trans); } if (sanc9plus) { STRUCT_ITEM item{}; item.Index = 5338; //Ideal item.EF1 = EF_NOTRADE; item.EFV1 = EF_NOTRADE; ret = SendPutItemInvCarry(conn, 0, &item); } //004F893D if (ret) { memset(&pMob[conn].MOB.Equip[PET], 0, sizeof STRUCT_ITEM); SendItem(conn, EQUIP_TYPE, PET, &pMob[conn].MOB.Equip[PET]); pMob[conn].Affect[MAX_AFFECT - 1].Type = 49; pMob[conn].Affect[MAX_AFFECT - 1].Level = 0; pMob[conn].Affect[MAX_AFFECT - 1].Time += 75600; pMob[conn].GetCurrentScore(conn); SendAffect(conn); SendClientMessage(conn, FALSE, _NN_Congratulations); } return; } //004F8A06 if(CombineTreasureMap(conn)) return; for (int i = 0; i < MAX_VISIBLE_INVENTORY; i++) { if (pMob[conn].MOB.Inventory[i].Index <= 0) continue; for (int j = 0; j < MAX_TREASURE; j++) { if (g_pTreasure[j].Source <= 0) continue; if (pMob[conn].MOB.Inventory[i].Index != g_pTreasure[j].Source) continue; //004F8ACF char tmpBuffer[128]{}; sprintf_s(temp, "tra,_gold_ 0"); BASE_GetItemCode(&pMob[conn].MOB.Inventory[i], tmpBuffer); strcat(temp, tmpBuffer); Log(temp, pUser[conn].AccountName, pUser[conn].IP); memset(&pMob[conn].MOB.Inventory[i], 0, sizeof STRUCT_ITEM); SendItem(conn, INVEN_TYPE, i, &pMob[conn].MOB.Inventory[i]); int sortItem = rand() % 1000; STRUCT_ITEM item{}; if (sortItem < g_pTreasure[j].Rate[0]) memcpy(&item, &g_pTreasure[j].Target[0], sizeof STRUCT_ITEM); else if (sortItem < g_pTreasure[j].Rate[1]) memcpy(&item, &g_pTreasure[j].Target[1], sizeof STRUCT_ITEM); else if (sortItem < g_pTreasure[j].Rate[2]) memcpy(&item, &g_pTreasure[j].Target[2], sizeof STRUCT_ITEM); else if (sortItem < g_pTreasure[j].Rate[3]) memcpy(&item, &g_pTreasure[j].Target[3], sizeof STRUCT_ITEM); else if (sortItem < g_pTreasure[j].Rate[4]) memcpy(&item, &g_pTreasure[j].Target[4], sizeof STRUCT_ITEM); if (!item.Index) { SendClientMessage(npcId, TRUE, _NN_Next_Chance); return; } sprintf_s(temp, "tra,%s 0", pUser[conn].AccountName); BASE_GetItemCode(&item, tmpBuffer); strcat(temp, tmpBuffer); Log(temp, "_gold_", pUser[conn].IP); if (PutItem(conn, &item)) { SendClientMessage(npcId, TRUE, _NN_Congratulations); return; } } } //004F8DCF int crystal[7]{}; int crystalCount = 0; for (int i = 0; i < MAX_VISIBLE_INVENTORY; i++) { if (pMob[conn].MOB.Inventory[i].Index < 421 || pMob[conn].MOB.Inventory[i].Index > 427) continue; crystal[pMob[conn].MOB.Inventory[i].Index - 421] = 1; crystalCount++; } //004F8E78 if (!crystal[0] || !crystal[1] || !crystal[2] || !crystal[3] || !crystal[4] || !crystal[5] || !crystal[6]) { SendClientMessage(npcId, TRUE, _NN_Gather_7_Clistals); return; } if(!pMob[conn].MOB.Inventory[WEAPON].Index) { SendClientMessage(npcId, TRUE, _NN_Equip_Weapon_To_Enchant); return; } if (pMob[conn].MOB.Inventory[WEAPON].Index >= 3000 && pMob[conn].MOB.Inventory[WEAPON].Index < 3200) { SendClientMessage(npcId, TRUE, _NN_Equip_Weapon_To_Enchant); return; } int weaponMobType = BASE_GetItemAbility(&pMob[conn].MOB.Inventory[WEAPON], EF_MOBTYPE); if (weaponMobType == ARCH || weaponMobType == CELESTIAL) { SendClientMessage(npcId, TRUE, _NN_NOT_TRANS3ITEM); return; } SendEmotion(conn, 23, 0); STRUCT_ITEM weapon = pMob[conn].MOB.Inventory[WEAPON]; STRUCT_ITEM tmpWeapon = weapon; int calcItemLvl = (crystalCount / 10) * 25; int itemReqLvl = g_pItemList[weapon.Index].ReqLvl; weapon.EF1 = 0; weapon.EFV1 = 0; weapon.EF2 = 0; weapon.EFV2 = 0; weapon.EF3 = 0; weapon.EFV3 = 0; SetItemBonus(&weapon, calcItemLvl + itemReqLvl, TRUE, 1104, FALSE); for (int i = 0; i < MAX_VISIBLE_INVENTORY; i++) { if (pMob[conn].MOB.Inventory[i].Index < 421 || pMob[conn].MOB.Inventory[i].Index > 427) continue; pMob[conn].MOB.Inventory[i].Index = 0; memset(&pMob[conn].MOB.Inventory[i], 0, sizeof STRUCT_ITEM); } SendCarry(conn); SendItem(conn, EQUIP_TYPE, WEAPON, &weapon); SendClientMessage(npcId, TRUE, _SN_Now_I_Will_Enchant_Your, pMob[conn].MOB.MobName); SetTick(conn, 44, 200, 200); SendScore(conn); sprintf_s(temp, "etc,crystal %d-%d from %d:%d %d:%d %d:%d to %d:%d %d:%d %d:%d", crystalCount, tmpWeapon.Index, tmpWeapon.EF1, tmpWeapon.EFV1, tmpWeapon.EF2, tmpWeapon.EFV2, tmpWeapon.EF3, tmpWeapon.EFV3, weapon.EF1, weapon.EFV1, weapon.EF2, weapon.EFV2, weapon.EF3, weapon.EFV3); Log(temp, pUser[conn].AccountName, pUser[conn].IP); }
    1 ponto
  34. Ola pessoas ! Hoje venho trazer um bot de upar contas, ganhar dinheiro & peças no NFSW Versão SoapBox Racing ! Tutorial : 1- Baixe o arquivo . 2- Abra o NFSW . 3- Coloque em modo janela 800x600 . 4- Coloque os gráficos no minimo . 5- Teleporte-se para o evento que queira fazer [ Tem que ser drag race ] . 6- Clique em '' iniciar '' no bot e pronto. deixe ali farmando infinito <3 Qualquer duvida coloquem nos comentários ! [Hidden Content]
    1 ponto
  35. fala meu amigo, já conseguiu aprofundar melhor nos seus estudos? estou chegando a algo novo, além do alarme que desenvolvi no post acima, fiz algo simples para juntar os itens, evitando que o inventário fique full. exemplo, quando você deixa na lan, e vai tomar um banho, meu código agrupa os itens evitando fadiga, vou compartilhar abaixo para você ter uma ideia de como eu desenvolvi. vou dar uma breve resumida para que os espertalhões não copiem e cole de forma sem saber o que estão fazendo. eu me interessei sobre a biblioteca opencv, pensei em desenvolver uma "caça aos monstros", imagina você deixar na lan, e seu personagem sai fazendo essa caça, evitando ficar preso em locais desnecessariamente, com isso, você teria uma certa vantagem maneira, juntamente com o código de agrupar. sei que o caminho seria longo, primeiro eu precisaria me familiarizar com a biblioteca opencv... se você quiser entrar em contato comigo, pode me chamar no Discord, ficarei feliz em trocar uma ideia com você!! segue Discord: jpdevd while True: if executando_sequencia[0]: for caminho_imagem in lista_imagens: posicao_imagem = localizar_imagem(caminho_imagem) if posicao_imagem: print(f"Imagem {caminho_imagem} encontrada na posição {posicao_imagem}") pyautogui.click(posicao_imagem.left + posicao_imagem.width // 2, posicao_imagem.top + posicao_imagem.height // 2, clicks=1, interval=0.0, button='left') if caminho_imagem in coordenadas: destino_x, destino_y = coordenadas[caminho_imagem] pyautogui.click(destino_x, destino_y, clicks=1, interval=0.0, button='left') movimento_realizado = False else: if not movimento_realizado: print(f"Imagem {caminho_imagem} não encontrada na janela WYD. Movendo para (400, 320).") pyautogui.mouseUp() # Garante que o botão do mouse seja liberado pyautogui.moveTo(400, 320) movimento_realizado = True time.sleep(tempo_delay) time.sleep(0.1) # Espera um pouco antes de tentar novamente time.sleep(tempo_delay) # Adiciona um atraso no final do loop else: time.sleep(tempo_delay) else: print("Janela WYD não encontrada.") executar_sequencia_multipla(lista_imagens)
    1 ponto
  36. struct STRUCT_ICEQUEEN { int Timer; //TMSrv 7.57 61AA018 int CastleWaitingTime; //TMSrv 7.57 61AA01C int WaitingTime; //TMSrv 7.57 61AA020 int KillerLeader; //TMSrv 7.57 61AA024 }; //TMSrv 7.57 6471C8 CC int g_IceQueenRandSpawn[6][2] = { {3640, 2806}, {3615, 2789}, {3500, 2848}, {3513, 3008}, {3641, 3008}, {3745, 2978} }; //5A0F0C - 6471F8 int IceQueenState = 1; //Variavel Global de Controle //TMSrv 7.57 61AA018 STRUCT_ICEQUEEN g_pIceQueenQuest; //TMSrv 7.57 00588BD0 void ProcessIceQueenMobKilled(int killer, int target) //Função Ok { int targetGenIndex = pMob[target].GenerateIndex; if (IceQueenState == 1 && targetGenIndex == 155) //IceQueenMirror { int ptLeaderId = CheckIceQueenParty(killer); g_pIceQueenQuest.KillerLeader = ptLeaderId; if (!IsPlayer(g_pIceQueenQuest.KillerLeader)) return; for (int i = 0; i < 29; i++) GenerateMob(5454 + i, 0, 0); g_pIceQueenQuest.CastleWaitingTime = 1800; IceQueenState = 2; } //00588C89 else if (IceQueenState == 2 && targetGenIndex >= 5454 && targetGenIndex <= 5482) { int haveMob = CheckIceQueenCurNumMob(); if (!haveMob) return; GenerateMob(149, 0, 0); //DarkShadow SendClientMessage(g_pIceQueenQuest.KillerLeader, FALSE, _ND_GenDarkShadow); for (int i = 0; i < MAX_PARTY; i++) { int ptMember = pMob[g_pIceQueenQuest.KillerLeader].PartyList[i]; if (ptMember <= MOB_EMPTY || ptMember >= MAX_USER) continue; SendClientMessage(ptMember, FALSE, _ND_GenDarkShadow); } IceQueenState = 3; } //00588D4E else if (IceQueenState == 3 && targetGenIndex == 149) //DarkShadow { int ptLeaderId = CheckIceQueenParty(killer); if (ptLeaderId != g_pIceQueenQuest.KillerLeader) { IceQueenState = 1; ResetIceQueenQuest(); return; } QuestInitTeleportGroup(g_pIceQueenQuest.KillerLeader, 3859, 2882); GenerateMob(154, 0, 0); IceQueenState = 4; } //00588DC6 else if (IceQueenState == 4 && targetGenIndex == 154) //IceQueenVerid { if (rand() % 2) g_pIceQueenQuest.WaitingTime = 28800; //a quest ocorre a cada 8 horas else g_pIceQueenQuest.WaitingTime = 43200; //ou a cada 12 horas IceQueenState = 5; sprintf(temp, "etc, IceQueen killer %s", pMob[killer].MOB.MobName); Log(temp, "system", 0); ResetIceQueenQuest(); } } //TMSrv 7.57 00588EA0 int CheckIceQueenCurNumMob() //Função Ok { for (int i = 0; i < 29; i++) { int curMob = mNPCGen.pList[5454 + i].CurrentNumMob; if (curMob > MOB_EMPTY) return FALSE; } return TRUE; } //TMSrv 7.57 00588F10 void InitIceQueenQuest() //Função Ok { g_pIceQueenQuest.Timer = 1200; int spawnPosition = rand() % 6; int curIceQueenGen = mNPCGen.pList[155].CurrentNumMob; if (curIceQueenGen <= 0) { GenerateMob(155, g_IceQueenRandSpawn[spawnPosition][0], g_IceQueenRandSpawn[spawnPosition][1]); return; } int specialMobId = SummonedSpecialMobList[9]; //IceQueenMirror if (specialMobId <= 0) return; if (!pMob[specialMobId].Mode || pMob[specialMobId].Mode == MOB_COMBAT) return; DoTeleport(specialMobId, g_IceQueenRandSpawn[spawnPosition][0], g_IceQueenRandSpawn[spawnPosition][1], FALSE); pMob[specialMobId].LastX = g_IceQueenRandSpawn[spawnPosition][0]; pMob[specialMobId].TargetX = pMob[specialMobId].LastX; pMob[specialMobId].SegmentX = pMob[specialMobId].TargetX; pMob[specialMobId].SegmentListY[0] = pMob[specialMobId].SegmentX; pMob[specialMobId].LastY = g_IceQueenRandSpawn[spawnPosition][1]; pMob[specialMobId].TargetY = pMob[specialMobId].LastY; pMob[specialMobId].SegmentY = pMob[specialMobId].TargetY; pMob[specialMobId].SegmentListX[0] = pMob[specialMobId].SegmentY; for (int i = 1; i < MAX_SEGMENT; i++) { pMob[specialMobId].SegmentListX[i] = (rand() % 5) + g_IceQueenRandSpawn[spawnPosition][0] - 2; pMob[specialMobId].SegmentListY[i] = (rand() % 5) + g_IceQueenRandSpawn[spawnPosition][1] - 2; } } //TMSrv 7.57 00589160 void ResetIceQueenQuest() //Função Ok { if (g_pIceQueenQuest.KillerLeader) { int posX = (rand() % 5) + 3657; int posY = (rand() % 5) + 3128; QuestInitTeleportGroup(g_pIceQueenQuest.KillerLeader, posX, posY); } if (mNPCGen.pList[154].Mode) //IceQueenVerid DeleteMobGenerateId(154, DELETE_UNSPAWN); if (mNPCGen.pList[155].Mode) //IceQueenMirror DeleteMobGenerateId(155, DELETE_UNSPAWN); if (mNPCGen.pList[149].Mode) //DarkShadow DeleteMobGenerateId(149, DELETE_UNSPAWN); for (int i = 0; i < 29; i++) { int curMob = mNPCGen.pList[5454 + i].CurrentNumMob; if (curMob > MOB_EMPTY) DeleteMobGenerateId(5454 + i, DELETE_UNSPAWN); } g_pIceQueenQuest.Timer = 0; g_pIceQueenQuest.CastleWaitingTime = 0; } //TMSrv 7.57 00589280 int CheckIceQueenParty(int conn) //Função Ok { int leader = pMob[conn].Leader; if (leader <= MOB_EMPTY) leader = conn; for (int i = 0; i < MAX_PARTY; i++) { int ptMember = pMob[leader].PartyList[i]; if (IsPlayer(ptMember)) break; } return leader; } //ProcessSecTimer //00563A20 if (IceQueenState == 1) //IceQueen Quest { if (g_pIceQueenQuest.Timer > 0) g_pIceQueenQuest.Timer--; else InitIceQueenQuest(); } else if (IceQueenState == 2 || IceQueenState == 3 || IceQueenState == 4) { if (g_pIceQueenQuest.CastleWaitingTime > 0) g_pIceQueenQuest.CastleWaitingTime--; else { ResetIceQueenQuest(); IceQueenState = 1; } } else if (IceQueenState == 5) { if (g_pIceQueenQuest.WaitingTime > 0) g_pIceQueenQuest.WaitingTime--; else { InitIceQueenQuest(); IceQueenState = 1; } } //MobKilled //004BDA26 - 0056FD17 if (ptMemberCount <= 0 || ptMemberCount > MAX_PARTY + 1 || ptLevelCount <= 0) { GridMulticast(pMob[target].TargetX, pMob[target].TargetY, (MSG_STANDARD*)&pMobKill, FALSE); DeleteMob(target, DELETE_DEAD); if (IceQueenState) ProcessIceQueenMobKilled(killer, target); return; } //Final da MobKilled if (IceQueenState) ProcessIceQueenMobKilled(killer, target);
    1 ponto
  37. bool Exec_MSG_UpdateItem(int conn, char* pMsg) { MSG_UpdateItem* stUpdateItem = (MSG_UpdateItem*)pMsg; if (!pMob[conn].MOB.CurrentScore.Hp && pUser[conn].Mode == USER_PLAY) { SendHpMode(conn); AddCrackError(conn, 1, 16); return false; } int GateID = stUpdateItem->ItemID - 15000; if (GateID >= 0 && GateID < MAX_ITEMLIST) { int State = pItem[GateID].State; int NexState = stUpdateItem->State; if (State != 3 || NexState != 3) { int DoorKey = BASE_GetItemAbility(&pItem[GateID].ITEM, EF_KEYID); int Key = 0; if (DoorKey) { for (int i = 0; i < MAX_CARRY; ++i) { Key = BASE_GetItemAbility(&pMob[conn].MOB.Carry[i], EF_KEYID); if (Key == DoorKey) { memset(&pMob[conn].MOB.Carry[i], 0, sizeof(STRUCT_ITEM)); SendItem(conn, ITEM_PLACE_CARRY, i, &pMob[conn].MOB.Carry[i]); break; } } } if (Key != DoorKey) { if (pItem[GateID].ITEM.sIndex != 773) //Portão do Castelo { if (pItem[GateID].ITEM.sIndex != 359) //Moita SendClientMessage(conn, g_pMessageStringTable[_NN_No_Key]); return false; } } else { int Height = 0; int isUpdate = UpdateItem(GateID, NexState, &Height); if (isUpdate) { stUpdateItem->Height = Height; GridMulticast(pItem[GateID].PosX, pItem[GateID].PosY, (MSG_STANDARD*)stUpdateItem, 0); return false; } } } } else { AddCrackError(conn, 30, 52); snprintf(szLog, 128, "UpdateItem Crash - MAC:%X%X%X%X", pUser[conn].Mac[0], pUser[conn].Mac[1], pUser[conn].Mac[2], pUser[conn].Mac[3]); Log(szLog, pUser[conn].AccountName, pUser[conn].IP); return false; } return false; }
    1 ponto
  38. Recentemente, a comunidade de "League of Legends" (LoL) foi abalada por uma série de declarações intrigantes de desenvolvedores da Riot Games, levantando suspeitas e expectativas sobre um possível "League of Legends 2". Mas, o que isso realmente significa para os milhões de fãs do jogo? Uma Nova Direção para LoL Segundo as recentes publicações no Twitter, a Riot Games está focada em perseguir "sonhos lendários" em vez de apenas aperfeiçoar o que já conhecemos. Isso sugere uma mudança significativa na direção do jogo, talvez até mesmo um salto para uma nova versão. O que mais chama a atenção é a declaração de que 2025 trará mudanças que transformarão o LoL para sempre. Inovações e Mudanças A especulação de um "League of Legends 2" gira em torno de várias mudanças ambiciosas. Uma delas é a possibilidade de alterações massivas no mapa, algo que a Riot teria hesitado em fazer anteriormente. Estas inovações poderiam incluir novas mecânicas de jogo e interações inesperadas, trazendo de volta a essência de construções excêntricas e diversão imprevisível. A Busca pelo Equilíbrio entre Diversão e Justiça Uma das maiores lutas em qualquer jogo online é manter um equilíbrio entre ser divertido e justo. A Riot parece estar se inclinando mais para a diversão, talvez indicando uma mudança na abordagem de design do jogo, onde a experiência do usuário e a inovação podem superar o foco estrito no equilíbrio. Desenvolvimento Futuro e Suporte Técnico Um aspecto importante dessa discussão é a infraestrutura técnica do jogo. A Riot já sinalizou que fará atualizações que podem não ser compatíveis com sistemas operacionais mais antigos, como o Windows 7, 8 e 8.1. Isso poderia indicar que melhorias significativas no cliente do jogo e, possivelmente, uma nova engine de jogo estão a caminho. Teorias e Expectativas A comunidade está fervilhando com teorias. Alguns acreditam que um "League of Legends 2" poderia não ser um jogo completamente novo, mas sim uma atualização massiva ou uma revisão total do LoL atual. Outros veem isso como um salto para um novo jogo, com melhorias significativas e uma experiência de jogo totalmente renovada. Conclusão Enquanto aguardamos mais informações, uma coisa é certa: a Riot Games está preparando algo grande para o "League of Legends". Seja uma atualização monumental ou um novo jogo, "League of Legends 2" promete ser um marco na história deste icônico jogo. Fiquemos atentos para mais informações e preparemo-nos para uma aventura emocionante no universo de LoL.
    1 ponto
  39. Entendendo as Complexidades de Armadura e Resistências Mágicas E aí, galera! Hoje vamos mergulhar no universo de Diablo 4, um jogo que tem cativado a atenção de muitos. Especificamente, quero falar sobre um aspecto crucial do jogo: as defesas, incluindo armadura e resistências mágicas. Parece que há um problema sério aqui, e é isso que precisamos entender melhor. A Falha nas Defesas de Diablo 4 Ao jogar Diablo 4, você perceberá que, apesar de ter um personagem bem equipado com alta resistência a todos os elementos e uma boa porcentagem de redução de dano pela armadura, algo não está funcionando como deveria. Por exemplo, mesmo com 70% de resistência em todos os elementos, 81% de redução de dano pela armadura, e uma vida considerável, o jogo parece não lidar adequadamente com essas defesas. O que se observa é que, apesar de ter resistências e armaduras quase completas, há uma discrepância significativa na eficácia dessas defesas contra inimigos de níveis superiores. A armadura, por exemplo, é anunciada para reduzir o dano físico de inimigos do mesmo nível, mas não fica claro como isso se aplica a inimigos de níveis mais altos. O Problema com a Armadura e a Resistência O jogo apresenta uma falta de transparência quanto à eficácia da armadura e resistência contra inimigos de diferentes níveis. Isso leva a uma incerteza sobre o quanto de defesa é realmente necessário para enfrentar adversários mais desafiadores. Embora você possa aumentar sua armadura e resistências, não há informações claras sobre como esses atributos se adaptam ao enfrentar inimigos de níveis superiores. Outro ponto a considerar é que a armadura só funciona contra dano físico. Em combates onde monstros causam mais de 100.000 de dano, uma armadura, mesmo com redução de 85%, ainda permite que uma quantidade significativa de dano passe. Isso resulta em um personagem que, apesar de bem equipado, ainda é vulnerável a ataques poderosos. Resistências Mágicas: Outro Desafio Quanto às resistências mágicas, elas também apresentam problemas. Elas são projetadas para reduzir danos mágicos, mas, novamente, não é claro como a resistência se comporta contra inimigos de níveis mais altos. A falta de clareza na mecânica do jogo cria uma situação onde você está sempre em desvantagem, sem saber exatamente como suas defesas estão funcionando. Conclusão: O Que Esperar na Próxima Temporada? Para a próxima temporada de Diablo 4, esperamos que a Blizzard faça ajustes nessas mecânicas, tornando as resistências e armaduras mais transparentes e eficazes. Atualmente, apesar de ter uma ampla gama de defesas, ainda há muitas incertezas sobre a eficácia real dessas proteções. Em resumo, Diablo 4 apresenta um desafio intrigante no que diz respeito às defesas do personagem. Armadura e resistências mágicas são cruciais, mas sua eficácia contra inimigos de níveis mais altos permanece um mistério. Esperamos que as próximas atualizações tragam mais clareza e eficiência a esses aspectos do jogo, tornando a experiência mais equilibrada e agradável.
    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.