Jump to content

martysama0134

Honorable Member
  • Posts

    613
  • Joined

  • Last visited

  • Days Won

    96
  • Feedback

    100%

Everything posted by martysama0134

  1. UPDATED Fixed another small bug with lowercase paths (GR2 -> gr2)
  2. M2 Download Center Download Here ( Internal 2.9 ) Download Here ( Last Release ) This is an archiver I've created, and it looks quite stable so far. The PackMakerLite (PML) supports type 0-1-2-3-4-5-6. As a summarize, the metin2 types are handled like this: Type 0 - only storage (no encryption/compression; it can be read fully from the .epk) Type 1 - compressed - lzo(file) Type 2 - compressed and encrypted - xtea(lzo(file)) Type 3 - encrypted with Panama - you must save an .iv key server-side in the panama/ folder. (content readable only after auth phase) The official used it only for patch2. Type 4 - encrypted with a mix of ciphers (cshybridcrypt) - you must save a .dat key server-side in the package/ folder. (content readable only after auth phase) Practically all the metin2_patch files. Type 5 - like type 4, but a server-side map/<map_name> is also provided. (content readable only after accessing the <map_name> map as a player) The official used it only for the catacomb data. Type 6 - compressed and encrypted - xtea(snappy(file)) Usage: Its settings (xtea keys, extensions, pack types to use) can be changed inside PackMakerLite.json: You can actually integrate the tool in the menu context (running the .reg files) for packing folders and unpacking .eix files: Remove "--nolog" from the .bat files if you want to see the logs again. Command-line options get overwritten by JSON config options. Last but not least: since the client handles all the filenames in lowercase, this tools automatically converts them as well. Thanks also to: blackdragonx61 / Mali - type4-5 extract code / type 6 compress code metin2team - type6 extract code By martysama0134
  3. remove 'const' from std::vector and std::string (line 746) "auto itor" should be enough.
  4. "Target Platform Version" is blank. By the way, vs2015 has mostly the same abi of vs2017, so you can even think to upgrade it.
  5. reformatted + passable hex value as arg [Hidden Content]
  6. moved to: [Hidden Content] Added somewhere (even .h) inline bool ch_compare_ip(LPCHARACTER ch1, LPCHARACTER ch2) { if (!ch1 || !ch2 || !ch1->GetDesc() || !ch2->GetDesc()) return false; const std::string ip1 = ch1->GetDesc()->GetHostName(); const std::string ip2 = ch2->GetDesc()->GetHostName(); return (ip1.compare(ip2) == 0); } or if added in char.h inside CHARACTER: inline bool CHARACTER::CompareIP(LPCHARACTER ch2) { if (!ch2 || !this->GetDesc() || !ch2->GetDesc()) return false; const std::string ip1 = this->GetDesc()->GetHostName(); const std::string ip2 = ch2->GetDesc()->GetHostName(); return (ip1.compare(ip2) == 0); }
  7. ah yes, replace Version.h with #pragma once #define VER_FILE_VERSION 1, 0, 40999, 0 #define VER_FILE_VERSION_STR "1.0.40999.1" inline int METIN2_GET_VERSION() { return 40999; } inline and pragma once were missing. I used 40999 but anything is fine. .dmp files can be debugged with visual studio, but the exact .exe, source files and .pdb files are needed, otherwise the result is junk.
  8. moved to: [Hidden Content] Few days ago, I did something similar for the client (EterLib\error.cpp) (instead of errorlog): #define ENABLE_CRASH_MINIDUMP #ifdef ENABLE_CRASH_MINIDUMP # include "../UserInterface/Version.h" # include <iomanip> # include <sstream> void make_minidump(EXCEPTION_POINTERS * e) { auto hDbgHelp = LoadLibraryA("dbghelp"); if (hDbgHelp == nullptr) return; auto pMiniDumpWriteDump = (decltype(&MiniDumpWriteDump)) GetProcAddress(hDbgHelp, "MiniDumpWriteDump"); if (pMiniDumpWriteDump == nullptr) return; // folder name std::string folder = "logs"; CreateDirectoryA(folder.c_str(), nullptr); // time format auto t = std::time(nullptr); std::ostringstream timefmt; timefmt << std::put_time(std::localtime(&t), "%Y%m%d_%H%M%S"); // filename std::string filename = fmt::format("{}\\metin2client_{}_{}.dmp", folder, METIN2_GET_VERSION(), timefmt.str()); auto hFile = CreateFileA(filename.c_str(), GENERIC_WRITE, FILE_SHARE_READ, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if (hFile == INVALID_HANDLE_VALUE) return; MINIDUMP_EXCEPTION_INFORMATION exceptionInfo; exceptionInfo.ThreadId = GetCurrentThreadId(); exceptionInfo.ExceptionPointers = e; exceptionInfo.ClientPointers = FALSE; auto dumped = pMiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MINIDUMP_TYPE(MiniDumpWithIndirectlyReferencedMemory | MiniDumpScanMemory), e ? &exceptionInfo : nullptr, nullptr, nullptr); CloseHandle(hFile); // std::string errMsg = "The application crashed. Send the generated file to the staff: "s + name; // MessageBox(nullptr, errMsg.c_str(), "Metin2Client", MB_ICONSTOP); return; } #endif LONG __stdcall EterExceptionFilter(_EXCEPTION_POINTERS * pExceptionInfo) { #ifdef ENABLE_CRASH_MINIDUMP make_minidump(pExceptionInfo); #else // eterlog trash #endif return EXCEPTION_EXECUTE_HANDLER; } I'm not using it since I'll use crashrpt2 instead. Version without c++17&libfmt: #define ENABLE_CRASH_MINIDUMP #ifdef ENABLE_CRASH_MINIDUMP #include "../UserInterface/Version.h" #include <iomanip> #include <sstream> void make_minidump(EXCEPTION_POINTERS* e) { auto hDbgHelp = LoadLibraryA("dbghelp"); if(hDbgHelp == nullptr) return; auto pMiniDumpWriteDump = (decltype(&MiniDumpWriteDump))GetProcAddress(hDbgHelp, "MiniDumpWriteDump"); if(pMiniDumpWriteDump == nullptr) return; // folder name std::string folder = "logs"; CreateDirectoryA(folder.c_str(), nullptr); // time format auto t = std::time(nullptr); std::ostringstream timefmt; timefmt << std::put_time(std::localtime(&t), "%Y%m%d_%H%M%S"); // filename std::string filename = folder + "\\"s + "metin2client_"s + std::to_string(METIN2_GET_VERSION()) + "_"s + timefmt.str() + ".dmp"; auto hFile = CreateFileA(filename.c_str(), GENERIC_WRITE, FILE_SHARE_READ, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if(hFile == INVALID_HANDLE_VALUE) return; MINIDUMP_EXCEPTION_INFORMATION exceptionInfo; exceptionInfo.ThreadId = GetCurrentThreadId(); exceptionInfo.ExceptionPointers = e; exceptionInfo.ClientPointers = FALSE; auto dumped = pMiniDumpWriteDump( GetCurrentProcess(), GetCurrentProcessId(), hFile, MINIDUMP_TYPE(MiniDumpWithIndirectlyReferencedMemory | MiniDumpScanMemory), e ? &exceptionInfo : nullptr, nullptr, nullptr); CloseHandle(hFile); // std::string errMsg = "The application crashed. Send the generated file to the staff: "s + name; // MessageBox(nullptr, errMsg.c_str(), "Metin2Client", MB_ICONSTOP); return; } #endif LONG __stdcall EterExceptionFilter(_EXCEPTION_POINTERS * pExceptionInfo) { #ifdef ENABLE_CRASH_MINIDUMP make_minidump(pExceptionInfo); #else // eterlog trash #endif return EXCEPTION_EXECUTE_HANDLER; }
  9. > AsyncSQL.h This page is no longer available. It has either expired, been removed by its creator, or removed by one of the Pastebin staff.
  10. Check each DBManager::instance().DirectQuery if they are either wrapped in smart pointers (auto_ptr/unique_ptr), or freed using delete. Most of the times, it's this.
  11. It crashed when calling the new operator, which means it failed to allocate more memory over a 4gb of process (the limit of 32bit apps). Metin2 processes take 4gb of ram only when they have memory leaks. Most of the times, the memory leak comes from fetched mysql queries that didn't get freed.
  12. The moment you pay (a lot), other people will come to ddos you for money. Also, for €300, you can build a quite good infrastructure that mitigates ddos attacks. Narnia2 paid. He joined the owner's pc using teamviewer (to install the fake protection), he stole all of his server files, and he's now trying to resell them. He also leaked their account table already. Best trade ever. ? 2019 will be the year of booters. Stay tuned! ?
  13. You need to change some lines related to socket & fdwatch management for fixing linux. Also, as someone already said, you can install freebsd on those systems quite easily (e.g. via dual boot, but there are many alternative ways).
  14. The upcoming version should be 12.0 (on December). Current release: 11.2 using clang6. No 13.0. For the warning, replace all the 3 possible -mXXX with just -m32.
  15. Check my docs for those commands: [Hidden Content]
  16. [Hidden Content] Try to decrease the dpi to 100% from the computer panel, and if not resolved, use the manifest as well. Note: I use win10 and it works all fine
  17. Ignore him. He's just iratm shitposting again. 1) A peer can be null, and it's used when we send something without caring for an answer from db. 2) BlockCountry return type isn't handled, so even if it fails, it doesn't exit. Avenuetm didn't reply to Dr3am3r when he asked whether or not a db.core has been generated (in the thread title, it says "db crash", so we expect he got one), but he ended up giving some random likes and nothing more If he doesn't reply, mods should close this thread then. EDIT: how to read a core dump: [Hidden Content] Enjoy.
  18. InnoDB is slightly faster in writing, but it gets totally corrupted very often in case of system crash or reboot (with metin2 server still running) (shutdown -r now is safe). Making Sql backups of InnoDB is mandatory if you don't want to die fast. (cold backups, if not complete, are junk with innodb) MyISAM is slightly faster in reading. MariaDB has also Aria as engine, Mysql8 improves MyISAM and InnoDB by a lot (like InnoDB with improved ACID). [Hidden Content] [Hidden Content]
  19. [Hidden Content] Try this way in case of higher resolutions and menus overflowing.
  20. Frankie/M2BobFixed/warxwar/RaFFa is stealing your players' passwords! What does it mean? Everyone who is using his last "ultimate protection" is indirectly sending all his players' users&passwords to his webserver. How? As you can see, he's sending the player's user&pass at login to his remote webserver faking it as "m2bob login". Haha To understand better what's going on, we need to "decrypt" the text. https://metin2.download/picture/xS42SXAaVi53O60JJpx4FR99NL67o70y/.png Why would he do such a thing? Well, it's nothing new that he does retarded things like this. Mostly for his own profit. And also to harm/destroy other servers, since he opened one from stolen server-files. How many servers are now fucked up? There are quite some so far. Is he really skilled? Haha, no. He's a retard. 99.8% of his code comes from stackoverflow.com, and he also was trying to rip-off Koray's protection. He also needs to update the hashes in his protection each time there's a new m2bob version. So, who is Frankie? He's an Italian bipolar guy, and professional liar (he would NEVER NEVER NEVER confess, but he would make some excuses). I taught him python in 2010, but he understood nothing, and I gave up on him. Between 2010-2013 he was just begging for money by doing some quick dirty job in python for random servers. In 2014-2015, he created his m2bobfixed service, and there's quite some people who cried blood because of that. In 2017, he faked that his skype was hacked by romanians to start reselling other people's files. In 2018, he opened a(n infamous) pserver from stolen files, and he's currently stealing users&passwords and private files from all of his "clients". If he joined your PC via teamviewer, or if he sent you some .exe/.dll, it's quite sure he stole something from you. Additional things: 1) He placed the protection inside a folder called "AccountProtect", but in reality it's a password stealer. Can you understand the irony? https://metin2.download/picture/J637ybg6HvR8x1gc1BEF2i67Fj077d0E/.png 2) You can try and decrypt the strings by yourself. Download https://pastebin.com/H9v0heBh then compile n run it: # c++ main.cpp # ./a.out Edit: RaFFa is Italian (Rome), and it has nothing to do with RaffaeL (Spanish/Romanian).
  21. Yeah, yeah. So bad that I just need to fart to annihilate your existence. I don't like meddling with shit though. I prefer to keep myself clean.
  22. I gave you some suggestions/tips, because I thought you were the creator of this script, but it seems not.
  23. Technically, this is a work-around, because the previous "ghost interface" is still there, but it remains just hidden (undeleted). You get such bug due to a python's garbage collector "issue/condition" when destroying the relative class: Since, in your case, the class' object count is higher than 1, when deleting self, the object count is decreased by 1, but since it doesn't still become 0, self doesn't get destroyed at all. (and del self.wndInventory wouldn't trigger def __del__ either) Normally, the object count for gui instances should remain as 1, but (mostly in every case) if someone during a .SetEvent (or similar) passed the self parameter without proxing it (proxy=creating a weak uncounted instance of self), it will lead to create 2 self instances in two different modules (interfaceModule and ui in this case), which means the object count will be >=2, and then you'll get a "ghost interface" when rewarping. Even so, considering everything beside self gets still deleted (i mean, its internal elements get deleted except the methods; that's why ESC still works), putting a .Hide() in there is still safe. (the memory leak would still remain unfixed though; maybe after retriggering the bug the "ghost interface" gets deleted, but a new one would still be generated to replace it)
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.