Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 09/19/2021 in all areas

  1. Boa tarde... Deixo aqui a Dungeon Arboreal Menace completa. Contém mapas, mobs, boos, itens, protos, etc... No momento tenho ela no meu servidor de testes e estar a funcionar perfeitamente. Download: LINK UPDATED https://www101.zippyshare.com/v/9DmM0ZLU/file.html Vírus Scan: https://www.virustotal.com/pt/file/e316c8e35491e38093fe0a01a97dc0d02af882e7eac5d6b1b8c9dfbffe050886/analysis/1508171527/ Fonte: turkmmo OBS: Quest's traduzidas para PT-BR.
    1 point
  2. Go to file root/intrologin.py Look for: "WRONGPWD" : localeInfo.LOGIN_FAILURE_WRONG_PASSWORD, Add this bellow: "HWBANNED" : "Login from this computer has been blocked", Client source Go to UserInterface/AccountConnector.cpp Look for: bool CAccountConnector::__AuthState_RecvEmpty() { BYTE byEmpty; Recv (sizeof (BYTE), &byEmpty); return true; } Add this bellow: //hardware ban revised #include <intrin.h> #include <Iphlpapi.h> #pragma comment(lib, "iphlpapi.lib") const char* GetMacAddress() { PIP_ADAPTER_INFO AdapterInfo; DWORD dwBufLen = sizeof(AdapterInfo); char *mac_addr = (char*)malloc(17); AdapterInfo = (IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO)); if (!AdapterInfo) { return ""; } if (GetAdaptersInfo(AdapterInfo, &dwBufLen) == ERROR_BUFFER_OVERFLOW) { AdapterInfo = (IP_ADAPTER_INFO *)malloc(dwBufLen); if (!AdapterInfo) { return ""; } } CHAR _MACFORMAT[] = { '%', '0', '2', 'X', ':', '%', '0', '2', 'X', ':', '%', '0', '2', 'X', ':', '%', '0', '2', 'X', ':', '%', '0', '2', 'X', ':', '%', '0', '2', 'X', 0x0 }; //"%02X:%02X:%02X:%02X:%02X:%02X" if (GetAdaptersInfo(AdapterInfo, &dwBufLen) == NO_ERROR) { PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo; do { sprintf(mac_addr, _MACFORMAT, pAdapterInfo->Address[0], pAdapterInfo->Address[1], pAdapterInfo->Address[2], pAdapterInfo->Address[3], pAdapterInfo->Address[4], pAdapterInfo->Address[5]); return mac_addr; pAdapterInfo = pAdapterInfo->Next; } while (pAdapterInfo); } free(AdapterInfo); return NULL; } //hardware ban revised Inside: bool CAccountConnector::__AuthState_RecvPhase() Look for: strncpy (LoginPacket.name, m_strID.c_str(), ID_MAX_NUM); strncpy (LoginPacket.pwd, m_strPassword.c_str(), PASS_MAX_NUM); Add this bellow: //hardware ban revised strncpy(LoginPacket.cHWInfo, GetMacAddress(), sizeof(LoginPacket.cHWInfo) - 1); //hardware ban revised Look for: LoginPacket.name[ID_MAX_NUM] = '\0'; LoginPacket.pwd[PASS_MAX_NUM] = '\0'; Add this bellow: //hardware ban revised LoginPacket.cHWInfo[255] = '\0'; //hardware ban revised Go to file UserInterface/Packet.h Look for: typedef struct command_login3 { BYTE header; char name[ID_MAX_NUM + 1]; char pwd[PASS_MAX_NUM + 1]; DWORD adwClientKey[4]; } TPacketCGLogin3; Replace with: typedef struct command_login3 { BYTE header; char name[ID_MAX_NUM + 1]; char pwd[PASS_MAX_NUM + 1]; DWORD adwClientKey[4]; char cHWInfo[255 + 1]; //hardware ban revised } TPacketCGLogin3; Game source Go to file game/Packet.h Look for: typedef struct command_login3 { BYTE header; char login[LOGIN_MAX_LEN + 1]; char passwd[PASSWD_MAX_LEN + 1]; DWORD adwClientKey[4]; } TPacketCGLogin3; Replace with: typedef struct command_login3 { BYTE header; char login[LOGIN_MAX_LEN + 1]; char passwd[PASSWD_MAX_LEN + 1]; DWORD adwClientKey[4]; char cHWInfo[255 + 1]; // hardware ban revised } TPacketCGLogin3; Go to file game/input_auth.cpp Look for: if (false == FN_IS_VALID_LOGIN_STRING (login)) { sys_log (0, "InputAuth::Login : IS_NOT_VALID_LOGIN_STRING(%s) desc %p", login, get_pointer (d)); LoginFailure (d, "NOID"); return; } Add this bellow: //hardware ban revised char query[1024]; snprintf(query, sizeof(query),"SELECT hwid FROM account.hwid_ban WHERE hwid = '%s'", pinfo->cHWInfo); std::auto_ptr<SQLMsg> execquery(DBManager::instance().DirectQuery(query)); if (execquery->Get()->uiNumRows >= 1) { LoginFailure(d, "HWBANNED"); return; } //hardware ban revised Go to file game/db.cpp Look for: char szQuery[1024]; snprintf (szQuery, sizeof (szQuery), "UPDATE account SET last_play=NOW() WHERE id=%u", dwID); std::auto_ptr<SQLMsg> msg (DBManager::instance().DirectQuery (szQuery)); Add this bellow: //hardware ban revised char szHwid[255 * 2 + 1]; DBManager::instance().EscapeString(szHwid, sizeof(szHwid), pinfo->cHWInfo, strlen(pinfo->cHWInfo)); char szQuery2[1024]; snprintf (szQuery2, sizeof (szQuery2), "UPDATE account SET hwid='%s' WHERE id=%u", szHwid, dwID); //Updates hwid of the account std::auto_ptr<SQLMsg> msg2 (DBManager::instance().DirectQuery (szQuery2)); //hardware ban revised Run this queries inside account database: DROP TABLE IF EXISTS `hwid_ban`; CREATE TABLE `hwid_ban` ( `id` int(11) NOT NULL AUTO_INCREMENT, `hwid` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; ALTER TABLE `account` ADD COLUMN `hwid` text DEFAULT NULL;
    1 point
  3. TUDO PACK + CLIENT SOURCE UPDATE 1 aberto cmd_gm.cpp procurando ACMD(do_item_purge) substituir por ACMD(do_item_purge) { #ifdef NEW_PET_SYSTEM #include "New_PetSystem.h" if (ch->GetNewPetSystem()->IsActivePet()) { ch->ChatPacket(CHAT_TYPE_INFO, "A fost hranit petu. "); return ; } #endif int i; LPITEM item; for (i = 0; i < INVENTORY_AND_EQUIP_SLOT_MAX; ++i) { if ((item = ch->GetInventoryItem(i))) { ITEM_MANAGER::instance().RemoveItem(item, "PURGE"); ch->SyncQuickslot(QUICKSLOT_TYPE_ITEM, i, 255); } } for (i = 0; i < DRAGON_SOUL_INVENTORY_MAX_NUM; ++i) { if ((item = ch->GetItem(TItemPos(DRAGON_SOUL_INVENTORY, i )))) { ITEM_MANAGER::instance().RemoveItem(item, "PURGE"); } } } E para aqueles que tê-lo substituído com 200 slot de Iar pentru cei ce au 200 slot inlocuiti cu acesta ACMD(do_item_purge) { #ifdef NEW_PET_SYSTEM #include "New_PetSystem.h" if (ch->GetNewPetSystem()->IsActivePet()) { ch->ChatPacket(CHAT_TYPE_INFO, "A fost hranit petu. "); return ; } #endif int i; LPITEM item; for (i = 0; i < INVENTORY_AND_EQUIP_SLOT_MAX; ++i) { if ((item = ch->GetInventoryItem(i))) { ITEM_MANAGER::instance().RemoveItem(item, "PURGE"); ch->SyncQuickslot(QUICKSLOT_TYPE_ITEM, i, 200); } } for (i = 0; i < DRAGON_SOUL_INVENTORY_MAX_NUM; ++i) { if ((item = ch->GetItem(TItemPos(DRAGON_SOUL_INVENTORY, i )))) { ITEM_MANAGER::instance().RemoveItem(item, "PURGE"); } } } Item desc RO https://mega.nz/#!AxMnQKQA!7LzC7VSsi7-lm8QHjg7gf6olxWmqy-8Wlnb1Xh8stws http://image.prntscr.com/image/3106b850cbf44d479d59e310565fabfd.png image.prntscr.com/image/3106b850cbf44d479d59e310565fabfd.png Download: https://mega.nz/#!tBdwBbBB!3LX-juzR66_OHrzscNHCUaI3HL0_gaemNQPpnwLTugQ https://www.virustotal.com/pt/url/1b3201fd425785abeb5dc0a917e9f3c2a950dbf71d1db27a10d964831e573c8b/analysis/1486595798/ http://s33.postimg.org/smms5uey7/Pet_UI.png Fonte:FG Quem Posto: VoLtZzZ Topico: Luffy Desculpe a tradução foi feita pelo google tradutor Espero ter ajudado
    1 point
  4. Este tutorial faz o inverso do colocado no tutorial Converter Chaves Binário >> Compactador Serve para quem tenha as chaves alteradas e esteja a migrar para a source. Para evitar terem mudar a chave e recompactar o cliente todo, podem adicionar a chave já mudada à source do binário. Para poupar trabalho, foi criado um script que automatiza esse processo. Para tal basta: 1- Ir até este website e instalar o python (recomendo a versão 2.7)https://www.python.org/downloads/ 2- Instalar o python. Na instalação do python, selecionar a opção "Add python.exe do Path" 3- Fazer download do ficheiro em anexo. 4- Abrir o ficheiro e colocar a chave modificada. 5- Editar o ficheiro EterPack.cpp com os códigos fornecidos pelo script. Consultar o seguinte tópico para colocação correcta dos códigos: hex_para_src.py
    1 point
  5. Modificar Index Key Abrir o ficheiro EterPack.cpp no código-fonte do vosso binário.Procurar por: static DWORD s_adwEterPackKey[] A chave original será esta: static DWORD s_adwEterPackKey[] ={ 45129401, 92367215, 681285731, 1710201, }; Modificar os números para os que quisermos (colocar sempre o mesmo número de caracteres em cada linha consoante está no original.) Exemplo de Index key modificada: static DWORD s_adwEterPackKey[] ={ 12345678, 12345678, 123456789, 1234567, }; Modificar Pack key Abrir o ficheiro EterPack.cpp no código-fonte do vosso binário.Procurar por: static DWORD s_adwEterPackSecurityKey[] A chave original será esta: static DWORD s_adwEterPackSecurityKey[] ={ 78952482, 527348324, 1632942, 486274726, }; Modificar os números para os que quisermos (colocar sempre o mesmo número de caracteres em cada linha consoante está no original.) Exemplo de Pack key modificada: static DWORD s_adwEterPackSecurityKey[] ={ 12345678, 123456789, 1234567, 12356789, }; Modificar Item proto key Abrir o ficheiro ItemManager.cpp no código-fonte do vosso binário.Procurar por: static DWORD s_adwItemProtoKey[4] = A chave original será esta: static DWORD s_adwItemProtoKey[4] ={ 173217, 72619434, 408587239, 27973291}; Modificar os números para os que quisermos (colocar sempre o mesmo número de caracteres em cada linha consoante está no original.) Exemplo de Item proto key modificada: static DWORD s_adwItemProtoKey[4] ={ 123456, 12345678, 123456789, 12345678}; Modificar Mob proto key Abrir o ficheiro PythonNonPlayer.cpp no código-fonte do vosso binário.Procurar por: static DWORD s_adwMobProtoKey[4] = A chave original será esta: static DWORD s_adwMobProtoKey[4] ={ 4813894, 18955, 552631, 6822045}; Modificar os números para os que quisermos (colocar sempre o mesmo número de caracteres em cada linha consoante está no original.) Exemplo de Mob proto key modificada: static DWORD s_adwMobProtoKey[4] ={ 1234567, 12345, 123456, 1234567};
    1 point
  6. Introdução Olá TMoore's visto que muitos muitos querem adquirir novos conhecimentos criar seus próprios projectos, só que como algumas pessoas tem um pouco de receio de mexer sem saber e danificar algo muitos optam por sacar algo prefeito e meter online editando apenas algumas coisinhas, isso tem vindo a transformar o metin2 cada vez mais depressivo, tendo em conta que já existia um tópico semelhante do @ tierrilopes mas já não se encontra activo e ainda tendo em conta do tópico das Files TMoore Tutorials e como muitas pessoas pediram-me a source das files e não a partilhei ainda, então decide criar este tópico para vos poder explicar como criar as "vossas" próprias server files isso iria fazer com que vocês criassem algo vosso e não simplesmente sacar as files quaisquer e meter online. Claro que este tutorial não será feito todo de uma vez porque isto será um processo demorado e o mais todos claro possível para que todos possam acompanhar todos os processos sem se perder, lembrando que são livres de colocar questões sempre que possível (Apenas no tópico, não respondo a qualquer questão relacionado a este tópico caso a questão não tenha sido feita no tópico.) 1 - Ferramentas & Recursos Primeiramente vou deixar neste tutorial o link de todas as ferramentas necessárias para prosseguir com o tutorial Winscp - Link Sim é necessário ser o Winscp porque vamos trabalhar com atalhos e é mais rápido trabalhar com atalhos através do winscp do que linha de comandos e também indico o winscp porque penso que não é possível criar atalhos através do filezilla ou Bitvise (que eu saiba) Notepad++ - Link Ou Sublime Text - Link Eu pessoalmente utilizo o notepad++ com mais frequência mas existem casos em que o notepad++ não é o mais indicado, por exemplo quando edito coisas mínimas no mob_proto ou item_proto, editando com o notepad++ ocorre erros porque o notepad++ altera algumas formatações do documento. Bitvise - Link Aconselho a utilização deste software porque utilizando este software não será necessário abrir mais outro software para nos permitir conectar via sftp ou ssh isso porque esse software por si já permite fazer ambas das conexões. Navicat - Link Este software será utilizado para a gestão da base de dados. Eter Manager - Link Aconselho a utilização deste software e não o eternexus porque trabalhando com este software podemos trabalhar de uma forma mais organizada e mais rápido do que com o eternexus. Cliente Metin2PT 2014 R40K - Link Também pode ser utilizado outro cliente sendo que não aconselho porque poderá vir a surgir duvidas devido a utilização de outro cliente diferente do tutorial. Dedicado, vps ou localhost - Caso a vossa ideia seja só testar etc, sem ter objectivo de abrir o servidor ao publico podem comprar um dedicado ou uma vps numa das seguintes hospedagens: BlazingFast VPS; EterHost VPS (Não aconselho); Kimsufi "Dedicados"; Ou podem utilizar também localhost utilizando uma das seguintes ferramentas: Virtual Box, VMware, caso a vossa ideia seja começar um projeto mais avançado com o intuito de o abrir ao publico aconselho dedicados com mais potencias tais como: OVH, Soyoustart, BlazingFast Dedicados, entre outros, isso vai ser escolha vossa dependendo do que desejam e também com o montante que pretendem gastar. Poderá existir alguns software que não foram adicionados ao tópico e que também seja necessário mais a frente serão adicionados, este tópico será actualizado uma vez por dia com um novo capitulo do tutorial, lembrando que o objectivo deste tutorial é ensinar como organizar a estrutura da files e cliente, envolvendo assim tutorias de vários temas relacionados ao metin2. Nenhum conteúdo feio no tutorial será disponibilizado para download para que todos tenham de fazer por si próprio todos os conteúdos aqui desenvolvidos. ​Próxima actualização a este tópico será para falar sobre a "Organização da área de trabalho" e "instalação das ferramentas de trabalho". Obrigado ao TierriLopes pelos conhecimentos e divulgação das ferramentas a utilizar neste tutorial, Mustafa Eroğlu pelo link do Navicat, GunnerMBT pelo Eter Manager, Rafa pelo cliente Metin2Pt. Cumprimentos Dynamic Things
    1 point
  7. trago um autobackup via c++ vamos la. Server/common: length.h Buscar: enum EMisc { colocar abaixo: #ifdef ENABLE_AUTO_BACKUP_SYSTEM AUTOLOGCLEAR_SAVE_TIME = 3600*24, // Limpa LOGS e BACKUP a cada 24 horas #endif service.h #define ENABLE_AUTO_BACKUP_SYSTEM //limpa log e Backup automatico Agora vá ate Server/game/src: main.ccp: Buscar: s_dwProfiler[PROF_HEARTBEAT] += (get_dword_time() - t); Colocar acima: #ifdef ENABLE_BEVIS_AUTO_BACKUP_SYSTEM if (!(pulse % (passes_per_sec * AUTOLOGCLEAR_SAVE_TIME))){ if (g_bAuthServer) std::system("cd /metin2 && sh autobackup.sh"); } #endif VirusTotal Dowload: Backups.rar
    1 point
  8. View File Talisman System || Metin2 Submitter Marco Submitted 03/14/2018 Category Other Downloads
    1 point
  9. instalaste o gcc e o que é preciso para o compilador ? tipo isto // install gcc49 # pkg install gcc49 // symlink to gcc # cd /usr/local/bin # ln -s gcc49 gcc # ln -s g++49 g++ // fix clang replacement # cd /usr/bin # mv cc cc2 # mv c++ c++2 # ln -s /usr/local/bin/gcc cc # ln -s /usr/local/bin/g++ c++ claro que depois no makefile tens de alterar a estenxão do compilador provavelmente o teu make file deve ter a extenção para o 9.3 que deve ser gcc deves add no teu o gcc49 isso eu tirei de um doc da source do marty que compila em freebsd 12 caso te ajude dexo aqui a que tenho e podes comparar
    1 point
  10. FreeBSD 12 funcional Compile OK Server OK
    1 point
  11. shop offline com search shop print do funcionamento abaixo. offlineshop + search.7z
    1 point
  12. Hi, I have an error installing everything to compile source in FreeBSD 11.1. When executing the command cd /usr/ports/devel/libc++ && make install clean BATCH="YES" I get an error and does not install the necessary package, I would like to know how to solve this error. Error image: https://ibb.co/fg01GJ http://oi63.tinypic.com/17tgu0.jpg Thanks in advance!
    1 point
  13. Estou usando o cloud da google, entretanto me da esse error. Em outra vps que uso não da erro algum, copiei as files da VPS sem erro para da google que apresenta erro.
    0 points
  14. Opa, tô querendo comprar um vps pra fazer um servidor de testes, com as configurações da print da pra rodar?
    0 points
×
×
  • Create New...