Jump to content

[M2Dev] Advanced Files To Build Your Server: Src & Server Files & Client [x64 / DX9Ex / CMake / Python3.14 / FreeType / XChaCha20-Poly1305]


Recommended Posts

  • Active+ Member
12 hours ago, Distraught said:

Please do not! If I wanted to add a VM image, I would have done it. But it breaks the whole purpose. It's really straightforward and the files are always updated, if you put them on a VDI, they won't be able to get the latest updates.
Also, if someone can't do a git clone or a FreeBSD install, than it's completely pointless for them to use these files.

 

  

It's literally written down in the topic. Read it again.

 

[UPDATE]

 - After careful consideration and checking the compiler implementation statuses, I decided to move the client and server sources to C++20 standard.
- logging changed to spdlog

Thank you for this update and for your tip about VDIs. You're right about it defeating the purpose, just thought to share one as a starting point because it took me 2 days to build my ports in mine (had some connection issues as well) and the fuss was too much.

 

Also can anyone point me to the right direction about the server starting issue? I've been tryna debug it for the last 2 days now and I can't seem to find a hint about why it won't connect to the port. I've checked my config files for db and game and didn't find anything out of the ordinary:

 

db.txt

Spoiler
WELCOME_MSG 				= "Database connector is running..."

SQL_ACCOUNT 				= "127.0.0.1 account metin2 12345678 0"
SQL_PLAYER 				= "127.0.0.1 player metin2 12345678 0"
SQL_COMMON 				= "127.0.0.1 common metin2 12345678 0"
SQL_HOTBACKUP 				= "127.0.0.1 hotbackup metin2 12345678 0"

TABLE_POSTFIX 				= ""

BIND_PORT               		= 15000
CLIENT_HEART_FPS        		= 60
HASH_PLAYER_LIFE_SEC    		= 600
BACKUP_LIMIT_SEC        		= 3600
PLAYER_ID_START 			= 100
PLAYER_DELETE_LEVEL_LIMIT 		= 70
PLAYER_DELETE_CHECK_SIMPLE 		= 1
ITEM_ID_RANGE 				= 2000000000 2100000000
MIN_LENGTH_OF_SOCIAL_ID			= 6
SIMPLE_SOCIALID 			= 1

 

 

game.txt

Spoiler
DB_PORT: 15000
ACCOUNT_SQL: 127.0.0.1 metin2 12345678 account
PLAYER_SQL: 127.0.0.1 metin2 12345678 player
COMMON_SQL: 127.0.0.1 metin2 12345678 common
LOG_SQL: 	127.0.0.1 metin2 12345678 log
TABLE_POSTFIX: 
PASSES_PER_SEC: 60
SAVE_EVENT_SECOND_CYCLE: 180
PING_EVENT_SECOND_CYCLE: 180
VIEW_RANGE: 8000
CHECK_MULTIHACK: 0
ADMINPAGE_PASSWORD: metin2adminpass
ADMINPAGE_IP: 127.0.0.1
SPEEDHACK_LIMIT_COUNT: 300
SPEEDHACK_LIMIT_BONUS: 80
PK_PROTECT_LEVEL: 15
MALL_URL: example.com
MAX_LEVEL: 105

 

 

mysql-server is running.

This user exists in the db with full rights to everything and the password works.

 

I didn't touch anything in the source or the serverfiles except changing "localhost" to "127.0.0.1" and the port from 9000 to 15000 in these 2 config files.

21 hours ago, Distraught said:

Please do not! If I wanted to add a VM image, I would have done it. But it breaks the whole purpose. It's really straightforward and the files are always updated, if you put them on a VDI, they won't be able to get the latest updates.
Also, if someone can't do a git clone or a FreeBSD install, than it's completely pointless for them to use these files.

 

  

It's literally written down in the topic. Read it again.

 

[UPDATE]

 - After careful consideration and checking the compiler implementation statuses, I decided to move the client and server sources to C++20 standard.
- logging changed to spdlog

Sorry, I still don't get it. 

.png

  • Active+ Member
1 hour ago, twbro54l said:

Sorry, I still don't get it. 

.png

Bro delete the entire folder and redownload or clone with git (install Git if you don't have it and do the following):

  1. Go to the folder you want the project to be downloaded and open a terminal in that directory. Type the following:
    git clone https://github.com/d1str4ught/m2dev-client-src.git
  2. After it's done, cd into the folder created (m2dev-client) from your terminal and type this command:
    cmake -S . -B build
  3. When this is done, you will have a new folder called build. Open that folder in explorer as you would normally and you will see m2dev-client-src.sln in there. That's the file that opens the project in VS.

CMake doesn't compile your code, it compiles the project so you won't have to adjust and configure each project manually. Hope that helped.

  • Love 3
  • Honorable Member
2 hours ago, twbro54l said:

Sorry, I still don't get it. 

.png

Did you set the working directory? 🙂 Otherwise Visual Studio isn't a mind reader to know where your client files are. 🙂 

  • Love 1

992404397646696589.png
Former C++ Developer at Gameloft on DML
Join my Discord: Distraught Labs

  • Active+ Member

A free project that is constantly updated is always valuable, thank you for your contribution to the community.

  • Metin2 Dev 1
  • Love 2

spacer.png

©

Good job, but one problem:

Error occurred while packing Monster: Command '['PackMaker.exe', '--input', 'Monster', '--output', '../pack']' returned non-zero exit status 3221226505.
Error occurred while packing OutdoorB3: Command '['PackMaker.exe', '--input', 'OutdoorB3', '--output', '../pack']' returned non-zero exit status 3221226505.
Error occurred while packing season3_eu: Command '['PackMaker.exe', '--input', 'season3_eu', '--output', '../pack']' returned non-zero exit status 3221226505.
Error occurred while packing Terrain: Command '['PackMaker.exe', '--input', 'Terrain', '--output', '../pack']' returned non-zero exit status 3221226505.
Error occurred while packing textureset: Command '['PackMaker.exe', '--input', 'textureset', '--output', '../pack']' returned non-zero exit status 3221226505.

 

  • Active Member
1 minute ago, ValkeryE said:

Good job, but one problem:

Error occurred while packing Monster: Command '['PackMaker.exe', '--input', 'Monster', '--output', '../pack']' returned non-zero exit status 3221226505.
Error occurred while packing OutdoorB3: Command '['PackMaker.exe', '--input', 'OutdoorB3', '--output', '../pack']' returned non-zero exit status 3221226505.
Error occurred while packing season3_eu: Command '['PackMaker.exe', '--input', 'season3_eu', '--output', '../pack']' returned non-zero exit status 3221226505.
Error occurred while packing Terrain: Command '['PackMaker.exe', '--input', 'Terrain', '--output', '../pack']' returned non-zero exit status 3221226505.
Error occurred while packing textureset: Command '['PackMaker.exe', '--input', 'textureset', '--output', '../pack']' returned non-zero exit status 3221226505.

 

recompile and replace m2dev-client\assets\PackMaker.exe

Edited by Helia01
  • Love 1
8 minutes ago, Helia01 said:

recompile and replace m2dev-client\assets\PackMaker.exe

Better, but I can't see objects on the maps. Do you know why?

  • Active Member

This is the hidden content, please

Edited by Helia01
  • Metin2 Dev 132
  • Eyes 1
  • Good 22
  • muscle 1
  • Love 68

[2025-09-25 12:03:51.077] [error] [unsigned __int64 __cdecl socket_connect(const char *,unsigned short)()] HOST 127.0.0.1:9000, could not connect.

[2025-09-25 12:03:54.024] [error] [unsigned __int64 __cdecl socket_connect(const char *,unsigned short)()] HOST 127.0.0.1:9000, could not connect.

[2025-09-25 12:03:57.714] [error] [unsigned __int64 __cdecl socket_connect(const char *,unsigned short)()] HOST 127.0.0.1:9000, could not connect.

[2025-09-25 12:04:00.030] [error] [unsigned __int64 __cdecl socket_connect(const char *,unsigned short)()] HOST 127.0.0.1:9000, could not connect.

 

spacer.png

help? what is that?

7 hours ago, Leͥgeͣnͫd said:

[2025-09-25 12:03:51.077] [error] [unsigned __int64 __cdecl socket_connect(const char *,unsigned short)()] HOST 127.0.0.1:9000, could not connect.

[2025-09-25 12:03:54.024] [error] [unsigned __int64 __cdecl socket_connect(const char *,unsigned short)()] HOST 127.0.0.1:9000, could not connect.

[2025-09-25 12:03:57.714] [error] [unsigned __int64 __cdecl socket_connect(const char *,unsigned short)()] HOST 127.0.0.1:9000, could not connect.

[2025-09-25 12:04:00.030] [error] [unsigned __int64 __cdecl socket_connect(const char *,unsigned short)()] HOST 127.0.0.1:9000, could not connect.

 

spacer.png

help? what is that?

Just game.exe and db.exe give to /share/bin and use install.py

  • Premium

Several members have sent Pull Requests on GitHub. What is the status of those? How often will you review the commits?

c++latest, latest libs...

1 hour ago, ValkeryE said:

Doar game.exe și db.exe sunt date în /share/bin și se folosește install.py

Yes, that's how I did it, only when I turn it on, the respective errors appear.

  • Honorable Member

New PRs have been merged.

  • Metin2 Dev 1

992404397646696589.png
Former C++ Developer at Gameloft on DML
Join my Discord: Distraught Labs

  • Active+ Member

I don't know if it's fixed, but when you try to create a new chart, you'll get a warning saying "last_play hasn't a default value." To do this, right-click the spreadsheet and select "design table" Hover over last_play and paste the following into the "Default" field to fix the problem.

.png

 

'0000-00-00 00:00:00'

  • Metin2 Dev 1

hasanmacit

Hey!!

Firstly, many thanks for this project! I'm very new to this scene (started less then a week ago, and sometime back in like 2012 I did some stuff too) and this project is awesome, I managed to compile and configure the server & client without much trouble. I'm running everything stable on windows now.

I'm a bit stuck on quests though, it's really hard to find reliable information online. My problem is that I think not every quest is compiled? Like a few quests pop up, but I can't talk to the blacksmith or other NPCs for example. 

Here is what I did:
1. I compiled the server source with cmake

2. I put the freshly build qc.exe into /share/locale/english/quest

3. I ran the make.py to generate the quests (around 145 folders~ in /object/)

Pretty straight forward, but only some quests appeared after this. I don't know if I forgot to do something else? I googled a lot and looked through different forums, I also tried looking at the scripts and figuring things out but to no avail.

If I copy over the already generated files from the original source (TMP4) everything is there (around 300 folders), but I just fail at compiling I guess?

Does anyone know what may be the cause of this? 

  • Active+ Member

When entering the game in the new pack system, the files in the ymir work folder are not visible. Has anyone encountered this? Will there be any solutions offered? Or am I the only one encountering this error? @ Distraught

hasanmacit

  • Premium
4 minutes ago, hasanmacit said:

When entering the game in the new pack system, the files in the ymir work folder are not visible. Has anyone encountered this? Will there be any solutions offered? Or am I the only one encountering this error? @ Distraught

Could you please specify exactly what error you’re encountering? Do you have a syserr or an error message? If so, or if you can attach a screenshot, it will be much easier to help.

c++latest, latest libs...


[2025-09-26 20:43:27.048] [info] SYSTEM: closing client socket. DESC #13
[2025-09-26 20:43:28.814] [info] SYSTEM: closing socket. DESC #12
[2025-09-26 20:43:30.014] [info] SYSTEM: Trying to connect to 127.0.0.1:3306
[2025-09-26 20:43:30.015] [info] SYSTEM: connected to server (fd 12, ptr 0x16cf0b5c6000)
[2025-09-26 20:43:30.048] [info] PARTY Disable
[2025-09-26 20:43:30.048] [info] SYSTEM: closing client socket. DESC #12
[2025-09-26 20:43:33.014] [info] SYSTEM: Trying to connect to 127.0.0.1:3306
[2025-09-26 20:43:33.014] [info] SYSTEM: connected to server (fd 12, ptr 0x16cf0b5c6000)
[2025-09-26 20:43:33.047] [info] PARTY Disable
[2025-09-26 20:43:33.047] [info] SYSTEM: closing client socket. DESC #12
[2025-09-26 20:43:36.014] [info] SYSTEM: Trying to connect to 127.0.0.1:3306
[2025-09-26 20:43:36.014] [info] SYSTEM: connected to server (fd 12, ptr 0x16cf0b5c6000)
[2025-09-26 20:43:36.047] [info] PARTY Disable
[2025-09-26 20:43:36.047] [info] SYSTEM: closing client socket. DESC #12
[2025-09-26 20:43:39.014] [info] SYSTEM: Trying to connect to 127.0.0.1:3306
[2025-09-26 20:43:39.014] [info] SYSTEM: connected to server (fd 12, ptr 0x16cf0b5c6000)
[2025-09-26 20:43:39.047] [info] PARTY Disable
[2025-09-26 20:43:39.047] [info] SYSTEM: closing client socket. DESC #12
[2025-09-26 20:43:42.014] [info] SYSTEM: Trying to connect to 127.0.0.1:3306
[2025-09-26 20:43:42.014] [info] SYSTEM: connected to server (fd 12, ptr 0x16cf0b5c6000)
[2025-09-26 20:43:42.047] [info] PARTY Disable
[2025-09-26 20:43:42.047] [info] SYSTEM: closing client socket. DESC #12
[2025-09-26 20:43:45.014] [info] SYSTEM: Trying to connect to 127.0.0.1:3306
[2025-09-26 20:43:45.014] [info] SYSTEM: connected to server (fd 12, ptr 0x16cf0b5c6000)
[2025-09-26 20:43:45.047] [info] PARTY Disable
[2025-09-26 20:43:45.047] [info] SYSTEM: closing client socket. DESC #12
[2025-09-26 20:43:48.014] [info] SYSTEM: Trying to connect to 127.0.0.1:3306
[2025-09-26 20:43:48.014] [info] SYSTEM: connected to server (fd 12, ptr 0x16cf0b5c6000)
[2025-09-26 20:43:48.047] [info] PARTY Disable
[2025-09-26 20:43:48.047] [info] SYSTEM: closing client socket. DESC #12
[2025-09-26 20:43:48.080] [info] SYSTEM: new connection from [81.196.xxx.128] fd: 12 handshake 3957431888 output input_len 0, ptr 0x16cf0b416f00
[2025-09-26 20:43:48.314] [info] Handshake: client_time 0 server_time 186314
[2025-09-26 20:43:48.444] [info] AUTH_PHASE 0x16cf0b416f00
[2025-09-26 20:43:51.009] [info] SYSTEM: Trying to connect to 127.0.0.1:3306
[2025-09-26 20:43:51.010] [info] SYSTEM: connected to server (fd 13, ptr 0x16cf0b5c6000)
[2025-09-26 20:43:51.043] [info] PARTY Disable
[2025-09-26 20:43:51.043] [info] SYSTEM: closing client socket. DESC #13
[2025-09-26 20:43:54.009] [info] SYSTEM: Trying to connect to 127.0.0.1:3306
[2025-09-26 20:43:54.010] [info] SYSTEM: connected to server (fd 13, ptr 0x16cf0b5c6000)
[2025-09-26 20:43:54.043] [info] PARTY Disable
[2025-09-26 20:43:54.043] [info] SYSTEM: closing client socket. DESC #13


Im close to giving up.. trying for 2 days to make it work..

 

 

all privileges are alright, mariadb 10.6 freebsd 14.3

all changed in db and game.txt 

can't get it to work any ideas

  • Active+ Member
1 hour ago, flatik said:

Could you please specify exactly what error you’re encountering? Do you have a syserr or an error message? If so, or if you can attach a screenshot, it will be much easier to help.

cannot find the four tga files located under ymir work that should be loaded under the class board(ui.py). There is no specific error. It seems like it cannot read the contents of the ymir work directory.

Edited by hasanmacit

hasanmacit

  • Active+ Member

After trying to run the simple first test to login to the game without changing anything in the sources/SF/packs I was able to resolve some errors while I was not able to resolve some others. I really love how new technologies are coming into places and old redundancies are being cut off from the system but unfortunately the testing from the community is not yet sufficient as I am aware of other people with different problems than mine.

My setup:

  • Windows 11 host with VS Community 2022 + VS Dev Tools 2019
  • FreeBSD 14.3 local development VM
  • MariaDB 11.8
  • LUA 5.4
  • Python 3.13 (in VM)

 

Issues I have fixed (in case someone is having the same):

  1. DB_ADDR missing from the config files in server. Simply add this line in share/conf/game.txt:
    DB_ADDR: 127.0.0.1
  2. AsyncSQL <whatever>
        failed. Retrying in 5 seconds:

    To solve this go to /share/conf/db.txt and replace all localhost with 127.0.0.1. If the issue persists or you get something along those lines replace port 9000 with 15000 or any other free port in your system in both db.txt and game.txt.

    DON'T FORGET TO CHANGE YOUR MARIADB USERNAME AND PASSWORD WITH AN EXISTING USER WITH FULL PRIVILEGES!!!
     
  3. QC Python syntax error (pre_qc.py):
    Replace in pre_qc.py in def run(filename):
    with open(filename, "r") as fh:
    		lines = fh.readlines()

    with:
     

    	try:
    		with open(filename, "r", encoding='utf-8') as fh:
    			lines = fh.readlines()
    	except UnicodeDecodeError:
    		with open(filename, "r", encoding='cp1252') as fh:
    			lines = fh.readlines()

    'latin1' works too instead of 'cp1252', but the one I have supports a larger variety of non-unicode characters.

  4. package folder missing: simply create a folder called /package in share folder and link it into every single one of the channel cores folders. To automate the process use my install.py:
     

    Spoiler
    import sys
    sys.dont_write_bytecode = True
    
    import os
    import shutil
    import subprocess
    import channels
    
    GAMEDIR = os.getcwd()
    
    def write_lines_to_files(path, lines):
    	with open(path, "w") as f:
    		for line in lines:
    			f.write(line)
    			f.write("\n")
    			
    def generate_auth_config(path, port, p2p_port):
    	file_content = [
    		"HOSTNAME: auth",
    		"CHANNEL: 1",
    		f"PORT: {port}",
    		f"P2P_PORT: {p2p_port}",
    		"AUTH_SERVER: master",
    	]
    	write_lines_to_files(os.path.join(path, "CONFIG"), file_content)
    
    def generate_game_config(path, channel, core, map_allow):
    	port = 11000 + (channel * 10 + core)
    	p2p_port = 12000 + (channel * 10 + core)
    	file_content = [
    		f"HOSTNAME: channel{channel}_{core}",
    		f"CHANNEL: {channel}",
    		f"PORT: {port}",
    		f"P2P_PORT: {p2p_port}",
    		f"MAP_ALLOW: {map_allow}",
    	]
    	write_lines_to_files(os.path.join(path, "CONFIG"), file_content)
    
    # Cross-platform colored output
    def print_green(text):
    	if os.name == "nt":
    		os.system("")  # Enable ANSI escape characters on Windows
    	print("\033[1;32m" + text + "\033[0m")
    
    def setup_links_db(target_dir):
    	os.chdir(target_dir)
    	os.mkdir("log")
    	try_symlink(os.path.join(GAMEDIR, "share", "conf"), "conf", is_dir=True)
    	try_symlink(os.path.join(GAMEDIR, "share", "data"), "data", is_dir=True)
    	try_symlink(os.path.join(GAMEDIR, "share", "locale"), "locale", is_dir=True)
    	try_symlink(os.path.join(GAMEDIR, "share", "bin", "db"), "db", is_dir=False)
    	
    def setup_links_game(target_dir, name):
    	os.chdir(target_dir)
    	os.mkdir("log")
    	try_symlink(os.path.join(GAMEDIR, "share", "conf"), "conf", is_dir=True)
    	try_symlink(os.path.join(GAMEDIR, "share", "data"), "data", is_dir=True)
    	try_symlink(os.path.join(GAMEDIR, "share", "locale"), "locale", is_dir=True)
    	try_symlink(os.path.join(GAMEDIR, "share", "mark"), "mark", is_dir=True)
    	try_symlink(os.path.join(GAMEDIR, "share", "package"), "package", is_dir=True)
    	try_symlink(os.path.join(GAMEDIR, "share", "bin", "game"), name, is_dir=False)
    
    # Helper function to create symlinks cross-platform
    def try_symlink(target, link_name, is_dir):
    	try:
    		if os.path.lexists(link_name):
    			os.remove(link_name)
    		
    		if os.name == "nt":  # Windows
    			if is_dir:
    				# For directories, create junction
    				import subprocess
    				subprocess.run(["mklink", "/J", link_name, target], shell=True, check=True)
    			else:
    				# For files, copy instead of symlink
    				target += ".exe"
    				link_name += ".exe"
    				shutil.copy2(target, link_name)
    		else:  # Unix-like systems
    			os.symlink(target, link_name, target_is_directory=is_dir)
    	except (OSError, subprocess.CalledProcessError) as e:
    		print(f"> Failed to create link: {link_name} -> {target} ({e})")
    
    ## Clearing Up Old Files
    channels_dir = os.path.join(GAMEDIR, "channels")
    if os.path.exists(channels_dir):
    	print_green("> Clearing up channels...")
    	shutil.rmtree(channels_dir)
    
    package_dir = os.path.join(GAMEDIR, "share", "package")
    if not os.path.exists(package_dir):
    	os.makedirs(package_dir)
    
    ## DB Setup
    print_green("> Setting up environment for the DB Cache...")
    db_dir = os.path.join(GAMEDIR, "channels", "db")
    os.makedirs(db_dir)
    setup_links_db(db_dir)
    
    # Auth Setup
    print_green("> Setting up environment for AUTH...")
    auth_dir = os.path.join(GAMEDIR, "channels", "auth")
    os.makedirs(auth_dir)
    setup_links_game(auth_dir, "game_auth")
    generate_auth_config(auth_dir, 11000, 12000)
    
    ## Game Channel Setup
    
    for channel_id, cores in channels.CHANNEL_MAP.items():
    	print_green(f"> Setting up environment for CH{channel_id}...")
    	for core_id, maps in cores.items():
    		core_dir = os.path.join(GAMEDIR, "channels", f"channel{channel_id}", f"core{core_id}")
    		os.makedirs(core_dir)
    		setup_links_game(core_dir, f"channel{channel_id}_core{core_id}")
    		generate_game_config(core_dir, channel_id, core_id, maps)
    
    print_green("> We are all done!")
    os.chdir(GAMEDIR)

     

    This will install and link the folder automatically every time you run it.

 

Things I could not find a solution for (and ideas are of course super welcome!):

  • [error] [int heart_idle(LPHEART)()] losing 31 seconds. (lag occured)

  • [error] [bool DESC::HandshakeProcess(DWORD, long, bool)()] handshake retry limit reached! (limit 32 character !NO CHARACTER!)

  • Packet value difference for 254.

Some of these errors may or may not be a big deal, I'm not an expert. Behavior that affected me was obviously a time delay between the server opening and the time I was actually able to login to the game. I also experienced login screen refreshing upon successful login instead of proceeding to character selection.

For whoever is concerned about packet value difference all I know is that the client uses an auto-generation value system for fixed packet values that unfortunately do not match with the server's table in cipher.cpp. What needs to be done is for the table to be completely re-written or for the server to adopt the same system as the client. Unfortunately I don't know how to do either of those things so I thought about telling you guys in case someone was able to fix it.

Packet 254 is not important as far as I can tell but I'm sure it won't be the only packet affected by this difference.

 

These behaviors were random, not all of them was happening in every server start, but at least one of them was always there.

 

And for whoever may have a clue for this I tried to upgrade CryptoPP version to 8.9.0. I was able to compile and login to the game but the character could not move from the position, he would just go for the first step and freeze in position. I don't know if I did something wrong but reverted the changes back to the initial version.

 

If anyone has any clue or tip about the 3 errors I couldn't solve yet please let me know! Thank you guys!

  • Honorable Member

Hm, switching from localhost to 127.0.0.1 is a good idea.
I ran into a similar issue with MongoDB. I had it bound to 127.0.0.1 (so IPv4 localhost), but in my configs I was just using "localhost".
That caused errors because sometimes "localhost" would resolve to the IPv6 version, which couldn’t connect to the Mongo server.
So yeah, I think this can definitely happen with other databases too.
Using 127.0.0.1 explicitly is much more straightforward.

I changed them in the config files and pushed it.

Edited by Distraught

992404397646696589.png
Former C++ Developer at Gameloft on DML
Join my Discord: Distraught Labs

  • Active+ Member
20 minutes ago, Distraught said:

Hm, switching from localhost to 127.0.0.1 is a good idea.
I ran into a similar issue with MongoDB. I had it bound to 127.0.0.1 (so IPv4 localhost), but in my configs I was just using "localhost".
That caused errors because sometimes "localhost" would resolve to the IPv6 version, which couldn’t connect to the Mongo server.
So yeah, I think this can definitely happen with other databases too.
Using 127.0.0.1 explicitly is much more straightforward.

I changed them in the config files and pushed it.

You converted the entire DB system into Mongo?

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.