-
Posts
613 -
Joined
-
Last visited
-
Days Won
96 -
Feedback
100%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Posts posted by martysama0134
-
-
M2 Download Center
( Internal 2.9 )
( 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:
SpoilerIts settings (xtea keys, extensions, pack types to use) can be changed inside PackMakerLite.json:
Spoilerupdated:
You can actually integrate the tool in the menu context (running the .reg files) for packing folders and unpacking .eix files:
SpoilerRemove "--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
-
662
-
6
-
16
-
1
-
8
-
8
-
2
-
5
-
2
-
4
-
15
-
6
-
10
-
4
-
300
-
66
-
609
-
remove 'const' from std::vector and std::string (line 746)
"auto itor" should be enough.
-
"Target Platform Version" is blank.
By the way, vs2015 has mostly the same abi of vs2017, so you can even think to upgrade it.
-
-
moved to:
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); }
-
5
-
4
-
10
-
-
24 minutes ago, charparodar said:
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.
-
1
-
1
-
-
moved to:
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; }
-
10
-
7
-
12
-
-
This page is no longer available. It has either expired, been removed by its creator, or removed by one of the Pastebin staff.
-
13
-
1
-
2
-
4
-
5
-
-
4 hours ago, Adrian1997 said:
Thank you. Can I find out where this memory leak is from? My knowledge is quite small...
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.-
1
-
-
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.
-
1
-
3
-
-
CH3HP DDoS
in Metin2
17 minutes ago, ManiacRobert said:300$ for not to be "ddosed" man
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.
11 minutes ago, PeaceMaker said:Just pay those 300 euro you cheap fuck
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!
rly? you were vulnerable to the p2p apis?
-
1
-
7
-
-
On 12/17/2018 at 1:11 AM, epigra said:
Whether you're right, but many companies such as servers or server digitaloce company in turkey makes Linux installation.I just have a problem you'il be connecting to the server.
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).
-
1
-
-
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.
-
1
-
-
-
2
-
-
43 minutes ago, elizwash said:
Hi, there's no buttons in the animation Scripting section.
*Windows 10 Pro operating system I'd appreciate it if you could help me.
https://metin2.download/picture/r3F9504x09DVmF8K988YXgTtGTP6KMUj/.gif
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
-
1
-
-
1 hour ago, Fleon said:
Not too sure about that, at least it is not for the kqueue event aswell, in the else statement of the syslog for the null event you can clearly see that is treated with a mere continue;
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:
Enjoy.
-
47
-
3
-
2
-
1
-
1
-
1
-
3
-
1
-
15
-
3
-
21
-
-
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).
https://dev.mysql.com/doc/refman/8.0/en/innodb-benefits.html
https://dev.mysql.com/doc/refman/8.0/en/myisam-storage-engine.html
-
3
-
-
On 24/3/2018 at 1:07 AM, Krusty said:
https://metin2.download/picture/r3F9504x09DVmF8K988YXgTtGTP6KMUj/.gif how to fix? im using w7
Try this way in case of higher resolutions and menus overflowing.
-
2
-
4
-
-
37 minutes ago, Koray said:
Look at to him repulation and remember comments on his sale thread, and finally remember that the account is still not banned despite all the cancer content.
He got permabanned 2 weeks ago from here.
-
1
-
-
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/.pngWhy 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/.png2) 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).
Spoiler-
22
-
-
54 minutes ago, M2BobFixed said:
i don't tell anything other too.
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.
12 hours ago, M.Sorin said:Man , please leave the c++ for others. It`s not for you!
-
3
-
-
15 hours ago, M2BobFixed said:
YOU DONT KNOW NOTHING
-
8
-
-
8 hours ago, .Elijah said:
The code can be improved. Now is working just fine. If you don't want to use it just don't use it.
I gave you some suggestions/tips, because I thought you were the creator of this script, but it seems not.
-
5
-
-
5 hours ago, xP3NG3Rx said:
The fix is coming from webzen:
Simple, just execute a .Hide() function before the Destroy function has been called on that object what is stuck on the main window after teleport and that's it.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)
-
1
-
3
-
EterPack Archiver - PackMakerLite
in Tools & Programs
Posted · Edited by martysama0134
UPDATED