راه اندازی سرور
این آموزش برای کسانی است که میخواهند گیم مود خود را از سرور 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.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 | به جای آن از 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 سوال کنید.