تطوير Avenida Team ESX · QBCore · ox · vRP · Standalone

Interact system

نظام تفاعل ثلاثي الأبعاد + محرك حوارات للشخصيات، بدون أي اعتمادية. ضع تفاعلًا في أي مكان على الخريطة: على entity، أو على إحداثية حرة، أو على شخصية NPC تستدعيها من النداء نفسه. بدون ox_lib، وبدون فريمورك، ولا شيء تضبطه على السيرفر.

التسليم فوري
التحديثات مجانية مدى الحياة
الدعم Discord يوميًا
01 · الميزات

ما الذي يفعله

02 · SPECS

المواصفات
التقنية

الفريمورك الكل، كشف تلقائي ESX · QBCore · Qbox · ox · vRP · Standalone · Custom
الاعتماديات لا شيء ox_lib اختياري، معطل افتراضيًا
لغات داخل اللعبة 15 لغة مضمّنة ar · cs · de · en · es · fr · id · it · nl · pl · pt-br · ro · ru · th · tr
المصدر Tebex Escrow ملفات الإعداد والـ bridges مفتوحة أثناء التشغيل
الأداء 0.00ms في الخمول مقيس مع 100 تفاعل
03 · مضمَّن

كل ما
تحصل عليه

  • خمسة عشر ملف لغة، مملوءة عند التسليم

    لاعبوك يقرأون السكربت بلغتهم منذ أول تشغيل، والملفات خارج الـ escrow فتستطيع تصحيح أي سطر أثناء التشغيل. ملاحظة صريحة: هي مترجمة ومراجعة من طرفنا، لا مدققة من ناطقين أصليين للغات الخمس عشرة. أخبرنا بما يبدو ركيكًا في لغتك ونصححه.

  • كل شيء يُضبط في config.lua

    النص والمفتاح والمسافات والأيقونة واللون الافتراضي للنقطة، والألوان المسماة، وربط اسم المفتاح برقم التحكم، والشخصية المستعملة حين لا يحددها إعداد النقطة، ومسافة الظهور، و`Config.Hud` لاختيار أي HUD يُخفى أثناء الحوار. وقد خرج هذا كله من الـ escrow في 1.1.0.

  • ثلاثة أمثلة عاملة

    watcher لأجهزة الصراف مسجَّل بـ hash النموذج مع قائمة بمفتاحين، وشخصية بحوار متفرع كامل ونقطة GPS، ونقطة رقص بعدة مفاتيح. ملفات حقيقية في `config/`، احذفها حين تصير لديك ملفاتك.

  • دعم على Discord وتحديثات مدى الحياة

    وصول إلى قناة الدعم، وكل تحديث قادم بلا تكلفة إضافية. لا نسخة مميزة، ولا إضافة مدفوعة.

04 · التوثيق

دليل الدمج

01

التثبيت

  1. ضع السكربت

    حمّل السكربت من حسابك على Tebex، ثم انسخ مجلد avenida_interact/ إلى resources/[avenida]/ على سيرفرك.

  2. فعّله في server.cfg

    أضف ensure avenida_interact. لا شيء يحتاج إلى أن يُحمَّل قبله: منذ 1.1.0 لا اعتمادية للسكربت، فلا يهم ترتيب التحميل.

  3. اضبط قيمك الافتراضية

    افتح config/config.lua واضبط ما ينطبق على كل النقاط: النص، والمفتاح، ومسافتي showIcon وcanInteract، والأيقونة، واللون، والألوان المسماة، ومسافة ظهور الشخصيات، وConfig.Hud لاختيار أي HUD يُخفى أثناء الحوار.

  4. أزل الأمثلة

    تبقى الأمثلة في config/entities/ وconfig/peds/ وconfig/positions/ فعّالة ما دامت ملفاتها موجودة. احذف ما لا تريده، فالـ manifest يلتقط هذه المجلدات بنمط عام، ولا شيء آخر تعدله.

  5. جرّب إعادة التحميل الساخنة

    شغّل السيرفر ثم اكتب /restart avenida_interact داخل اللعبة. تختفي الأيقونات وتعود نظيفة، وتبقى النقاط التي سجّلتها ريسورساتك، دون إعادة تشغيل جلستك.

02

البدء السريع

أول نقطة تفاعل لديك في 30 ثانية

أنشئ ملف `myscript/client.lua` في ريسورسك والصق هذا. تظهر علامة سماوية على بعد 30 مترًا، وتنفتح نافذة "E - Hello" على بعد مترين. الشيء الوحيد الذي يجب أن يعمل هو avenida_interact نفسه.

lua
-- myscript/client.lua
exports.avenida_interact:positionRegister({
    coords      = vec3(-265.0, -963.6, 31.2),
    showIcon    = 30.0,           -- marker fades in at 30m
    canInteract = 2.0,            -- label unrolls at 2m
    hintIcon    = 'interact',     -- see the icon list below
    hintColor   = '#22d3ee',      -- hex, or an alias from Config.Colors
    message     = 'Hello',
    bind        = 'E',
    onInteract  = function()
        TriggerEvent('chat:addMessage', { args = { 'Hello, world!' } })
    end,
})
03

مرجع الـ API

exports عامة مرتّبة حسب المجال. كل صف يعرض توقيع الاستدعاء وما يفعله، لا كيف يفعله.

Interact Points

  • positionRegister
    exports.avenida_interact:positionRegister(cfg) --> id

    يسجل نقطة على إحداثيات ثابتة. يقبل كل الحقول البصرية (hintIcon، hintColor، showIcon، canInteract، offsetZ، blips) إضافة إلى choices[] لعدة مفاتيح على النقطة نفسها. ويقبل canInteract رقمًا أو دالةً، فتستطيع ربط ظهور النافذة بوظيفة أو غرض أو مهلة. يعيد id.

  • pedRegister
    exports.avenida_interact:pedRegister(cfg) --> id

    يستدعي شخصية مضبوطة (نموذج، animDict وanimName أو scenario، وblip)، ويربط بها نقطة ويعيد رقمها. الشخصية لا تُقتل ولا تهرب ولا تسقط أرضًا. تظهر وتختفي عند حدّ Config.PedSpawnRange، أي 50 مترًا افتراضيًا. اضبط randomComponents = false على بائع له اسم معروف، وإلا رأى كل لاعب ملابس مختلفة.

  • pedRemove
    exports.avenida_interact:pedRemove(idx)

    أُضيف في 1.1.0. يزيل شخصية مسجّلة بـ pedRegister ويحذف تسجيلها، كي ينصرف صاحب المهمة المؤقّت عند انتهاء مهمته.

  • entityRegister
    exports.avenida_interact:entityRegister(cfg) --> id

    يربط نقطة بـ entity موجودة، تُمرَّر في cfg.entity. ويدعم cfg.bone لتعليق النافذة على عظمة بدلًا من مركز الـ entity. استعمله مع ما يستدعيه سكربت آخر: مركبة، وprop موضوع، وغرض ملقى.

  • entityRegisterByHash
    exports.avenida_interact:entityRegisterByHash(hash, cfg)

    watcher سلبي: ينطبق الإعداد على كل entity من هذا النموذج، الموجودة الآن والتي ستظهر لاحقًا. ويغطي خيط واحد كل الـ hash المسجلة، ويجسّها كل 5 ثوانٍ. هذا ما تريده لأجهزة الصراف وآلات البيع والأبواب، بدلًا من قائمة إحداثيات تصونها بنفسك.

  • entityRemove
    exports.avenida_interact:entityRemove(idx)

    يفك النقطة التي أعادها entityRegister. أما الـ entity نفسها فلا تُمس.

  • interactCreate
    exports.avenida_interact:interactCreate(cfg) --> id

    نقطة تُنشأ وتُزال عند الطلب. استعملها حين لا تعيش النقطة إلا وقتًا قصيرًا: هدف مهمة، وحقيبة على الأرض، وجثة تُفتَّش.

  • interactRemove
    exports.avenida_interact:interactRemove(id)

    يزيل نقطة أنشأها interactCreate، وعلامتها على الخريطة إن كانت أعلنت واحدة.

  • unlockLastInteract
    exports.avenida_interact:unlockLastInteract()

    تقفل النقطة نفسها بعد استعمالها، كي لا يشغّلها مرتين مفتاحٌ يبقى مضغوطًا. استدعِ هذا في نهاية إجرائك لإعادة تفعيلها. فإن بقي اللاعب في المدى عادت النافذة فورًا، وإلا انتظرت دخوله من جديد.

Prompt API

  • HandleTextUI
    exports.avenida_interact:HandleTextUI(id, data) --> duiHandler

    ينشئ أو يحدّث فقاعة ثلاثية الأبعاد مستقلة، بلا نقطة تفاعل خلفها. استعمله حين تريد التحكم في الظهور من خيطك أنت. يعيد الـ handler الذي تمرره إلى Draw3DSprite.

  • Draw3DSprite
    exports.avenida_interact:Draw3DSprite({ duiHandler, coords, maxDistance, hintOnly? })

    يرسم الفقاعة في فضاء العالم من خيط رسم، مصحَّحةً حسب نسبة الشاشة. ومع hintOnly = true تُرسم العلامة وحدها، وهي حالة النقطة العادية على المسافات البعيدة.

  • CloseTextUI
    exports.avenida_interact:CloseTextUI(id)

    يخفي الفقاعة لكنه يبقي الـ DUI في الذاكرة، فتكون إعادة الفتح فورية.

  • RemoveTextUI
    exports.avenida_interact:RemoveTextUI(id)

    يزيل فقاعة نهائيًا ويحرر الـ DUI. استعمله حين تعلم أنها لن تعود.

  • RemoveTextUIs
    exports.avenida_interact:RemoveTextUIs()

    يزيل كل الفقاعات النشطة. ويُستدعى تلقائيًا عند إيقاف الريسورس.

  • IsDuiVisible
    exports.avenida_interact:IsDuiVisible() --> boolean

    يعيد true ما دامت نافذة معروضة على الشاشة. اقرأه كي لا تتكدس نوافذك فوق تفاعل جارٍ.

Key handler

  • HandleHoldTextUI
    exports.avenida_interact:HandleHoldTextUI(id, data) --> duiHandler

    الطبقة التي بُنيت عليها النقاط: ترسم نافذة على Coords وتراقب مفتاحها من خيط إدارة كل 50ms. ويأخذ data الحقول BindToHold (رقم التحكم)، DistanceHold، Coords، وChoicesUI وChoicesCtrl لنافذة بعدة مفاتيح، وonCallback(id) وcanInteract(id, dist). وتنطلق النافذة عند الضغط بفاصل 500ms، وينفَّذ الـ callback داخل pcall، فخطأ من جهتك لا يكسر النافذة.

  • CloseHoldTextUI
    exports.avenida_interact:CloseHoldTextUI(id)

    يخفي النافذة دون تدمير النسخة، لخروج نظيف حين يغادر اللاعب المنطقة.

  • RemoveHoldTextUI
    exports.avenida_interact:RemoveHoldTextUI(id)

    يدمر نسخة واحدة ويحرر الـ DUI الخاص بها.

  • RemoveHoldTextUIs
    exports.avenida_interact:RemoveHoldTextUIs()

    يدمر كل النسخ النشطة.

04

وصفات

أمثلة جاهزة للنسخ واللصق للحالات الشائعة. ضعها في موردك، وعدّل القيم، وانشرها.

أبسط الحالات: نقطة على إحداثيات، مع علامتها معلنة في الجدول نفسه. تظهر العلامة على بعد 30 مترًا والنص على بعد مترين. ضعه في أي ملف client في ريسورسك.

lua
exports.avenida_interact:positionRegister({
    coords      = vec3(149.5, -1040.4, 29.4),
    showIcon    = 30.0,
    canInteract = 2.0,
    hintIcon    = 'bank',
    hintColor   = 'blue',
    message     = 'Use the ATM',
    bind        = 'E',
    onInteract  = function()
        TriggerEvent('myserver-banking:openATM')
    end,
    blips = {
        sprite  = 277,
        color   = 2,
        scale   = 0.8,
        text    = 'ATM',
        display = 4,
    },
})
05

استكشاف الأخطاء

  • لا تحتاج إليه. منذ 1.1.0 ينفذ `bridges/compat.lua` إنشاء الـ DUI ونقاط القرب وأدوات الانتظار بـ natives خالصة، وسطر `@ox_lib/init.lua` معلَّق في الـ manifest. وإن فضلت المرور عبر ox_lib، اضبط `Config.UseOxLib = true` وأزل التعليق عن ذلك السطر. المساران مدعومان، ومسار الـ natives هو الافتراضي.
التقييمات

ماذا يقول المشترون

5.0 2 تقييمات موثّقة

  • Revoria

    very good scriptwriters a reactive and competent listening team I recommend go there with your eyes closed!!

  • theara

    Best script, best support! Fast support and friendly!

05 · من نفس المطوّر

سكربتات أخرى من Avenida Team

متجر Avenida Team →
Barber shop
مميز Avenida Team

Barber shop

صالون حلاقة مُخرَج كمشهد سينمائي، بكاميرا يتحكم بها اللاعب فعلًا. الشخصية تدخل وتجلس، ويبدأ الحلاق عمله بينما تُؤطّر الرأسَ كاميرا مدارية. الشعر واللحية وطبقات الوجه ومجموعة تفاصيل البشرة كاملة، تراها معاينةً حية قبل أن تدفع دولارًا واحدًا.

  • ESX
  • QBCore
  • vRP
  • Standalone
  • oxmysql
‏15.00 € عرض
Clothing store
مميز Avenida Team

Clothing store

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

  • ESX
  • QBCore
  • vRP
  • Standalone
  • oxmysql
‏21.00 € عرض
Core Skin (3 in 1)
مميز Avenida Team

Core Skin (3 in 1)

صالون حلاقة واستوديو وشم ومتجر ملابس في سكربت FiveM واحد. 1615 وشمًا، وكل مكوّنات الملابس وإكسسواراتها، ومجموعة الرأس والبشرة كاملة، موزّعة على 36 متجرًا. واجهة واحدة، وكاميرا واحدة، ومسار شراء واحد، وشيء واحد تثبّته على ESX أو QBCore أو vRP أو من دون فريمورك.

  • ESX
  • QBCore
  • vRP
  • Standalone
  • oxmysql
‏36.00 € عرض
السلة
Spirit RP
Discord