Skip to content

Config.lua

Configuration Reference (config.lua)

The config.lua file is the primary configuration file for BlackTek Server. It uses Lua syntax and is loaded when the server starts.

Table of Contents


Combat Settings

OptionTypeDefaultDescription
worldTypestring"pvp"World type. Valid values: "pvp", "no-pvp", "pvp-enforced"
hotkeyAimbotEnabledbooleantrueAllow hotkey targeting
protectionLevelnumber1Minimum level for PvP protection
killsToRedSkullnumber3Unjustified kills needed for red skull
killsToBlackSkullnumber6Unjustified kills needed for black skull
pzLockednumber60000Protection zone lock duration (ms)
removeChargesFromRunesbooleantrueRemove charges when using runes
removeChargesFromPotionsbooleantrueRemove charges when using potions
removeWeaponAmmunitionbooleantrueRemove ammunition when attacking
removeWeaponChargesbooleantrueRemove weapon charges when attacking
timeToDecreaseFragsnumber86400Time to decrease frag count (seconds)
whiteSkullTimenumber900White skull duration (seconds)
stairJumpExhaustionnumber2000Exhaustion between stair jumps (ms)
experienceByKillingPlayersbooleanfalseGain experience from killing players
expFromPlayersLevelRangenumber75Level range percentage for player exp

Example

worldType = "pvp"
hotkeyAimbotEnabled = true
protectionLevel = 1
killsToRedSkull = 3
killsToBlackSkull = 6
pzLocked = 60000

Connection Settings

OptionTypeDefaultDescription
ipstring"127.0.0.1"Server IP address
bindOnlyGlobalAddressbooleanfalseEnable to use your globally accessible ip address
loginProtocolPortnumber7171Login server port
gameProtocolPortnumber7172Game server port
statusProtocolPortnumber7171Status protocol port
maxPlayersnumber0Maximum players (0 = unlimited)
onePlayerOnlinePerAccountbooleantrueOne character online per account
allowClonesbooleanfalseAllow multiple logins same character
allowWalkthroughbooleantrueAllow walking through players
serverNamestring""Server name displayed to clients
statusTimeoutnumber5000Status query timeout (ms)
replaceKickOnLoginbooleantrueKick existing session on login
maxPacketsPerSecondnumber25Maximum network packets per second

Example

ip = "127.0.0.1"
loginProtocolPort = 7171
gameProtocolPort = 7172
maxPlayers = 100
serverName = "My BlackTek Server"

Account Manager

OptionTypeDefaultDescription
useIngameAccountManagerbooleantrueEnable in-game account manager
allowNoPassLoginbooleantrueAllow login without password to manager
accountManagerPasswordstring"1"Password for account manager access
managerPositionXnumber95Account manager spawn X coordinate
managerPositionYnumber117Account manager spawn Y coordinate
managerPositionZnumber7Account manager spawn Z coordinate

Example

useIngameAccountManager = true
allowNoPassLogin = true
accountManagerPassword = "1"
managerPositionX = 95
managerPositionY = 117
managerPositionZ = 7

Death Settings

OptionTypeDefaultDescription
deathLosePercentnumber-1Death penalty percentage. -1 = default formula, 0 = no loss, 10 = old formula

Example

deathLosePercent = -1 -- Use default death penalty formula

House Settings

OptionTypeDefaultDescription
housePriceEachSQMnumber1000Price per square meter. -1 = disable buying
houseRentPeriodstring"never"Rent period: "daily", "weekly", "monthly", "yearly", "never"
houseOwnedByAccountbooleanfalseHouses owned by account (not character)
houseDoorShowPricebooleantrueShow house price on doors
onlyInvitedCanMoveHouseItemsbooleantrueOnly invited players can move house items

Example

housePriceEachSQM = 1000
houseRentPeriod = "monthly"
houseOwnedByAccount = false

Item Usage

OptionTypeDefaultDescription
timeBetweenActionsnumber200Minimum time between item uses (ms)
timeBetweenExActionsnumber1000Minimum time between extended actions (ms)

Example

timeBetweenActions = 200
timeBetweenExActions = 1000

Map Settings

OptionTypeDefaultDescription
mapNamestring"forgotten"Map filename (without .otbm extension)
mapAuthorstring"Unknown"Map author name

Example

mapName = "mymap"
mapAuthor = "MapMaker"

Market Settings

OptionTypeDefaultDescription
marketOfferDurationnumber2592000Market offer duration (seconds, default 30 days)
premiumToCreateMarketOfferbooleantrueRequire premium for market offers
checkExpiredMarketOffersEachMinutesnumber60Check interval for expired offers
maxMarketOffersAtATimePerPlayernumber100Maximum concurrent offers per player

Example

marketOfferDuration = 30 * 24 * 60 * 60 -- 30 days
premiumToCreateMarketOffer = true
maxMarketOffersAtATimePerPlayer = 100

Miscellaneous

OptionTypeDefaultDescription
allowChangeOutfitbooleantrueAllow players to change outfits
freePremiumbooleanfalseAll accounts have premium
kickIdlePlayerAfterMinutesnumber15Kick idle players after X minutes
maxMessageBuffernumber4Maximum messages a player can send before becoming muted
emoteSpellsbooleanfalseSpell words show as orange text and not in default chat
classicEquipmentSlotsbooleantrueUse classic equipment slot system
classicAttackSpeedbooleanfalseConstant attack speed regardless of actions
showScriptsLogInConsolebooleanfalseShow script logs in console
showOnlineStatusInCharlistbooleanfalseShow online status in character list
yellMinimumLevelnumber2Minimum level to yell
yellAlwaysAllowPremiumbooleanfalsePremium can always yell
minimumLevelToSendPrivatenumber1Minimum level for private messages
premiumToSendPrivatebooleanfalseRequire premium for private messages
forceMonsterTypesOnLoadbooleantrueValidate monster types on startup
cleanProtectionZonesbooleanfalseClean items from protection zones
checkDuplicateStorageKeysbooleanfalseCheck for duplicate storage keys

Example

freePremium = false
kickIdlePlayerAfterMinutes = 15
classicEquipmentSlots = true
yellMinimumLevel = 2

VIP and Depot Limits

OptionTypeDefaultDescription
vipFreeLimitnumber20VIP list limit for free accounts
vipPremiumLimitnumber100VIP list limit for premium accounts
depotFreeLimitnumber2000Depot item limit for free accounts
depotPremiumLimitnumber15000Depot item limit for premium accounts

Example

vipFreeLimit = 20
vipPremiumLimit = 100
depotFreeLimit = 2000
depotPremiumLimit = 15000

World Light

OptionTypeDefaultDescription
defaultWorldLightbooleantrueUse default world light algorithm. Set to false to use setWorldLight()

Example

defaultWorldLight = true

Server Save

OptionTypeDefaultDescription
serverSaveNotifyMessagebooleantrueBroadcast server save notifications
serverSaveNotifyDurationnumber5Notification duration before save (minutes)
serverSaveCleanMapbooleanfalseClean map on server save
serverSaveClosebooleanfalseClose server after save
serverSaveShutdownbooleantrueShutdown server after save

Example

serverSaveNotifyMessage = true
serverSaveNotifyDuration = 5
serverSaveShutdown = true

Experience Stages

Experience stages allow different multipliers based on player level. Can be defined in config.lua or config/stages.toml.

FieldTypeRequiredDescription
minlevelnumberYesMinimum level for this stage
maxlevelnumberNoMaximum level (infinite if not set)
multipliernumberYesExperience multiplier

Lua Example

experienceStages = {
{ minlevel = 1, maxlevel = 8, multiplier = 7 },
{ minlevel = 9, maxlevel = 20, multiplier = 6 },
{ minlevel = 21, maxlevel = 50, multiplier = 5 },
{ minlevel = 51, maxlevel = 100, multiplier = 4 },
{ minlevel = 101, multiplier = 3 } -- No maxlevel = infinite
}

Set to nil to use flat rateExp multiplier:

experienceStages = nil

Rates

OptionTypeDefaultDescription
rateExpnumber5Experience rate (if stages disabled)
rateSkillnumber3Skill training rate
rateLootnumber2Loot drop rate
rateMagicnumber3Magic level training rate
rateSpawnnumber1Monster spawn rate multiplier
summonProximitynumber1Summon proximity range

Example

rateExp = 5
rateSkill = 3
rateLoot = 2
rateMagic = 3
rateSpawn = 1

Monster Despawn

OptionTypeDefaultDescription
deSpawnRangenumber2Floors from spawn before despawn
deSpawnRadiusnumber50Tiles from spawn before despawn
removeOnDespawnbooleantrueRemove monster on despawn (vs teleport back)
walkToSpawnRadiusnumber15Distance monster walks back to spawn
monsterOverspawnbooleanfalseAllows a respawn to occur when a monster exits it’s spawn zone

Example

deSpawnRange = 2
deSpawnRadius = 50
removeOnDespawn = true
walkToSpawnRadius = 15

Stamina

OptionTypeDefaultDescription
staminaSystembooleantrueEnable stamina system
timeToRegenMinuteStaminanumber180Seconds to regen 1 minute stamina
timeToRegenMinutePremiumStaminanumber360Seconds to regen 1 minute premium stamina

Example

staminaSystem = true
timeToRegenMinuteStamina = 3 * 60
timeToRegenMinutePremiumStamina = 6 * 60

Scripts

OptionTypeDefaultDescription
warnUnsafeScriptsbooleantrueWarn about unsafe scripts
convertUnsafeScriptsbooleantrueAuto-convert unsafe scripts

Startup

OptionTypeDefaultDescription
defaultPrioritystring"high"Process priority: "normal", "above-normal", "high" (Windows only)
startupDatabaseOptimizationbooleanfalseOptimize database on startup

Status Server

OptionTypeDefaultDescription
ownerNamestring""Server owner name
ownerEmailstring""Server owner email
urlstring""Server website URL
locationstring""Server location

MySQL Database

OptionTypeDefaultDescription
mysqlHoststring"127.0.0.1"MySQL server hostname
mysqlUserstring"forgottenserver"MySQL username
mysqlPassstring""MySQL password
mysqlDatabasestring"forgottenserver"MySQL database name
mysqlPortnumber3306MySQL server port
mysqlSockstring""MySQL socket path (optional)

Example

mysqlHost = "127.0.0.1"
mysqlUser = "blacktek"
mysqlPass = "secretpassword"
mysqlDatabase = "blacktek_db"
mysqlPort = 3306

Additional Boolean Options

These options provide additional server customization:

OptionDefaultDescription
bedOfflineTrainingtrueEnable bed offline training
augmentSlotProtectiontrueEnable this to restrict augments applying to equipment in appropriate inventory slot
augmentStaminInMinutesfalseEnable this have stamina gains from augments measured in minutes rather than seconds
showAnimationOnCritHitFromAugmenttrueShow critical hit animation from augments
allowNpcWalkthroughInPzfalseAllow NPCs to walk through players in PZ
healthRegenNotificationfalseShow health regeneration messages
manaRegenNotificationfalseShow mana regeneration messages
autoOpenContainerstrueRe-open containers upon login, based on order opened from previous session

Boss Reward System

These rates are used to determine how much a player’s actions in a boss fight, earns them contribution.

OptionTypeDefaultDescription
rewardBaseRatefloat1.0Base reward rate multiplier
rewardRateDamageDonefloat1.0Reward rate for damage dealt
rewardRateDamageTakenfloat1.0Reward rate for damage taken
rewardRateHealingDonefloat1.0Reward rate for healing done

Party Settings

OptionTypeDefaultDescription
partyExpShareRangenumber30Experience share range (tiles)
partyExpShareFloorsnumber1Experience share floor range
maximumPartySizenumber10Maximum party members
maximumInviteCountnumber20Maximum pending invites

Example Configuration Data

-- config.lua
-- Combat
worldType = "pvp"
protectionLevel = 50
killsToRedSkull = 5
killsToBlackSkull = 10
-- Connection
ip = "127.0.0.1"
serverName = "BlackTek Server"
loginProtocolPort = 7171
gameProtocolPort = 7172
maxPlayers = 500
-- Map
mapName = "forgotten"
mapAuthor = "komic"
-- Rates
rateExp = 10
rateSkill = 5
rateLoot = 3
rateMagic = 5
rateSpawn = 1
-- Experience Stages
experienceStages = {
{ minlevel = 1, maxlevel = 50, multiplier = 10 },
{ minlevel = 51, maxlevel = 100, multiplier = 5 },
{ minlevel = 101, multiplier = 2 }
}
-- Database
mysqlHost = "localhost"
mysqlUser = "blacktek"
mysqlPass = "password"
mysqlDatabase = "blacktek"
mysqlPort = 3306