Jump to content

Karbust

Management
  • Posts

    1161
  • Joined

  • Days Won

    10
  • Feedback

    100%

Posts posted by Karbust

  1. 2 minutes ago, Draveniou1 said:

    I'm not talking about the game's memoryleak

    I say if I remove the useless freeBsd codes

     

    Bruh

    You are confusing memory usage by services and other software with memory leaks...

    FreeBSD is already lightweight, you wouldn't get a noticeable difference.

    This is FreeBSD 13 32bits on a Virtual Machine with 3GB of RAM and 12 cores:

    GQ2fEkF.png

    The only things using resources are bpytop (resource monitor) (cpu usage) and mysql (memory usage).

    The memory usage doesn't go above 617MB and the CPU oscillates between 1 and 2% usage. What exactly are you trying to achieve? It's already pretty good "without" anything running...

    • Good 1
  2. 3 minutes ago, Draveniou1 said:

    If you have freebsd with deleted unnecessary codes you do not have memoryleak 🙂 so I want to find freebsd without unnecessary codes

     

    I know it exists but I see many looking without any result

     

    It is difficult to find and you can order from the FreeBSD administrator but it will definitely cost a lot of money

    Memory leaks result from somewhere between the chair and the keyboard. Don't blame the OS, much less a battle-tested OS like FreeBSD.

  3. Just now, Draveniou1 said:

    I know this but I do not have much knowledge in FreeBSD and I want to delete the junk code that is active in FreeBSD

    How can we delete junk FreeBSD code? I only know about SendMail from martysama but the rest?

    When you make a FreeBSD installation it asks you what you want to install. Just remove a few boxes, and pray it still works. Whatever is there is necessary, I don't know why you want to "delete the junk code". Sendmail comes enabled by default, you have to disable it manually...

    If you have a good reason why you want a completely stripped version of FreeBSD, maybe the folks at https://forums.freebsd.org may be able to help you out. For metin2 there are 0 reasons why you would need something like that...

  4. Update

    Sorry for another sudden update.

    Added support for update locale.cfg when changing the language on the patcher. The default value is false which means the locale.cfg file will not be updated when changing the patcher's language.
    To set it up edit src\config.ts.

    This is the hidden content, please

    Disclaimer: The locales may not be 100% correct since I don't have every metin2 client. If you find a mistake on the ones already defined let me know.

    • Metin2 Dev 8
    • Good 1
    • Love 2
  5. Post your ClientManager.cpp too, the problem is probably coming from the query. You probably have an out of order on the function CreatePlayerTableFromRes on ClientManagerPlayer.cpp. You must be sure the query that returns the code to RESULT_COMPOSITE_PLAYER has the fields in the same order.

    Since it can't access the memory, you probably missed a field on the query.

  6. 35 minutes ago, FreZzwe said:

    hello guy,

     

    i try to create a 32x32 map and I got :

     

    Microsoft Visual C++ Runtime Library
    Runtime Error!

    abnormal program termination

    It is not possible to create a map with this size?

     

    The biggest map ever map is 16x16, which is 4 times the size of the desert (4x4), why the hell do you want a map 32x32?

    This is a 32 bit application, probably it's running out of memory. 32 bits applications can only use up to 2GB, or 4GB if compiled large addresses aware, which is the default, at least for the client source, which is also a 32 bit application.

    Summing up, don't be crazy and try to build a gigantic map that has absolutely zero use cases on metin2. Even the 16x16 I never saw any server using it...

  7. 1 minute ago, Marko98 said:

    Thank you for the reply. I already upgraded granny to 2.11.8, but when i select the character the client crashes in the loading phase. I used the 21.0.8 all in one posted by PINGER, i took my root, uiscript, and locale, and the rest was packed from the archive posted by PINGER. But as I told you earlier, the bin crashed when it's in the loading phase. 

    Don't just copy and paste all the stuff, you need to make changes, mainly on the protos, msm, locale_game, locale_interface and others.

  8. 54 minutes ago, Draveniou1 said:

     

    I mean this should stay that way so that the server does not get into error

    	if (m_data.vnum == 0) // vnum이 0이면 삭제하라고 표시된 것이다.
    	{
    		if (g_test_server)
    		{
    		}
    	}

     

    You probably should figure out the why it breaks instead leaving a stupid and useless if... It doesn't return anything, so it literally goes through the if and executes whatever code comes after it.

    • Love 1
  9. 17 minutes ago, TMP4 said:

    130115Screenshot-2.png

    Sorry @ Karbust to use your words but I couldn't miss this meme 🤣

    ahahahahah

    I though about that, but the original metin2 source is the only leaked content allowed in here, because #fuckymir #fuckwebzen and definitely #fuckgameforge 

    But #dontfuckmetin2devs

    Animated GIF

    • Love 2
  10. Sup bois and grils

    I still see a lot of people not being able to select the character when using a local server for friends or VPS behind a internal router or firewall.

    Disclaimer: This code (apart from the changes to support DNS names) wasn't made by me, it was originally posted on the metin2dev's French brother Funky-Emu by @Veltor88.

     

    On service.h add this:

    #define ENABLE_PROXY_IP

     

    On char.cpp:
    After:

    	p.lAddr	= lAddr;

    Add:

    	#ifdef ENABLE_PROXY_IP
    	if (!g_stProxyIP.empty())
    		p.lAddr = inet_addr(g_stProxyIP.c_str());
    	#endif

    Like this:

    1406391.png

     

    On config.cpp:
    After (or anywhere within the global variables definition): 

    char		g_szInternalIP[16]

    Add:

    #ifdef ENABLE_PROXY_IP
    std::string	g_stProxyIP = "";
    #endif

    Like this:
    1406392.png

     

    Still on config.cpp:
    After: the last TOKEN
    Add:

    #ifdef ENABLE_PROXY_IP
    		TOKEN("proxy_ip")
    		{
    #ifndef WIN32
    			if (validateIpAddress(value_string))
    				g_stProxyIP = value_string;
    			else {
    				struct hostent *host = gethostbyname(value_string);
    				g_stProxyIP = inet_ntoa(*(struct in_addr *)host->h_addr_list[0]);
    				fprintf(stderr, "PROXY_IP: [%s] resolves to [%s]\n", value_string, g_stProxyIP.c_str());
    			}
    #else
    			g_stProxyIP = value_string;
    #endif
    			fprintf(stderr, "PROXY_IP: %s\n", g_stProxyIP.c_str());
    		}
    #endif

    Like this:.png

     

    Still on config.cpp:
    Before: 

    void config_init(const string& st_localeServiceName)

    Add:

    bool validateIpAddress(const std::string &ipAddress)
    {
    #ifndef WIN32
        struct sockaddr_in sa;
        int result = inet_pton(AF_INET, ipAddress.c_str(), &(sa.sin_addr));
        return result != 0;
    #else
        return true;
    #endif
    }

    Like this:

    .png

    On config.h:
    After (or anywhere in the file):

    extern char		g_szInternalIP[16];

    Add:

    #ifdef ENABLE_PROXY_IP
    extern std::string	g_stProxyIP;
    #endif

    Like this:
    1406394.png

     

    On desc.cpp:
    Within the function:

    void DESC::SendLoginSuccessPacket()

    Inside: 

    for (int i = 0; i < PLAYER_PER_ACCOUNT; ++i)


    Add in the beginning:

    		#ifdef ENABLE_PROXY_IP
    		if (!g_stProxyIP.empty())
    			rTable.players[i].lAddr=inet_addr(g_stProxyIP.c_str());
    		#endif

    Like this:
    1406395.png

     

    On input_db.cpp:
    Withing the function:

    bool GetServerLocation(TAccountTable & rTab, BYTE bEmpire)

    After:

    						rTab.players[i].szName);

    Add:

    				#ifdef ENABLE_PROXY_IP
    				if (!g_stProxyIP.empty())
    					rTab.players[i].lAddr=inet_addr(g_stProxyIP.c_str());
    				#endif


                    
    Still on input_db.cpp and within the same function:
    After:

    struct in_addr in;

    Add:

    		#ifdef ENABLE_PROXY_IP
    		if (!g_stProxyIP.empty())
    			rTab.players[i].lAddr=inet_addr(g_stProxyIP.c_str());
    		#endif

    Like this:
    1406396.png

     

    Still on the same file:
    Within the function:

    void CInputDB::PlayerCreateSuccess(LPDESC d, const char * data)

    After:

    	pack.player = pPacketDB->player;

    Add:

    	#ifdef ENABLE_PROXY_IP
    	if (!g_stProxyIP.empty())
    		pack.player.lAddr=inet_addr(g_stProxyIP.c_str());
    	#endif

    Like this:
    1406397.png

     

    Done on the source, you can compile.


    On every channel config, add this:

    BIND_IP: <Private IPv4 IP> (it will be something within a private IP class. Check the IP of the machine using the "ifconfig" command)
    PROXY_IP: <Public IPv4 IP or a domain name (like example.com)> (check out something like https://www.whatismyip.com)

     

    DNS names will only work on FreeBSD. I didn't make the code for Windows.

     

    Private IPv4 classes:

    1406398.png

    On some sources (like the one from vanilla, BIND_IP was renamed to PUBLIC_IP, just check which TOKEN is responsible to set the value on the variable g_szPublicIP.

    You will need to open the ports on your router, even for yourself on localhost with the virtual machine because the game server will try to "proxy" you through the public IP you defined.

    This wasn't tested using a VPN, like Hamachi or ZeroTier.

    • Metin2 Dev 2
    • Good 2
    • Love 2
    • Love 5
  11. 11 minutes ago, stewardlanu said:

    I wish I can find them. Sadly my googling skills shows me nothing about that. I could not find anything I tried everything and got nothing.

    http://keyto-shop.com/newchar.html

    I don't know about any complete leak. You need model, animations, skills, weapons, armors, hairs, c++ part. Basically the same amount of stuff has Lycan but you don't have anywhere to take it out xD

    I don't recommend you doing it unless you have a 3d model on duty to make the necessary changes for new armors and stuff from the official, and make new weapons.

  12. 3 minutes ago, blaxis said:

    Thank you.
    So last question; What exactly does the granny2_static.lib file do?

    (not granny2.lib)

    It was statically built, no need to have the granny2.dll.

    This is valid for all libs statically build, and you can remove almost all of them from the client if you spend some time making changes and building the necessary libs.

    • Good 1
×
×
  • 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.