-
Notifications
You must be signed in to change notification settings - Fork 32
Runtime Modes
1.6 introduced a powerful new feature for package development called Runtime Modes. These are designed for package development and provide ways to run Pawn code more like a traditional programming language.
There are three runtime modes:
server
main
y_testing
To use, add a mode
field to the runtime
field in your Package Definition File:
{
"entry": "test.pwn",
"output": "test.amx",
"dependencies": [
"Southclaws/samp-stdlib",
],
"runtime": {
"mode": "main"
}
}
Server is the default mode, this does nothing special, it simply runs the server and waits for the server to exit by itself. This is what you want if your package provides in-game features (such as an editor tool or a demonstration of your library).
In the above example, the mode main
has been used which means when you run sampctl package run
, the process will exit as soon as the main()
function has finished. If you run this from a console, it means you return to the prompt straight after instead of needing to press CTRL+C to close the server.
This behaviour will be familiar to anyone who uses languages such as C or Go - in those languages, the program exits as soon as it has reached the end of main()
.
This mode is specifically designed for code that uses y_testing for unit testing code. If the tests pass, the exit code of sampctl is 0 and if the tests fail, the exit code is 1 making this a perfect tool to use in continuous integration tools such as TravisCI.
For an example of a fully unit-tested package that uses this feature, check out samp-ini.