Repository navigation
CustomGame Home
Two features on one plugin: worlds the client never shipped with, and monsters drawn from your own models. Both are driven from encrypted config files and both can be scripted in Lua, in a sandbox of their own.
What it covers:
- new playable worlds above the original map range, with their own music
- your own
.bmdmodels on monsters and NPCs, scaled, tinted and lit - per-frame Lua for map scenery: scrolling water, breathing lava, smoke vents
- per-frame Lua for monsters: extra render passes, attack effects, glows
- weather written in Lua, and distance fog per map
The worlds themselves are made and edited in MU World Creator, the map tool in the IGCN store - it is also the only way to generate a world's minimap. This plugin is what brings them into the game.
Everything here comes from the Custom Map / Monster / NPC plugin, and custom maps
also need their switch in the GameServer's Data\Plugins\PluginSettings.ini:
[Lua]
LuaCustomMapEnable = 1
LuaGameScriptKey =The GameServer checks the plugin on your licence, reads the switch, and tells the
client on connect. Without the plugin the client loads its config files as usual and
then ignores them, and no monster script runs. Without the plugin or the switch no map
above the original range loads - a missing LuaCustomMapEnable counts as switched off. LuaGameScriptKey is what the encrypted map files and the map and monster
scripts (.gsc) are packed with; it can stay empty while you develop with plain files in
dev mode.
The config files themselves are optional: a client without CustomMap.xdc or
CustomMonster.xdc starts normally, with that half switched off.
Custom monster ids live above the original monster range, up to 2499; with the plugin active the server has room for all of them, nothing to set.
Scripts ship encrypted as .gsc, packed with LuaGameScriptKey in the [Lua] section
of PluginSettings.ini, exactly 32 characters. The server hands it
to the client with the plugin packet; without it no map or monster script loads. The
older keyless .lsc still loads, for sets made before the key existed.
While the server grants LuaDevMode to your account the same folders also load plain
.lua, and the Lua console appears with script errors in it. That is the whole
difference - the API is identical - so develop in .lua and ship .gsc.
Dev mode is granted per account by the server, exactly as it is for Lua UI.
Map and monster scripts share one sandboxed Lua state, and it is not the Lua UI
one. They are separate interpreters, not namespaces: nothing defined in
Scripts\UI\ is visible here and nothing here is visible there. A texture id or a
model slot means something different on each side.
Inside this one state, map and monster scripts do see each other's globals - which is why scripts keep their state in file-scope locals and hand over closures instead of defining global entry points.
Two things ship as samples, and every page here builds on them rather than inventing a new toy:
| Example | What it shows |
|---|---|
| Tarkan Copy, world 160 | a copied world, registered, with its scenery and weather scripted |
| Hydra, monster 2498 | a custom model with a second render pass, lights and attack effects |
Both can be deleted without breaking anything else.
Custom maps
- Adding a map - files, config, and the whole procedure
- Map scripts - handlers, order of execution, the Map API
-
Object effects and animations - the per-world tables inside
Lang.mpr - Fading roofs - opening roofs over the player, from a table or a script
- Distance fog - per map fog and the sky behind the terrain
Custom monsters
- Adding a monster - config, models, sounds, glow
- Monster scripts - handlers, render passes, attacks
- Monster skills - player skills on monsters, what the client draws and what a script adds
- Render flags - the mask the body is drawn with
Shared
-
Objects and the sandbox - the object API both kinds use,
what the sandbox allows, and the shared
Enums/Helpers/Registryfiles - Encrypting files - configs, scripts and terrain packed for a live client
- Lua UI - the other client-side Lua, in its own separate state
- Encrypting files - configs, scripts and terrain packed for a live client
MuLua Scripting Plugin | Home
🖼️ Lua UI
- File map
- Creating windows
- Client and server
- Designing a window
- Protocol
- Scrolling and scrollbars
- Controls
- Custom text
- Text input
- Debug console
- Bitmap Slicer
- Encrypting scripts
Maps
Monsters
Shared
Version 1.14 | 2026-09-09