Jump to content

martysama0134

Honorable Member
  • Posts

    613
  • Joined

  • Last visited

  • Days Won

    96
  • Feedback

    100%

Posts posted by martysama0134

  1. M2 Download Center

    This is the hidden content, please
    ( Internal 2.9 )

    This is the hidden content, please
    ( 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:

    Spoiler

    image.png

     

     

    Its settings (xtea keys, extensions, pack types to use) can be changed inside PackMakerLite.json:

    Spoiler

    085806WrdE6yM.png

    updated:

    image.png

     

    You can actually integrate the tool in the menu context (running the .reg files) for packing folders and unpacking .eix files:

    Spoiler

    085806BxEU3fl.png085806Z588o1Q.png

     

    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
     

    • Metin2 Dev 662
    • kekw 6
    • Eyes 16
    • Facepalm 1
    • Dislove 8
    • Angry 8
    • Not Good 2
    • Sad 5
    • Cry 2
    • Smile Tear 4
    • Think 15
    • Confused 6
    • Scream 10
    • Lmao 4
    • Good 300
    • Love 66
    • Love 609
  2. moved to: 

    This is the hidden content, please

    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);
    }

     

    • Metin2 Dev 5
    • Good 4
    • Love 10
  3. 24 minutes ago, charparodar said:

    hY6luEf.png

    I've this error, I'm using the version without  c++17 & libfmt

    Oc2Aboa.png

    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.

    • Good 1
    • Love 1
  4. moved to: 

    This is the hidden content, please

    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;
    }

     

    • Metin2 Dev 10
    • Good 7
    • Love 12
  5. 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? ???

    • Sad 1
    • Love 7
  6. 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).

    • Love 1
  7. 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

    This is the hidden content, please

    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 :ph34r:

    • Metin2 Dev 1
  8. 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. :lol:

    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. ak8FHsA.png

    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 Lmpy3k7.png:mellow:

    If he doesn't reply, mods should close this thread then. :ph34r:

     

    EDIT: how to read a core dump:

    This is the hidden content, please

    Enjoy.

    • Metin2 Dev 47
    • Eyes 3
    • Dislove 2
    • Angry 1
    • Not Good 1
    • Sad 1
    • Think 3
    • Confused 1
    • Good 15
    • Love 3
    • Love 21
  9. 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

     

    • Love 3
  10. 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).

    Spoiler

    • Love 22
  11. 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!

     

    Imagine similară

    3pvauM6.jpg

    OGC6G9t.jpg

    • Love 3
  12. 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)

    • Metin2 Dev 1
    • Love 3
×
×
  • 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.