FiveM Frameworks IntelliSense
إكستنشن لـ VS Code يجمع لك دوال فريمويركات فايف ام كلها في مكان واحد، وأنت
تكتب يطلع لك الاقتراح والشرح والباراميترات — بدون ما تفتح الدوكيومنتيشن ولا
تروح تدوّر في qb-core وش اسم الدالة بالضبط.
يدعم ثلاث فريمويركات — QBCore و Qbox (qbx_core) و ESX — وخمسة
موارد تستخدمها كل يوم: ox_lib و ox_inventory و qb-target و
qb-menu و qb-inventory. وتجي معه دوال فايف ام الأصلية (natives).
وش يسوي بالضبط
| الشي |
التفاصيل |
| إكمال تلقائي |
تكتب QBCore.Functions. ويطلع لك كل الدوال مع شرحها |
| شرح عند الوقوف |
توقف على أي دالة يجيك الوصف والباراميترات وش ترجّع |
| مساعدة التواقيع |
تفتح قوس ويوريك الباراميترات وحدة وحدة وأنت تكتب |
| الانتقال للتعريف |
F12 على أي دالة يوديك لتعريفها |
| تنسيق الكود |
Shift+Alt+F ينسّق ملف اللوا كامل |
| سيرفر ولا كلاينت |
كل دالة مكتوب فوقها [server] أو [client] |
| تنبيه المكان الغلط |
تنادي دالة سيرفر في ملف كلاينت؟ يجيك خط تحتها قبل ما تشغّل |
عدد الدوال المغطّاة الحين: ١١٠٢ دالة و ٢٠٣ صنف — بدون احتساب الـ natives.
وش يدعم بالتفصيل
QBCore — ١٤٤ دالة
| تكتب |
يطلع لك |
QBCore.Functions. |
جلب اللاعبين · الكولباكات · المركبات · الأغراض · البَكِتس |
QBCore.Player. |
تسجيل الدخول والخروج · الحفظ · الشخصيات |
QBCore.Shared. |
الأغراض والوظائف والعصابات والأسلحة |
Player.Functions. |
الفلوس · الوظيفة · العصابة · الميتاداتا · السمعة |
QBCore.Commands. |
إضافة الأوامر وحذفها |
كائن اللاعب موصول تلقائيًا — أول ما تكتب:
local Player = QBCore.Functions.GetPlayer(source)
Player.Functions. -- ← يعرف نوعه ويكمّل لك دواله
Qbox — ١٣٦ دالة و ٤٦ صنف
| تكتب |
يطلع لك |
exports.qbx_core: |
كل تصديرات Qbox، سيرفر وكلاينت |
qbx. |
مكتبة الأدوات: string · math · table · array |
Qbox هو الأغنى بالأنواع — الأصناف والقوائم المحدودة محمّلة كلها، فلو كتبت
نوع إشعار غلط ينبّهك قبل ما تشغّل السيرفر:
exports.qbx_core:Notify('تم', 'succes') -- ← ينبّهك: 'success' مو 'succes'
ESX — ٣٤٣ دالة و ٣٨ صنف
| تكتب |
يطلع لك |
ESX. |
اللاعبين · الكولباكات · الأوامر · الأغراض القابلة للاستخدام |
xPlayer. |
الفلوس والحسابات · المخزون · الوظيفة · الأسلحة |
ESX.Game. · ESX.UI. |
أدوات الكلاينت والواجهات |
ESX أدقّ فريمويرك في توثيقه، فتجي معه أنواع كاملة مثل ESXAccount و
ESXJob و ESXInventoryItem، ويمسك أخطاء حقيقية:
local xPlayer = ESX.GetPlayerFromId(source)
xPlayer.setJob('police', 2) -- ← ينبّهك: الرتبة string مو رقم
الموارد
مو بس الفريمويركات — الموارد اللي تقعد فيها أكثر من الفريمويرك نفسه:
| المورد |
التغطية |
تكتب |
| ox_lib |
٢٥٧ دالة · ٨٧ صنف |
lib. |
| ox_inventory |
٩٩ دالة · ١١ صنف |
exports.ox_inventory: |
| qb-target |
٥٦ تصدير |
exports['qb-target']: |
| qb-inventory |
٣٢ تصدير |
exports['qb-inventory']: |
| qb-menu |
٣ تصديرات |
exports['qb-menu']: |
ox_lib أغنى واحد فيهم من ناحية التوثيق — أغنى حتى من الفريمويركات:
lib.notify({ title = 'تم', type = 'success' })
lib.callback.await('my:callback', false)
lib.inputDialog('العنوان', { 'الحقل' })
ox_target غير مدعوم — يسجّل تصديراته داخل حلقة (exports(index, value))
فأسماؤها ما تنوجد إلا وقت التشغيل، ولا يمكن استخراجها من الكود.
يعرف وين مكان الكود الصح
أشهر خطأ في فايف ام كله: تنادي دالة سيرفر في ملف كلاينت. الخطأ ما يظهر
إلا وقت التشغيل، وكونسول فايف ام ما يقول لك وين المشكلة.
الإكستنشن يمسكها وأنت تكتب:
-- client/main.lua
lib.notify({ title = 'مرحبا' }) -- ✅ كلاينت، تمام
local xPlayer = ESX.GetPlayerFromId(1)
-- ~~~~~~~~~~~~~~~~~~~~
-- ESX.GetPlayerFromId تشتغل على السيرفر، وهذا ملف كلاينت
-- — ناديها بحدث أو كولباك بدل ما تناديها مباشرة.
--
-- ESX.GetPlayerFromId runs on the server, but this file runs on the client.
-- Reach it with an event or a callback instead.
وكيف يعرف إن هذا ملف كلاينت؟ يقرأ fxmanifest.lua حق المورد نفسه —
نفس الملف اللي يقرأه السيرفر:
client_scripts { 'client/*.lua' }
server_scripts { 'server/*.lua' }
shared_script 'config.lua'
يعني الجواب مأخوذ من مصدر الحقيقة لا من تخمين أسماء المجلدات. ولو
المانيفست ما ذكر الملف، يرجع للأسماء الشائعة (client/ و sv_ و
*_client.lua...). والملفات المشتركة (shared_script) ما تتفحص أصلاً
لأنها تشتغل على الجهتين.
الفحص يغطّي ٣٣٩ دالة جهتها مقطوعة. تبي تطفيه؟
{ "fivemFrameworks.checkSide": false }
التركيب
من داخل VS Code: افتح تبويب Extensions ودوّر:
FiveM Frameworks IntelliSense
ركّبه وخلاص. بيركّب معه تلقائيًا إكستنشن Lua حق sumneko لأنه هو اللي
يشغّل الإكمال والتنسيق — ما تحتاج تسوي شي.
بعدها افتح مجلد سيرفرك أو مجلد السكربت (أي مجلد فيه fxmanifest.lua)
والإكستنشن يشتغل لحاله.
كيف يعرف أي فريمويرك عندك
يشوف الموارد الموجودة في المجلد المفتوح:
| لو لقى مجلد |
يحمّل تعريفات |
qb-core |
QBCore |
qbx_core |
Qbox |
es_extended |
ESX |
ox_lib |
ox_lib |
ox_inventory |
ox_inventory |
qb-target |
qb-target |
qb-menu |
qb-menu |
qb-inventory |
qb-inventory |
كل واحد يُكتشف لحاله — يعني لو سيرفرك QBCore + ox_lib، تجيك تعريفات
الاثنين بس، بدون ضجيج ESX ولا Qbox.
ولو ما لقى ولا واحد، يحمّلها كلها عشان ما تقعد بلا إكمال.
تبي تختار بنفسك؟ من الإعدادات:
{
// "auto" أو أي مزيج من:
// "qbcore" · "qbx" · "esx" · "ox_lib" · "ox_inventory"
// "qb_target" · "qb_menu" · "qb_inventory"
"fivemFrameworks.frameworks": ["qbcore", "ox_lib"]
}
وفيه أمر جاهز من لوحة الأوامر (Ctrl+Shift+P):
FiveM: Reload framework definitions
من وين جايّة التعريفات
مو مكتوبة بالإيد — تتسحب من مستودعات الفريمويركات الرسمية نفسها، وتتولّد
منها ملفات تعريف يفهمها Lua Language Server:
يعني لمن يطلع تحديث لأي فريمويرك، تحديث التعريفات أمر واحد:
node tools/generate.js
وبعده تتأكد إن كل شي طلع سليم:
node tools/check.js
المتطلبات
VS Code إصدار 1.80 أو أحدث — وبس. الباقي يتركّب معه تلقائيًا:
| يتركّب معه |
ليش |
Lua — sumneko |
محرّك الإكمال والتنسيق. إجباري، بدونه ما فيه شي |
| cfxlua-vscode |
دوال فايف ام الأصلية (natives) مثل GetEntityCoords. تقدر تشيله لو ما تبيه |
يعني تركيب واحد يعطيك: الفريمويركات + الـ natives + التنسيق.
ملاحظات
- الإكستنشن ما يغيّر إعداداتك إلا شيئين: يضيف مسار التعريفات لـ
Lua.workspace.library، ويخلي Lua.runtime.version على LuaJIT لأن
هذا اللي يشغّله فايف ام فعليًا.
- ما يفتح اتصال شبكة، وما يشغّل عمليات، وما يقرأ ملفاتك. ملفات التعريف
موسومة
---@meta يعني تُقرأ كأنواع ولا تُنفَّذ أبدًا.
المطوّر
العذلوي — مطوّر سكربتات وسيرفرات فايف ام · athlawi.vercel.app
سويت هذا الإكستنشن لأني أشتغل على أكثر من سيرفر وكل واحد على فريمويرك
مختلف، وتعبت وأنا أفتح مجلد qb-core و es_extended كل شوي أدوّر اسم
دالة أو ترتيب باراميتراتها. صار عندي فأحببت أنشره لغيري.
لقيت خطأ في التعريفات؟ أو تبي فريمويرك ثاني يتدعّم؟ افتح Issue وأشوفها.
In English
A VS Code extension that bundles the APIs of the three major FiveM frameworks
and the resources you actually spend your day in — into one install.
1,102 functions and 203 classes with completion, hover documentation, signature
help, go-to-definition and formatting. Every function is tagged [server] or
[client] so you never call one on the wrong side.
|
Coverage |
| QBCore |
144 functions — QBCore.Functions.*, QBCore.Player.*, QBCore.Shared.*, and player methods typed through GetPlayer |
| Qbox |
136 functions, 46 classes — exports.qbx_core:* and the qbx.* utility library |
| ESX |
343 functions, 38 classes — ESX.*, xPlayer.*, ESX.Game.*, ESX.UI.* |
| ox_lib |
257 functions, 87 classes — the whole lib.* surface |
| ox_inventory |
99 functions, 11 classes — exports.ox_inventory:* |
| qb-target · qb-inventory · qb-menu |
91 exports |
Definitions are generated straight from each project's official repository
rather than written by hand, so an upstream update is one command away
(node tools/generate.js). Open any folder containing an fxmanifest.lua and
whatever it contains is detected and loaded — nothing else.
ox_target is not covered: it registers its exports in a loop, so the names
exist only at runtime and cannot be read out of the source.
One install covers frameworks, natives and formatting. Completion and
formatting come from the
Lua
language server, and FiveM's own natives from
cfxlua-vscode;
both install alongside this extension, and the natives one can be removed if
you would rather not have it.
Built by Athlawi — athlawi.vercel.app ·
github.com/Ryanathlawi — a FiveM script and
server developer, out of the daily annoyance of digging through qb-core and
es_extended to remember a function name. MIT licensed —
issues and requests welcome.