الوثائق 9.6.24
server.cfg والـ convars والصلاحيات
تعرض هذه الصفحة كل convar يقرؤه Tosun AntiCheat، وكل صلاحية ACE يتحقق منها، والملفات وأقسام الإعدادات التي يمكنك تعديلها. تبدأ بكتلة server.cfg كاملة، وتغطي أيضًا convars التقوية في FiveM التي يدقّقها الـ AC عند البدء.
أين توجد الإعدادات#
يقرأ Tosun AntiCheat الإعدادات من server.cfg، ومن أربعة ملفات داخل المورد، ومن لوحة الويب. بيانات الاعتماد مكانها فقط في الأماكن الخاصة بالخادم. الملف configs/anticheat_config.lua سكربت مشترك، لذا يرسله الخادم إلى كل عميل.
| الملف أو المكان | يُحمَّل على | ما يوضع فيه |
|---|---|---|
server.cfg | الخادم | الـ convars (الترخيص، مفتاح اللوحة، الموارد الموثوقة)، وصلاحيات ACE، و convars التقوية في FiveM. |
configs/anticheat_server.lua | الخادم فقط، قبل سكربتات الخادم الخاصة بالـ AC | بديل لبيانات الاعتماد عندما لا تستخدم الـ convars: panelKey و centralToken و licenseKey. |
configs/anticheat_config.lua | مشترك: الخادم وكل عميل | كل إعدادات ts: الاكتشافات، والعقوبات، والحراس، وقائمة الإدارة، والقوائم. لا تضع هنا أبدًا مفتاحًا أو رمزًا (token) أو ترخيصًا. |
configs/anticheat_webhooks.lua | الخادم فقط | روابط webhook الخاصة بـ Discord ونمط الـ embed. |
admins/anticheat_admins.lua | الخادم فقط | قائمة معرّفات Admins (حالة الطاقم وقائمة الإدارة). |
Web panel (ac_settings and ac_ tables) | تُزامَن مع الخادم | تتجاوز معظم قيم الإعدادات بعد نحو 3 ثوانٍ من البدء، ثم كل ts.ServerPerf.configSyncIntervalSec ثانية (القيمة المرفقة 120). |
مثال server.cfg كامل#
كتلة كاملة لتثبيت نموذجي. الترتيب مهم: يجب أن تأتي التبعيات و convars بيانات الاعتماد قبل ensure tosun-ac، لأن بيانات الاعتماد تُحدَّد مرة واحدة عند تحميل المورد. الأسطر التي تبدأ بعلامة # واحدة اختيارية؛ أزل الـ # لاستخدامها.
## ---------- Tosun AntiCheat: كتلة server.cfg ----------
## OneSync تبعية في الـ manifest (ويمكن لـ txAdmin تفعيله أيضًا).
set onesync on
## التبعيات: شغّلها قبل tosun-ac.
## oxmysql و tosun_render تبعيتان إلزاميتان.
## screenshot-basic هو ts.screenshotModule الافتراضي.
## اضبط mysql_connection_string قبل ensure oxmysql (راجع دليل MySQL).
ensure oxmysql
ensure screenshot-basic
ensure tosun_render
## بيانات الاعتماد: استخدم set (وليس setr أو sets أبدًا) وأبقِها فوق ensure tosun-ac.
## تُقرأ مرة واحدة عند تحميل المورد.
## صيغة الترخيص: tac_live_ متبوعًا بـ 40 حرف hex صغيرًا.
set tosun_ac_license "YOUR_LICENSE_KEY"
## اختياري: عندما يكون فارغًا، يُحمَّل مفتاح اللوحة من panel_settings في قاعدة بيانات اللعبة.
# set tosun_ac_panel_key "YOUR_PANEL_API_KEY"
# set tosun_ac_central_token "YOUR_FIVEM_SCOPED_TOKEN"
## اختياري: يستخدمه ts.licenseLock فقط.
# set tosun_ac_server_id "server-1"
## الموارد التي يمكنها استدعاء exports الـ AC المحمية (مفصولة بفواصل).
set tosun_ac_trusted_resources "my-housing,my-clothing"
## اختياري: عنوان https عام للوحة من أجل رفع لقطات الشاشة والأدلة.
# set ts_public_panel_url "https://panel.example.com"
## اختياري: تحكّم في جسر قاعدة البيانات Tosun Connect من هذا الملف.
## بدون سطر manual (ومع إيقاف ts.panelMirror)، يُفرض كلا convar الجسر على "1".
# set tosun_db_bridge_manual "1"
# set tosun_db_bridge_enabled "1"
# set tosun_db_bridge_money_write "0"
## اختياري: أوقف كاتب وقت اللعب (qb و qbcore و qbox فقط).
# set tosun_panel_playtime "0"
## اختياري، للمطورين الذين يستخدمون ملفات الجسر. العملاء يقرؤونها، لذا استخدم setr.
# setr tosun_ac_resource "tosun-ac"
# setr tosun_ac_bridge_client_ms "60000"
ensure tosun-ac
## ---------- صلاحيات الطاقم ----------
## حالة الطاقم وقائمة الإدارة داخل اللعبة:
add_ace group.admin tosun.admin allow
## tosunac_setup والفحوص اليدوية ومعاينة شاشة الحظر:
add_ace group.admin tosunac.admin allow
add_ace group.admin command.tosunac_setup allow
add_ace group.admin command.tosunac_backdoorscan allow
add_ace group.admin command.tosunac_eventscan allow
add_ace group.admin tosunac.banscreen.test allow
## سطر واحد لكل عضو في الطاقم:
add_principal identifier.license:YOUR_LICENSE_HEX group.admin
## ---------- convars التقوية في FiveM التي يتحقق منها الـ AC عند البدء ----------
set sv_stateBagStrictMode true
set sv_filterRequestControl 2
set sv_enableNetworkedSounds false
set sv_enableNetworkedPhoneExplosions false
set sv_enableNetworkedScriptEntityStates false
set sv_scriptHookAllowed false
## اختبر أولًا: القيمة relaxed أو strict قد تعطّل السكربتات التي تُظهر المركبات من العميل.
set sv_entityLockdown relaxed
set sv_pureLevel 1
## تدقيق server.cfg يُصدر تحذيرًا ما دام هذا فارغًا:
# set sv_enforceGameBuild YOUR_GAME_BUILDقواعد كتلة server.cfg#
اتبع هذه القواعد عند تكييف المثال مع خادمك.
- شغّل oxmysql و tosun_render قبل tosun-ac. يعلن الـ manifest عن إصدار خادم 4890 أو أحدث، و OneSync، و oxmysql، و tosun_render كتبعيات.
- شغّل screenshot-basic إذا أبقيت ts.screenshotModule الافتراضي.
- ضع كل أسطر بيانات الاعتماد set tosun_ac_ قبل ensure tosun-ac. تُقرأ القيم مرة واحدة عند التحميل؛ والتغيير اللاحق يتطلب إعادة تشغيل المورد.
- استخدم set لبيانات الاعتماد. setr ينسخ القيمة إلى كل عميل، و sets ينشرها في معلومات الخادم العامة.
- استخدم setr فقط للـ convars التي يقرؤها العملاء: ts_screen_upload و tosun_ac_resource و tosun_ac_bridge_client_ms.
- لا تحتاج إلى أي سطر لجسر قاعدة البيانات. منذ 9.6.14 يكون الجسر مفعّلًا افتراضيًا، والأسطر set ... "0" تُتجاهل ما لم يكن tosun_db_bridge_manual هو "1" أو ts.panelMirror.enabled = true.
- أدلة التثبيت القديمة (INSTALLER-READY.md و INSTALLER-LICENSE.md و INSTALL-MULTILANG.md و CONFIG-PERFORMANCE-GUIDE.md) تضع ensure قبل بيانات الاعتماد، وتضع مفتاح اللوحة في configs/anticheat_config.lua، وتُغفل tosun_render. اتبع هذه الصفحة بدلًا منها.
مرجع الـ convars#
كل convar يقرؤه Tosun AntiCheat ويمكنك ضبطه. استخدم set ما لم يذكر عمود الملاحظات setr. يكتب الـ AC أيضًا بعض الـ convars الداخلية الخاصة به ويقرؤها؛ وهي محمية ويجب ألا تضبطها.
| Convar | الافتراضي | ما يفعله | ملاحظات |
|---|---|---|---|
tosun_ac_license | "" | مفتاح ترخيص الخادم. يُقرأ مرة واحدة عند التحميل إلى ts.licenseLock.licenseKey. قفل الترخيص وجسر قاعدة البيانات Tosun Connect يعيدان قراءة الـ convar لاحقًا أيضًا. | بيانات اعتماد: بـ set فقط، وقبل ensure. الصيغة tac_live_ مع 40 حرف hex صغيرًا. يعتبره جسر قاعدة البيانات مفقودًا ما لم يكن طوله من 16 إلى 128 حرفًا بلا مسافات. |
tosun_ac_panel_key | "" | مفتاح API الخاص باللوحة. يُرسل مع الاستدعاءات الصادرة إلى اللوحة ويُستخدم لتفويض طلبات اللوحة الواردة. | بيانات اعتماد: بـ set فقط. أعد التشغيل بعد التغيير. عندما يكون فارغًا ينسخ الـ AC القيمة panel_settings.ac_api_key من قاعدة بيانات اللعبة. في كل بدء يُكتب كنص صريح في سجل ac_settings webPanelKey. |
tosun_ac_central_token | "" | رمز المصادقة لبوابة الإصدار ولـ API المركزي في v9. يُفضَّل على مفتاح اللوحة. | بيانات اعتماد: بـ set فقط. |
tosun_ac_server_id | "" (ts.licenseLock.serverId) | معرّف الخادم لقفل الترخيص. يهم فقط عندما يكون ts.licenseLock.enabled = true و allowedServerIds غير فارغ. | ليس سرًا. بعد كل فحص للترخيص يعيد الـ AC كتابته كـ convar منسوخ للعملاء، لذا يمكن للعملاء رؤيته. export licenseStatus يعيده باسم serverId. |
tosun_ac_trusted_resources | "" | الموارد (مفصولة بفواصل أو مسافات) التي يمكنها استدعاء exports المحمية. تُدمج مع ts.ExportCallerWhitelist. | للمطورين. يُعاد قراءته خلال 10 ثوانٍ ويبقى بعد تحديثات الـ AC. تحقق منه بأمر وحدة التحكم tosunac_integration. |
ts_public_panel_url | "" | عنوان أساس عام للوحة من أجل رفع لقطات الشاشة وأدلة الحظر والفيديو المباشر (base/api/screen_upload.php). له الأولوية على ts.webPanelURL. | مطلوب فقط عندما يختلف الرابط العام عن ts.webPanelURL. يجب أن يكون https. |
ts_screen_upload | http://localhost/api/screen_upload.php | رابط الرفع لالتقاط screenshot-basic الذي يستخدمه export screenCapture والأمران /capture و /ts_capture وإجراء الالتقاط في web-bridge اللوحة. | استخدم setr: لأنه يُقرأ على العميل. الافتراضي يشير إلى localhost. لا يملك الـ AC معالجًا لنتيجة الرفع، لذا تُهمل النتيجة. |
tosun_db_bridge_manual | "0" | القيمة "1" تمنع الـ AC من فرض convarَي الجسر أدناه، لذا يتحكم فيهما server.cfg. | اضبطه قبل بدء المورد. |
tosun_db_bridge_enabled | "0" في الكود، ويُفرض على "1" عند التحميل | يفعّل جسر قاعدة البيانات عند الطلب Tosun Connect. | قيمة server.cfg تُحتسب فقط مع tosun_db_bridge_manual "1" أو ts.panelMirror.enabled = true. مع تفعيل panelMirror لا يفرضه الـ AC، لذا يبقى الجسر متوقفًا ما لم يفعّله server.cfg. |
tosun_db_bridge_money_write | "0" في الكود، ويُفرض على "1" عند التحميل | يسمح بعملية الجسر player.money.set التي تضبط رصيد لاعب متصل. | عندما لا تكون القيمة "1" تفشل العملية بـ write_disabled. لضبط "0" من server.cfg تحتاج إلى الوضع اليدوي (manual). |
tosun_db_bridge_query_timeout_ms | 5000 (من 1000 إلى 10000) | مهلة المراقبة لكل استعلام SQL في الجسر. | انتهاء المهلة يُبلغ بـ query_timeout لكنه لا يلغي الاستعلام. |
tosun_panel_playtime | "1" | القيمة "0" تعطّل الكاتب الذي يملأ players.playtime. يعمل فقط مع qb أو qbcore أو qbox. | يُقرأ مرة واحدة عند التحميل. أمر ALTER TABLE الذي يضيف عمود playtime ما زال يعمل بعد 20 ثانية من البدء حتى مع "0". يكفي set، رغم أن رأس الملف يقترح setr. |
tosun_panel_playtime_interval_ms | 120000 (من 30000 إلى 600000) | فترة الحلقة لكاتب وقت اللعب. | يكفي set. |
tosun_ac_resource | "tosun-ac" | اسم مورد الـ AC الذي تستخدمه ملفات الجسر الاختيارية داخل موردك. | للمطورين. استخدم setr عندما تغيّر اسم مجلد الـ AC: جسر العميل يرى فقط الـ convars المنسوخة للعملاء. |
tosun_ac_bridge_server_ms | 60000 (من 500 إلى 300000) | مدة الإعفاء الافتراضية لـ TosunAC.PlayerExempt في جسر الخادم. | للمطورين. يكفي set. |
tosun_ac_bridge_cooldown_ms | 750 (القيمة 0 تعطّله) | فترة تهدئة لكل لاعب تُسقط استدعاءات TosunAC.PlayerExempt المتكررة في جسر الخادم. | للمطورين. يكفي set. |
tosun_ac_bridge_client_ms | 60000 (من 500 إلى 300000) | المدة الافتراضية لـ TosunAC.Exempt() في جسر العميل. | للمطورين. setr إلزامي. |
بيانات الاعتماد: الأولوية والتعامل معها#
تُحدَّد ثلاث بيانات اعتماد مرة واحدة عند تحميل المورد: مفتاح الترخيص، ومفتاح API الخاص باللوحة، والرمز المركزي. لكل منها يأخذ الـ AC أول قيمة غير فارغة بهذا الترتيب.
تحذير MIGRATION يطلب منك مسح القيمة المشتركة وتدوير أي بيانات اعتماد خُزّنت هناك يومًا، لأن ذلك الملف يُرسل إلى كل عميل.
القيمة الأطول من 4096 حرفًا، أو التي تحتوي أحرف تحكم، توقف التحميل بالخطأ Invalid server credential setting.
لمفتاح اللوحة فقط: إذا بقي فارغًا بعد هذه الخطوات، ينسخ الـ AC القيمة panel_settings.ac_api_key من قاعدة بيانات اللعبة. في كل بدء يكتب الـ AC المفتاح المحدَّد في سجل ac_settings webPanelKey كنص صريح. إذا عدّل أحد ذلك السجل في اللوحة، تحل القيمة المعدّلة محل قيمتك حتى إعادة التشغيل التالية.
لمفتاح الترخيص فقط: يقبل قفل الترخيص الصيغ tac_live_ مع 40 حرف hex صغيرًا (49 حرفًا)، و TOSUN-AC-YYYY-... و TOSUN-.... فحص الصيغة يعمل فقط عندما يكون ts.licenseLock.enabled = true، وهو يتحقق من الصيغة فقط.
- convar الخادم: tosun_ac_license أو tosun_ac_panel_key أو tosun_ac_central_token.
- القيمة في configs/anticheat_server.lua: licenseKey أو panelKey أو centralToken.
- القيمة القديمة في الملف المشترك configs/anticheat_config.lua: ts.licenseLock.licenseKey أو ts.webPanelKey أو ts.Central.token. أي قيمة هنا تطبع تحذير MIGRATION في وحدة التحكم.
configs/anticheat_server.lua#
استخدم هذا الملف الخاص بالخادم فقط عندما تفضّل عدم وضع بيانات الاعتماد في server.cfg. يُحمَّل قبل سكربتات الخادم الخاصة بالـ AC ويعود فورًا على العملاء. اترك خانة فارغة لتستمر في استخدام الـ convar أو الاكتشاف من قاعدة البيانات.
- الـ convar غير الفارغ له الأولوية دائمًا على القيمة في هذا الملف.
- أبقِ الخانات المقابلة في configs/anticheat_config.lua فارغة: ts.webPanelKey و ts.Central.token و ts.licenseLock.licenseKey.
- احفظ النسخ الاحتياطية من هذا الملف بشكل خاص.
- الملف يملأ فقط ts.webPanelKey و ts.Central.token و ts.licenseLock.licenseKey. السكربتات الأخرى تقرأ تلك القيم، وليس الملف.
-- configs/anticheat_server.lua (الخادم فقط)
local credentials = {
panelKey = '', -- أو: set tosun_ac_panel_key "YOUR_PANEL_API_KEY"
centralToken = '', -- أو: set tosun_ac_central_token "YOUR_FIVEM_SCOPED_TOKEN"
licenseKey = '', -- أو: set tosun_ac_license "YOUR_SERVER_LICENSE"
}رابط اللوحة ورفع لقطات الشاشة#
ts.webPanelURL في configs/anticheat_config.lua هو الرابط الأساسي للوحة. يمكنك تركه فارغًا: عندما يكون فارغًا يحمّل الـ AC القيمة panel_url أو site_url من panel_settings في قاعدة بيانات اللعبة ويحفظها في ac_settings. مزامنة الإعدادات عبر HTTP تعمل فقط عندما يكون الرابط ومفتاح اللوحة مضبوطين.
اضبط ts_public_panel_url فقط عندما يجب أن تذهب لقطات الشاشة وأدلة الحظر والفيديو المباشر إلى عنوان عام مختلف. يجب أن يكون https. رموز الرفع تُصدر فقط لـ https://host/api/screen_upload.php عندما يساوي الأساس هذا الـ convar أو ts.webPanelURL.
ts_screen_upload مسار منفصل يستخدمه export screenCapture والأمران /capture و /ts_capture. يتطلب setr، والقيمة الافتراضية تشير إلى localhost. لا شيء في الـ AC يعالج نتيجة ذلك الرفع.
الأسماء القديمة ts.PanelUrl و ts.panelUrl و ts.webPanelUrl ما زالت تُقرأ كبدائل.
convars جسر قاعدة البيانات Tosun Connect#
منذ 9.6.14 يكون جسر قاعدة البيانات عند الطلب مفعّلًا افتراضيًا ولا يحتاج إلى أي سطر في server.cfg. عند التحميل يضبط الملف editable/server/tosun_db_bridge_defaults.lua كلًا من tosun_db_bridge_enabled و tosun_db_bridge_money_write على "1"، لذا تُتجاهل أسطر "0" الواردة في الأدلة القديمة.
يمكنك أيضًا إيقاف الاتصال لخادم واحد من اللوحة: Servers، ثم الخادم، ثم بطاقة Tosun Connect.
يستطلع الجسر https://admin.tosundev.com/api/server_db_bridge.php، ويرسل مفتاح ترخيصك كرمز Bearer، وينفّذ فقط هذه العمليات: players.list و player.detail و player.vehicles و bans.list و logs.list و player.money.set.
مع ts.panelMirror.enabled = true لا يفرض الـ AC تشغيل الجسر، لذا تستمر المرآة القديمة في العمل. المرآة نفسها لا تعمل ما دام tosun_db_bridge_enabled هو "1".
أمرا وحدة التحكم tosunac_db_status و tosunac_db_check يعرضان حالة الجسر ويختبران oxmysql.
- للتحكم في الجسر من server.cfg، أضف set tosun_db_bridge_manual "1" قبل ensure tosun-ac.
- أضف set tosun_db_bridge_enabled بالقيمة "1" أو "0".
- أضف set tosun_db_bridge_money_write بالقيمة "1" أو "0". بدون "1" تفشل player.money.set بـ write_disabled ولا تُعرض على اللوحة.
convars لمطوري السكربتات#
هذه الـ convars تهم فقط عندما يستدعي مورد آخر الـ AC. يحدد tosun_ac_trusted_resources الموارد التي يمكنها استدعاء exports المحمية؛ وتضبط convars الجسر ملفات الجسر الاختيارية.
من exports المحمية: SetExempt و SetPlayerExempt و exports الإيقاف المؤقت (Pause) و BypassDetection و addAdmin و whitelistPlayer و approveResource و ban و offlineBan و exports webBridge و quarantine.
وحدة تحكم الخادم و tosun-ac نفسه موثوقان دائمًا. الاستدعاء غير الموثوق يُرفض؛ ولكل زوج من المورد والـ export يطبع الـ AC تحذيرًا واحدًا في وحدة التحكم وسطرًا واحدًا في سجل اللوحة يذكر هذا الـ convar. مع ts.EnforceExportCallerWhitelist = false يعمل الاستدعاء ويُسجَّل مرة واحدة فقط.
المستدعون الموثوقون يحصلون أيضًا على MarkTeleport دون ميزانية لكل لاعب.
INTEGRATION.md و bridge/INTEGRATION.txt يستخدمان set مع tosun_ac_resource و tosun_ac_bridge_client_ms. استخدم setr بدلًا منه: جسر العميل يقرأ كليهما على العميل.
توجد أيضًا أحداث و exports داخلية للـ AC. هي محمية ويجب عدم استدعائها من مواردك.
# الموارد المسموح لها باستدعاء exports المحمية (مفصولة بفواصل أو مسافات)
set tosun_ac_trusted_resources "my-housing,my-clothing"
# ملفات الجسر داخل موردك الخاص
setr tosun_ac_resource "tosun-ac"
setr tosun_ac_bridge_client_ms "60000"
set tosun_ac_bridge_server_ms "60000"
set tosun_ac_bridge_cooldown_ms "750"صلاحيات ACE#
كل صلاحية ACE يتحقق منها Tosun AntiCheat. امنح صلاحيات ACE لمجموعة وأضف الطاقم إلى المجموعة عبر add_principal. صلاحية ACE يملكها builtin.everyone أيضًا لا تجعل أحدًا من الطاقم أبدًا.
| ACE أو principal | ما تمنحه | سطر مثال |
|---|---|---|
tosun.admin | حالة الطاقم (الإعفاء من العقوبة وأوامر الطاقم) وقائمة الإدارة داخل اللعبة. لا تفتح tosunac_setup ولا الفحوص اليدوية. | add_ace group.admin tosun.admin allow |
ts.admin | مثل tosun.admin. | add_ace group.admin ts.admin allow |
command.ts | حالة الطاقم وقائمة الإدارة. /ts نفسه مسجّل بلا قيود، لذا هذه الصلاحية علامة دور للـ AC وليست بوابة من FiveM. | add_ace group.admin command.ts allow |
command.ban, command.kick | حالة الطاقم وقائمة الإدارة، حتى عندما يكون ts.txAdminAuth = false. | add_ace group.admin command.ban allow |
txadmin, tx.admin, txadmin.menu, txadmin.advanced, command.txadmin | حالة الطاقم فقط. بلا قائمة إدارة. | Usually granted by txAdmin, or: add_ace group.admin txadmin.menu allow |
command.resources, command.restart | حالة الطاقم فقط ما دام ts.txAdminAuth = true. بلا قائمة إدارة. | Usually granted by txAdmin |
command.screenshot, command.unban | الإعفاء من العقوبة فقط، ما دام ts.txAdminAuth = true. بلا أوامر طاقم وبلا قائمة إدارة. | Usually granted by txAdmin |
group.admin, group.superadmin, group.moderator, group.god | تُختبر ككائنات ACE. تمنح حالة الطاقم والقائمة فقط إذا تحوّل الاسم إلى ACE مسموح للاعب. امنح أيضًا صلاحية ACE صريحة مثل tosun.admin. | add_principal identifier.license:YOUR_LICENSE_HEX group.admin |
tosunac.admin | استخدام tosunac_setup و tosunac_backdoorscan و tosunac_eventscan داخل اللعبة (كل منها يحتاج أيضًا إلى ACE الخاص بأمره) و /banscreentest. بلا حالة طاقم وبلا قائمة. | add_ace group.admin tosunac.admin allow |
tosunac.banscreen.test | /banscreentest داخل اللعبة، الذي يعرض معاينة شاشة الحظر على المستدعي فقط. | add_ace group.admin tosunac.banscreen.test allow |
command.tosunac_setup | أمر مقيّد. يحتاج اللاعب أيضًا إلى tosunac.admin. | add_ace group.admin command.tosunac_setup allow |
command.tosunac_backdoorscan | أمر مقيّد. يحتاج اللاعب أيضًا إلى tosunac.admin. | add_ace group.admin command.tosunac_backdoorscan allow |
command.tosunac_eventscan | أمر مقيّد. يحتاج اللاعب أيضًا إلى tosunac.admin. | add_ace group.admin command.tosunac_eventscan allow |
command.ts_setlang | أمر مقيّد. يحتاج اللاعب أيضًا إلى حالة الطاقم. | add_ace group.admin command.ts_setlang allow |
command.ts_v9_help | أمر مقيّد بلا أي فحص آخر. مخرجاته تذهب إلى وحدة تحكم الخادم. | add_ace group.admin command.ts_v9_help allow |
command.tosunac_integration, command.tosunac_doctor, command.ac_cleanup, command.tosunac_db_status, command.tosunac_db_check | لا شيء داخل اللعبة. هذه الأوامر لوحدة التحكم فقط وتتجاهل اللاعبين حتى عندما يملكون الصلاحية. | Run them from the server console |
command (bare ACE) | لا تجعل أحدًا من الطاقم أبدًا عندما يملكها builtin.everyone. لكنها مع ذلك إحدى صلاحيات ACE التي تتجاوز فحص IP عند الاتصال، وذلك الفحص لا يرشّح builtin.everyone. | Do not use: add_ace builtin.everyone command allow |
ts.AdminBypassAces (config list) | تمنح حالة الطاقم، وليس القائمة. الإدخالات المرفقة: command.ts، وصلاحيات ACE الخاصة بـ txAdmin، و command.kick، و command.ban، وأسماء المجموعات الأربعة، و tosun.admin، و ts.admin. لا تضف أبدًا صلاحية command المجردة. | ts.AdminBypassAces = { "command.ts", ..., "your.staff.ace" } |
الأوامر المقيّدة وأوامر وحدة التحكم فقط#
عشرة أوامر للـ AC مسجّلة كأوامر مقيّدة. داخل اللعبة يشترط FiveM عندها صلاحية ACE المطابقة للأمر إضافة إلى فحص الـ AC نفسه. خمسة من العشرة تتجاهل اللاعبين تمامًا.
banscreentest ليس مقيّدًا. صيغة وحدة التحكم banscreentest playerId لا تحتاج إلى ACE؛ و /banscreentest داخل اللعبة يحتاج إلى tosunac.banscreen.test أو tosunac.admin. رفض tosunac_setup والفحصين و banscreentest يكون صامتًا.
لا يعتمد tosunac_setup أي شيء إذا لم ينتهِ فحص الأبواب الخلفية أو فحص التواقيع، بما في ذلك عندما يكون ts.BackdoorGuard معطّلًا. يُرفض التشغيل الثاني أثناء تشغيل آخر.
| الأمر | من يمكنه تشغيله | ما يفعله |
|---|---|---|
tosunac_setup | وحدة التحكم، أو لاعب لديه command.tosunac_setup و tosunac.admin | إعداد تلقائي: يكتشف إطار العمل، ويشغّل فحصَي الأبواب الخلفية والتواقيع، ويعتمد الموارد النظيفة في خط الأساس، ويفهرس الأحداث دون الوثوق بها. شغّله فقط على خادم معروف أنه نظيف. |
tosunac_backdoorscan | وحدة التحكم، أو command.tosunac_backdoorscan مع tosunac.admin | فحص يدوي للأبواب الخلفية. لا يُسجَّل عندما يكون ts.BackdoorGuard.enabled = false. |
tosunac_eventscan | وحدة التحكم، أو command.tosunac_eventscan مع tosunac.admin | فحص يدوي للأحداث والمشغّلات (triggers)، يُرسل إلى اللوحة. لا يُسجَّل عندما يكون ts.EventScanner.enabled = false. |
ts_setlang playerId lang | وحدة التحكم، أو command.ts_setlang مع حالة الطاقم | يضبط لغة الـ AC للاعب واحد. لا يتحقق من أن معرّف اللاعب متصل. |
ts_v9_help | وحدة التحكم، أو command.ts_v9_help | يطبع قائمة الأوامر الإضافية في v9 في وحدة تحكم الخادم. |
tosunac_integration | وحدة التحكم فقط | يطبع وضع فرض الـ exports، والموارد الموثوقة ومصدرها، وآخر 20 رفضًا. |
tosunac_doctor | وحدة التحكم فقط | تقرير مخاطر عن الإعدادات المطبّقة. يعمل أيضًا بعد 90 ثانية من البدء. المخرجات بالتركية. |
ac_cleanup | وحدة التحكم فقط | يشغّل تنظيف الاحتفاظ في قاعدة البيانات الآن. العدد المطبوع عادةً أقل من الحقيقي. لا يُسجَّل عندما يكون ts.v12.enableAutoCleanup = false. |
tosunac_db_status | وحدة التحكم فقط | يطبع حالة جسر قاعدة البيانات، وحالة الترخيص، وحالة oxmysql، وإطار العمل. |
tosunac_db_check | وحدة التحكم فقط | ينفّذ SELECT 1 عبر oxmysql ويطبع نجاحًا أو فشلًا. |
كيف يُتعرَّف على الطاقم#
لدى الـ AC مستويا وصول منفصلان. حالة الطاقم تمنح الإعفاء من العقوبة وأوامر الطاقم (أوامر /ts الفرعية وأوامر ts_). والوصول إلى القائمة يفتح قائمة الإدارة داخل اللعبة. بعض المصادر تمنح واحدًا منهما فقط.
الإعفاء من العقوبة للطاقم يُطبَّق فقط ما دام ts.AdminBypassDetections = true (القيمة المرفقة) و ts.Debug = false (القيمة المرفقة).
الوصول إلى القائمة يتطلب أيضًا أن يبقى ts.AdminMenu.enable و ts.AdminMenu.enabled بقيمة true. عندما يكون أحدهما false، لا تُسجَّل القائمة ولا المفتاح F7 ولا أوامر أدوات الإدارة على العميل.
أعضاء الطاقم الذين لديهم حالة الطاقم دون الوصول إلى القائمة، مثل طاقم txAdmin فقط، يمكنهم مع ذلك الضغط على F7. يُرفض الطلب ويُسجَّل.
| المصدر | أين تضبطه | حالة الطاقم | قائمة الإدارة | ملاحظات |
|---|---|---|---|---|
ACE tosun.admin, ts.admin, command.ts | add_ace في server.cfg | نعم | نعم | الطريقة الموصى بها لمنح صلاحيات الطاقم. |
ACE command.ban, command.kick | server.cfg أو txAdmin | نعم | نعم | يبقى من الطاقم حتى مع ts.txAdminAuth = false. |
Principals group.admin, group.superadmin, group.moderator, group.god | add_principal في server.cfg | فقط إذا تحوّل الاسم إلى ACE مسموح | الشرط نفسه | تُختبر ككائنات ACE. أضف صلاحية ACE صريحة أيضًا. |
ACE txadmin, tx.admin, txadmin.menu, txadmin.advanced, command.txadmin | txAdmin أو add_ace | نعم | لا | مشرفو txAdmin يحتاجون إلى tosun.admin أو منح من اللوحة للوصول إلى القائمة. |
ACE command.resources, command.restart | txAdmin | فقط ما دام ts.txAdminAuth = true | لا | عادةً يمنحها txAdmin. |
ACE command.screenshot, command.unban | txAdmin | إعفاء فقط، ما دام ts.txAdminAuth = true | لا | بلا أوامر طاقم. |
ts.AdminBypassAces | configs/anticheat_config.lua | نعم | لا | الإدخالات التي تضيفها لا تفتح القائمة. |
Admins | admins/anticheat_admins.lua | نعم | نعم | ملف خاص بالخادم فقط. |
ts.AdminMenu.allowedIds | configs/anticheat_config.lua | نعم | نعم | القيمتان "all" و "staff" ليستا معرّفات ولا تمنحان شيئًا. |
ts.AdminBypassIdentifiers | configs/anticheat_config.lua | نعم | لا | تعليق الإعدادات يذكر أيضًا ip:x.x.x.x. |
Panel grants (ac_v7_admin_grants) | لوحة الويب | نعم | نعم | النتيجة الإيجابية تُخزَّن مؤقتًا 5 ثوانٍ، والسلبية 30 ثانية. |
addAdmin export | مورد موثوق | نعم | نعم | حتى يُستدعى removeAdmin. |
Player whitelist (ac_whitelist) and runtime whitelist | لوحة الويب أو exports القائمة البيضاء | لا (إعفاء من العقوبة فقط) | لا | تُتجاهل ما دام ts.Debug = true. |
ACE tosunac.admin | add_ace في server.cfg | لا | لا | تفتح الإعداد والفحوص اليدوية ومعاينة شاشة الحظر. |
قوائم المعرّفات: Admins و allowedIds و AdminBypassIdentifiers#
استخدم معرّفات كاملة مثل قيم license: أو steam: أو discord: أو fivem:. فضّل admins/anticheat_admins.lua أو المنح من اللوحة للطاقم: ذلك الملف خاص بالخادم فقط، بينما يُرسل configs/anticheat_config.lua إلى كل عميل.
- Admins: يطابق الإدخال المعرّف الكامل (دون التأثر بحالة الأحرف) أو الجزء الذي بعد البادئة. يمنح حالة الطاقم والقائمة.
- ts.AdminMenu.allowedIds: حالة الطاقم والقائمة. القيمتان "all" و "staff" لا تمنحان شيئًا.
- ts.AdminBypassIdentifiers: حالة الطاقم والإعفاء فقط، بلا قائمة.
-- admins/anticheat_admins.lua (الخادم فقط)
Admins = {
"license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"steam:11000010xxxxxxxx",
"discord:123456789012345678",
}
-- configs/anticheat_config.lua (مشترك، يُرسل إلى العملاء)
ts.AdminMenu = {
-- مفاتيح القائمة الأخرى تبقى كما هي في النسخة المرفقة
allowedIds = {
"license:YOUR_EXACT_PLAYER_IDENTIFIER",
},
}
ts.AdminBypassIdentifiers = {} -- حالة الطاقم والإعفاء، بلا قائمةالمنح من اللوحة و export addAdmin#
المنح من اللوحة سجلات في ac_v7_admin_grants تنشئها في لوحة الويب. المنح النشط يطابق license أو license2 الخاص باللاعب، مع البادئة أو بدونها، ويمنح حالة الطاقم والوصول إلى القائمة.
الإجابة الإيجابية تُخزَّن مؤقتًا 5 ثوانٍ والسلبية 30 ثانية، لذا قد يستغرق المنح الجديد حتى 30 ثانية ليسري على لاعب سبق فحصه.
يمكن لمورد موثوق استدعاء export addAdmin لمنح لاعب حالة الطاقم والوصول إلى القائمة حتى يُستدعى removeAdmin. ما دام ts.EnforceExportCallerWhitelist هو true، يجب أن يكون المستدعي مدرجًا في tosun_ac_trusted_resources أو ts.ExportCallerWhitelist.
القائمة البيضاء للاعبين ليست طاقمًا#
القائمة البيضاء للاعبين في اللوحة (ac_whitelist) والمعرّفات المضافة أثناء التشغيل عبر exports القائمة البيضاء توقف العقوبات فقط. لا تمنح أوامر طاقم ولا قائمة إدارة.
- يُحتسب السجل ما دام expires_at فارغًا أو في المستقبل.
- القيم المقبولة: معرّف license أو discord أو steam أو fivem، أو citizenid. تُزال البادئات.
- إدخالات وقت التشغيل محفوظة في الذاكرة وتضيع عند إعادة التشغيل.
- تُتجاهل القائمتان ما دام ts.Debug = true.
إعدادات تغيّر طريقة التعامل مع الطاقم#
هذه المفاتيح في configs/anticheat_config.lua تغيّر طريقة معاملة الطاقم ومستخدمي القائمة غير المصرّح لهم.
| الإعداد | القيمة المرفقة | التأثير |
|---|---|---|
ts.AdminBypassDetections | true | القيمة false تجعل الطاقم قابلًا للعقوبة مثل أي لاعب. |
ts.txAdminAuth | true | القيمة false تعطّل مسار صلاحيات ACE لأوامر txAdmin (command.resources و command.restart و command.screenshot و command.unban). أما command.ban و command.kick فيبقيان من الطاقم. |
ts.Debug | false | القيمة true توقف تجاوزات الطاقم والقائمة البيضاء والقائمة البيضاء للوحة والإعفاءات، لكي يختبر الطاقم الاكتشافات على أنفسهم. أبقِها false في بيئة الإنتاج. |
ts.NuiNeverBanUnauthorized | true | القيمة false تعاقب اللاعبين الذين يطلقون أحداث قائمة الإدارة دون صلاحية، بدل الاكتفاء بتسجيلهم. العقوبة هي ts.punishType. |
ts.AdminMenu.enable, ts.AdminMenu.enabled | true, true | القيمة false في أي منهما تعطّل قائمة الإدارة. و enable = false يوقف أيضًا وحدة إشعارات الهاتف. |
ts.AdminMenu.requireActionSignature | true | القيمة false توقف توقيع إجراءات قائمة الإدارة الحساسة. |
ts.v12.bypassStaffIpCheck | true | الطاقم يتخطى فحوص VPN والـ proxy والاستضافة والدولة عند الاتصال. |
builtin.everyone وفحص IP عند الاتصال#
كل فحص لصلاحيات ACE الخاصة بالطاقم والقائمة يتجاهل صلاحية ACE يملكها builtin.everyone أيضًا. لذا فإن add_ace builtin.everyone command allow لا يجعل اللاعبين من الطاقم. فحص IP عند الاتصال يعمل بطريقة مختلفة.
ما دام ts.v12.bypassStaffIpCheck ليس false، يتخطى اللاعب المتصل قائمة الدول الممنوعة ورفض VPN والـ proxy والاستضافة في أي من هذه الحالات: اللاعب من الطاقم؛ أو اللاعب يملك صلاحية ACE command أو txadmin أو tx.admin أو txadmin.menu أو command.kick أو command.ban أو أحد الأسماء group.admin أو group.superadmin أو group.moderator أو group.god؛ أو يوجد منح نشط من اللوحة يطابق license اللاعب تمامًا.
هذا الفحص يستخدم اختبارات ACE بسيطة دون ترشيح builtin.everyone. لذلك على خادم فيه add_ace builtin.everyone command allow يتخطى كل لاعب فحوص VPN والدولة. فحص إغراق الانضمام (join-flood) ما زال يعمل قبل التجاوز.
ملف webhooks الخاصة بـ Discord#
الملف configs/anticheat_webhooks.lua خاص بالخادم فقط. يحتوي رابط webhook واحدًا من Discord لكل قناة سجل، ونمط الـ embed. كل رابط مرفق بالقيمة البديلة WEBHOOK_URL_BURAYA.
- مزامنة اللوحة عبر HTTP تكتب فوق أي webhook ترسل له رابطًا غير فارغ.
- الموارد الأخرى تتلقى روابط الـ webhook عبر getConfig('webhooks') فقط عندما تكون مستدعين موثوقين.
- سجلات لقطات الشاشة تضع على embed الخاص بـ Detections تسمية ts.punishType بدل العقوبة المحدَّدة فعليًا، وتنشر أيضًا إلى Webhooks.Bans كلما كان ts.punishType هو BAN.
- Webhooks.WebhookAvatar يضبط صورة الأفاتار في الـ embed.
Webhooks.Detections = "https://discord.com/api/webhooks/..."
Webhooks.Bans = "https://discord.com/api/webhooks/..."
Webhooks.AdminMenuLogs = "https://discord.com/api/webhooks/..."
Webhooks.Connections = "https://discord.com/api/webhooks/..."
Webhooks.OCR = "https://discord.com/api/webhooks/..."
Webhooks.Commands = "https://discord.com/api/webhooks/..."
Webhooks.MoneyLogs = "https://discord.com/api/webhooks/..."
Webhooks.ResourceLogs = "https://discord.com/api/webhooks/..."
Webhooks.WebhookUsername = "Tosun AntiCheat"
Webhooks.WebhookColor = 15285208
Webhooks.WebhookInlines = trueكيف تتجاوز اللوحة ملف الإعدادات#
معظم القيم في configs/anticheat_config.lua قيم افتراضية. تحتفظ لوحة الويب بقيمها الخاصة في ac_settings وجداول ac_ الأخرى، وتلك القيم لها الأولوية. عدّل الملف فقط للقيم التي لا تديرها اللوحة.
- بعد نحو 3 ثوانٍ من البدء، ثم كل ts.ServerPerf.configSyncIntervalSec ثانية (القيمة المرفقة 120، والحد الأدنى 20، والبديل 60)، تكتب سجلات ac_settings فوق قيم ts.
- المفاتيح ذات النقاط مثل AdminMenu.enable تكتب حقولًا متداخلة. المفاتيح المسطحة القديمة مثل framework أو moneyCheck تُحوَّل أولًا.
- المفتاح الذي يبدأ بـ punishment_ يكتب ts.DetectionPunishments لذلك الاكتشاف. القيمتان BAN و KICK تبقيان؛ وأي قيمة أخرى تصبح LOG.
- حقول الإجراء تُوحَّد إلى ban أو kick أو log أو cancel أو reject أو stop. أي قيمة أخرى تصبح log.
- المفاتيح التي تبدأ بـ globalBan. تُتجاهل.
- قوائم اللوحة تستبدل قوائم الإعدادات: الأسلحة، والقائمة السوداء للمركبات، واللوحات، وقائمة المشغّلات (trigger list)، وحدود الأحداث، والموارد في القائمة البيضاء، وكلمات OCR، وقوائم Blacklist، وقائمة الانفجارات، وقوائم الكيانات البيضاء. أما الموارد في القائمة البيضاء وكلمات OCR من قاعدة البيانات فتُدمج بدل الاستبدال.
- استثناء: معالجات ts.EventLimiter و ts.ProtectedEvents تُسجَّل مرة واحدة من الملف عند التحميل. تغييرات اللوحة اللاحقة لا تغيّر الفرض على جانب الخادم لها.
- بعد أي تغيير، تُعاد إلى العملاء فقط المفاتيح الآمنة لجانب العميل.
- شغّل tosunac_doctor في وحدة التحكم لمراجعة القيم الخطرة بعد مزامنة اللوحة.
الإعدادات الأساسية#
مفاتيح المستوى الأعلى قرب بداية configs/anticheat_config.lua. يمكن ضبط معظمها من اللوحة أيضًا.
| الإعداد | القيمة المرفقة | ما يفعله |
|---|---|---|
ts.Locale | "tr" | لغة الـ AC الافتراضية (الترتيب: لغة اللاعب، ثم ts.Locale، ثم en). الملفات: ar و de و en و es و fr و pt و ru و tr و zh. القيمة المرفقة هي التركية: يجب على الخوادم الإنجليزية ضبط "en". يمكن لقيمة default_locale في اللوحة استبدالها. |
ts.punishType | 'BAN' | العقوبة البديلة للاكتشافات التي ليس لها ربط. وهي أيضًا عقوبة الحظر اليدوي: export ban، و /ts ban، والحظر من قائمة الإدارة، والحظر من اللوحة. القيمة LOG أو KICK تحوّل ذلك إلى تسجيل أو طرد. |
ts.Debug | false | القيمة true تعطّل تجاوزات الطاقم والقائمة البيضاء. أبقِها false في بيئة الإنتاج. |
ts.txAdminAuth, ts.AdminBypassDetections, ts.NuiNeverBanUnauthorized | true, true, true | التعامل مع الطاقم. راجع إعدادات تغيّر طريقة التعامل مع الطاقم. |
ts.screenshotModule | "screenshot-basic" | المورد المستخدم للقطات الشاشة. |
ts.banIDFormat | 1 | 1 = ABCD-1234، و 2 = #1234. |
ts.autoSQL | false | القيمة true تنشئ الجداول عند البدء. تعليق الإعدادات يقول اضبطه على true في التثبيت الأول ثم أعده إلى false بعد ذلك. |
ts.Prefix, ts.showReason | 'Tosun AntiCheat', true | تحدد شكل رسائل الطرد والحظر. |
ts.appealDiscord, ts.appealTicketUrl | vendor links | يُلحق برسالة الحظر. appealDiscord مرفق برابط Discord الخاص بالمطوّر (https://discord.gg/9tCSJch) وهو أيضًا القيمة البديلة. اضبط رابط الاستئناف الخاص بك. |
ts.pingOnDetect | false | يضيف @everyone إلى embeds الاكتشافات. يوضع النص داخل كائن الـ embed، وليس في حقل content الرئيسي للرسالة. |
ts.chatMessages | false | يعلن العقوبات في الدردشة. |
ts.spoilerIP | true | يخفي عناوين IP داخل spoilers في سجلات Discord. |
ts.needDiscord | false | القيمة true ترفض اللاعبين الذين ليس لديهم معرّف Discord. |
ts.maxUsernameLength | -1 | الحد الأقصى لطول اسم اللاعب. القيمة -1 تعطّل الفحص. |
ts.webPanelURL, ts.webPanelKey | "", "" | اترك كليهما فارغًا. راجع رابط اللوحة ورفع لقطات الشاشة وأقسام بيانات الاعتماد. |
ts.version | "9.6.15" | للمعلومات فقط. إصدار الـ manifest هو المستخدم أثناء التشغيل. |
أقسام الإعدادات: الاكتشافات والعقوبات#
أقسام تحدد ما يُكتشف ومدى شدة عقوبته.
| القسم | الغرض | الإعدادات التي يغيّرها أصحاب الخوادم عادةً |
|---|---|---|
ts.DetectionPunishments | العقوبة لكل مفتاح اكتشاف: BAN أو KICK أو LOG. الترتيب: العقوبة الصريحة، ثم المفتاح المباشر، ثم الاسم البديل، ثم المفتاح المشتق، ثم ts.punishType. | إدخالات فردية. يمكن للوحة تجاوز كل منها. القيم المرفقة: BAN للإشارات المؤكدة، و KICK للخطر المتوسط، و LOG للحالات الحساسة للسياق مثل freecam و teleport و fastrun و invisibility و ocr. |
ts.BanDurations | مدة الحظر بالساعات لكل مفتاح اكتشاف. القيمة 0 أو المفتاح المفقود تعني دائمًا. | ["default"] (القيمة المرفقة 0 = دائم؛ ويستخدمها الحظر اليدوي أيضًا). اكتشافات الفيزياء مؤقتة، مثلًا superjump و fastrun و teleport لمدة 72 h، و noclip و godmode لمدة 168 h. |
ts.confirmWindow | بوابة تأكيد لاكتشافات الفيزياء في العميل: السرعة، و teleport، و noclip، و superjump، والصحة، والدرع. القراءات تحت ping مرتفع أو تقطّع الإطارات تُتجاهل. | القيم الافتراضية موصى بها: confirmFrames 3 و confirmMs 3000 و maxPingMs 220. القيمة hardEscalateHits 8 خلال 90 ثانية تفرض عقوبة حتى مع التأخير (lag). |
ts.v6Enforcement | يحدّ العقوبات الناتجة عن الاستدلالات الموقَّعة من العميل واكتشافات الإغراق (spam). | maxAction ("KICK"). و confirmHits 2 خلال confirmWindowSec 600 (الحد الأدنى 30). |
Client detection toggles (ts.anti keys, thresholds, ts.confirmHits) | مفاتيح تشغيل وإيقاف بسيطة وحدود لاكتشافات جانب العميل. | أوقف فحوصًا فردية. المتوقفة في النسخة المرفقة: antiRadar و fakeTriggerServerTraps و antiInfiniteStamina و antiPickups و antiClipboardPaste و antiGodmodeV2. |
ts.OCR settings | OCR للشاشة بحثًا عن كلمات قوائم الغش. | ts.OCR و ts.OCRCheckInterval (20000) و ts.OCRWords. كل الإجراءات افتراضيًا log، لأن نص الدردشة على الشاشة سيطابق لدى كل من يراه. كلمات اللوحة تُدمج معها. |
ts.quarantine | عزل عبر routing bucket يستخدمه export quarantine بدل الحظر. | defaultSeconds 300 و maxSeconds 1800 و autoQuarantine (متوقف). |
ts.autoEvidence | دليل فيديو تلقائي قصير بعد الاكتشافات الخطيرة ما دام اللاعب متصلًا. يتطلب tosun_render. | durationSec 25 و cooldownSec 120 و triggers. |
ts.forensics | رسم بياني لكشف التهرب من الحظر يربط هويات HWID و license المشتركة بالمجموعات المحظورة. | ابدأ بـ evasionAction "log". و linkByIp متوقف. |
ts.v16 | فحص الحركة على جانب الخادم. | action ("ban"). و teleportAction ("log"): غيّره إلى kick بعد أن تستدعي كل السكربتات التي تنقل اللاعبين MarkTeleport. |
ts.aimGuard | مكافحة aimbot إحصائية على أحداث ضرر الأسلحة. الطاقم معفى ما دام AdminBypassDetections مفعّلًا. | magicBulletTargets 4 (kick) و fireRatePerSec 22 (kick) و headshotRatio 0.90 (log). |
ts.combatGuard | حدود للصحة والدرع على جانب الخادم وفحص لضرر الأسلحة المفرط. | healthCap 250 و armorCap 105 و weaponDamageCap 600. الإجراءان كلاهما kick. |
أقسام الإعدادات: الحراس على جانب الخادم#
حراس يعملون على الخادم. عدة منهم يلغون الحدث أولًا ولا يعاقبون إلا بعد مخالفات متكررة.
| القسم | الغرض | الإعدادات التي يغيّرها أصحاب الخوادم عادةً |
|---|---|---|
ts.netEvents | فحوص يكون فيها الخادم صاحب السلطة على أحداث اللعبة. | لكل قسم فرعي: action و strikes و windowMs و cancel. القيم المرفقة: weapons ban بعد 2 خلال 60 ثانية؛ respawn kick بعد 6 خلال 120 ثانية؛ vehicleComponent log؛ explosionDistance kick عند 250 مترًا بعد 3 مخالفات؛ damageDistance ban عند 600 متر بعد 4. |
ts.entityFlood | حد معدل الإظهار (spawn) لكل لاعب. عمليات الإظهار فوق الحد تُلغى. | maxPerSec 30 و banAfterFloods 3 و action ("ban"). |
ts.crashGuard | حدود الحجم والعمق والصلاحية لقيم state-bag وبيانات الأحداث. | action ("kick")، و strikes 3 خلال 60 ثانية. |
ts.serverAuthority | يقرأ الحالة المنسوخة عبر OneSync لاكتشاف superjump ومضاعفات الضرر والدفاع والأسلحة المحظورة و godmode والاختفاء و noclip وتركيز الكاميرا. | لكل فحص: enabled و action و confirm. الفحوص عالية الثقة تطرد؛ والحساسة للسياق تسجّل. |
ts.shieldAi | درع ضد إظهار الكيانات. عمليات إظهار المركبات والـ peds التي لا يمكن ربطها بمورد تُلغى. | action ("cancel") و strikes 3 و maxObjectPerSec 25 و maxVehiclePerSec 4 و maxPedPerSec 8 و scriptWhitelist. يرصد tosunac_doctor القيمة strictScriptWhitelist = true. |
ts.shieldExplosion | يلغي الانفجارات غير المرئية أو الصامتة ولا يعاقب إلا بعد التكرار. | action ("kick")، و strikes 5 خلال 60 ثانية. |
ts.premiumGuard | حارس ضد إغراق الجسيمات (particles) والمقذوفات و request-control والأصوات و ragdoll، وضد إساءة استخدام مفخخات المركبات. | كل إجراء افتراضيًا log. حدود لكل نوع في الثانية. |
ts.vehicleGuard | يكتشف المركبات التي تُرمى أو تُقذف. | action ("kick") و strikeLimit 3 و stuntMode و excludeAirVehicles. |
ts.weaponInventory | يرصد سلاحًا محمولًا غير موجود في مخزون اللاعب في ox_inventory أو QB أو ESX. | action ("log") و removeWeapon (متوقف) و ignore و extraWeapons. السكربتات التي تعطي أسلحة خارج المخزون يجب أن تستدعي export AllowWeapon من مورد موثوق. |
ts.entityGuard | يكتشف عمليات إظهار الكائنات الجماعية ويحذف الكائنات التي أظهرها لاعبون طُردوا أو حُظروا. | massThreshold 50 خلال 60 ثانية، و cleanupOnBan. |
ts.rateGuard | حدود لكل لاعب في الثانية على أحداث الانفجارات و ptfx والنار والمقذوفات. | action ("kick") و explosionsPerSec 12 و ptfxPerSec 25 و firePerSec 15 و projectilesPerSec 30. |
ts.entityWhitelist (and its vehicle, ped, object, projectile and particle lists) | وضع قائمة سماح اختياري لكل نوع كيان. | كل الأوضاع متوقفة في النسخة المرفقة، لذا تُطبَّق فقط القوائم السوداء ودرع الإظهار. جداول القائمة البيضاء للكيانات في اللوحة تستبدل القوائم. |
ts.SpamGuard | حدود لكل لاعب على أحداث الخادم وأوامر الدردشة. يتوقف مع ts.SpamGuard = false، أو ts.antiServerEventSpam / ts.antiCommandSpam = false. | serverEventPerSec 25 و commandPerSec 8 و autoKickAfter 1. جزء أحداث الخادم يستمع لحدث لا يطلقه المورد أبدًا؛ تحقق من إصدارك، وإلا فيُطبَّق حد الأوامر فقط. |
ts.EventLimiter | حد استدعاءات لكل حدث ضمن نافذة ثابتة مدتها 5 ثوانٍ. عند بلوغ الحد (عندما يصل العدد إلى القيمة) يُطلق Event Spam (server_event_spam، و KICK). | أضف الحدود أو ارفعها في الملف. المعالجات تُسجَّل مرة واحدة عند التحميل، لذا لا تغيّر حدود الأحداث في اللوحة الفرض. |
ts.antiDump, ts.nativeIntegrity, ts.autoExempt | مصيدة ضد تفريغ الكود (anti-dump)؛ وفخ على العميل ضد استبدال natives الاكتشاف؛ وإعفاءات تلقائية أثناء أحداث المظهر وتعدد الشخصيات والموت. | antiDump.action ("ban") و nativeIntegrity.checkMs 12000. |
ts.shield | طبقة JS لربط الـ natives، وفحوص NUI مخفية، وأدلة لقطات الشاشة وفيديو اللعب قبل الحظر (الفيديو يتطلب tosun_render). | banScreenshot و banGameplayVideo. |
ts.nativeGuard | تكامل مع البرنامج المرافق الخارجي على Windows tosun-guard.exe. | action ("log") و requireGuard (false). |
ts.guard | مراقب لمورد العميل المنفصل tosun-guard. لا يعاقب أحدًا عندما لا يكون tosun-guard مثبّتًا. | action ("kick"). |
ts.launcherGate | يشترط عند الاتصال فحصًا حديثًا ونظيفًا من المشغّل (launcher) صادرًا من IP اللاعب، تتحقق منه اللوحة. | enabled (false) و action ("reject") و failOpen (false) و downloadUrl و message (بالتركية افتراضيًا). |
أقسام الإعدادات: الاتصال والإدارة واللوحة#
أقسام خاصة بانضمام اللاعبين، وقائمة الإدارة، والاتصال باللوحة، والسلوك على مستوى الخادم.
| القسم | الغرض | الإعدادات التي يغيّرها أصحاب الخوادم عادةً |
|---|---|---|
ts.Framework | اختيار إطار العمل واكتشاف القفزات المفاجئة في المال. | framework: esx أو qb أو qbox أو standalone أو "auto". القيمة المرفقة "qb"، وهي لا تُكتشف تلقائيًا، لذا يجب على خوادم ESX و Qbox تغييرها. moneyCheckThreshold 5000000 و moneySoftThreshold 75000. |
ts.AutoSetup | اكتشاف سلبي لإطار العمل عندما يكون framework هو "auto" أو "": qbx_core، ثم qb-core، ثم es_extended، ثم vrp، ثم ox_core. | autoDetectFramework (true). |
ts.v12 | الحماية الذاتية، وفحوص VPN والـ proxy والاستضافة عند الاتصال (ipapi.co)، وتنظيف الاحتفاظ في قاعدة البيانات. | blockVpn و blockProxy و blockHosting (متوقفة)، و bypassStaffIpCheck، ومفاتيح الاحتفاظ keep (سجلات الإدارة 60 يومًا، والاكتشافات 90 يومًا). |
ts.HeartBeat | مراقب العميل: الفجوة المسموحة بين تقارير العميل، ومهلة لأول تقرير صالح. | maxTime 90 ثانية (الحد الأدنى 15). و firstHeartbeatDeadline 180 ثانية (الحد الأدنى 60): اللاعبون الذين لا يرسلون أول تقرير صالح حتى ذلك الحين يُطردون. |
ts.NetworkJoin | تنظيم وتيرة الانضمام لمنع فيض الأحداث الموثوقة (reliable)، وفترة السماح قبل تفعيل الاكتشافات. | minReadyDelayMs (القيمة المرفقة 15000؛ والأدلة القديمة تذكر 45000)، و postFrameworkSettleMs 5000. |
ts.AdminMenu | قائمة الإدارة داخل اللعبة، تُفتح بـ /ts menu أو /tsmenu أو F7. | enable و enabled و allowedIds و openKeyControl (168 = F7) و espMaxDist و noclipInvisible و requireActionSignature. allowEsp و allowFreecam و allowDelete يفرضها كود العميل فقط. |
ts.PhoneNotify | إشعارات الـ AC إلى هواتف الطاقم: qb-phone و qs-smartphone و lb-phone و yseries و gks_phone و npwd و roadphone. | يُقرأ heartbeat فقط (إشعار حالة كل 15 دقيقة). إشعارات الحظر والاكتشاف تُطلق دائمًا ما دام ts.AdminMenu.enable مفعّلًا. |
ts.LiveWatch | مشاهدة مباشرة للشاشة من قائمة الإدارة واللوحة. | interval 1500 و quality 0.7 و maxSeconds 600 و timeout 12000. |
ts.ServerPerf | موازنة بين حمل الخادم وتأخر التحديث. | configSyncIntervalSec 120 (الحد الأدنى 20) و panelPlayerSyncIntervalMs 12000 و liveWatchDbPollMs 4500. |
ts.Central | API اللوحة المركزية في v9: المصافحة والاستطلاع ومزامنة اللغة. | pollIntervalSec 5 (محصور بين 5 و 60). أبقِ token فارغًا هنا واستخدم tosun_ac_central_token. |
ts.cloudBridge | يرسل درجات التهديد ومخرجات وحدة التحكم إلى اللوحة ويتحقق من قائمة استخبارات تهديدات مركزية عند الاتصال. | consoleForward مفعّل في النسخة المرفقة: كل سطر في وحدة تحكم الخادم يذهب إلى اللوحة على دفعات. threatIntelAction ("log") و threatIntelMinScore 70. |
ts.panelMirror | دفع كامل قديم لقاعدة البيانات إلى اللوحة. اختياري. | enabled (false). ما دام مفعّلًا، لا يُفعَّل جسر قاعدة البيانات تلقائيًا. |
ts.connectingCard | بطاقة تكيفية (adaptive card) تُعرض أثناء اتصال اللاعبين. | title ("TOSUN RP") و discord (يرجع إلى ts.appealDiscord) و website و rules و image و tips. |
ts.banScreen (panel only) | إشعار حظر بملء الشاشة قبل الطرد. غير موجود في الملف؛ اضبطه في اللوحة. | enabled (متوقف)، و seconds من 3 إلى 15 (8)، و mediaType، و imageUrl (https فقط)، و youtubeId، و title (80 حرفًا)، و message (300 حرف)، و showReason. عاينه باستخدام banscreentest. |
ts.PanelDangerousActionIPs | قائمة IP مسموحة لإجراءات اللوحة kick_all و stop_resource و broadcast. | الفارغة تعني تسجيل التدقيق فقط. أضف IP خادم اللوحة لحظر المصادر الأخرى. |
ts.licenseLock | حارس التوزيع: صيغة الترخيص وفحص معرّف الخادم. | enabled (false) و action (log أو reject أو stop) و allowedServerIds و failClosed. أبقِ licenseKey فارغًا هنا. |
ts.NpcBlocker | يزيل الـ NPCs وحركة المرور المحيطة؛ وتبقى كيانات المهام والسكربتات والكيانات في القائمة البيضاء. | enabled (false) و blockPeds و blockVehicles و whitelistModels. |
ts.hardening, ts.cfgAudit | حارس convars في FiveM وتدقيق server.cfg للقراءة فقط. | راجع مفاتيح التقوية ومخرجاتها. |
أقسام الإعدادات: الموارد والأحداث والتكامل#
أقسام خاصة بالثقة في الموارد، والماسحات، وتكامل المطورين. الصفوف المعلَّمة "للمطورين" تهم فقط عندما تستدعي سكربتاتك الخاصة الـ AC.
| القسم | الغرض | الإعدادات التي يغيّرها أصحاب الخوادم عادةً |
|---|---|---|
ts.whitelistedResources | الموارد الأساسية التي يعتبرها الـ AC آمنة دائمًا: أطر العمل، و oxmysql، و chat، و monitor، وموارد ox_. | أضف مواردك الأساسية. مزامنة اللوحة عبر HTTP تستبدل القائمة؛ ومزامنة قاعدة البيانات تضيف إليها. |
ts.ResourceGuard | خط أساس الموارد، وفحوص انحراف الـ hash، وماسح تواقيع الغش. | signatureScan و signatureScanInterval 600000 و autoStopCheatResources (true) و autoBlockInfected (false) و deepScan (false). |
ts.BackdoorGuard | يفحص ملفات الموارد بحثًا عن أنماط الأبواب الخلفية و RCE وتسريب البيانات. | autoQuarantine (false؛ والقيمة true توقف الموارد التي لديها نتيجة حرجة)، و ignoreResources، و scanIntervalMs 1800000. |
ts.EventScanner | يفهرس أحداث الشبكة والمشغّلات (triggers) في كل الموارد ويرسلها إلى اللوحة. | autoProtect (false؛ والقيمة true تعلّمها كمحمية)، و ignoreResources. |
ts.ProtectedEvents, ts.SafeEventRateWindow, ts.SafeEventRateLimit, ts.SafeEventMaxArgs | للمطورين. أحداث يجب إطلاقها عبر TriggerSafeServerEvent. الاستدعاءات الصالحة تُحوَّل إلى اسم الحدث مع :safe. الاستدعاءات السيئة تُرفض وتُسجَّل، ولا تُعاقَب أبدًا. | أضف فقط أحداثك الخاصة التي تستخدم واجهة SafeEvents على العميل. الحد 30 استدعاءً كل 10 ثوانٍ؛ و SafeEventMaxArgs 64. يجب أن يتحقق معالج :safe من الصلاحيات مع ذلك. |
ts.EnforceExportCallerWhitelist, ts.ExportCallerWhitelist | للمطورين. الموارد الموثوقة لـ exports المحمية. | القائمة المرفقة: qbx_core و qb-core و es_extended و ox_inventory و ox_lib. القيمة false = وضع التدقيق: تعمل الاستدعاءات وتُسجَّل مرة واحدة. MarkTeleport لا يحتاج إلى ثقة. |
ts.Integration | للمطورين. حدود MarkTeleport. | markTeleportMaxMs 15000 لكل استدعاء (من 1000 إلى 60000، لكل مستدعٍ)؛ و markTeleportBudgetMs 180000 لكل لاعب كل 10 دقائق (للمستدعين غير الموثوقين فقط). |
ts.DetectionExempt (alias ts.MenuDetectionExempt) | للمطورين. إعفاءات تلقائية قصيرة عند إطلاق أحداث معروفة للملابس أو السكن أو المرائب أو الإحياء. | clientEvents و localEvents و serverEvents (event و durationMs و resource و always). أحداث الخادم تمنح تخفيفًا لفحوص الحركة والظهور فقط: 120 ثانية على الأكثر لكل حدث، و budgetMsPer10Min 240000 لكل لاعب. |
ts.AdminBypassAces, ts.AdminBypassIdentifiers | قوائم صلاحيات ACE والمعرّفات الخاصة بالطاقم. | راجع كيف يُتعرَّف على الطاقم. |
أقسام الإعدادات: القوائم#
القوائم الافتراضية في configs/anticheat_config.lua. معظمها تستبدله جداول اللوحة عند المزامنة.
| القسم | الغرض | الإعدادات التي يغيّرها أصحاب الخوادم عادةً |
|---|---|---|
ts.Weapons, ts.vehicleBlacklist, ts.Plates, ts.BlacklistObjects, ts.pedBlacklist, ts.BlacklistPeds, ts.BlacklistCommands, ts.BlacklistWords, ts.BlacklistNames, ts.BlacklistKeys, ts.BlacklistAnims | القوائم السوداء الافتراضية. قائمة الأسلحة تحدد أيضًا BAN أو KICK أو LOG لكل سلاح. | أزل العناصر التي توزعها وظائف خادمك. تعليقات الإعدادات تذكر مروحيات PD و EMS و peds SWAT و hwaycop. |
ts.BlacklistPlayerModels | نماذج ped للاعبين يُبلَّغ عنها بعد 3 عينات تفصل بينها 5 ثوانٍ (نحو 15 ثانية). مفتاح العقوبة peds (KICK). | حلقة العميل لا تتحقق من مفتاح antiPeds بنفسها. |
ts.BlacklistSprites | قواميس textures الخاصة بقوائم الغش. | يمكن للوحة استبدالها. |
ts.detectedKeys | مفاتيح تشغيل الواجهات المتراكبة (overlay). | القيمة المرفقة {44, 73, 104}. |
ts.explosionBlacklist | أنواع الانفجارات الغريبة التي تُلغى ويُعاقب عليها. | BAN أو KICK أو LOG لكل نوع. تُزامَن مع اللوحة. |
ts.triggerList, ts.fakeTriggers, ts.fakeTriggerStrikeMax, ts.fakeTriggerServerTraps | أسماء أحداث المصائد التي تستدعيها قوائم الغش. الإدخالات من نوع server تصبح مصائد على الخادم ما دام ts.fakeTriggers مفعّلًا. | لا تضف أبدًا أحداث أطر عمل حقيقية. fakeTriggerStrikeMax 1، و fakeTriggerServerTraps متوقف. |
ts.whitelistedCoords, ts.TaskList | قائمة إحداثيات بيضاء للعميل ومهام ped المحظورة. | كلاهما فارغ في النسخة المرفقة. |
مفاتيح بلا تأثير، ومفاتيح غير موجودة في الملف#
بعض المفاتيح في configs/anticheat_config.lua لا يقرؤها الكود في 9.6.15. تغييرها بلا تأثير.
يقرأ الكود أيضًا مفاتيح غير موجودة في الملف. أضفها بنفسك إذا احتجت إليها: ts.v12.joinFloodWindowSec (60)، و ts.v12.joinFloodMaxJoins (6)، و ts.v12.bannedCountries (رموز دول؛ قائمة منع جغرافية)، و ts.v6Enforcement.heuristic (يستبدل قائمة أنواع الاستدلال)، و ts.LiveWatch.fps (30)، و ts.SafeEventMaxArgs (64)، و always = true في أحداث الخادم ضمن ts.DetectionExempt.
مفاتيح العميل هذه تُقرأ لكنها غير موجودة في الملف، وتكون مفعّلة ما لم تُضبط على false: ts.antiScreenshotBypass و ts.antiRateOfFire و ts.antiNetOwnership. كما يُقرأ ts.microJitterMeanMin (0.5) وهو غير موجود في الملف.
- ts.NetworkJoin.minimalSync
- ts.AdminMenu.espMaxDistance و ts.AdminMenu.screenshotTimeout (الـ ESP يستخدم espMaxDist)
- ts.AdminMenu.permissionLevel (تسمية قديمة؛ الوصول يأتي من صلاحيات ACE والقوائم والمنح)
- ts.ResourceGuard.strictClientDiff
- ts.LiveWatch.enabled و preferTosunRender و maxConcurrent
- ts.PhoneNotify.enabled و onBan و onDetect
تعليقات قديمة في ملف الإعدادات#
بعض التعليقات داخل configs/anticheat_config.lua تصف سلوكًا قديمًا. الكود يعمل كما يلي.
- يقول التعليق إن إعدادات اللوحة تُعاد مزامنتها كل 30 ثانية. الفترة هي ts.ServerPerf.configSyncIntervalSec (القيمة المرفقة 120 ثانية).
- يقول التعليق إن tosunac_setup يضيف الأحداث إلى القائمة البيضاء. هو يفهرسها فقط؛ و ts.EventScanner.autoProtect هو من يقرر الحماية.
- تعليق ts.ProtectedEvents يحذّر من أن أحداث أطر العمل تسبب حظرًا خاطئًا. الاستدعاءات بلا مفتاح تُرفض وتُسجَّل، ولا تُعاقَب أبدًا.
- تعليق ts.EventLimiter يقول إنه يعمل عند تجاوز الحد. هو يُطلق عندما يصل العدد إلى القيمة.
- تعليق الجسر يوصي باستخدام setr مع convars الجسر الأربعة كلها. فقط tosun_ac_resource و tosun_ac_bridge_client_ms يحتاجان إلى setr.
- تعليق ts.Locale يُغفل ar، لكن locales/ar.json مرفق.
convars التقوية في FiveM التي يتحقق منها الـ AC#
وحدتان تقرآن convars FiveM عند البدء. حارس الـ convars (ts.hardening) يعمل بعد نحو 8 ثوانٍ من البدء ويعتبر القيمة غير المضبوطة ضعيفة. تدقيق server.cfg (ts.cfgAudit) يعمل بعد 15 ثانية من البدء وهو للقراءة فقط.
| Convar | الموصى به | يتحقق منه | يطبّقه autoApply |
|---|---|---|---|
sv_stateBagStrictMode | true | حارس الـ convars | نعم |
sv_filterRequestControl | 2 | حارس الـ convars | نعم |
sv_enableNetworkedSounds | false | حارس الـ convars | نعم |
sv_enableNetworkedPhoneExplosions | false | حارس الـ convars | نعم |
sv_enableNetworkedScriptEntityStates | false | حارس الـ convars | نعم |
sv_scriptHookAllowed | false | حارس الـ convars؛ والتدقيق يحذّر أيضًا عندما تكون القيمة true | نعم |
sv_entityLockdown | relaxed (strict also passes) | حارس الـ convars، تقرير فقط | لا. قد يعطّل السكربتات التي تُظهر المركبات من العميل؛ اختبر أولًا. |
sv_pureLevel | 1 or higher | حارس الـ convars، تقرير فقط | لا |
onesync | on (legacy also passes) | التدقيق؛ وهو أيضًا تبعية في الـ manifest | لا |
sv_lan | false | التدقيق يحذّر عندما تكون القيمة true | لا |
sv_authMinTrust | 4 or higher (unset reads as 5) | التدقيق | لا |
sv_enforceGameBuild | any build number | التدقيق يحذّر عندما يكون فارغًا | لا |
مفاتيح التقوية ومخرجاتها#
كلا الفحصين يكتفي بالإبلاغ افتراضيًا. غيّرهما في configs/anticheat_config.lua.
- ts.hardening.enabled = false يتخطى حارس الـ convars.
- ts.hardening.autoApply = true (القيمة المرفقة false) يجعل الـ AC ينفّذ set بنفسه للـ convars الستة الآمنة. sv_entityLockdown و sv_pureLevel لا يُطبَّقان تلقائيًا أبدًا.
- ts.cfgAudit.enabled = false يوقف تدقيق server.cfg.
- حارس الـ convars يطبع تحذيرًا في وحدة التحكم ويكتب سجلًا واحدًا في ac_detections (detection_type hardening_missing) يذكر كل convar ضعيف.
- التدقيق يطبع تحذيرًا في وحدة التحكم ويكتب سجلًا واحدًا في admin_logs بعدد الإعدادات الضعيفة.
- نص وحدة التحكم في كلا الفحصين مكتوب بالتركية بشكل ثابت في الكود. كل سطر تحذير من الحارس يعرض سطر set الدقيق الذي يجب إضافته.
- tosunac_doctor تقرير منفصل في وحدة التحكم عن إعدادات الـ AC الخطرة، وليس عن convars FiveM.
أخطاء شائعة#
تحقق من هذه النقاط قبل أن تفتح تذكرة دعم.
- بيانات اعتماد مضبوطة بـ setr أو sets: تصل إلى كل عميل أو إلى معلومات الخادم العامة.
- بيانات اعتماد موضوعة بعد ensure tosun-ac: لا تُلتقط حتى إعادة تشغيل المورد التالية.
- مفتاح لوحة في configs/anticheat_config.lua: الملف يُرسل إلى العملاء ووحدة التحكم تطبع تحذير MIGRATION.
- tosun_render غير مشغّل: إنه تبعية إلزامية.
- ترك ts.Framework.framework على "qb" في خادم ESX أو Qbox.
- ترك ts.Locale على "tr" في خادم لا يستخدم التركية.
- ترك ts.appealDiscord على رابط Discord الخاص بالمطوّر.
- ضبط ts.punishType على LOG أو KICK: يصبح الحظر اليدوي أيضًا تسجيلًا أو طردًا.
- add_ace builtin.everyone command allow: كل لاعب يتخطى فحوص VPN والدولة.
- توقّع أن tosun.admin يفتح tosunac_setup: ذلك يتطلب tosunac.admin مع command.tosunac_setup.
- توقّع أن مشرفي txAdmin يستطيعون فتح قائمة الـ AC: صلاحيات ACE الخاصة بـ txAdmin تمنح حالة الطاقم فقط. أضف tosun.admin أو منحًا من اللوحة.
- set tosun_db_bridge_enabled "0" بدون tosun_db_bridge_manual "1": يُتجاهل السطر.
- ترك ts.Debug على true: تجاوزات الطاقم والقائمة البيضاء تكون متوقفة.