feat: add NWN server .env template generator

This commit is contained in:
plenarius
2026-04-20 18:36:05 -04:00
parent ec8aaf64a3
commit c7de3c13a7
+132
View File
@@ -0,0 +1,132 @@
import crypto from "crypto";
interface ServerEnvOptions {
moduleName?: string;
dmPassword?: string;
mysqlPassword?: string;
mysqlRootPassword?: string;
maxClients?: number;
port?: number;
}
export function generateServerEnv(opts: ServerEnvOptions = {}): string {
const mysqlPassword = opts.mysqlPassword || crypto.randomBytes(16).toString("hex");
const mysqlRootPassword = opts.mysqlRootPassword || crypto.randomBytes(16).toString("hex");
return `# Generated by Layonara Forge
# NWN Server Settings
NWN_MODULE=${opts.moduleName || "Layonara_6-21"}
NWN_SERVERNAME=Layonara-Dev
NWN_PLAYERPASSWORD=
NWN_DMPASSWORD=${opts.dmPassword || "devdm"}
NWN_ADMINPASSWORD=${opts.dmPassword || "devdm"}
NWN_PORT=${opts.port || 5121}
NWN_PUBLICSERVER=0
NWN_MAXCLIENTS=${opts.maxClients || 4}
NWN_MINLEVEL=1
NWN_PAUSEANDPLAY=1
NWN_PVP=2
NWN_SERVERVAULT=1
NWN_ELC=0
NWN_ILR=1
NWN_GAMETYPE=9
NWN_ONEPARTY=0
NWN_DIFFICULTY=2
NWN_AUTOSAVEINTERVAL=0
NWN_RELOADWHENEMPTY=0
NWN_TAIL_LOGS=n
NWN_MAXLEVEL=45
# NWNX Core
NWNX_CORE_LOG_LEVEL=6
NWNX_CORE_SKIP_ALL=y
NWNX_CORE_ALLOW_NWNX_FUNCTIONS_IN_EXECUTE_SCRIPT_CHUNK=y
# Enabled plugins
NWNX_ADMINISTRATION_SKIP=y
NWNX_AREA_SKIP=n
NWNX_CHAT_SKIP=n
NWNX_COMPILER_SKIP=n
NWNX_CREATURE_SKIP=n
NWNX_EFFECT_SKIP=n
NWNX_ELC_SKIP=false
NWNX_EVENTS_SKIP=n
NWNX_FEAT_SKIP=n
NWNX_FEEDBACK_SKIP=n
NWNX_ITEM_SKIP=n
NWNX_ITEMAPPEARANCE_SKIP=n
NWNX_ITEMPROPERTY_SKIP=n
NWNX_LAYONARA_SKIP=n
NWNX_MAXLEVEL_SKIP=n
NWNX_MAXLEVEL_MAX=45
NWNX_NOSTACK_SKIP=n
NWNX_OBJECT_SKIP=n
NWNX_OPTIMIZATIONS_SKIP=n
NWNX_PLAYER_SKIP=n
NWNX_RACE_SKIP=n
NWNX_RENAME_SKIP=n
NWNX_RESOURCES_SKIP=n
NWNX_SERVERLOGREDIRECTOR_SKIP=n
NWNX_SQL_SKIP=n
NWNX_STORE_SKIP=n
NWNX_TRACKING_SKIP=n
NWNX_TWEAKS_SKIP=n
NWNX_UTIL_SKIP=n
NWNX_VISIBILITY_SKIP=n
NWNX_WEAPON_SKIP=n
# Disabled for local dev
NWNX_HTTPCLIENT_SKIP=y
NWNX_WEBHOOK_SKIP=y
NWNX_METRICS_INFLUXDB_SKIP=y
NWNX_REDIS_SKIP=y
NWNX_THREADWATCHDOG_SKIP=y
NWNX_PROFILER_SKIP=y
# Skipped plugins
NWNX_APPEARANCE_SKIP=y
NWNX_DAMAGE_SKIP=y
NWNX_DATA_SKIP=y
NWNX_DIAGNOSTICS_SKIP=y
NWNX_DIALOG_SKIP=y
NWNX_DOTNET_SKIP=y
NWNX_ENCOUNTER_SKIP=y
NWNX_EXPERIMENTAL_SKIP=y
NWNX_LUA_SKIP=y
NWNX_SWIG_DOTNET_SKIP=y
NWNX_TILESET_SKIP=y
NWNX_TIME_SKIP=y
# SQL
NWNX_SQL_TYPE=mysql
NWNX_SQL_HOST=layonara-mariadb
NWNX_SQL_USERNAME=nwn
NWNX_SQL_PASSWORD=${mysqlPassword}
NWNX_SQL_DATABASE=nwn
NWNX_SQL_LOG_LEVEL=6
# Tweaks
NWNX_TWEAKS_DISABLE_PAUSE=y
NWNX_TWEAKS_DISABLE_QUICKSAVE=y
NWNX_TWEAKS_COMPARE_VARIABLES_WHEN_MERGING=y
NWNX_TWEAKS_FIX_GREATER_SANCTUARY_BUG=y
NWNX_TWEAKS_HIDE_PLAYERS_ON_CHAR_LIST=1
# Layonara plugin
NWNX_LAYONARA_LOG_LEVEL=7
# Optimizations
NWNX_OPTIMIZATIONS_ASYNC_LOG_FLUSH=true
# Rename
NWNX_RENAME_ON_MODULE_CHAR_LIST=0
NWNX_RENAME_ON_PLAYER_LIST=false
NWNX_RENAME_ALLOW_DM=true
# MariaDB
MYSQL_ROOT_PASSWORD=${mysqlRootPassword}
MYSQL_DATABASE=nwn
MYSQL_USER=nwn
MYSQL_PASSWORD=${mysqlPassword}
`;
}