Skip to main content

Files, names, and reloads

.ser and .txt

Use .ser when your hosting panel allows unknown file types. It identifies SER scripts clearly and enables editor associations.

Use .txt as a compatibility format when a hosting panel does not let users open or edit .ser. Both extensions have identical language semantics.

Folders and global names

SER scans the script directory recursively, so folders can organize files. Folders are not namespaces: one base filename identifies one script globally.

These files conflict:

events/welcome.ser
commands/welcome.txt

SER registers neither candidate and serstatus lists both full paths. Rename all but one and run serreload.

Disabled files and folders

A file or folder name whose first character is # is ignored:

#welcome.ser
#old-scripts/

SER does not search inside a disabled folder, so all of its nested files and folders are excluded from discovery. This is how generated examples remain safe by default. Remove the leading # from a file or folder (or copy the file to a new globally unique name), then reload. serstatus lists disabled files and excluded folders separately; it does not enumerate files inside excluded folders.

SER also does not follow symbolic links or directory junctions while scanning. This keeps discovery inside the configured SER directory and prevents link cycles from stalling a reload. serstatus lists every linked folder it skipped.

Targeted and full reloads

Every file-backed execution request performs a targeted refresh immediately before the script runs. This includes serrun, events, custom commands, callbacks, triggers, and calls from another script. New files and edits therefore take effect on their next direct execution without reloading unrelated files.

Round restart refreshes the complete script directory. To refresh everything immediately, including renamed, enabled, disabled, or deleted files and bindings which cannot trigger yet, run:

serreload

Reloads are transactional. SER compiles and validates the complete changed file before replacing active event or command bindings. If an edit fails, the last accepted version remains active and the failed candidate appears in serstatus.

Multiple sections in one file

Every !-- declaration begins an independent section:

!-- OnEvent RoundStarted
Print "Round started"

!-- OnEvent Death
Print "A player died"

The file still owns one global base name. Manual diagnostics can address sections as filename:1, filename:2, and so on. A bare name is deliberately ambiguous when the file contains multiple sections.

Next: methods and values.