انتقل إلى الدليل

الوثائق 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_uploadhttp://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_ms5000 (من 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_ms120000 (من 30000 إلى 600000)فترة الحلقة لكاتب وقت اللعب.يكفي set.
tosun_ac_resource"tosun-ac"اسم مورد الـ AC الذي تستخدمه ملفات الجسر الاختيارية داخل موردك.للمطورين. استخدم setr عندما تغيّر اسم مجلد الـ AC: جسر العميل يرى فقط الـ convars المنسوخة للعملاء.
tosun_ac_bridge_server_ms60000 (من 500 إلى 300000)مدة الإعفاء الافتراضية لـ TosunAC.PlayerExempt في جسر الخادم.للمطورين. يكفي set.
tosun_ac_bridge_cooldown_ms750 (القيمة 0 تعطّله)فترة تهدئة لكل لاعب تُسقط استدعاءات TosunAC.PlayerExempt المتكررة في جسر الخادم.للمطورين. يكفي set.
tosun_ac_bridge_client_ms60000 (من 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، وهو يتحقق من الصيغة فقط.

  1. convar الخادم: tosun_ac_license أو tosun_ac_panel_key أو tosun_ac_central_token.
  2. القيمة في configs/anticheat_server.lua: licenseKey أو panelKey أو centralToken.
  3. القيمة القديمة في الملف المشترك 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.

  1. للتحكم في الجسر من server.cfg، أضف set tosun_db_bridge_manual "1" قبل ensure tosun-ac.
  2. أضف set tosun_db_bridge_enabled بالقيمة "1" أو "0".
  3. أضف 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.tsadd_ace في server.cfgنعمنعمالطريقة الموصى بها لمنح صلاحيات الطاقم.
ACE command.ban, command.kickserver.cfg أو txAdminنعمنعميبقى من الطاقم حتى مع ts.txAdminAuth = false.
Principals group.admin, group.superadmin, group.moderator, group.godadd_principal في server.cfgفقط إذا تحوّل الاسم إلى ACE مسموحالشرط نفسهتُختبر ككائنات ACE. أضف صلاحية ACE صريحة أيضًا.
ACE txadmin, tx.admin, txadmin.menu, txadmin.advanced, command.txadmintxAdmin أو add_aceنعملامشرفو txAdmin يحتاجون إلى tosun.admin أو منح من اللوحة للوصول إلى القائمة.
ACE command.resources, command.restarttxAdminفقط ما دام ts.txAdminAuth = trueلاعادةً يمنحها txAdmin.
ACE command.screenshot, command.unbantxAdminإعفاء فقط، ما دام ts.txAdminAuth = trueلابلا أوامر طاقم.
ts.AdminBypassAcesconfigs/anticheat_config.luaنعملاالإدخالات التي تضيفها لا تفتح القائمة.
Adminsadmins/anticheat_admins.luaنعمنعمملف خاص بالخادم فقط.
ts.AdminMenu.allowedIdsconfigs/anticheat_config.luaنعمنعمالقيمتان "all" و "staff" ليستا معرّفات ولا تمنحان شيئًا.
ts.AdminBypassIdentifiersconfigs/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.adminadd_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.AdminBypassDetectionstrueالقيمة false تجعل الطاقم قابلًا للعقوبة مثل أي لاعب.
ts.txAdminAuthtrueالقيمة false تعطّل مسار صلاحيات ACE لأوامر txAdmin (command.resources و command.restart و command.screenshot و command.unban). أما command.ban و command.kick فيبقيان من الطاقم.
ts.Debugfalseالقيمة true توقف تجاوزات الطاقم والقائمة البيضاء والقائمة البيضاء للوحة والإعفاءات، لكي يختبر الطاقم الاكتشافات على أنفسهم. أبقِها false في بيئة الإنتاج.
ts.NuiNeverBanUnauthorizedtrueالقيمة false تعاقب اللاعبين الذين يطلقون أحداث قائمة الإدارة دون صلاحية، بدل الاكتفاء بتسجيلهم. العقوبة هي ts.punishType.
ts.AdminMenu.enable, ts.AdminMenu.enabledtrue, trueالقيمة false في أي منهما تعطّل قائمة الإدارة. و enable = false يوقف أيضًا وحدة إشعارات الهاتف.
ts.AdminMenu.requireActionSignaturetrueالقيمة false توقف توقيع إجراءات قائمة الإدارة الحساسة.
ts.v12.bypassStaffIpChecktrueالطاقم يتخطى فحوص 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.Debugfalseالقيمة true تعطّل تجاوزات الطاقم والقائمة البيضاء. أبقِها false في بيئة الإنتاج.
ts.txAdminAuth, ts.AdminBypassDetections, ts.NuiNeverBanUnauthorizedtrue, true, trueالتعامل مع الطاقم. راجع إعدادات تغيّر طريقة التعامل مع الطاقم.
ts.screenshotModule"screenshot-basic"المورد المستخدم للقطات الشاشة.
ts.banIDFormat11 = ABCD-1234، و 2 = #1234.
ts.autoSQLfalseالقيمة true تنشئ الجداول عند البدء. تعليق الإعدادات يقول اضبطه على true في التثبيت الأول ثم أعده إلى false بعد ذلك.
ts.Prefix, ts.showReason'Tosun AntiCheat', trueتحدد شكل رسائل الطرد والحظر.
ts.appealDiscord, ts.appealTicketUrlvendor linksيُلحق برسالة الحظر. appealDiscord مرفق برابط Discord الخاص بالمطوّر (https://discord.gg/9tCSJch) وهو أيضًا القيمة البديلة. اضبط رابط الاستئناف الخاص بك.
ts.pingOnDetectfalseيضيف @everyone إلى embeds الاكتشافات. يوضع النص داخل كائن الـ embed، وليس في حقل content الرئيسي للرسالة.
ts.chatMessagesfalseيعلن العقوبات في الدردشة.
ts.spoilerIPtrueيخفي عناوين IP داخل spoilers في سجلات Discord.
ts.needDiscordfalseالقيمة 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 settingsOCR للشاشة بحثًا عن كلمات قوائم الغش.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.CentralAPI اللوحة المركزية في 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_stateBagStrictModetrueحارس الـ convarsنعم
sv_filterRequestControl2حارس الـ convarsنعم
sv_enableNetworkedSoundsfalseحارس الـ convarsنعم
sv_enableNetworkedPhoneExplosionsfalseحارس الـ convarsنعم
sv_enableNetworkedScriptEntityStatesfalseحارس الـ convarsنعم
sv_scriptHookAllowedfalseحارس الـ convars؛ والتدقيق يحذّر أيضًا عندما تكون القيمة trueنعم
sv_entityLockdownrelaxed (strict also passes)حارس الـ convars، تقرير فقطلا. قد يعطّل السكربتات التي تُظهر المركبات من العميل؛ اختبر أولًا.
sv_pureLevel1 or higherحارس الـ convars، تقرير فقطلا
onesyncon (legacy also passes)التدقيق؛ وهو أيضًا تبعية في الـ manifestلا
sv_lanfalseالتدقيق يحذّر عندما تكون القيمة trueلا
sv_authMinTrust4 or higher (unset reads as 5)التدقيقلا
sv_enforceGameBuildany 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: تجاوزات الطاقم والقائمة البيضاء تكون متوقفة.