توثيق Pulse Phone
أنظمة الـ Inventory
4. العناصر وأنظمة الـ inventory
العناصر مطلوبة فقط على سيرفرات الـ framework. الملفات موجودة في config/items/ والصور في config/items/images/.
ما يفعله الهاتف بنفسه. عند بدء التشغيل يحدد العناصر التي تحتاجها الميزات التي فعّلتها (الجدول أدناه)، ثم:
| الـ inventory الخاص بك | ما يحدث |
|---|---|
| ESX مع الـ inventory الافتراضي | تُضاف العناصر الناقصة إلى جدول items في ESX. الصفوف الموجودة لا تتغير أبدًا. يطبع الكونسول سطرًا واحدًا يذكر ما أضافه. على ESX أقدم لا يستطيع إعادة تحميل عناصره، أعِد تشغيل السيرفر مرة واحدة. الملف config/items/esx.sql مخصص فقط لإضافتها يدويًا. |
| QBCore مع qb-inventory (وps-، lj-inventory أيضًا) | تُضاف العناصر الناقصة إلى العناصر المشتركة في QBCore أثناء عمل السيرفر. العنصر الموجود مسبقًا في qb-core، مثل phone الخاص به، يُترك كما هو. يطبع الكونسول سطرًا واحدًا يذكر ما أضافه. |
| ox_inventory (ESX، Qbox، ox_core) | ox_inventory يقرأ العناصر من ملفه الخاص فقط. يسرد فحص بدء التشغيل العناصر الناقصة فقط ويطبع إدخالاتها أسفل الصندوق، جاهزة للصق في ox_inventory/data/items.lua. |
| أي inventory آخر | يذكر فحص بدء التشغيل العناصر الناقصة. أضفها بالطريقة التي يضيف بها ذلك الـ inventory العناصر (الجدول تحت "ما يجب فعله للـ inventory الخاص بك"). |
مهم
الصور لا تُنسخ لك أبدًا. يذكر فحص بدء التشغيل كل صورة ناقصة والمجلد الذي تذهب إليه، مثلًا copy pulse_magpack.png, pulse_router.png from config/items/images/ into qb-inventory/html/images.
في فحص بدء التشغيل سطر Items واحد: [OK] عندما تكون كل العناصر موجودة، أو [FAIL] مع الأسماء الناقصة والحل أسفله. يطبعه phone:health مجددًا بعد أن تصلح شيئًا.
| العنصر | تحتاجه عندما |
|---|---|
phone |
فقط مع Config.Item.required = true (يجب على اللاعبين حمل هاتف) أو مع الهواتف الفريدة. |
pulse_phone_box |
يبيع المتجر الهواتف في علبة مختومة. مفعّل افتراضيًا (Config.Store.box). |
pulse_magpack, pulse_magpack_max, pulse_cable |
إكسسوارات الشحن. مفعّلة افتراضيًا (Config.Charging). |
pulse_router |
Pulse Home Wi-Fi، الراوتر الذي يضعه اللاعبون في المنزل. مفعّل افتراضيًا (config/apps.lua). |
pulse_burner |
Pulse Burner، هاتف مسبق الدفع برقم خاص به. مفعّل افتراضيًا (config/apps.lua). |
pulse_case, pulse_case_clear, pulse_pouch, pulse_protector |
حماية الهاتف: الكفرات، والحافظة المقاومة للماء، ولاصقة حماية الشاشة. مفعّلة افتراضيًا (config/apps.lua). |
pulse_buds, pulse_ringlight, pulse_wallet |
Pulse Buds، وPulse Ring Light، وPulse Card Wallet. مفعّلة افتراضيًا (config/apps.lua). |
powerbank |
اختياري. عنصر الباور بنك القديم؛ ويعمل كـ Reserve. |
pulse_phone_box_<finish> |
فقط مع Config.Store.boxPerFinish = true. |
radio (أو أي اسم) |
فقط عندما تضبط Config.Radio.item (القسم 5، Radio). ox_inventory وqb-core فيهما عنصر radio بالفعل. |
إذا كان عنصر ناقصًا، يبدأ الهاتف رغم ذلك. يعطّل المتجر العلب أو يوقف بيع ذلك العنصر، ويذكر الكونسول العنصر المطلوب إضافته.
الـ Reserves تتكدس. الحزم الممتلئة لا تحمل metadata، لذا يمكن أن تشترك حتى 20 منها في خانة واحدة. الحزمة التي تُنزع وهي مستخدمة جزئيًا تصبح عنصرًا مستقلًا بشحنتها في الـ metadata الخاصة بها (على ox_inventory وqb-inventory وqs-inventory)، لذا تحتاج إلى خانة فارغة. وبدون metadata للعناصر (standalone، والـ inventory الافتراضي لـ ESX) تُتتبَّع فقط الحزمة المستخدمة، واحدة لكل شخصية لكل حجم.
مع Config.Item.required = true (أو الهواتف الفريدة) يتحقق السيرفر من عنصر الهاتف عبر الـ inventory لديك ويرفض طلبات الهاتف من اللاعب الذي لا يملكه. فقدان العنصر يُنهي مكالمات ذلك اللاعب، بما فيها مكالمات الطوارئ، ويغلق الهاتف.
إعطاء علبة مختومة لشخص آخر. على ox_inventory وqb-inventory وqs-inventory يحمل عنصر العلبة نفسه الموديل والتشطيب اللذين تم شراؤهما، لذا من يفتحها يحصل على ذلك الهاتف. وعلى كل inventory آخر تكون العلبة عنصرًا عاديًا، والموديل والتشطيب محفوظان في سجل شراء المشتري نفسه: العلبة المُعطاة تنفتح كعملية الشراء التالية للمالك الجديد، أو بالموديل والتشطيب الافتراضيين. مع Config.Store.boxPerFinish = true يحتفظ اسم عنصر العلبة بالتشطيب، لكن ليس بالموديل.
النص الدقيق للصق، للـ inventory الخاص بك
لن تحتاج أبدًا إلى كتابة إدخال عنصر بنفسك. عندما يكون عنصر ناقصًا، يطبع فحص بدء التشغيل النص الدقيق للـ inventory الخاص بك أسفل الصندوق، ويعرض Settings > Server > Health Check نفس النص مع زر Copy. الصقه، وأعِد تشغيل الـ inventory والهاتف، وشغّل phone:health مرة أخرى.
| الـ inventory الخاص بك | ما يُطبع | أين يذهب |
|---|---|---|
| ox_inventory (ESX، Qbox، ox_core، ND Core) | إدخالات ox_inventory | ox_inventory/data/items.lua، داخل الجدول |
| QBCore (qb-، ps-، lj-inventory) | إدخالات QBCore (فقط إذا لم يتمكن الهاتف من إضافتها بنفسه) | qb-core/shared/items.lua |
| qs-inventory | إدخالات بشكل QBCore | قائمة عناصر qs-inventory |
| الـ inventory الافتراضي لـ ESX | سطر SQL واحد (فقط إذا لم يتمكن الهاتف من إضافتها بنفسه) | أداة قاعدة البيانات لديك، ثم أعِد التشغيل |
| TMC | إدخالات TMC لكل عنصر يحتاجه الهاتف (لا يمكن سؤال TMC عن العناصر الموجودة لديه) | قائمة عناصر TMC (الملف الذي فيه sim_card)، مع الاحتفاظ بالعناصر الموجودة لديك |
| أي inventory آخر | إدخالات بشكل QBCore، وهو الشكل الذي تقرؤه معظم أنظمة الـ inventory | قائمة عناصر ذلك الـ inventory |
كيف يبدو كل منها، للـ Reserve:
-- ox_inventory/data/items.lua
['pulse_magpack'] = { label = "Pulse Reserve", weight = 110, stack = true, close = true, consume = 0, description = "Magnetic battery pack. Fills 70% of a phone.", client = { export = "phone.usePack", image = "pulse_magpack.png" } },
-- qb-core/shared/items.lua, qs-inventory and similar
['pulse_magpack'] = { name = "pulse_magpack", label = "Pulse Reserve", weight = 110, type = 'item', image = "pulse_magpack.png", unique = false, useable = true, shouldClose = true, description = "Magnetic battery pack. Fills 70% of a phone." },
-- TMC
['pulse_magpack'] = { ['label'] = "Pulse Reserve", ['weight'] = 110, ['type'] = 'item', ['image'] = "pulse_magpack.png", ['unique'] = false, ['stackable'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = "Magnetic battery pack. Fills 70% of a phone." },-- ESX default inventory
INSERT IGNORE INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES
('pulse_magpack', 'Pulse Reserve', 1, 0, 1);عنصر phone الخاص بـ ox_inventory. يأتي ox_inventory مع إدخال phone مصنوع لسكربت هاتف آخر. لا تحتاج إلى تغييره: استخدامه يفتح Pulse Phone. في فحص بدء التشغيل سطر Phone item يوضح كيف يعمل إدخالك. فقط عندما يذكر export سكربت آخر ([WARN]، أو [FAIL] مع الهواتف المطلوبة أو الفريدة) يطبع الإدخال البديل. إذا كان سكربت الهاتف الذي صُنع له ذلك الإدخال ما زال يعمل، يفتح العنصر ذلك السكربت بدلًا من Pulse: سطر Phone item يذكر اسمه؛ احذفه من server.cfg.
ما يجب فعله للـ inventory الخاص بك
| الـ Inventory | أين تذهب العناصر | أين تذهب الصور |
|---|---|---|
| ox_inventory (ESX، Qbox، ox_core) | الصق الإدخالات التي يطبعها فحص بدء التشغيل (أو ملف ox_inventory.lua كاملًا) في ox_inventory/data/items.lua، داخل الجدول. احتفظ بإدخال ['phone'] الخاص بـ ox_inventory (فهو يفتح Pulse Phone)؛ واستبدله بالمطبوع فقط عندما يقول سطر Phone item إنه يفتح سكربتًا آخر |
ox_inventory/web/images/ |
| qb-inventory | لا شيء: تُضاف عند بدء التشغيل. لإضافتها يدويًا بدلًا من ذلك، الصق qb-core.lua في qb-core/shared/items.lua |
qb-inventory/html/images/ |
| ps-inventory، lj-inventory | لا شيء: تُضاف عند بدء التشغيل، كما في qb-inventory | مجلد الصور في الـ inventory الخاص بك |
| qs-inventory | الصق qb-core.lua في qb-core/shared/items.lua، أو في قائمة عناصر qs-inventory الخاصة |
مجلد الصور في الـ inventory الخاص بك |
| codem-inventory، core_inventory، tgiann-inventory، origen_inventory | أضف العناصر إلى قائمة عناصره بالطريقة التي تضيف بها أي عنصر، باستخدام الأسماء والتسميات والأوزان من qb-core.lua (phone، powerbank، pulse_magpack، pulse_magpack_max، pulse_cable، pulse_router، pulse_burner، pulse_buds، pulse_ringlight، pulse_wallet، pulse_phone_box). استخدم pulse_magpack.png لـ powerbank وpulse_magpack_max أيضًا |
مجلد الصور في الـ inventory الخاص بك |
| ak47_inventory | أضف العناصر، بالإضافة إلى أسطر onUse أدناه |
مجلد الصور في الـ inventory الخاص بك |
| الـ inventory الافتراضي لـ ESX | لا شيء: تُضاف عند بدء التشغيل. وesx.sql هو الطريقة اليدوية |
غير مطلوب |
| vRP 2 | راجع قسم vRP أعلاه | |
| Standalone | لا شيء |
لأنظمة الـ inventory الأخرى في هذا الجدول، يجعل الهاتف العناصر قابلة للاستخدام بنفسه. ox_inventory يستخدم أسطر client = { export = 'phone....' } الموجودة بالفعل في ملفه.
ox_inventory: إذا كنت تستخدم هاتفًا آخر من قبل، احذف أيضًا الـ hook الخاص به Item('phone', ...) من ox_inventory/modules/items/client.lua.
ak47_inventory يحفظ طريقة استخدام العنصر في إدخال كل عنصر. أضف هذه:
-- powerbank
server = { onUse = function(source) exports.phone:UsePowerbank(source) end },
-- pulse_magpack and pulse_magpack_max
server = { onUse = function(source, item) exports.phone:UseMagPack(source, item and item.slot, item and item.name) end },
-- pulse_cable
server = { onUse = function(source) exports.phone:UseChargingCable(source) end },
-- pulse_phone_box
server = { onUse = function(source, item) exports.phone:UseBox(source, item and item.slot) end },
-- pulse_router
server = { onUse = function(source) exports.phone:UseRouter(source) end },
-- pulse_burner
server = { onUse = function(source, item) exports.phone:UseBurner(source, item and item.slot) end },
-- pulse_case, pulse_case_clear, pulse_pouch, pulse_protector
server = { onUse = function(source, item) exports.phone:FitPhoneProtection(source, item and item.name) end },
-- pulse_buds
server = { onUse = function(source) exports.phone:UseBuds(source) end },
-- pulse_ringlight
server = { onUse = function(source) exports.phone:UseRingLight(source) end },
-- pulse_wallet
server = { onUse = function(source) exports.phone:UseCardWallet(source) end },الهواتف الفريدة (Config.Item.unique = true) تضع رقم الهاتف على العنصر، لذا تسليم العنصر يعني تسليم الهاتف. وتحتاج إلى ox_inventory أو qb-inventory أو qs-inventory أو core_inventory أو codem-inventory.