Write Lua plugins. Reward voters. Greet players. Build economies. Automate everything. One 5 MB binary, zero dependencies.
Free with your claimed server. Requires API key.
Players vote on soulmask-serverlist.com, your server delivers items automatically. Included as a ready-to-use plugin.
Greet players when they join. Show server rules, MOTD, or a personalized welcome. Included.
Let players set homes and teleport back with chat commands like /sethome and /home.
Build an in-game economy with currency, trading, and NPC shops driven by chat commands.
Double XP weekends, raid nights, automatic restarts, timed broadcasts — all on a schedule.
Permission-based commands, player management, server config changes — all scriptable.
Extract to your server folder. One binary, no installs.
Paste your key from the dashboard into config.yaml.
Double-click start.bat. Plugins load, RCON connects, done.
Drop a .lua file into the plugins/ folder. The framework loads it automatically. No compilation, no build steps. Edit, save, reload.
-- plugins/welcome.lua
plugin = {
name = "Welcome",
version = "1.0.0",
description = "Greets players when they join"
}
function OnPlayerJoined(steamId, name)
server.broadcast("Welcome " .. name .. "! Enjoy your stay.")
log.info("Welcomed " .. name)
end
function OnChatCommand(steamId, name, cmd, args)
if cmd == "rules" then
server.broadcast("1. No griefing 2. Be respectful 3. Have fun")
end
endEvery plugin gets access to the full server through a clean, documented API.
server.broadcast(msg)Send message to all playersserver.giveItem(steamId, item, qty, quality)Give item to playerserver.teleport(steamId, x, y, z)Teleport playerserver.setConfig(key, value)Change server settings liveserver.save()Save the worldserver.shutdown(seconds)Graceful shutdown with countdownserver.rcon(command)Execute any RCON commandserver.isOnline(steamId)Check if player is onlineserver.getPlayers()Get all online players with positionspermission.has(steamId, perm)Check if player has permissionpermission.grant(steamId, perm)Grant permissionpermission.addToGroup(steamId, group)Add player to groupdata.get(key, default)Read persistent plugin datadata.set(key, value)Write persistent plugin datalog.info(msg)Log to framework consoleDefine functions matching event names. The framework calls them automatically.
| Hook | When |
|---|---|
| OnPlayerJoined(steamId, name) | Player connects to server |
| OnPlayerLeft(steamId, name) | Player disconnects |
| OnChatMessage(steamId, name, channel, msg) | Chat message sent |
| OnChatCommand(steamId, name, cmd, args) | /command in chat |
| OnVoteReceived(steamId, playerName) | Player voted on serverlist |
| OnServerStarted() | Server finished loading |
| OnServerSaving() | World save triggered |
| OnPluginLoaded() | This plugin was loaded |
| OnConfigReloaded() | Server config changed |
Rewards players when they vote on soulmask-serverlist.com. Queues rewards for offline voters and delivers them on next login. Fully configurable reward commands.
Broadcasts a welcome message when players join and a farewell when they leave. Simple starting point for writing your own plugins.
| Binary size | 5-10 MB (Windows/Linux) |
| Language | Rust (compiled, no runtime dependencies) |
| Plugin language | Lua 5.4 (embedded VM, one per plugin) |
| Server connection | RCON protocol on port 19000 (auto-reconnect) |
| Player detection | Polls player list every 15 seconds |
| Chat events | Parsed from server log in real-time |
| Data persistence | JSON files per plugin (auto-saved) |
| Permissions | YAML-based groups and per-player grants |
| Vote webhooks | HMAC-SHA256 signed, built-in HTTP server |
| Platforms | Windows x64, Linux x64 |
# config.yaml webhook: api_key: "smsl_your_key_here" # from soulmask-serverlist.com/dashboard port: 7585 # open this port in your firewall rcon: host: "127.0.0.1" port: 19000 password: "" log_watcher: path: "../WS/Saved/Logs/WS.log" enable_chat_logging: true player_tracker: poll_interval_secs: 15
Do I need to install anything?
No. The framework is a single binary. Extract the ZIP, edit config.yaml, start. No Node.js, no Python, no runtime.
Does it modify the game server?
No. It runs alongside the server as a separate process and communicates through RCON. Your server files are untouched.
Will it break on game updates?
No. The framework uses the official RCON interface, not internal hooks. Game updates don't affect it.
Can I write my own plugins?
Yes. Create a .lua file in the plugins/ folder. The framework loads it on startup. See the API reference above.
How does it detect player joins?
It polls the online player list every 15 seconds and detects changes. No game modification needed.
Is the source code available?
The framework is distributed as a compiled binary. Plugin source code (Lua) is fully open and editable.
What if the game doesn't have RCON?
Soulmask dedicated servers have a built-in RCON interface on port 19000. It's always active, no setup required.
Claim your server, grab your API key, and start building. Your first plugin is 10 lines of Lua.