توثيق Pulse Phone
حل المشاكل
11. حل المشاكل
ابدأ هنا: اقرأ فحص بدء التشغيل في كونسول السيرفر. يبدأ بـ PULSE PHONE v1.x.x ورقم البناء، ثم يعطي سطرًا لكل مجال (Server، Database، Framework، Connected scripts، Items...). كل سطر FIX أو NOTE فيه المشكلة وحلها أسفله (-> ...). اكتب phone:health للتقرير الكامل، سطرًا بسطر، وphone:diag للتفاصيل.
الهاتف لا يفتح
| ما تراه | السبب | الحل |
|---|---|---|
F1 لا يفعل شيئًا، و/phone يعمل |
سكربت آخر يستخدم F1 | غيّر الربط في Settings > Key Bindings > FiveM، أو غيّر Config.Keys.open. المفتاح الافتراضي الجديد يصل فقط إلى اللاعبين الذين لم يربطوا المفتاح من قبل. |
| لا يفتح شيء إطلاقًا | اللاعب ليس لديه عنصر هاتف، أو البطارية فارغة، أو سكربت عطّل الهاتف، أو اللاعب ميت أو مكبّل أو في حالة ممنوعة أخرى | تحقق من Config.Item.required، والبطارية، وحالات Config.Block. |
| لا يفتح فوق inventory أو قائمة | عن قصد (Config.Open.blockWhenNuiFocused) |
أغلق القائمة الأخرى أولًا. |
| "No phone item": لا يفتح لأي أحد | Config.Item.required = true لكن عنصر phone غير موجود في الـ inventory لديك، أو اللاعبون لا يحملونه |
أضف عنصر phone (القسم 4) وأعطه للاعبين، أو اضبط Config.Item.required = false. |
| هاتف جديد شاشته سوداء ويقول "Hold to turn on" | وصل الهاتف مطفأً: Config.Device.arrivesOn = false. الهواتف الجديدة تصل مُشغّلة افتراضيًا منذ 1.4.0؛ وملف config.lua المحفوظ من إصدار سابق يحتفظ بقيمته |
والهاتف ظاهر، اضغط مطولًا على End أو O (Config.Keys.power) لحوالي ثانيتين، أو اضغط مطولًا على الزر الجانبي للهاتف نفسه بالماوس. اسحب للأعلى على شاشة الترحيب لبدء الإعداد. |
تختفي العلبة لكن لا يظهر عنصر phone |
Config.Item.required = false وunique = false يستخدمان هاتفًا تملكه الشخصية، بدون عنصر inventory |
افتح الهاتف بشكل عادي. إذا كان يجب أن يتطلب سيرفرك عنصرًا محمولًا، فعّل Config.Item.required قبل بيع الهواتف، ثم أعِد تشغيل Pulse. |
| الشاشة فارغة أو بيضاء | جهة السيرفر لا تعمل. يُظهر F8 the server never answered bootstrap - is the resource running server-side? |
اقرأ كونسول السيرفر بحثًا عن سطر [phone] أحمر أو خطأ escrow (أدناه). |
الشاشة فارغة، والكونسول يقول ui/index.html missing |
مجلد ui/ حُذف أو لم يُرفع |
ارفع مجلد phone كاملًا مرة أخرى. لا تحذف ui/. |
الهاتف يظهر في اليد لكن الشاشة لا تظهر أبدًا؛ ويُظهر فحص بدء التشغيل [FAIL] Interface مع اسم ملف في ui/assets/ |
ذلك الملف مفقود من نسختك: رفع غير مكتمل، أو أن برنامج مكافحة الفيروسات حذفه | حمّل الهاتف مرة أخرى من Keymaster وارفع المجلد كاملًا. إذا اختفى الملف مجددًا، أضف مجلد السيرفر إلى استثناءات برنامج مكافحة الفيروسات. |
| المؤشر عالق في منتصف الشاشة | الإدخال الخام (raw input) في GTA معطّل | يفعّل اللاعب raw input في إعدادات GTA. |
الـ framework والأموال والوظائف
| ما تراه | السبب | الحل |
|---|---|---|
FRAMEWORK NOT SELECTED: more than one framework is started |
نواتان تعملان، مثلًا es_extended وqb-core | اضبط Config.Framework في config/config.lua على الذي تستخدمه، أو أضف setr phone_framework <name> إلى server.cfg (القسم 3). وحتى ذلك الحين، تبقى ميزات الأموال معطّلة. |
framework not ready: ... في الكونسول، والهواتف تبقى على شاشة "not ready" |
الـ framework الذي وجده الهاتف أو طُلب منه استخدامه لا يعمل بعد: ما زال يبدأ، أو يُعاد تشغيله، أو متوقف، أو (في المخصص) لم يُسجَّل جسره أبدًا. تُرفض الأموال حتى يعمل. | شغّل الهاتف بعد الـ framework. بعد إعادة تشغيل النواة، امنحها لحظة، أو أعِد تشغيل الهاتف أيضًا. framework مخصص: سجّل الجسر، واستدعِ exports.phone:FrameworkRestarted() بعد إعادة تشغيل النواة. سيرفر بدون أي framework إطلاقًا: اضبط Config.Framework = 'standalone' في config/config.lua، أو أضف setr phone_framework standalone إلى server.cfg (له الأولوية على الـ config). |
| تم اكتشاف framework خاطئ: سطر بدء التشغيل يذكر framework لا تستخدمه | ox_core يعمل بجانب ESX أو QBCore أو Qbox (فيستخدم الهاتف الآخر)، أو أن النواة لديك ريسورس بإسم معدّل | أوقف النواة التي لا تستخدمها، أو افرض نواتك باستخدام setr phone_framework <name> في server.cfg (القسم 3). نواة بإسم معدّل: استخدم اسمها الأصلي، أو اربطها كـ framework مخصص. |
Config.Framework = "esx" but es_extended is not started |
الإعداد يذكر framework لا يعمل | أصلح الإعداد، أو أعِده إلى 'auto'. |
سطر بدء التشغيل يقول Framework: standalone على سيرفر فيه framework |
النواة لها اسم ريسورس مختلف، أو تبدأ بعد الهاتف | شغّل الهاتف بعد الـ framework. النواة ذات الاسم المعدّل لا يُعثر عليها: استخدم اسمها الأصلي، أو اربطها كـ framework مخصص (القسم 3). |
| رصيد البنك 0 أو خاطئ | الهاتف يعمل بوضع standalone (ببنكه الخاص)، أو لم يُعثر على الـ framework | تحقق من جزأي Framework: وBanking: في سطر بدء التشغيل. |
| لا يوجد حساب شركة في Services | لا يعمل أي سكربت لحسابات الشركات، أو اللاعب ليس مديرًا | شغّل واحدًا من القسم 7. رتب المدير: boss (ESX)، وisboss (QBCore / Qbox)، أو bossGrade. على ox_core وvRP لا توجد إدارة شركات. |
| الشرطة أو الإسعاف لا يستلمون مكالمات 911 | أسماء وظائفهم ليست في القوائم، أو أنهم خارج الدوام | أضف أسماء وظائفك إلى Config.Services وConfig.Emergency في config/apps.lua. |
<script> found but not connected |
إصدار ذلك السكربت له exports مختلفة | يستخدم الهاتف الخيار التالي. حدّث السكربت، أو اختر غيره عبر Config.Providers. |
سيرفر ND Core، لكن سطر بدء التشغيل يذكر framework آخر أو standalone |
ND_Core يبدأ بعد الهاتف، أو أن نواة أخرى تعمل أيضًا |
شغّل الهاتف بعد ND_Core، أو أوقف النواة التي لا تستخدمها، أو أضف setr phone_framework nd إلى server.cfg. |
قاعدة البيانات
| ما تراه | السبب | الحل |
|---|---|---|
الهاتف لا ينتهي من التحميل أبدًا؛ ويُظهر F8 request "bootstrap" timed out |
جداول هاتف آخر تعترض الطريق ولم يمكن نقلها جانبًا | اقرأ فحص بدء التشغيل (phone:health). سطر [FAIL] Database ... belong to another script يذكر أسماء الجداول؛ راجع القسم 2، "جداول هاتف آخر". |
فحص بدء التشغيل: [WARN] Database N table(s) of another script were moved aside: phone_x -> old_phone_x |
جدول تركه سكربت آخر باسم من أسماء الهاتف أُعيد تسميته عند التشغيل حتى يتمكن الهاتف من إنشاء جدوله. لم يُحذف أي شيء | لا شيء تفعله للهاتف. إذا كان أحد سكربتاتك يملك ذلك الجدول، أعطه اسم جدول آخر: لن يجد بياناته تحت الاسم القديم. يقرأ phoneimport بيانات الهاتف القديم من هناك (استيراد البيانات، "الجداول التي تشترك في الاسم مع Pulse Phone"). |
فحص بدء التشغيل: [WARN] Database <table> is missing columns the phone writes (...) |
الجدول يحمل اسم الهاتف لكن ينقصه عمود يكتب فيه الهاتف، وليس واضحًا أنه تابع لسكربت آخر. يُترك كما هو عن قصد: إعادة تسمية خاطئة أسوأ من تحذير | إذا كان سكربت آخر قد أنشأه، أعِد تسميته إلى old_<table> في أداة قاعدة البيانات لديك وأعِد التشغيل. وإن لم يكن، أرسل ذلك السطر إلى الدعم (القسم 12). القواعد موجودة في استيراد البيانات. |
db: could not create table ... check that the database user may CREATE TABLE |
مستخدم قاعدة البيانات لا يستطيع إنشاء جداول | امنح المستخدم صلاحيات CREATE وALTER، أو استورد phone.sql يدويًا. |
db: could not add column ... |
المستخدم لا يستطيع تنفيذ ALTER على الجداول | كما في الأعلى. |
is running but the database did not answer |
oxmysql يعمل لكنه لا يستطيع الوصول إلى قاعدة البيانات | أصلح mysql_connection_string. الهاتف يعيد المحاولة بنفسه. |
no SQL resource running - storing data in the resource key/value store |
oxmysql لم يبدأ، أو يبدأ بعد الهاتف | شغّل oxmysql قبل الهاتف. |
auth_gssapi_client في سجل oxmysql |
مستخدم قاعدة البيانات مضبوط على تسجيل دخول Windows | حوّل ذلك المستخدم إلى كلمة مرور: ALTER USER 'fivem'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('your-password'); |
phone_db_fallback is "kvp", so the key/value store takes over |
قاعدة البيانات لا تستجيب والبديل (fallback) مفعّل | تُكتب البيانات في مخزن key/value ولن تصل إلى قاعدة البيانات. أصلح الاتصال. |
db: no answer within 10 s, answered as failed: <query> |
ذلك الاستعلام لم يعد أبدًا (قاعدة بيانات بطيئة أو مقفلة) | التطبيق الذي طلبه أُبلغ بالفشل. راجع سجل ريسورس SQL. |
المكالمات والصور والهاتف
| ما تراه | السبب | الحل |
|---|---|---|
المكالمات تتصل بدون صوت، no voice resource |
لا يعمل أي سكربت صوت | شغّل pma-voice (أو غيره من القسم 5) قبل الهاتف. |
لا صوت، 2 voice resources running |
سكربتا صوت يتنافسان على نفس القنوات | شغّل واحدًا فقط. |
| مكالمة الفيديو تعرض صورة المتصل فقط | اللاعبان لا يستطيعان الاتصال مباشرةً | اضبط video relay باستخدام الدليل المتقدم المذكور في القسم 5. |
| المكالمة المدمجة فيها صوت لكن بدون صورة | الفيديو الجماعي معطّل، أو مقاعد الفيديو المُعدّة مشغولة. يمكن لمشاركي الصوت البقاء في المكالمة الجماعية بدون مقعد فيديو. | في config/config.lua، تحقق من Config.Calls.groupVideo وConfig.Calls.groupVideoMax. الفيديو الجماعي مفعّل افتراضيًا بأربعة مقاعد فيديو. اتبع إعداد video relay المذكور في القسم 5 للاتصال في بيئة الإنتاج. |
| مقاطع الفيديو من الكاميرا بدون صوت، للاعب واحد | ذلك اللاعب رفض مرة طلب اللعبة للوصول إلى الميكروفون. يتذكر FiveM الإجابة في %AppData%\CitizenFX\media_access.json ولا يسأل مرة أخرى أبدًا. |
يغلق اللاعب FiveM، ويحذف %AppData%\CitizenFX\media_access.json، ويشغّل اللعبة مرة أخرى ويسمح بالميكروفون عند السؤال. |
الصور لا تُحفظ، screenshot-basic not started |
screenshot-basic لا يعمل | شغّله قبل الهاتف. |
| الصور تُحفظ لكنها تظهر معطوبة | phone_media_origin عنوان http:// عادي |
استخدم عنوان https://، أو احذف الإعداد، أو استخدم Fivemanage (القسم 6). |
refused a media link on "<host>" |
رابط من مضيف ليس في قائمة السماح | أضف المضيف إلى Config.Media.allow (القسم 6)، أو اتركه مرفوضًا. |
| تطبيق Radio يقول إن الراديو غير متاح | لا يعمل أي سكربت صوت، أو أنه YACA | راجع القسم 5، Radio. |
| Radio: "تحتاج إلى جهاز راديو للاستماع" | Config.Radio.item مضبوط واللاعب لا يحمل ذلك العنصر |
أعطه العنصر، أو اضبط item = false في config/apps.lua. |
| الهاتف العمومي يرفض المكالمة بسبب المال | المال غير كافٍ في الحساب الذي يحدده Config.Payphone.pay، أو جسر مخصص بدون دوال أموال |
على سيرفر standalone لا يملك أحد نقدًا: أبقِ pay = 'either' أو استخدم 'bank'. |
| لا يمكن الكتابة في حقل نصي | سكربت آخر استدعى SetNuiFocus(false, false) أثناء فتح الهاتف |
ابحث عن ذلك السكربت (أدوات NUI devtools تُظهره). |
فحص بدء التشغيل: phone_media_origin not set |
السيرفر ليس له عنوان Cfx.re عام (سيرفر اختبار محلي أو على الشبكة المحلية) | اللاعبون على نفس الجهاز أو الشبكة لا مشكلة لديهم. لسيرفر عام، تأكد أنه مُدرج، أو اضبط setr phone_media_origin "https://..." (القسم 6). |
| الهاتف غير مرئي، أو هاتف اللعبة الأصلي، أو صندوق رمادي في اليد | موديل الهاتف لم يُحمَّل (stream). يُظهر F8 the handset model "pulse_titanium" did not load. (أو pulse_ultra، pulse_clear، pulse_flip، أيًا كان موديل ذلك الهاتف) |
اضبط sv_enforceGameBuild على 2699 أو أحدث. ارفع stream/ مرة أخرى، بدون تغيير، واحتفظ بكل سطر data_file في fxmanifest.lua. |
المتجر والعناصر
| ما تراه | السبب | الحل |
|---|---|---|
| لا يوجد بائع في المتجر | البائع يظهر فقط ضمن حوالي 60 m. قد يكون المتجر معطّلًا، أو أن خريطتك تغطي Legion Square | تحقق من Config.Store.enabled. انقل الكاونتر في Config.Store.locations. |
store: the item "pulse_phone_box" ... is not registered in your inventory |
عنصر العلبة مفقود | أضفه (القسم 4). وحتى ذلك الحين تُسلَّم الهواتف بدون علبة. |
المتجر يقول "inventory full" لكن اللاعب لديه مساحة؛ والكونسول يقول store: the inventory would not take <item> |
ذلك العنصر ليس في قائمة عناصر الـ inventory لديك، لذا يرفضه الـ inventory | أضف العنصر المذكور في الكونسول (القسم 4، وconfig/items/)، أو اضبط Config.Store.box = false لتسليم الهواتف بدون علب. تم استرداد قيمة الشراء. |
لا يوجد Reserve أو كابل في المتجر، أو store: the item "pulse_cable" ... |
عناصر الشحن مفقودة من الـ inventory لديك | أضف pulse_magpack وpulse_magpack_max وpulse_cable (القسم 4)، وصورها. |
لا يوجد Pulse Home Wi-Fi في المتجر، أو store: the item "pulse_router" ... |
عنصر الراوتر مفقود من الـ inventory لديك، أو Config.Wifi.enabled قيمته false |
أضف pulse_router (القسم 4) وصورته. |
Home Wi-Fi: the model "pulse_router" is not streamed في F8 |
stream/ لم يُرفع كاملًا |
ارفع stream/ مرة أخرى، بدون تغيير. الـ Wi-Fi ما زال يعمل؛ لكن الراوتر لا يظهر. |
لا يوجد Pulse Burner في المتجر، أو store: the item "pulse_burner" ... |
عنصر الـ burner مفقود من الـ inventory لديك، أو Config.Burner.enabled قيمته false |
أضف pulse_burner (القسم 4) وصورته. |
Pulse Burner: the model "pulse_burner" is not streamed في F8 |
stream/ لم يُرفع كاملًا |
ارفع stream/ مرة أخرى، بدون تغيير. هواتف الـ burner ما زالت تعمل؛ ويظهر هاتف Pulse في اليد. |
| ضابط ليس لديه تطبيق Intercept، أو يقول إنه خارج الدوام | وظيفته ليست في Config.Taps.jobs، أو رتبته أقل من minGrade، أو الـ framework يقول إنه خارج الدوام |
تحقق من config/apps.lua ومن وظيفته. |
| "لا يمكن وضع الراوتر إلا داخل منزل تملكه أو تحمل مفتاحه" | placement قيمته 'housing' (أو 'auto' مع سكربت منازل) |
ضعه داخل منزلك، أو غيّر placement في config/apps.lua. |
| الراوتر لا يوضع: الحلقة تبقى حمراء، أو رسالة توضح السبب | المكان يخالف قاعدة. يجب أن يكون سطحًا مستويًا ضمن حوالي 3 m من اللاعب (ليس جدارًا أو منحدرًا)، وعلى بُعد minSpacing (8 m) على الأقل من راوتر آخر، ويجب أن يكون عدد ما وضعه اللاعب أقل من maxPerPlayer (2). مع placement = 'interior' يجب أن يكون في مكان داخلي ("A router has to go indoors"). ومع 'housing' يجب أن يكون في منزل يملكه أو يحمل مفتاحه. |
اقترب أكثر ووجّه نحو أرضية أو طاولة. التقط راوترًا أقدم أولًا. أو غيّر placement في config/apps.lua (القسم 8، Home Wi-Fi). |
| "الراوترات توضع في المنازل، وهذا السيرفر ليس فيه سكربت منازل يستطيع الهاتف قراءته" | placement = 'housing'، لكن لا يعمل أي من سكربتات المنازل المذكورة في القسم 7 |
اضبط placement على 'auto' أو 'interior'، أو شغّل سكربت منازل مدعومًا. |
| العناصر تظهر بدون صورة | الصور لم تُنسخ | انسخ config/items/images/ إلى مجلد الصور في الـ inventory لديك. سطر Item pictures في فحص بدء التشغيل يذكر الصور الناقصة والمجلد. |
فحص بدء التشغيل: [FAIL] Items ... missing in ox_inventory |
ox_inventory يقرأ ملف العناصر الخاص به فقط | الصق الإدخالات المطبوعة أسفل الصندوق في ox_inventory/data/items.lua، ثم أعِد تشغيل ox_inventory والهاتف. |
فحص بدء التشغيل: Phone item ... opens <another script> |
إدخال phone في ox_inventory يذكر export سكربت آخر |
استبدل ذلك الإدخال بالمطبوع أسفل الصندوق (وهو أيضًا في Settings > Server > Health Check، مع Copy)، ثم أعِد تشغيل ox_inventory. الإدخال الأصلي لا مشكلة فيه كما هو. |
فحص بدء التشغيل: [INFO] Items TMC keeps no item list the phone can read |
لا توجد في TMC طريقة لسرد عناصره، لذا لا يستطيع الهاتف معرفة الموجود منها. معلومة، وليس خطأ | تأكد أن كل عنصر مطبوع أسفل الصندوق موجود في قائمة عناصر TMC. يذكر المتجر أي عنصر يرفضه TMC. |
فحص بدء التشغيل: [WARN] Items ... restart the server once so ESX loads them |
أُضيفت العناصر إلى جدول items في ESX، لكن إصدار ESX هذا لا يستطيع إعادة تحميلها أثناء العمل |
أعِد تشغيل السيرفر مرة واحدة. |
فحص بدء التشغيل: [WARN] Items ... could not add the items itself |
لم يتمكن الهاتف من الكتابة في جدول items في ESX أو في عناصر QBCore (السبب موجود في السطر) |
افعلها يدويًا: شغّل config/items/esx.sql (ESX) أو الصق config/items/qb-core.lua في qb-core/shared/items.lua (QBCore)، ثم أعِد التشغيل. |
Unique phones are waiting for their inventory. |
الهواتف الفريدة مفعّلة، لكن لا يعمل أي من أنظمة الـ inventory التي تحتاجها | شغّل الـ inventory المدعوم المختار قبل phone وتحقق من Config.Providers.inventory. يحتفظ Pulse بإعداد الهواتف الفريدة ويستأنف عندما يصبح ذلك الـ inventory متاحًا؛ ولا تغيّر وضع الملكية فقط لتجاوز هذا التحذير. |
| لا يمكن دفع فاتورة: لا يوجد من يستلمها | شركة الفاتورة ليس لها حساب في سكربت حسابات الشركات، أو لا يمكن العثور على مُرسلها | اضبط Config.Bills.payToCity = true لتحصيل هذه الفواتير كغرامات للمدينة. |
السكربتات الأخرى واللغة والخدمة
| ما تراه | السبب | الحل |
|---|---|---|
سكربت يعطي خطأ No such export لهاتف آخر |
يستدعي exports هاتف آخر، مثلًا exports['<old phone>']:SendMail. Pulse Phone لا ينسخ exports الهواتف الأخرى. |
غيّر ذلك الاستدعاء إلى export الخاص بـ Pulse Phone (الـ Exports)، أو اطلب من مطور السكربت خيارًا لـ Pulse Phone. السكربتات التي تستخدم الأحداث لا تحتاج إلى شيء. |
No such export لـ phone |
أُعيدت تسمية مجلد الهاتف | أعِد تسميته إلى phone (أدناه). |
| لغة خاطئة | Config.Locale مضبوط على لغة أخرى، أو أن اللاعب اختار لغة |
اضبط Config.Locale. يمكن لكل لاعب اختيار لغته في Settings > General > Language. |
النص يظهر كمفاتيح مثل key.answer |
مجلد config/locales/ قديم نُسخ فوق الجديد |
استخدم ملفات اللغة الجديدة. وأعِد تطبيق صياغتك الخاصة يدويًا. |
| التحميل في App Hub يقول No Connection | الهاتف ليس لديه إشارة خلوية هنا (منطقة ميتة، أو لا إشارة مع تفعيل Carrier) وليس متصلًا بـ Wi-Fi. التحميلات تحتاج إلى Wi-Fi أو بيانات الجوال. | انتقل إلى مكان فيه إشارة، أو اتصل بـ Wi-Fi (راوتر Pulse Home Wi-Fi). |
| التحميل في App Hub يقول No Cellular Plan أو Data Limit Reached أو Cellular Data Is Off | الـ Carrier مفعّل والهاتف ليس لديه خطة أو استهلك بياناته، أو أن اللاعب عطّل Cellular Data | اشترِ خطة أو رقّها في تطبيق Carrier (مثبّت على كل هاتف ما دام الـ Carrier مفعّلًا)، أو أعِد تفعيل Cellular Data، أو اتصل بـ Wi-Fi. |
| الجميع لديهم "No Service" | الـ Carrier مفعّل (Config.Carrier.enabled = true أو setr phone_carrier 1)، لذا كل هاتف يحتاج إلى خطة |
يشتري اللاعبون خطة في تطبيق Carrier. أو عطّله: اضبط enabled = false واحذف سطر setr phone_carrier. |
| لا توجد إشارة في بعض الأماكن فقط | المناطق الميتة مفعّلة (Config.Coverage.enabled) |
افحص مناطقك باستخدام phone:zone show داخل اللعبة. مكالمات الطوارئ تعمل دائمًا. |
Settings > Server، وتنبيهات الطوارئ، والتحديثات
| ما تراه | السبب | الحل |
|---|---|---|
| لا يوجد صف Server في Settings | اللاعب لا يملك صلاحية ace phone.admin، أو Config.OwnerTools.enabled = false |
add_ace group.admin phone.admin allow وأضف اللاعب إلى group.admin، ثم أعِد فتح Settings. |
phone:setup لا يفعل شيئًا |
كُتب في كونسول السيرفر، أو اللاعب ليس أدمن | اكتبه داخل اللعبة (F8) كأدمن. في الكونسول، phone:health يطبع نفس الفحوصات. |
| تغيير أُجري داخل اللعبة لا يُطبَّق | مُعلَّم بـ Restart needed | أعِد تشغيل الهاتف (ensure phone) أو السيرفر. سطر Restart في فحص بدء التشغيل يسرد ما ينتظر. |
تعديل ملف في config/ لا يغيّر شيئًا |
ذلك الإعداد تم تغييره داخل اللعبة، والقيمة داخل اللعبة لها الأولوية | اضغط Reset to Default عليه في Settings > Server، أو phone:reset <key> في الكونسول. |
| Settings > Server يعرض كل شيء للقراءة فقط | Config.OwnerTools.enabled = false في config/apps.lua |
اضبطه على true وأعِد تشغيل الهاتف. |
Not saved: ... أسفل إعداد |
القيمة ليست من القيم التي يقبلها ذلك الإعداد (خارج النطاق، أو بشكل خاطئ، أو اسم وظيفة فيه مسافات) | استخدم القيمة التي تصفها الرسالة. |
| لا أحد يستلم تنبيه طوارئ | Config.Broadcast.enabled = false، أو اللاعبون خارج الدائرة التي رسمتها |
تحقق من config/apps.lua. أرسل إلى المدينة كلها للاختبار. |
| يستلم اللاعبون التنبيهات الشديدة أو الاستشارية بصمت، أو لا يستلمونها إطلاقًا | يستطيع كل لاعب تعطيل تلك المستويات، والتنبيهات الشديدة تتبع الوضع الصامت | هذا اختيار اللاعب. التنبيهات القصوى تصدر صوتًا دائمًا. |
| ضابط ليس لديه زر New Alert | وظيفته ليست في Config.Broadcast.senders، أو رتبته أقل من المذكورة، أو أنه خارج الدوام |
أضف 'police:3' (الوظيفة:أدنى رتبة) إلى senders، أو اضبط requireDuty = false. |
Wait ... before sending another alert |
فترة الانتظار للمُرسل (cooldownSeconds) أو الحد بالساعة (perHour) |
انتظر، أو ارفع الحدود في config/apps.lua. |
لا يوجد سطر Update في فحص بدء التشغيل |
لم يتمكن الهاتف من الوصول إلى ملف التحديث (لا إنترنت، أو جدار حماية)، أو Config.UpdateCheck.enabled = false |
لا شيء لإصلاحه: الهاتف يستمر بدونه. مع Config.Debug = true يوضح الكونسول السبب. |
الميزات الأحدث
| ما تراه | السبب | الحل |
|---|---|---|
| لا يوجد تطبيق Shade | Shade معطّل افتراضيًا، ويحتاج إلى عنصر pulse_vpn، أو وظيفة مُدرجة، أو access.everyone |
اضبط Config.DarkMarket.enabled = true في config/apps.lua وتحقق من كتلة access الخاصة به. |
| لا توجد شريحة SIM في المتجر، أو لا يوجد رصيد في Settings | شرائح SIM معطّلة افتراضيًا (Config.Sim.enabled)، والرصيد المسبق الدفع خيار ثانٍ (prepaid) |
فعّلها في config/apps.lua، وأضف pulse_sim وpulse_topup إلى الـ inventory لديك (القسم 4). |
| لا يمكن تثبيت Pulse Beacon على سيارة | اللاعب بعيد جدًا عن المركبة (attachRange، 4 m)، أو أنه يملك maxPerPlayer (8) بالفعل |
قف بجانب السيارة. تحقق من config/apps.lua. |
| "يوجد Pulse Beacon غير معروف يتحرك معك" | تحذير السلامة: beacon يخص شخصًا آخر تنقّل مع اللاعب لمدة alertAfter ثانية |
متوقع. اضبط alert.enabled = false فقط إذا كانت قواعدك تسمح بالتتبع السري. |
| Pulse Buds أو Ring Light أو Card Wallet لا تعمل من الـ inventory | عناصرها مفقودة، أو معطّلة | أضف pulse_buds وpulse_ringlight وpulse_wallet (القسم 4)، وتحقق من config/apps.lua. |
| Slipstream لا يسمح للاعب بالاستضافة أو الانضمام | اللاعب أبعد من joinRadius (60 m) عن خط البداية، أو السباق ممتلئ (maxRacers)، أو الرسوم خارج النطاق من minFee إلى maxFee |
قُد إلى خط البداية. تحقق من config/apps.lua. |
| Hail: سائق لا يحصل على رحلات أبدًا | فئة سيارته أو موديلها غير مسموح، أو وظيفته ليست في driver.jobs، أو ينقصه driver.licenceItem، أو أنه خارج serviceArea |
تحقق من كتلة driver في config/apps.lua. |
| طلبات Eats لا يوصلها لاعب أبدًا | لا يوجد مندوب توصيل في الدوام بوظيفة موجودة في couriers.jobs؛ ومع cityCourier.enabled توصل المدينة بدلًا من ذلك |
أضف وظائف التوصيل لديك إلى config/apps.lua (أو في Settings > Server > Jobs). |
| Realty لا يعرض أي منازل | سكربت المنازل لديك لا يستطيع سرد المنازل المعروضة للبيع، وConfig.Homes.listings فارغ |
أضف عروضًا في config/apps.lua، أو شغّل سكربت منازل من القسم 7. |
| لا يستلم أي وكيل طلبات معاينة في Realty | لا يوجد لاعب في الدوام بوظيفة موجودة في realtor.jobs |
أضف أسماء وظائفك في config/apps.lua (أو في Settings > Server > Jobs). |
| الألعاب المباشرة: لا تصل أي دعوة | اللعبة معطّلة في config/apps.lua، أو أن الدعوة انتظرت أكثر من inviteSeconds |
تحقق من config/apps.lua، وأرسل الدعوة مرة أخرى. |
| خط الشركة لا يرن عند أحد، أو المتصلون ينتظرون على الانتظار | لا أحد مسجّل الدخول كمرسِل (dispatcher) لذلك الخط، أو لا يوجد عضو في الدوام | راجع config/apps.lua: المرسِلون يسجّلون الدخول في تطبيق Services. |
| Groups: "the group is full" | maxMembers (6، بما فيهم القائد) |
ارفعه في config/apps.lua. |
| الأخبار العاجلة لا تُرسل إشعارًا لأحد | breaking.enabled معطّل، أو أن فترة الانتظار (cooldownSeconds، perAuthorSeconds) لم تنتهِ |
تحقق من config/apps.lua، أو Settings > Server > News. |
مشاكل التثبيت والإصدار
| ما تراه | السبب | الحل |
|---|---|---|
You lack the required entitlement، أو خطأ escrow عند التشغيل |
مفتاح السيرفر يتبع حساب Cfx.re مختلفًا عن الحساب الذي اشترى Pulse Phone | يجب أن يكون الـ asset مملوكًا لنفس حساب Cfx.re الذي يتبعه مفتاح سيرفرك (sv_licenseKey). حمّل الهاتف من Keymaster (Granted Assets) على ذلك الحساب. النسخة من شخص آخر لا تعمل أبدًا. |
Failed to verify protected resource phone عند التشغيل، ويُظهر الكونسول أو F8 syntax error near '<\1>' لملفات في المجلد المقفل |
الرفع غيّر الملفات المقفلة: برنامج FTP أرسلها بوضع النص (Auto/ASCII)، أو أن الرفع انقطع. الترخيص سليم (الحساب الخاطئ يعطي You lack the required entitlement بدلًا من ذلك) |
احذف مجلد phone على السيرفر، وحمّله مرة أخرى من Keymaster وارفعه بوضع Binary (في FileZilla: Transfer > Transfer Type > Binary)، أو ارفع الـ zip وفك ضغطه على السيرفر. قارن المجلد بجدول الملفات في INSTALL.md. |
فحص بدء التشغيل: [FAIL] Package ... file(s) missing or the wrong size، مع أسماء ملفات في ui/ أو data/ أو stream/ |
تلك الملفات لم تصل كما بُنيت: رفع جزئي، أو نقل FTP بوضع النص، أو أن برنامج مكافحة فيروسات حذف أحدها | نفس الحل: أعِد التحميل، ثم ارفع بوضع Binary أو فك ضغط الـ zip على السيرفر. إذا اختفى ملف مرة أخرى، استثنِ مجلد السيرفر في برنامج مكافحة الفيروسات. ملفات الـ stream يُتحقق من وجودها فقط (الـ escrow يغيّر حجمها)، والكود المقفل يتحقق منه السيرفر نفسه. |
فحص بدء التشغيل: [FAIL] Package the file list is from build ... files from two downloads are mixed |
ui/ وبقية المجلد من تحميلين مختلفين |
احذف المجلد وفك ضغط تحميل واحد كاملًا. خذ دائمًا stream/ وui/ من نفس الإصدار. |
فحص بدء التشغيل: [WARN] Package data/package.json is missing or unreadable |
قائمة الملفات التي تأتي مع كل إصدار لم تصل | ارفع المجلد كاملًا مرة أخرى (بوضع Binary)، بما في ذلك data/. |
| سكربتات أو عناصر أخرى تتوقف عن العمل بعد إعادة تسمية المجلد | السكربتات الأخرى وإدخالات العناصر تصل إلى الهاتف باسم phone (exports.phone، phone.useItem) |
أبقِ اسم المجلد phone. |
سلوك غريب بعد التحديث، your config has no Config.Charging section |
ملف config.lua قديم نُسخ فوق الجديد |
الأقسام الناقصة فيه تعمل بالقيم الافتراضية. انسخ الأقسام الناقصة من config/config.lua الجديد، أو ابدأ من الملف الجديد. |
| adapter قديم يمنع السكربتات من الاتصال بعد التحديث | ملفات bridge/ قديمة (من هذا الإصدار أو إصدار أقدم) نُسخت مرة أخرى |
استخدم الملفات الجديدة (القسم 10). |
| هاتفان يعملان | مجلد phone القديم ما زال في مكان ما داخل resources |
انقله خارج resources. |