Jump to content

Client Version Control (P2P) 🔒 Kick outdated clients instantly!


Recommended Posts

  • Active Member

Hello community,

today I’m releasing a Client Version Control System.
This feature allows you to enforce client version checks across all channels, fully synced through P2P and stored in the database.
It’s simple, lightweight, and helps keep outdated clients from connecting.

✨ Features:

Quote
  • Database-based versioning
  • Current client version is stored in common.server_config.
  • Easy to update without recompiling.
  • In-game GM command
  • /load_version → Show current version.
  • /load_version <version> → Update version in DB.
  • /load_version <version> 1 → Update DB and kick all non-GM players.
  • P2P Synchronization
  • Version update is broadcast to all channels instantly.
  • Outdated clients are disconnected everywhere, no restart required.
  • Login protection
  • Players with mismatching client versions cannot log in.

✅ Benefits:

Quote
  • Prevents outdated clients from connecting.
  • Centralized version control in the database.
  • Enforce updates without restarting the server.
  • Automatic player kick on version change.
  • Lightweight, minimal modifications, easy to integrate.

 

🎥 Preview Video: ▶️ Watch on ok.ru

📥 Download: 

Spoiler

This is the hidden content, please

 

Released to support the community and help server owners improve client integrity.

Enjoy!

Edited by VegaS™
  • Metin2 Dev 51
  • Flame 2
  • Scream 2
  • Lmao 1
  • Good 10
  • Love 26
  • Premium

Download Center

This is the hidden content, please

Updated 02/10/2025

 

Edited by DemOnJR
  • Metin2 Dev 35
  • Good 5
  • Love 7
  • Active Member

📢 Fixed version reuploaded
Issue has been identified and resolved.

🔧 Changes in:

  • input.h
  • cmd_gm.cpp

📥 Please re-download from the new link and replace your old version:

Spoiler

W

This is the hidden content, please

  • Metin2 Dev 11
  • Good 4

I really want to implement this to my server but I cant, I always get some errors while I try to compile the server side codes.
The first is config.cpp, I see my compiler doesn't like the unique_ptr, if I write auto_ptr instead, it gives me less error:

'pMsg' was not declared in this scope

I had to modify the input_p2p.cpp file from this:

for (auto it = set.begin(); it != set.end(); ++it)

To this:

for (DESC_MANAGER::DESC_SET::const_iterator it = set.begin(); it != set.end(); ++it)

To not get compiling error.
But I can't figure out how to solve the pMsg related error.

My client compiler (VS2013 shitty Terenzo files) also had a hard time when I put this line:

#ifdef __NEW_CLIENT_VERSION_CHECK__
			strncpy(LoginPacket.clientVersion, g_ClientVersion.c_str(), sizeof(LoginPacket.clientVersion));
#endif

To:

		if (!openid_test)
		{
			[...]
		}else{
			[...]
			// 비밀번호를 메모리에 계속 갖고 있는 문제가 있어서, 사용 즉시 날리는 것으로 변경
			#ifdef __NEW_CLIENT_VERSION_CHECK__
			strncpy(LoginPacket.clientVersion, g_ClientVersion.c_str(), sizeof(LoginPacket.clientVersion));
			#endif
			[...]
		}

As you suggested, I could only compile it if I put it outside of the if (!openid_test)'s else case under the second corean text, If I put it to the suggested place I got "takes 3 argoument" errors (sorry I didn't remember the exact message).

I tried to compile under an C++17 upgraded FreeBSD9.2 VDI but I could't compile it there too.
Could you recommend a good VDI to compile your code?
Or the tutorial has some wrong steps? 
Also the Locale_inc.h, packet.h, PythonNetworkStreamPhaseGame.cpp files are 0KB empty files in the UserInterface tutorial folder, can I be sure there are nothing to modify there?
Tomorrow I try it again with a FreeBSD12 VDI with a CLANG-9 compiler, if I don't succeed there I will sadly revert these changes and I go back to my old python method where players clients send their messages in the global chat like this via uichat.py and uiwhisper.py:

PlayerName [v0.1]: Message


I hope I could implement your release to my server someday!
Thanks if you could help me or us somehow!

  • Active Member

 

 

Please re-download from the new link and replace your old version:

Spoiler

 

This is the hidden content, please

Alternative download links → Alternate_1 or Alternate_2 or Alternate_3

 

  • Metin2 Dev 18
  • Good 3
  • Love 6

Don't use any images from : imgur, turkmmop, freakgamers, inforge, hizliresim... Or your content will be deleted without notice...
Use : https://metin2.download/media/add/

Please use https://metin2.download/ when uploading files smaller than 100MB, otherwise the approval will take longer due to manual upload.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • 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.