---
title: "Installation | open.mp"
description: "Guide for transferring your gamemode from SA:MP server to open.mp server."
canonical: https://omp.itsneufox.com/docs/server/Installation
language: en
---

# Installation

**This tutorial is for those who want to transfer their gamemode from SA:MP server to open.mp server.**

tip

**Good news for FCNPC users!** The legacy FCNPC plugin has been replaced with the official **open.mp NPC component**, which provides the same functionality with better performance and native integration. Simply convert your code to the built-in NPC component instead.

## Step 1

Download the latest version of open.mp server files from [https://github.com/openmultiplayer/open.mp/releases](https://github.com/openmultiplayer/open.mp/releases/latest)

-   `open.mp-win-x86.zip` **Windows** Server
-   `open.mp-linux-x86.tar.gz` **Linux** Server
-   `open.mp-linux-x86-dynssl.tar.gz` **Linux** Server (Dynamic SSL)

## Step 2

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

## Step 3

Put your gamemode `.pwn` file in the **gamemodes** folder

## Step 4

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](https://github.com/pawn-lang/YSI-Includes/releases)

## Step 5

Put required plugins (e.g. `sscanf.dll`, `streamer.dll`) in the **plugins** folder

* * *

warning

If you use the following plugins in table, you must put a version of the plugin that is compatible with omp!

| Plugin | OMP |
| --- | --- |
| rustext | [https://github.com/ziggi/rustext/releases/tag/v2.0.11](https://github.com/ziggi/rustext/releases/tag/v2.0.11) (nomemhack) |
| keylistener | [https://github.com/edgyaf/keylistener/releases/tag/1.1.2-pr](https://github.com/edgyaf/keylistener/releases/tag/1.1.2-pr) |

warning

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](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](https://github.com/katursis/Pawn.RakNet/releases/tag/1.6.0-omp) |
| sampvoice | [https://github.com/AmyrAhmady/sampvoice/releases/tag/v3.1.5-omp](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](https://github.com/maddinat0r/samp-discord-connector/releases/tag/v0.3.6-pre) |
| sscanf | [https://github.com/Y-Less/sscanf/releases/tag/v2.13.8](https://github.com/Y-Less/sscanf/releases/tag/v2.13.8) |
| SKY | Use Pawn.RakNet instead |
| YSF | You don't need YSF because open.mp already declared most of the same natives |
| FCNPC | Replaced with the official open.mp NPC component |

## Step 6

Open the qawno IDE program located at **Server/qawno/qawno.exe**

## Step 7

Press **CTRL + O** then go to the **../gamemodes** folder and open your gamemode `.pwn` file

## Step 8

Find

```pawn
#include <a_samp>
```

replace with

```pawn
#include <open.mp>
```

then press **F5** to compile.

## Step 9

Open **[config.json](https://omp.itsneufox.com/docs/server/config.json)** file with Notepad or other IDEs

## Step 10

Edit **config.json**

Find

```json
"main_scripts": [
    "gungame 1"
],
```

replace with

```json
"main_scripts": [
    "your_gamemode_amx_file_name 1"
],
```

* * *

Find

```json
"legacy_plugins": [],
```

Specify required plugins

```json
"legacy_plugins": [
    "crashdetect",
    "mysql",
    "sscanf",
    "streamer",
    "PawnPlus",
    "pawn-memory"
],
```

* * *

Find

```json
"side_scripts": []
```

Specify your filterscripts

```json
"side_scripts": [
    "filterscripts/file_name"
]
```

* * *

Find

```json
"rcon": {
    "allow_teleport": false,
    "enable": false,
    "password": "changeme1"
},
```

Enter strong password for rcon password:

```json
"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](https://www.open.mp/docs/server/config.json)

## Step 11

Run the server

-   **Windows**

Open the `omp-server.exe` program

-   **Linux**

```bash
./omp-server
```

## Compiler errors and warnings

-   **warning 213: tag mismatch: expected tag "?", but found none ("\_")**:

For example:

```pawn
TogglePlayerControllable(playerid, 1);
// ->
TogglePlayerControllable(playerid, true);
```

  

```pawn
TextDrawFont(textid, 1);
// ->
TextDrawFont(textid, TEXT_DRAW_FONT_1);
```

  

```pawn
GivePlayerWeapon(playerid, 4, 1);
// ->
GivePlayerWeapon(playerid, WEAPON_KNIFE, 1);
```

But you can ignore it for now:

```pawn
#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:

```pawn
#define MIXED_SPELLINGS
#include <open.mp>
```

  

* * *

-   **warning 234: function is deprecated (symbol "GetPlayerPoolSize") This function is broken.**
-   **warning 234: function is deprecated (symbol "GetVehiclePoolSize") This function is broken.**
-   **warning 234: function is deprecated (symbol "GetActorPoolSize") This function is 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](https://github.com/Sreyas-Sreelal/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:

```pawn
public MyFunction(string[])
// ->
public MyFunction(const string[])
```

  

* * *

-   **error 025: function heading differs from prototype**

For example:

```pawn
public OnPlayerDeath(playerid, killerid, reason)
// ->
public OnPlayerDeath(playerid, killerid, WEAPON:reason)
```

  

```pawn
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](https://github.com/openmultiplayer/upgrade)

Already included in `/qawno/upgrader` folder.

## Runtime errors and warnings

```text
[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.**

  

* * *

```text
[Warning] Insufficient specifiers given to `format`: "?" < 1
```

The specifiers are less than the arguments you pass in the format. For example:

```pawn
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);
//                                  ^^
```

## Useful documents

Check out the new scripting functions and callbacks: [https://www.open.mp/docs/server/omp-functions](https://www.open.mp/docs/server/omp-functions)

If you are completely new to Pawn programming: [readme-beginner](https://github.com/openmultiplayer/omp-stdlib/blob/master/documentation/readme-beginner.md)

If you are an intermediate at Pawn programming: [readme-intermediate](https://github.com/openmultiplayer/omp-stdlib/blob/master/documentation/readme-intermediate.md)

If you are an expert at Pawn programming: [readme-expert](https://github.com/openmultiplayer/omp-stdlib/blob/master/documentation/readme-expert.md)

Blog post: [Porting to open.mp](https://www.open.mp/blog/porting)

## Help

If you still have issues running the server, please join the official open.mp Discord server: [https://discord.gg/samp](https://discord.gg/samp)

Ask in [#openmp-support](https://discord.com/channels/231799104731217931/966398440051445790) channel.
