العودة إلى المدونة
Article6 دقيقة قراءة

الهاتف مقابل الجهاز اللوحي في FiveM: أي سكريبت جهاز يناسب سيرفرك

هاتف أم جهاز لوحي على خادم FiveM الخاص بك؟ قارن حجم الشاشة، التطبيقات، الأداء وعمق اللعب التمثيلي لاختيار الجهاز المناسب لمجتمعك.

Agency Scripts

المؤسس والمطور الرئيسي في Agency Scripts

عرض مباشر

جرّب Agency Phone في متصفحك، لا حاجة للتنزيل.

عرض تجريبي مفتوح

عرض مباشر

جرّب Agency Pad في متصفحك، عرض تفاعلي كامل للجهاز اللوحي.

عرض تجريبي مفتوح

لماذا جهازان بدلاً من واحد؟

عندما أصدرنا Agency Phone لأول مرة، أصبح بسرعة الهاتف داخل اللعبة المفضل لمئات خوادم FiveM. ولكن مع بدء مالكي الخوادم في بناء أنظمة لعب أدوار أكثر تعقيدًا، كان هناك طلب متكرر: أراد اللاعبون شاشة أكبر لمهام مثل تصفح MDT، إدارة الأعمال، أو مراجعة الوثائق أثناء اللعب. هذا هو السبب بالضبط في بناء Agency Pad. بدلاً من حشر كل ميزة في واجهة هاتف واحدة، قسمنا التجربة عبر جهازين مصممين خصيصًا. الهاتف يتعامل مع التفاعلات السريعة أثناء التنقل مثل المكالمات، الرسائل، والإشعارات، بينما يوفر الجهاز اللوحي تجربة كاملة للمهام الثقيلة بالبيانات. تفصل هذه المقالة متى يجب عليك استخدام كل جهاز وكيف يكملان بعضهما البعض على خادمك.

مساحة الشاشة وتخطيط واجهة المستخدم

الفرق الأكثر وضوحًا بين Agency Phone وAgency Pad هو حجم الشاشة. يستخدم Agency Phone نافذة عرض مدمجة بأسلوب الهاتف المحمول بحجم حوالي 360x640 بكسل، مصممة لتكون في زاوية شاشة اللاعب دون حجب اللعب. من ناحية أخرى، يفتح Agency Pad نافذة عرض بحجم الجهاز اللوحي بحوالي 800x600 بكسل تأخذ مساحة أكبر من الشاشة لكنها توفر مساحة استخدام أكبر بكثير. هذا مهم عند بناء تطبيقات تعرض جداول، نماذج، أو خرائط. تطبيق جهات اتصال بحجم الهاتف يعمل بشكل مثالي، لكن حاول ملاءمة MDT شرطة كامل مع سجلات المشتبه بهم، مذكرات التوقيف، وصور الأدلة على شاشة بعرض 360 بكسل وستصبح الأمور ضيقة بسرعة. إليك كيفية اكتشاف الجهاز الذي يعمل عليه تطبيقك وضبط التخطيط وفقًا لذلك:

-- client.lua: Detecting active device
local activeDevice = nil

RegisterNetEvent('agency:phone:opened', function()
    activeDevice = 'phone'
    SendNUIMessage({ action = 'setDevice', device = 'phone' })
end)

RegisterNetEvent('agency:pad:opened', function()
    activeDevice = 'pad'
    SendNUIMessage({ action = 'setDevice', device = 'pad' })
end)

-- In your NUI JavaScript
window.addEventListener('message', (e) => {
    if (e.data.action === 'setDevice') {
        document.body.classList.toggle('device-phone', e.data.device === 'phone')
        document.body.classList.toggle('device-pad', e.data.device === 'pad')
    }
})

نظرة عامة على مقارنة الميزات

كلا الجهازين يشتركان في إطار تطبيق مشترك، مما يعني أن أي تطبيق تبنيه يمكن تشغيله تقنيًا على أي من الجهازين. ومع ذلك، بعض الميزات محسنة لأحدهما دون الآخر. يتفوق Agency Phone في المكالمات وتكامل الدردشة الصوتية, الرسائل النصية والمراسلة, إشعارات سريعة, الكاميرا ومعرض الصور, إدارة جهات الاتصال، و ملاحة GPS. Agency Pad يتألق مع سجلات MDT والشرطة, لوحات إدارة الأعمال, عرض وتحرير المستندات, تراكبات الخريطة مع علامات متعددة, شبكات إدارة الجرد، و لوحات الإدارة. الفرق الرئيسي هو تكرار التفاعل مقابل كثافة المعلومات. إذا كان اللاعب يحتاج إلى إلقاء نظرة سريعة أثناء اللعب، فيجب أن يكون ذلك على الهاتف. إذا كان يحتاج إلى الجلوس والعمل على البيانات، فالـ pad هو الخيار الصحيح.

اعتبارات الأداء

تشغيل جهازين NUI في نفس الوقت هو قلق شائع لمالكي السيرفرات القلقين بشأن أداء العميل. الخبر السار هو أن كل من Agency Phone و Agency Pad مبنيان على نفس محرك العرض المحسن. عند إغلاق جهاز، يتم تدمير إطار NUI الخاص به بالكامل بدلاً من إخفائه فقط، مما يحرر الذاكرة وموارد GPU. في المتوسط، فتح أي من الجهازين يكلف حوالي 0.01 مللي ثانية من وقت إطار العميل، وهو أمر ضئيل. الأمر المهم هو تجنب فتح كلا الجهازين في نفس الوقت. مدير الأجهزة المدمج لدينا يتعامل مع هذا تلقائياً بإغلاق الهاتف عند فتح اللوح والعكس بالعكس. إذا كنت تبني تكاملات مخصصة، تأكد من احترام هذا النمط:

-- Ensure only one device is active at a time
local function openPad()
    if GetResourceState('agency-phone') == 'started' then
        TriggerEvent('agency:phone:close')
    end
    Wait(100) -- Allow phone NUI to clean up
    SetNuiFocus(true, true)
    SendNUIMessage({ action = 'openPad' })
end

local function openPhone()
    if GetResourceState('agency-pad') == 'started' then
        TriggerEvent('agency:pad:close')
    end
    Wait(100)
    SetNuiFocus(true, true)
    SendNUIMessage({ action = 'openPhone' })
end

حالة الاستخدام: خوادم الشرطة والطوارئ الطبية

تمثل محاكاة أدوار إنفاذ القانون وخدمات الطوارئ المكان الذي يتألق فيه مزيج الهاتف واللوحي من Agency حقًا. يستخدم الضباط في الدوريات Agency Phone للاتصالات اللاسلكية، وإجراء فحوصات سريعة للوحات الأرقام عبر أمر بسيط، وتلقي إشعارات الإرسال. عند وصولهم إلى المركز أو الحاجة إلى إجراء عمل مفصل، يستخدمون Agency Pad للوصول إلى MDT الكامل مع ملفات المشتبه بهم، وملفات القضايا، وإدارة مذكرات التوقيف، وتتبع الأدلة. يستخدم لاعبو EMS الهاتف للمكالمات الطارئة الواردة واللوحي لسجلات المرضى وإدارة المستشفى. يعكس هذا التقسيم كيفية عمل المستجيبين الأوائل في العالم الحقيقي: راديو وهاتف للاتصالات الميدانية، وجهاز كمبيوتر محمول أو لوحي لإدخال البيانات التفصيلية. يشعر سير العمل بأنه طبيعي ويحافظ على غمر المحاكاة لأن اللاعبين ينتقلون فعليًا بين الأجهزة حسب المهمة الحالية.

حالة الاستخدام: خوادم الأعمال والاقتصاد

لخوادم تحتوي على أنظمة اقتصاد عميقة، يصبح الـ pad أداة إدارة أعمال أساسية. يستخدم أصحاب المطاعم Agency Phone لأخذ طلبات العملاء عبر رسائل نصية سريعة ويتلقون إشعارات التوصيل، بينما يعمل Agency Pad كنظام نقاط بيع، متتبع مخزون، ولوحة مالية. يتصفح مشغلو معارض السيارات مخزون مركباتهم على عرض الشبكة الكبير للـ pad، مع صور، أسعار، ومستويات المخزون، ثم ينتقلون إلى الهاتف للاتصال بالمشترين المحتملين. يتحقق وكلاء العقارات من قوائم العقارات على واجهة الخريطة للـ pad ويجدولون الزيارات عبر تقويم الهاتف. النمط ثابت: الهاتف يتعامل مع الاتصالات والبحث السريع، بينما الـ pad يتعامل مع أي شيء يستفيد من عرض أكبر وعناصر واجهة مستخدم أكثر تعقيدًا.

بناء تطبيقات تعمل على كلا الجهازين

إذا كنت تطور تطبيقات مخصصة، فإن أفضل نهج هو تصميم متجاوب يتكيف مع أي جهاز يقوم بتحميله. استخدم استعلامات حاوية CSS أو تنسيق قائم على الفئة لضبط التخطيطات بناءً على الجهاز النشط. احتفظ بالمنطق الأساسي في وحدات JavaScript مشتركة وفرق فقط طبقة واجهة المستخدم. هنا مثال عملي لمكون تطبيق متجاوب يضبط تخطيط الشبكة بناءً على سياق الجهاز:

/* styles.css - Responsive app layout */
.app-grid {
    display: grid;
    gap: 0.75rem;
    padding: 1rem;
}

.device-phone .app-grid {
    grid-template-columns: 1fr;
    font-size: 0.875rem;
}

.device-pad .app-grid {
    grid-template-columns: repeat(3, 1fr);
    font-size: 1rem;
}

.device-phone .detail-panel {
    display: none; /* Hide detail panel on phone */
}

.device-pad .detail-panel {
    display: block;
    border-left: 1px solid rgba(255,255,255,0.1);
    padding-left: 1rem;
}

/* Phone: stack navigation vertically */
.device-phone .app-nav {
    display: flex;
    overflow-x: auto;
    white-space: nowrap;
}

/* Pad: sidebar navigation */
.device-pad .app-nav {
    display: flex;
    flex-direction: column;
    width: 200px;
}

أي واحد يجب أن تشتريه لسيرفرك؟

إذا كنت تدير خادم لعب أدوار عام ولا يمكنك اختيار أكثر من واحد، ابدأ بـ Agency Phone. يغطي أكثر التفاعلات شيوعًا بين اللاعبين وكل خادم يحتاج إلى نظام هاتف قوي. أضف Agency Pad لاحقًا عندما ينمو خادمك إلى أنظمة أكثر تعقيدًا مثل MDTs، إدارة الأعمال، أو أدوات الإدارة. إذا كنت تبني خادمًا جادًا لإنفاذ القانون أو يركز على الاقتصاد من البداية، احصل على كلاهما. التجربة المجمعة أكثر غمرًا بكثير من محاولة فرض كل شيء في جهاز واحد. كلا المنتجين يتلقيان تحديثات منتظمة ويشتركان في نفس واجهة برمجة التطبيقات الإضافية، لذا أي استثمار تقوم به في تطوير التطبيقات المخصصة ينتقل بسلاسة بين الجهازين. تحقق من متجرنا لأسعار الحزم إذا قررت الحصول على كلاهما.

جاهز للبدء؟

احصل على السكربتات من متجرنا، أو انضم إلى Discord للدعم والتحديثات ونظرة على ما هو قادم.