A cross-platform server browser and launcher for open.mp / SA-MP. Built primarily for Linux (via Wine). It should work on Windows too, I hope.
The official open.mp launcher does not officially support Linux. This one handles the Wine prefixes, DLL overrides, and registry keys automatically.
This isn't just a wrapper anymore. It includes:
- Custom C++ Injector: A native
simple-injector.execompiled from source that handles the DLL injection process (loadssamp.dllandomp-client.dllin a suspended state). So we don't depend on the omp-launcher to handle the injection. - Zero-Dependency Networking: Custom UDP implementation of the SA-MP query protocol (i/c/r opcodes).
- Asset Management: Automatically hash-checks and downloads correct SA-MP versions (0.3.7-R5, DL, etc.) and assets (
sampgui.png, fonts). - Wine Automation: Automatically detects your Wine prefix, sets
WINEDLLOVERRIDES, and handles the registry forPlayerName.
If you are on Linux and want to build this, you need the cross-compiler for the injector.
sudo apt install wine mingw-w64You need MinGW or MSVC. But if you're on Windows just run the build command, it handles itself.
I use pnpm.
# Install dependencies
pnpm install
# Build the C++ injector and fetch assets
pnpm run prepare-build
# Run in dev mode
pnpm run dev# Build for Linux (AppImage, deb, pacman)
pnpm run build:linux
# Build for Windows (NSIS)
pnpm run build:winThe launcher compiles injector/injector.cpp using i686-w64-mingw32-g++ (on Linux) or g++ (on Windows).
When you click play:
- It validates the
gta_sa.exeversion. - It ensures the correct
samp.dllhash. - It spawns the injector, which creates the GTA process in
CREATE_SUSPENDEDmode. - It injects the DLLs via
VirtualAllocEx/CreateRemoteThread. - It resumes the thread.
PRs and issues are appreciated.