Skip to content
mtanksl edited this page Jan 25, 2025 · 13 revisions

Introduction

Edit the \mtanksl.OpenTibia.GameData\data\server\config.lua file to configure which database to use and to configure the login and game binding port.

To configure the binding ports

server = {
	...
	login = {
		...
		port = 7171,
		...
	},
	game = {
		...
		port = 7172,
		...
	},
	...
}

Port 7171 is used by the login server and port 7172 is used by the game server.

To configure which server the player is redirected

server = {
	...
	login = {
		...
		worlds = {
			["Cormaya"] = {
				ipaddress = "127.0.0.1",
				port = 7172
			}
		},
		...
	},
	...
}

Note: The server IP, port and world's name are stored in database's Worlds table. It is updated once the server starts.

To configure the message of the day

server = {
	...
	login = {
		...
		motd = "MTOTS - An open Tibia server developed by mtanksl",
		...
	},
	...
}

Note: The message of the day is stored in database's Motd table. It is updated once the server starts.

To enable the status protocol

server = {
	...
	info = {
		maxconnections = 1,
		port = 7173,
		public = {
			servername = "MTOTS",
			ipaddress = "127.0.0.1",
			port = 7171,
			location = "",
			url = "",
			ownername = "",
			owneremail = "",
			mapname = "map",
			mapauthor = ""
		},
		rules = nil
	},
	...
}

Port 7173 is used by the info server. servername is the server's name, ipaddress is the public login server IP address, port is the public login server port, location is the server's location, url is the server's url, ownername is the owner's name, owneremail is the owner's email, mapname is the map's name (as seen in \mtanksl.OpenTibia.GameData\data\world\[name].otbm), mapauthor is the map's author.

Note: This information is used by and public displayed by services like otservlist.org.

To enable the account manager

server = {
	...
	login = {
		...
		accountmanager = {
			enabled = true,
			allowchangeplayername = true,
			allowchangeplayergender = true,
			accountname = "",
			accountpassword = "",
			playername = "Account Manager",
			playerposition = { x = 915, y = 769, z = 6 },
			playernewposition = { x = 921, y = 771, z = 6 },
			worldname = "Cormaya",
			ipaddress = "127.0.0.1",
			port = 7172
		},
		...
	},
	...
}

allowchangeplayername enables or disables changing the character's name. allowchangeplayergender enables or disables changing the character's gender. Once changed, the outfits and addons will be migrated. accountname is the account's name. accountpassword is the account's password. playername is the character's name. playerposition is the character's position (normally isolated from the main map). playernewposition is the newly created character's temple position. worldname is the world's name displayed in the character list. It is also used as the newly created character's world. ipaddress is the public game server IP address. port is the public game server port.

To configure other gameplay settings

server = {
	...
	game = {
		...
		gameplay = {
			maxplayers = 1000,
			privatenpcsystem = true,
			learnspellfirst = false,
			removechargesfrompotions = true,
			removechargesfromrunes = true,
			removeweaponammunition = true,
			removeweaponcharges = true,
			worldtype = "non-pvp",
			protectionlevel = 0,
			logoutblockseconds = 1 * 60,
			protectionzoneblockseconds = 15 * 60,
			deathlosepercent = -1,
			allowchangeoutfit = true,
			hotkeyaimbotenabled = true,
			showOnlineStatusInCharlist = false,
			allowclones = false,
			oneplayeronlineperaccount = false,
			replacekickonlogin = false,
			vipfreelimit = 20,
			vippremiumlimit = 100,
			depotfreelimit = 2000,
			depotpremiumlimit = 15000,
			kicklostconnectionafterminutes = 1,
			kickidleplayerafterminutes = 15,
			monsterdespawnrange = 2,
			monsterdespawnradius = 50,
			monsterremoveondespawn = true,
			lootrate = 1,
			moneyRate = 1,
			experiencerate = 1.0,
			magiclevelrate = 1.0,
			skillrate = 1.0,
			experiencestages = {
				enabled = false,
				levels = {
					{ minlevel = 1, maxlevel = 8, multiplier = 10.0 }
				}
			},
			rooking = {
				enabled = false,
				experiencethreshold = 1500,
				playernewposition = { x = 921, y = 771, z = 6 }
			}
		}
		...
	},
	...
}