What this is
Nursultan scripts are plain Kotlin files with a .kts extension that the client compiles while the game is running. Save the file and the script reloads — no restart needed.
One file is one script. Here is a whole working one:
name("Hello")
description("My first script")
chat.print("hi")
on<ClientTickEvent> {
// runs every game tick while the script is on
}What you can build
- Your own module — settings, a bind, a switch in the Scripts tab. See How a script works and Kinds of settings.
- Reactions to the game — ticks, damage, attacks, input, packets, entities spawning and so on. See Events.
- Reading the world — player, blocks, entities, inventory, server and so on. See Game data and Vectors, boxes, angles.
- Actions — attack, place, break, turn your head, swap slots, send packets and so on. See Actions and Keys and binds.
- Your own graphics — HUD, boxes and lines in the world, custom shaders and so on. See Interface.
- Your own commands — with Tab completion, just like the client's own and so on. See Your own commands.
Where scripts live
%APPDATA%\Nursultan\scripts
That folder holds only finished .kts files — see The project in your IDE.
Everything a script reads — fonts, images, data — goes one folder down, into scripts\assets. See The assets folder.
The file name is the script id: auto-jump.kts shows up in the menu as auto-jump until you give it a name(...).
The Scripts tab
Everything is managed from the Scripts tab in the client menu.
- While compiling, the script's card is inactive. An error turns it red and shows the message.
- Every script gets one card: the switch turns it on and off, the dots or right click opens settings, the keyboard icon or middle click sets a bind.
- State survives restarts: on/off, bind and settings all come back.
Last updated