Jump to content

Luigina

Member
  • Posts

    12
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by Luigina

  1. On 1/24/2024 at 10:54 PM, FALLEN1 said:

    What did you mean with 
    TEMP_BUFFER buf(16 * 1024);? I mean, why 16 * 1024?
    And in this case:
    char temp[8096 * SHOP_TAB_COUNT_MAX];
    I should put 16 * 1024 or should increase?

    You can change like that 

    TEMP_BUFFER buf(8 * 1024 * SHOP_TAB_COUNT_MAX);

  2. 2 hours ago, Amun said:

    That picture says that you're calling AddGuest on a null pointer, which is why you're getting the crash.

    There isn't any way to null pointer. I just click to npc and got crash.
    Did you see the size on crash ?

    I did that change and my problem solved.

    King regards !

    • Good 1
  3. Hello community !

    I found an issue when i was checking ShopEx system. If your pack_tab size is bigger than default m2 / SHOP_HOST_ITEM_MAX_NUM is bigger than default this overflow occurs.
    This causes a core crash as seen in the screenshot below: 

    https://metin2.download/picture/n2KPdWX19ovTCs9nLW684fA6IibqhrTu/.png

    Solution

    I use temp buffer for handle better but you can change 8096 too. 

    To solve this problem, you can follow these steps:

    // In shopEx.cpp
    
    --------------------------------------------------------------
    // Search
    
    	char temp[8096];
    	char* buf = &temp[0];
    	size_t size = 0;
    
    // Change like this
    
    	TEMP_BUFFER buf(16 * 1024);
    --------------------------------------------------------------
    // Search
    
    		memcpy(buf, &pack_tab, sizeof(pack_tab));
    		buf += sizeof(pack_tab);
    		size += sizeof(pack_tab);
    
    // Change like this
    
    		buf.write(&pack_tab, sizeof(pack_tab));
    --------------------------------------------------------------
    // Search
    
    	pack.size = sizeof(pack) + sizeof(pack2) + size;
    
    // Change like this
    
    	pack.size = sizeof(pack) + sizeof(pack2) + buf.size();
    --------------------------------------------------------------
    // Search
      
    	ch->GetDesc()->Packet(temp, size);
    
    // Change like this
    
    
    	ch->GetDesc()->Packet(buf.read_peek(), buf.size());

     

    After following these steps, you should have overcome this problem in the ShopEx system. If you have any problems, please leave a comment.

    Kind regards,

    Luigina

    • Metin2 Dev 2
    • Facepalm 1
    • Good 3
    • Love 1
  4. Nobody don't want compile source in every version change so you can add simple config.
    
    Config.cpp
    
    short g_NewClientVersion = 0;
    
    
    		TOKEN("client_version")
    		{
    			str_to_number(g_NewClientVersion, value_string);
    			fprintf(stderr, "CLIENT_VERSION: %d\n", g_NewClientVersion);
    			continue;
    		}
    
    Config.h
      
      extern short g_NewClientVersion;
    
    input_login.cpp
      
    	if (pinfo->NewCheckVersion != g_NewClientVersion)
    	{
    		TPacketGCLoginFailure failurePacket;
    
    		failurePacket.header = HEADER_GC_LOGIN_FAILURE;
    		strlcpy(failurePacket.szStatus, "VERSION", sizeof(failurePacket.szStatus));
    		d->Packet(&failurePacket, sizeof(TPacketGCLoginFailure));
    		return;
    	}
    
    and change int NewCheckVersion to short NewCheckVersion, bcs which crazy guy will make 1231312312 the version.

     

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