الإعدادات
كل إعدادات اللعب موجودة في config.lua. أعد تشغيل السكربت بعد أي تعديل. معرّفات الأدمن ليست في هذا الملف، بل في server/server.lua (راجع لوحة الأدمن).
TIP
الزونات والباتل باس لها صفحات خاصة: الزونات و الباتل باس.
عام
| الإعداد | الافتراضي | الوصف |
|---|---|---|
Config.Debug | false | يطبع رسائل التصحيح. اتركه مطفأ في السيرفر الرسمي. |
Config.NotificationDuplicateWindowMs | 1500 | الإشعارات المتطابقة خلال هذه المدة تظهر مرة واحدة. |
الأنظمة
Config.Systems يحدد الريسورسات التي يستخدمها MG-Contest. ضع القيمة 'auto' ليختار أول ريسورس شغّال من قائمة الأولوية.
Config.Systems = {
Framework = 'qbx_core', -- 'qbx_core' | 'qb-core' | 'auto'
Inventory = 'ox_inventory', -- 'ox_inventory' | 'qb-inventory' | 'auto'
Target = 'auto', -- 'interact' | 'ox_target' | 'qb-target' | 'auto'
Notify = 'script', -- 'script' (built-in NUI) | 'ox_lib' | 'framework'
Phone = 'lb-phone', -- 'lb-phone' | 'npwd' | 'qb-phone'
Medical = 'auto', -- 'qbx_medical' | 'qbx_ambulancejob' | 'qb-ambulancejob' | 'qb-hospital' | 'auto'
Database = 'auto', -- only 'oxmysql' is supported
InventoryImageBase = 'auto', -- image path for battle pass rewards
FrameworkPriority = { 'qbx_core', 'qb-core' },
InventoryPriority = { 'ox_inventory', 'qb-inventory' },
TargetPriority = { 'interact', 'ox_target', 'qb-target' },
NotifyPriority = { 'script' },
PhonePriority = { 'lb-phone' },
MedicalPriority = { 'qbx_medical', 'qbx_ambulancejob', 'qb-ambulancejob', 'qb-hospital' },
DatabasePriority = { 'oxmysql' },
}الاختصارات المقبولة: qbx و qb و ox و lb و nui.
إيفنتات الإنعاش
عند نهاية الكونتست، يتم إنعاش اللاعبين الميتين عن طريق سكربت الإسعاف. إذا كنت تستخدم نسخة معدّلة من qb-hospital، حدد إيفنت الإنعاش هنا:
Config.MedicalReviveEvents = {
['qb-hospital'] = 'hospital:client:Revive',
}سكربتات QBX تستخدم qbx_medical:client:playerRevived، و qb-ambulancejob يستخدم hospital:client:Revive.
الكلانات
| الإعداد | الافتراضي | الوصف |
|---|---|---|
Config.MaxClanMembers | 15 | الحد الأقصى لعدد أعضاء الكلان. |
Config.ClanCreationCost | 25000 | سعر إنشاء الكلان. |
Config.MinClanNameLength | 3 | أقل طول لاسم الكلان. |
Config.MaxClanNameLength | 20 | أكبر طول لاسم الكلان. |
Config.DefaultElo | 0 | نقاط ELO للكلان الجديد. |
Config.LeaderboardWinStreakMinimum | 2 | تظهر شارة سلسلة الفوز في لوحة الصدارة ابتداءً من هذا العدد من الانتصارات المتتالية. |
INFO
عدد خانات الأعضاء الفعلي يعتمد أيضًا على مستوى الكلان في الباتل باس. راجع خانات الكلان.
رتب الكلان
Config.ClanRanks = {
{ name = 'Leader', level = 4, canInvite = true, canKick = true, canPromote = true },
{ name = 'CoLeader', level = 3, canInvite = true, canKick = true, canPromote = true },
{ name = 'Manager', level = 2, canInvite = true, canKick = true, canPromote = false },
{ name = 'Member', level = 1, canInvite = false, canKick = false, canPromote = false },
}كلما زاد level كانت الرتبة أعلى. القيم canInvite و canKick و canPromote تحدد ما تستطيع كل رتبة فعله من صفحة الكلان.
فلترة الأسماء
| الإعداد | الوصف |
|---|---|
Config.ProfanityFilterEnabled | يفعّل فلتر الكلمات على أسماء الكلانات. |
Config.ProfanityWords | كلمات تُرفض في أي مكان من الاسم. |
Config.BlacklistedClanNames | أسماء محجوزة مثل admin و staff و discord و .gg/. |
رتب ELO
رتبة الكلان هي أعلى رتبة تكون قيمة min فيها أقل من أو تساوي نقاط ELO للكلان.
Unranked0
Bronze500
Silver1,000
Gold2,000
Platinum3,500
Diamond5,000
Master7,500
Legend10,000Config.EloRanks = {
{ name = 'Unranked', min = 0, color = '#808080', image = 'img/unranked.png' },
{ name = 'Bronze', min = 500, color = '#cd7f32', image = 'img/bronze.png' },
-- ...
{ name = 'Legend', min = 10000, color = '#ff2222', image = 'img/legend.png' },
}الصور تُحمّل من html/img/. اجعل القائمة مرتبة حسب min.
تشغيل وإيقاف المميزات
| الإعداد | الافتراضي | الوصف |
|---|---|---|
Config.EnableWarCooldownBlock | true | يمنع بدء كونتست إذا كان هناك كونتست مجدول قريب. |
Config.BlockWarBeforeContestMinutes | 0 | كم دقيقة قبل الكونتست المجدول يبدأ المنع. |
Config.EnableSingleContest | true | كونتست واحد فقط يعمل في السيرفر في نفس الوقت. |
Config.EnableZoneNameDisplay | true | يُظهر أسماء أعضاء فريقك فوق رؤوسهم داخل الزون. |
Config.EnablePerZoneDuration | true | يستخدم duration الخاص بكل زون بدل Config.ContestDuration. |
Config.EnableEdgeRespawn | true | الرسبون في نقاط عشوائية على أطراف الزون. |
Config.EnableResultUI | true | يُظهر منصة النتائج عند نهاية الكونتست. |
Config.ResultUIDurationSeconds | 5 | مدة بقاء منصة النتائج على الشاشة. |
Config.RankUpUIDelaySeconds | 2 | التأخير قبل أنيميشن ترقية الرتبة. |
Config.KillFeedEnabled | false | يُظهر سجل القتل أثناء الكونتست. |
الكونتستات
| الإعداد | الافتراضي | الوصف |
|---|---|---|
Config.ContestDuration | 600 | مدة الكونتست بالثواني، تُستخدم عند إيقاف مدة كل زون. |
Config.ContestCooldown | 7200 | فترة الانتظار لكل زون بين الكونتستات، بالثواني. |
Config.ContestAutoStart | true | يبدأ الكونتستات تلقائيًا في الأوقات المجدولة. |
Config.ContestScoreSyncIntervalSeconds | 30 | كل كم ثانية تُحفظ النقاط في قاعدة البيانات. |
Config.ContestScoreBroadcastDelayMs | 500 | يجمّع تحديثات النقاط المرسلة للاعبين. |
Config.ZoneValidationBuffer | 15.0 | أمتار إضافية مسموحة عند تحقق السيرفر من وجود اللاعب داخل الزون. |
الجدول
Config.ScheduledContests يحتوي أوقات البدء بنظام 24 ساعة حسب وقت السيرفر. اترك فراغات حول أوقات ريستارت السيرفر.
Config.ScheduledContests = {
{ hour = 12, minute = 0 },
{ hour = 12, minute = 30 },
-- Restart 3:00PM
{ hour = 15, minute = 30 },
-- ...
}التصويت على الخريطة
قبل كل كونتست مجدول، يصوّت اللاعبون على الزون الذي سيُلعب.
Config.MapVoting = {
Enabled = true,
StartsBeforeContestSeconds = 300, -- voting opens 5 minutes before
AllowVoteChanges = true,
VoteCooldownSeconds = 1,
}النقاط
| الإعداد | الافتراضي | الوصف |
|---|---|---|
Config.PointsPerKill | 1 | نقاط الكونتست لكل قتل. |
Config.PointsPerFlagCapture | 4 | نقاط الكونتست لكل التقاط علم. |
Config.EloGainOnWin | 25 | نقاط ELO للكلان الفائز. |
Config.EloLossOnDefeat | 15 | نقاط ELO تُخصم من الكلانات الخاسرة. |
Config.EloPerKill | 2 | نقاط ELO لكل قتل. |
Config.EloPerFlagCapture | 100 | ELO إضافي للفائز إذا كان العلم معه عند النهاية. |
الموت والرسبون
| الإعداد | الافتراضي | الوصف |
|---|---|---|
Config.RespawnCooldown | 15 | الثواني قبل الإنعاش التلقائي. |
Config.RespawnHealth | 200 | الصحة بعد الرسبون. |
Config.RespawnArmor | 25 | الدرع بعد الرسبون. |
Config.UseCustomSpawns | true | يستخدم spawnPoints الخاصة بالزون بدل أماكن عشوائية. |
Config.SpawnProtectionTime | 3 | ثواني الحماية بعد الرسبون. |
Config.SpawnProtectionFlash | true | يومض اللاعب أثناء الحماية. |
Config.SpectatorEnabled | true | اللاعب الميت يشاهد الآخرين أثناء انتظار الرسبون. زر E يوقف المشاهدة. |
Config.SpectatorKey | 170 | رقم الزر للتنقل بين اللاعبين في المشاهدة (F3). |
بعد الكونتست
-- Where players without a clan are sent when they enter an active zone
Config.NonClanTeleportCoords = vector4(-943.82, -764.73, 18.0, 181.42)
-- Random point players are sent to when a contest ends
Config.ContestEndSpawnPoints = {
vector4(-934.72, -769.65, 17.97, 175.98),
-- ...
}NonClanTeleportCoords هو المكان الذي يُنقل إليه اللاعب بدون كلان إذا دخل زونًا نشطًا، و ContestEndSpawnPoints هي النقاط التي يُنقل إليها اللاعبون عشوائيًا عند نهاية الكونتست.
المركبات والأداء
| الإعداد | الافتراضي | الوصف |
|---|---|---|
Config.ForceDV | true | يحذف المركبات التي تدخل زونًا فيه كونتست نشط. |
Config.ZoneIdleIntervalMs | 2500 | فترة فحص الزونات عندما يكون اللاعب بعيدًا عنها كلها. |
Config.VehicleScanIntervalMs | 5000 | فترة فحص المركبات أثناء الكونتست. |
Config.NameRefreshIntervalMs | 250 | سرعة تحديث أماكن أسماء الفريق. |
القيم الأقل تستجيب أسرع لكنها تستهلك معالج اللاعب أكثر. القيم الافتراضية مناسبة لأغلب السيرفرات.
سلاسل القتل
Config.KillStreaks = {
{ kills = 3, label = 'Triple Kill', hpBonus = 50, armorBonus = 25, cashBonus = 200 },
{ kills = 5, label = 'Rampage', hpBonus = 50, armorBonus = 50, cashBonus = 500 },
{ kills = 7, label = 'UnStoppable', hpBonus = 100, armorBonus = 50, cashBonus = 1000 },
{ kills = 10, label = 'GodLike', hpBonus = 100, armorBonus = 100, cashBonus = 2500 },
}المكافأة على الرأس (Bounty)
| الإعداد | الافتراضي | الوصف |
|---|---|---|
Config.BountyEnabled | true | يفعّل نظام المكافأة. |
Config.BountyCheckInterval | 60 | الثواني بين كل فحص. |
Config.BountyMinKills | 5 | عدد القتل المطلوب ليصبح على اللاعب مكافأة. |
Config.BountyCashReward | 2500 | الفلوس لمن يقتل الهدف. |
Config.BountyEloReward | 10 | نقاط ELO لمن يقتل الهدف. |
المكافآت
قيمة type في الفلوس هي اسم الحساب (cash أو bank)، و chance في الأيتمات نسبة مئوية.
Config.Rewards = {
ContestWin = {
money = { min = 2500, max = 5000, type = 'cash' },
items = {
{ item = 'pistol_ammo', amount = 100, chance = 75 },
},
},
ContestParticipation = {
money = { min = 200, max = 400, type = 'cash' },
items = {
{ item = 'pistol_ammo', amount = 50, chance = 75 },
},
},
KillReward = {
money = 50,
type = 'cash',
},
}التحكم بالدخول
| الإعداد | الافتراضي | الوصف |
|---|---|---|
Config.SpecialRoles | { 'maf' } | مجموعات صلاحيات الفريموورك المسموح لها بالبقاء داخل الزونات النشطة بدون كلان (الإدارة والمشاهدين). |
حدود لوحة الأدمن
الحد الأقصى لما يستطيع الأدمن منحه من اللوحة:
Config.MafiaPanel = {
MaxCashGrant = 1000000,
MaxBattlePassXPGrant = 100000,
MaxElo = 1000000,
MaxContestTimeAdjustment = 1800, -- seconds
MaxBanMinutes = 10080, -- 7 days
}التابلت
| الإعداد | الافتراضي | الوصف |
|---|---|---|
Config.LaptopItem | 'tablet' | الأيتم الذي يفتح الواجهة. يجب أن يطابق الأيتم في الإنفنتوري. |
Config.TabletUseCooldownMs | 1000 | فترة الانتظار بين كل استخدام للتابلت. |
Config.TabletOpenDelayMs | 200 | تأخير في qb-inventory حتى يُغلق الإنفنتوري أولًا. |
العلم والتارقت
| الإعداد | الافتراضي | الوصف |
|---|---|---|
Config.FlagModel | `prop_gangflag_gangs` | موديل العلم الافتراضي (مرفق مع السكربت). |
Config.FlagCaptureRadius | 3.0 | المسافة من العلم لالتقاطه. |
Config.TargetDistance | 2.5 | مسافة التفاعل بالتارقت. |
Config.FlagTargetIcon | 'fas fa-flag' | أيقونة خيار التارقت. |
Config.FlagTargetLabel | 'Capture Flag' | نص خيار التارقت. |
ألوان الواجهة
التابلت والـ HUD وشريط الالتقاط ومؤقت الرسبون والإشعارات والنتائج كلها تستخدم لونًا رئيسيًا واحدًا:
Config.UIColors = {
primaryColor = { fallback = 'FF7CE900' },
}الصيغ المقبولة:
#RRGGBB، مثال'#3A9188'AARRGGBB، مثال'FF7CE900'- اسم لون جاهز:
grayوredوpinkوgrapeوvioletوindigoوblueوcyanوtealوgreenوlimeوyellowوorange
إذا كانت القيمة فارغة أو خاطئة، يُستخدم اللون التركوازي #3A9188. ألوان الخلفية والنصوص ثابتة.
صور الديسكورد
صور أعضاء الكلان تأتي من الديسكورد. لتفعيلها، عدّل server/sv_discord.lua:
Discord.BotToken = 'YOUR_BOT_TOKEN'
Discord.GuildID = 'YOUR_GUILD_ID'بدون توكن، تظهر صورة افتراضية.
DANGER
لا تشارك توكن البوت مع أحد أبدًا. اتركه فقط في هذا الملف الخاص بالسيرفر.
