counter-strike-source•
آموزش سرور آماده match
نویسنده: تیم برنو
راهنمای پلاگین Match برای Counter-Strike: Source
راهنمای پلاگینها · بخش Match
Counter-Strike: Source
راهنمای کامل پلاگین Match
SOURCEMOD · MATCH NEW STYLE · v1.0.3
مدیریت مسابقه، Knife Round و دو نیمهی بازی
این سند بر اساس کد منبع match.sp نوشته شده است. پلاگین یک سیستم مسابقه برای سرور
Counter-Strike: Source فراهم میکند: ادمین میتواند Match معمولی یا سفارشی شروع کند، بازیکنان
Leader انتخاب کنند، تیمها Ready شوند، امتیازها نمایش داده شوند و در پایان نتیجهی Match اعلام شود.
نسخه 1.0.3
نویسنده PeSaRak
تعداد راند پیشفرض هر نیمه 15
Warmup پیشفرض 300 ثانیه
فهرست مطالب
نصب و پیشنیازها01
دستورهای بازیکنان02
دستورهای ادمین03
تنظیمات و ConVarها04
روند اجرای Match05
پنل مدیریت و تنظیمات داخل بازی06
فایلهای جانبی و صداها07
نکات و ایرادهای موجود در کد08
01
نصب و پیشنیازها
match.spاین فایل یک SourceMod Plugin با پسوند .sp است و برای اجرا باید کامپایل شود.
| مورد | توضیح |
|---|---|
match.smx | خروجی کامپایلشده را داخل addons/sourcemod/plugins/ قرار دهید. |
| Includeها | کامپایلر باید به sourcemod، cstrike، sdktools، sdkhooks، clientmod و clientmod/multicolors دسترسی داشته باشد. |
| فایل شروع/پایان | دو فایل cfg/Match/run.cfg و cfg/Match/end.cfg بسازید؛ مسیر پیشفرض آنها در پلاگین همین است. |
| فایل صدا | سه فایل صوتی داخل sound/Match/ قرار میگیرند و با دانلود اجباری برای بازیکنان ارسال میشوند. |
spcomp match.sp copy match.smx addons/sourcemod/plugins/match.smx
پلاگین از
AutoExecConfig استفاده نمیکند؛ بنابراین تنظیمات mm_* را باید دستی در یک cfg سرور یا کنسول تعریف کنید.02
دستورهای بازیکنان
RegConsoleCmd| دستور | کاربرد | محدودیت |
|---|---|---|
!score!scores | نمایش امتیاز Terrorists و Counter-Terrorists برای بازیکن. | در کد محدودیت زمانی ندارد. |
!lead | انتخاب بازیکن بهعنوان Leader تیم خودش. | فقط هنگام Match؛ هر تیم فقط یک Leader دارد. |
!unlead | لغو Leader بودن. | فقط خود Leader میتواند این کار را انجام دهد. |
!leaders | نمایش Leader فعلی هر دو تیم. | فقط هنگام Match. |
!ready!go | اعلام Ready بودن تیم برای شروع بازی. | فقط Leader تیم و فقط در Warmup یا فاصلهی شروع نیمهی دوم. |
!unready | لغو Ready تیم. | فقط Leader تیم و فقط در همان دو وضعیت. |
برای شروع Match با Warmup، هر دو تیم باید ابتدا Leader داشته باشند و هر دو Leader دستور
!ready را اجرا کنند. در غیر این صورت Warmup تا پایان زمان تنظیمشده ادامه پیدا میکند.03
دستورهای ادمین
ADMFLAG_CHANGEMAP · ROOT| دستور | دسترسی | کاربرد |
|---|---|---|
sm_startmatchsm_m1 | ADMFLAG_CHANGEMAP | شروع Match معمولی با تنظیمات فعلی. |
sm_m0sm_matchstop | ADMFLAG_CHANGEMAP | توقف Match در حال اجرا و اجرای فایل پایان. |
sm_panel | ADMFLAG_CHANGEMAP | باز کردن پنل اصلی مدیریت Match. |
sm_info | ADMFLAG_ROOT | نمایش نام، نویسنده و نسخهی پلاگین در HUD و Panel. |
در زمان Match، تغییر Map با دستورهای
changelevel، map و sm_map شنود میشود؛ کد قبل از تغییر، Match را پایانیافته اعلام و end.cfg را اجرا میکند.04
تنظیمات و ConVarها
CreateConVar| ConVar | پیشفرض | کاربرد |
|---|---|---|
mm_password | "" | پسورد Match؛ Hook پلاگین مقدار آن را روی sv_password اعمال میکند. |
mm_hostname | "" | نام سرور هنگام Match؛ تغییرات آن روی hostname اعمال میشود. |
mm_start_cfg | Match/run.cfg | فایلی که هنگام شروع Match با exec اجرا میشود. |
mm_end_cfg | Match/end.cfg | فایلی که هنگام پایان Match با exec اجرا میشود. |
mm_rounds | 15 | تعداد راند هر نیمه؛ حداقل 1 و حداکثر 15. |
mm_kniferound | 1 | فعال یا غیرفعال کردن Knife Round؛ مقدار 1 فعال و 0 غیرفعال است. |
mm_halves_delay | 15 | مدت شمارش معکوس شروع نیمهی بعدی و شمارش پایان Match، برحسب ثانیه. |
mm_warmup | 1 | فعال یا غیرفعال کردن Warmup. |
mm_warmup_time | 300 | مدت Warmup برحسب ثانیه؛ مقدار بین 0 تا 300. |
mm_wamrup_god | 1 | God Mode در Warmup. نام ConVar در کد عمداً/اشتباه بهصورت wamrup نوشته شده، نه warmup. |
mm_rounds 15 mm_kniferound 1 mm_warmup 1 mm_warmup_time 300 mm_wamrup_god 1 mm_halves_delay 15 mm_start_cfg "Match/run.cfg" mm_end_cfg "Match/end.cfg"
05
روند اجرای Match
MatchState| مرحله | رفتار پلاگین |
|---|---|
| شروع | تنظیمات داخلی Reset میشوند، run.cfg اجرا میشود و بازی با mp_restartgame 3 آماده میشود. |
| Knife Round | در صورت فعال بودن، بازیکنان پولشان را از دست میدهند و همهی سلاحها بهجز Knife حذف میشود. پس از چند Restart، Knife Round شروع میشود. |
| انتخاب Leader | برای محاسبهی نتیجهی Knife Round، هر دو تیم باید Leader داشته باشند. تیم برنده، از طریق Panel، انتخاب میکند در سمت خود بماند یا Sideها عوض شوند. |
| Warmup | در صورت فعال بودن، تایمر Warmup شروع میشود. اگر هر دو Leader Ready شوند، Match زودتر Live میشود. |
| نیمهی اول | راندها شمرده و امتیاز تیم برنده ثبت میشود. وضعیت و Score در HUD و Panel نمایش داده میشود. |
| تعویض نیمه | پس از پایان نیمهی اول، نتیجه اعلام میشود و بازیکنان Terrorist/Counter-Terrorist جابهجا میشوند. |
| نیمهی دوم | امتیازها ادامه پیدا میکنند تا شرط برد یا مساوی بررسی شود. |
| پایان | نتیجه نمایش داده میشود، شمارش معکوس پایان اجرا میشود، end.cfg اجرا و بازی Restart میشود. |
در Enum کد وضعیتهای OverTime تعریف شدهاند، اما در مسیر قابل مشاهدهی منبع، منطق مستقلی برای انتقال به OverTime دیده نمیشود؛ بنابراین نباید بدون تست سرور روی آنها حساب کرد.
06
پنل مدیریت و تنظیمات داخل بازی
sm_panelبا اجرای sm_panel پنل اصلی باز میشود و این بخشها را دارد:
| بخش | امکانات |
|---|---|
| Start match | شروع Match معمولی یا ورود به Custom Match. |
| Custom Match | انتخاب 15، 5، 8، 10 یا 12 راند برای هر نیمه و فعال/غیرفعال کردن Knife Round و Warmup. |
| Stop match | توقف عادی Match. گزینهی Team foul در منبع با پیام «Under maintenance» مشخص شده و فعلاً پیادهسازی نشده است. |
| Configurations | تنظیم Password، Restart Round، Alltalk، Deadtalk، Deadchat، Roundtime، Freezetime، Autobalance، Friendlyfire، Forcecamera و Limitteams. |
Custom Match پس از Start، مقدار انتخابشدهی
mm_rounds را با یک تأخیر 2 ثانیهای اعمال میکند تا فایل run.cfg ابتدا اجرا شود.07
فایلهای جانبی و صداها
OnMapStart| مسیر | کاربرد |
|---|---|
cfg/Match/run.cfg | تنظیمات اختصاصی زمان شروع Match. |
cfg/Match/end.cfg | برگرداندن تنظیمات عادی سرور بعد از پایان Match. |
sound/Match/tbeep1.mp3 | صدای شمارش معکوس معمولی. |
sound/Match/tbeep2.mp3 | صدای شمارش معکوس نزدیک به پایان. |
sound/Match/tlbeep1.mp3 | صدای بلند/نهایی پایان شمارش. |
game/ ├─ cfg/ │ └─ Match/ │ ├─ run.cfg │ └─ end.cfg ├─ sound/ │ └─ Match/ │ ├─ tbeep1.mp3 │ ├─ tbeep2.mp3 │ └─ tlbeep1.mp3 └─ addons/sourcemod/plugins/ └─ match.smx
08
نکات و ایرادهای موجود در کد
Source review| مورد | نتیجه | پیشنهاد |
|---|---|---|
| Config menu | در Handle_MatchConfigMainMenu چند شرط پشتسرهم با button == 9 تکرار شده است؛ به همین دلیل Friendlyfire، Forcecamera و Limitteams از منوی اصلی قابل انتخاب واقعی نیستند. | شرطها را به 10، 11 و 12 اصلاح کنید. |
| Save/Preset | گزینههای Save config و Preset configs فقط منو را دوباره باز میکنند و ذخیره/لود واقعی انجام نمیدهند. | برای آنها فایل cfg یا منطق ذخیرهسازی اضافه شود. |
| External commands | منو دستورهای sm_rpw، sm_pw و sm_rr را صدا میزند، اما این دستورها در همین فایل ثبت نشدهاند. | پلاگینهای مربوطه نصب باشند یا این بخش با منطق داخلی جایگزین شود. |
| Warmup God Mode | در Spawn مقدار m_takedamage صفر میشود؛ در همین فایل مسیر واضحی برای برگرداندن آن پس از Warmup وجود ندارد. | در شروع Live مقدار آسیبپذیری بازیکنان را صریحاً Restore کنید. |
| Knife Round | اگر یکی از تیمها Leader نداشته باشد، نتیجهی Knife Round محاسبه نمیشود و ممکن است جریان Match متوقف شود. | برای نبود Leader، fallback یا انتقال خودکار به Warmup اضافه شود. |
| مسیر cfg | mm_start_cfg و mm_end_cfg فقط در شروع پلاگین داخل متغیر خوانده میشوند. | بعد از تغییر این دو ConVar، پلاگین/Map را Reload کنید یا Hook تغییر مقدار اضافه کنید. |
این بخشها از رفتار واقعی کد استخراج شدهاند و «دستور اجرایی» محسوب نمیشوند؛ قبل از استفاده در سرور اصلی، روی سرور تست بررسی کنید.
منبع بررسیشده: match.sp · سبک صفحه بر اساس راهنمای ارائهشدهی CSS/Plugins تنظیم شده است.