This tutorial is for those who want to transfer their gamemode from SA:MP server to open.mp server.
Note
If you are using the FCNPC plugin, please stop for now because this plugin does not work for open.mp currently.
- Step 1
- Step 2
- Step 3
- Step 4
- Step 5
- Step 6
- Step 7
- Step 8
- Step 9
- Step 10
- Step 11
- Compiler errors and warnings
- Runtime errors and warnings
- Useful documents
- Help
Download the latest version of open.mp server files from https://github.com/openmultiplayer/open.mp/releases
open.mp-win-x86.zip
Windows Serveropen.mp-linux-x86.tar.gz
Linux Serveropen.mp-linux-x86-dynssl.tar.gz
Linux Server (Dynamic SSL)
Extract the .zip
or .tar.gz
archive contents on your disk
Note
components: open.mp components
filterscripts: Your server filter script files (side scripts)
gamemodes: Your server game mode files (main scripts)
models: Your server custom models (textures .txd .dff)
plugins: Your server plugin files (legacy plugins)
qawno: Pawn editor program and your server includes
scriptfiles: INI files or other stuff.
bans.json: Ban list file
config.json: Server configuration file
omp-server.exe: open.mp server program
omp-server.pdb: open.mp server debugging file
Put your gamemode .pwn
file in the gamemodes folder
Put required includes (e.g. sscanf2.inc
, streamer.inc
) in the qawno/include folder
Note
If you are using the YSI-4 includes in your game mode, update to YSI-5.x
Put required plugins (e.g. sscanf.dll
, streamer.dll
) in the plugins folder
Important
If you use the following plugins in table, you must put a version of the plugin that is compatible with omp!
Put the following plugins in the ../components folder, not in the ../plugins folder!
Plugin | OMP |
---|---|
Pawn.CMD | https://github.com/katursis/Pawn.CMD/releases/tag/3.4.0-omp |
Pawn.RakNet | https://github.com/katursis/Pawn.RakNet/releases/tag/1.6.0-omp |
sampvoice | https://github.com/AmyrAhmady/sampvoice/releases/tag/v3.1.5-omp |
discord-connector | https://github.com/maddinat0r/samp-discord-connector/releases/tag/v0.3.6-pre |
SKY | Use Pawn.RakNet instead |
YSF | You don't need YSF because open.mp already declared most of the same natives |
FCNPC | Currently not supported |
Open the qawno IDE program located at Server/qawno/qawno.exe
Press CTRL + O then go to the ../gamemodes folder and open your gamemode .pwn
file
Find
#include <a_samp>
replace with
#include <open.mp>
then press F5 to compile.
Note
If you are get error or warning, see Compiler errors and warnings
Open config.json file with Notepad or other IDEs
Edit config.json
Find
"main_scripts": [
"gungame 1"
],
replace with
"main_scripts": [
"your_gamemode_amx_file_name 1"
],
Find
"legacy_plugins": [],
Specify required plugins
"legacy_plugins": [
"crashdetect",
"mysql",
"sscanf",
"streamer",
"PawnPlus",
"pawn-memory"
],
Find
"side_scripts": []
Specify your filterscripts
"side_scripts": [
"filterscripts/file_name"
]
Find
"rcon": {
"allow_teleport": false,
"enable": false,
"password": "changeme1"
},
Enter strong password for rcon password:
"rcon": {
"allow_teleport": false,
"enable": false,
"password": "151sd80hgse32q1oi0v8dsge166"
},
Press CTRL + S to save changes.
Tip
There is a guide on how to convert server.cfg
to config.json
at https://www.open.mp/docs/server/config.json
Run the server
- Windows
Open the omp-server.exe
program
- Linux
./omp-server
- warning 213: tag mismatch: expected tag "?", but found none ("_"):
For example:
TogglePlayerControllable(playerid, 1);
// ->
TogglePlayerControllable(playerid, true);
TextDrawFont(textid, 1);
// ->
TextDrawFont(textid, TEXT_DRAW_FONT_1);
GivePlayerWeapon(playerid, 4, 1);
// ->
GivePlayerWeapon(playerid, WEAPON_KNIFE, 1);
But you can ignore it for now:
#define NO_TAGS
#include <open.mp>
// If the warning still occurs
// Use #pragma warning disable 213
- warning 234: function is deprecated (symbol "TextDrawColor") Use `TextDrawColour
Press CTRL + F in qawno and replace all TextDrawColor
to TextDrawColour
Or if you prefer you can use the mixed spellings:
#define MIXED_SPELLINGS
#include <open.mp>
- warning 234: function is deprecated (symbol "GetPlayerPoolSize") This function is fundamentally broken.
- warning 234: function is deprecated (symbol "GetVehiclePoolSize") This function is fundamentally broken.
- warning 234: function is deprecated (symbol "GetActorPoolSize") This function is fundamentally broken.
Replace GetPlayerPoolSize()
with MAX_PLAYERS
Replace GetVehiclePoolSize()
with MAX_VEHICLES
Replace GetActorPoolSize()
with MAX_ACTORS
- warning 234: function is deprecated (symbol "SHA256_PassHash") Use BCrypt for hashing passwords
Use the samp-bcrypt plugin for hashing passwords. SHA-256 is not secure.
- warning 214: possibly a "const" array argument was intended: "?"
- warning 239: literal array/string passed to a non-const parameter
For example:
public MyFunction(string[])
// ->
public MyFunction(const string[])
- error 025: function heading differs from prototype
For example:
public OnPlayerDeath(playerid, killerid, reason)
// ->
public OnPlayerDeath(playerid, killerid, WEAPON:reason)
public OnPlayerEditAttachedObject(playerid, response, index, modelid, boneid, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:fRotX, Float:fRotY, Float:fRotZ, Float:fScaleX, Float:fScaleY, Float:fScaleZ)
// ->
public OnPlayerEditAttachedObject(playerid, EDIT_RESPONSE:response, index, modelid, boneid, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:fRotX, Float:fRotY, Float:fRotZ, Float:fScaleX, Float:fScaleY, Float:fScaleZ)
Note
There is also an upgrade tool that attempts to find old untagged and const-incorrect code and upgrade it.
https://github.com/openmultiplayer/upgrade
Already included in /qawno/upgrader
folder.
[Info] Couldn't announce legacy network to open.mp list.
[Info] [Server Error] Status: 406
[Info] [Server Error] Message: {"error":"failed to query server: socket read timed out"}
[Info] This won't affect the server's behaviour.
- Your server is not accessible from the open.mp website.
- You are probably running the server locally.
- The firewall has blocked the connection.
This warning will not affect the behavior of the server.
[Warning] Insufficient specifiers given to `format`: "?" < 1
The specifiers are less than the arguments you pass in the format. For example:
new string[32];
new mp[32] = ".MP";
format(string, sizeof(string), "OPEN", mp);
// [Warning] Insufficient specifiers given to `format`: "OPEN" < 1
// Should be:
format(string, sizeof(string), "OPEN%s", mp);
// ^^
Check out the new scripting functions and callbacks: https://www.open.mp/docs/server/omp-functions
If you are completely new to Pawn programming: readme-beginner
If you are an intermediate at Pawn programming: readme-intermediate
If you are an expert at Pawn programming: readme-expert
Blog post: Porting to open.mp
If you still have issues running the server, please join the official open.mp Discord server: https://discord.gg/samp
Ask in #openmp-support channel.