Pular para o conteúdo principal

Installation

Este tutorial é para aqueles que desejam transferir seu gamemode de servidor SA:MP para servidor open.mp.

nota

Se você está usando o plugin FCNPC, por favor pare por enquanto porque este plugin não funciona para open.mp atualmente.

Passo 1

Baixe a versão mais recente dos arquivos do servidor open.mp em https://github.com/openmultiplayer/open.mp/releases

  • open.mp-win-x86.zip Servidor Windows
  • open.mp-linux-x86.tar.gz Servidor Linux
  • open.mp-linux-x86-dynssl.tar.gz Servidor Linux (SSL Dinâmico)

Passo 2

Extraia o conteúdo do arquivo .zip ou .tar.gz no seu disco

nota
  • components: componentes do open.mp
  • filterscripts: Arquivos de filter script do seu servidor (scripts secundários)
  • gamemodes: Arquivos de game mode do seu servidor (scripts principais)
  • models: Modelos personalizados do seu servidor (texturas .txd .dff)
  • plugins: Arquivos de plugin do seu servidor (plugins legados)
  • qawno: Programa editor Pawn e includes do seu servidor
  • scriptfiles: Arquivos INI ou outras coisas.
  • bans.json: Arquivo de lista de banimentos
  • config.json: Arquivo de configuração do servidor
  • omp-server.exe: Programa do servidor open.mp
  • omp-server.pdb: Arquivo de depuração do servidor open.mp

Passo 3

Coloque seu arquivo .pwn do gamemode na pasta gamemodes

Passo 4

Coloque os includes necessários (por exemplo, sscanf2.inc, streamer.inc) na pasta qawno/include

nota

Se você está usando os includes YSI-4 no seu game mode, atualize para YSI-5.x

Passo 5

Coloque os plugins necessários (por exemplo, sscanf.dll, streamer.dll) na pasta plugins


atenção

Se você usa os seguintes plugins da tabela, você deve colocar uma versão do plugin que seja compatível com omp!

Coloque os seguintes plugins na pasta ../components, não na pasta ../plugins!

PluginOMP
Pawn.CMDhttps://github.com/katursis/Pawn.CMD/releases/tag/3.4.0-omp
Pawn.RakNethttps://github.com/katursis/Pawn.RakNet/releases/tag/1.6.0-omp
sampvoicehttps://github.com/AmyrAhmady/sampvoice/releases/tag/v3.1.5-omp
discord-connectorhttps://github.com/maddinat0r/samp-discord-connector/releases/tag/v0.3.6-pre
SKYUse Pawn.RakNet em vez disso
YSFVocê não precisa do YSF porque o open.mp já declarou a maioria das mesmas natives
FCNPCAtualmente não suportado

Passo 6

Abra o programa qawno IDE localizado em Server/qawno/qawno.exe

Passo 7

Pressione CTRL + O e vá para a pasta ../gamemodes e abra seu arquivo .pwn do gamemode

Passo 8

Encontre

#include <a_samp>

substitua por

#include <open.mp>

depois pressione F5 para compilar.

Passo 9

Abra o arquivo config.json com o Bloco de Notas ou outras IDEs

Passo 10

Edite o config.json

Encontre

"main_scripts": [
"gungame 1"
],

substitua por

"main_scripts": [
"nome_do_arquivo_amx_do_seu_gamemode 1"
],

Encontre

"legacy_plugins": [],

Especifique os plugins necessários

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

Encontre

"side_scripts": []

Especifique seus filterscripts

"side_scripts": [
"filterscripts/nome_do_arquivo"
]

Encontre

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

Digite uma senha forte para a senha do rcon:

"rcon": {
"allow_teleport": false,
"enable": false,
"password": "151sd80hgse32q1oi0v8dsge166"
},

Pressione CTRL + S para salvar as alterações.

dica

Há um guia sobre como converter server.cfg para config.json em https://www.open.mp/docs/server/config.json

Passo 11

Execute o servidor

  • Windows

Abra o programa omp-server.exe

  • Linux
./omp-server

Erros e avisos do compilador

  • warning 213: tag mismatch: expected tag "?", but found none ("_"):

Por exemplo:

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

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

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

Mas você pode ignorar por enquanto:

#define NO_TAGS
#include <open.mp>

// Se o aviso ainda ocorrer
// Use #pragma warning disable 213


  • warning 234: function is deprecated (symbol "TextDrawColor") Use `TextDrawColour

Pressione CTRL + F no qawno e substitua todos os TextDrawColor por TextDrawColour


Ou se você preferir, pode usar as grafias mistas:

#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.

Substitua GetPlayerPoolSize() por MAX_PLAYERS

Substitua GetVehiclePoolSize() por MAX_VEHICLES

Substitua GetActorPoolSize() por MAX_ACTORS


  • warning 234: function is deprecated (symbol "SHA256_PassHash") Use BCrypt for hashing passwords

Use o plugin samp-bcrypt para hash de senhas. SHA-256 não é seguro.


  • warning 214: possibly a "const" array argument was intended: "?"
  • warning 239: literal array/string passed to a non-const parameter

Por exemplo:

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


  • error 025: function heading differs from prototype

Por exemplo:

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)


nota

Também existe uma ferramenta de atualização que tenta encontrar código antigo sem tags e com const incorreto e atualizá-lo.

https://github.com/openmultiplayer/upgrade

Já incluída na pasta /qawno/upgrader.

Erros e avisos em tempo de execução

[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.
  • Seu servidor não está acessível a partir do site open.mp.
  • Você provavelmente está executando o servidor localmente.
  • O firewall bloqueou a conexão.

Este aviso não afetará o comportamento do servidor.



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

Os especificadores são menores que os argumentos que você passa no format. Por exemplo:

new string[32];
new mp[32] = ".MP";

format(string, sizeof(string), "OPEN", mp);
// [Warning] Insufficient specifiers given to `format`: "OPEN" < 1

// Deveria ser:
format(string, sizeof(string), "OPEN%s", mp);
// ^^

Documentos úteis

Confira as novas funções e callbacks de script: https://www.open.mp/docs/server/omp-functions

Se você é completamente novo na programação Pawn: readme-beginner

Se você é intermediário na programação Pawn: readme-intermediate

Se você é especialista na programação Pawn: readme-expert

Postagem no blog: Portando para open.mp

Ajuda

Se você ainda tiver problemas ao executar o servidor, junte-se ao servidor Discord oficial do open.mp: https://discord.gg/samp

Pergunte no canal #openmp-support.