پرش به مطلب اصلی

راه اندازی سرور

این آموزش برای کسانی است که می‌خواهند گیم مود خود را از سرور SA:MP به سرور open.mp منتقل کنند.

یادداشت

اگر از پلاگین FCNPC استفاده می‌کنید، لطفاً فعلاً متوقف شوید زیرا این پلاگین در حال حاضر برای open.mp کار نمی‌کند.

گام 1

آخرین نسخه فایل‌های سرور open.mp را از https://github.com/openmultiplayer/open.mp/releases دانلود کنید

  • open.mp-win-x86.zip سرور ویندوز
  • open.mp-linux-x86.tar.gz سرور لینوکس
  • open.mp-linux-x86-dynssl.tar.gz سرور لینوکس (Dynamic SSL)

گام 2

محتویات آرشیو .zip یا .tar.gz را روی دیسک خود extract کنید

یادداشت
  • components: کامپوننت‌های open.mp
  • filterscripts: فایل‌های فیلتر اسکریپت سرور شما (اسکریپت‌های جانبی)
  • gamemodes: فایل‌های گیم مود سرور شما (اسکریپت‌های اصلی)
  • models: مدل‌های سفارشی سرور شما (بافت‌ها .txd .dff)
  • plugins: فایل‌های پلاگین سرور شما (پلاگین‌های قدیمی)
  • qawno: برنامه ویرایشگر Pawn و include های سرور شما
  • scriptfiles: فایل‌های INI یا چیزهای دیگر.
  • bans.json: فایل لیست بن
  • config.json: فایل پیکربندی سرور
  • omp-server.exe: برنامه سرور open.mp
  • omp-server.pdb: فایل دیباگ سرور open.mp

گام 3

فایل گیم مود .pwn خود را در پوشه gamemodes قرار دهید

گام 4

include های مورد نیاز (مثلاً sscanf2.inc، streamer.inc) را در پوشه qawno/include قرار دهید

یادداشت

اگر از include های YSI-4 در گیم مود خود استفاده می‌کنید، به YSI-5.x بروزرسانی کنید

گام 5

پلاگین‌های مورد نیاز (مثلاً sscanf.dll، streamer.dll) را در پوشه plugins قرار دهید


هشدار

اگر از پلاگین‌های زیر در جدول استفاده می‌کنید، باید نسخه‌ای از پلاگین که با omp سازگار است قرار دهید!

پلاگین‌های زیر را در پوشه ../components قرار دهید، نه در پوشه ../plugins!

پلاگینOMP
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
SKYبه جای آن از Pawn.RakNet استفاده کنید
YSFشما نیازی به YSF ندارید زیرا open.mp قبلاً بیشتر همان native ها را اعلان کرده
FCNPCدر حال حاضر پشتیبانی نمی‌شود

گام 6

برنامه IDE qawno واقع در Server/qawno/qawno.exe را باز کنید

گام 7

CTRL + O فشار دهید سپس به پوشه ../gamemodes بروید و فایل گیم مود .pwn خود را باز کنید

گام 8

پیدا کنید

#include <a_samp>

جایگزین کنید با

#include <open.mp>

سپس F5 فشار دهید تا کامپایل شود.

گام 9

فایل config.json را با Notepad یا IDE های دیگر باز کنید

گام 10

config.json را ویرایش کنید

پیدا کنید

"main_scripts": [
"gungame 1"
],

جایگزین کنید با

"main_scripts": [
"your_gamemode_amx_file_name 1"
],

پیدا کنید

"legacy_plugins": [],

پلاگین‌های مورد نیاز را مشخص کنید

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

پیدا کنید

"side_scripts": []

فیلتر اسکریپت‌های خود را مشخص کنید

"side_scripts": [
"filterscripts/file_name"
]

پیدا کنید

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

رمز عبور قوی برای rcon وارد کنید:

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

CTRL + S فشار دهید تا تغییرات ذخیره شود.

نکته

راهنمایی در مورد نحوه تبدیل server.cfg به config.json در https://www.open.mp/docs/server/config.json موجود است

گام 11

سرور را اجرا کنید

  • ویندوز

برنامه omp-server.exe را باز کنید

  • لینوکس
./omp-server

خطاها و هشدارهای کامپایلر

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

مثال:

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

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

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

اما می‌توانید فعلاً آن را نادیده بگیرید:

#define NO_TAGS
#include <open.mp>

// اگر هشدار همچنان رخ می‌دهد
// از #pragma warning disable 213 استفاده کنید


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

CTRL + F در qawno فشار دهید و همه TextDrawColor را با TextDrawColour جایگزین کنید


یا اگر ترجیح می‌دهید می‌توانید از املای ترکیبی استفاده کنید:

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

GetPlayerPoolSize() را با MAX_PLAYERS جایگزین کنید

GetVehiclePoolSize() را با MAX_VEHICLES جایگزین کنید

GetActorPoolSize() را با MAX_ACTORS جایگزین کنید


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

از پلاگین samp-bcrypt برای hash کردن رمزهای عبور استفاده کنید. SHA-256 امن نیست.


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

مثال:

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


  • error 025: function heading differs from prototype

مثال:

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)


یادداشت

ابزار بروزرسانی نیز وجود دارد که سعی می‌کند کد قدیمی untagged و const-incorrect را پیدا کرده و بروزرسانی کند.

https://github.com/openmultiplayer/upgrade

قبلاً در پوشه /qawno/upgrader گنجانده شده.

خطاها و هشدارهای Runtime

[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.
  • سرور شما از وبسایت open.mp در دسترس نیست.
  • احتمالاً سرور را به صورت محلی اجرا می‌کنید.
  • فایروال اتصال را مسدود کرده است.

این هشدار بر رفتار سرور تأثیر نخواهد گذاشت.



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

تعداد specifier ها کمتر از آرگومان‌هایی است که در format ارسال می‌کنید. مثال:

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

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

// باید باشد:
format(string, sizeof(string), "OPEN%s", mp);
// ^^

اسناد مفید

توابع و callback های اسکریپت‌نویسی جدید را بررسی کنید: https://www.open.mp/docs/server/omp-functions

اگر کاملاً تازه‌کار در برنامه‌نویسی Pawn هستید: readme-beginner

اگر در سطح متوسط برنامه‌نویسی Pawn هستید: readme-intermediate

اگر در سطح خبره برنامه‌نویسی Pawn هستید: readme-expert

پست بلاگ: Porting to open.mp

کمک

اگر همچنان مشکلی در اجرای سرور دارید، لطفاً به سرور رسمی Discord open.mp بپیوندید: https://discord.gg/samp

در کانال #openmp-support سوال کنید.