كيف تركّب السلاح
هالدليل للملفات اللي تنزّلها من الاستوديو: ريسورس السلاح، ريسورس البروب، وملف الأيقونات. الأسماء اللي بين علامتين مثل <name> تتغيّر حسب اللي سويته، والاستوديو يعطيك الأسماء الصحيحة في نافذة التنزيل وفي ملف README.md داخل المجلد.
وش يوصلك في الملف المضغوط
كل تنزيل ملف zip واحد. ريسورس السلاح والبروب يجون كمجلد واحد جاهز تحطه في سيرفرك مثل ما هو، والأيقونات تجي صور بس.
سلاح جديد
الملف اسمه weapon_<name>.zip، و<name> هو معرّف السلاح اللي اخترته بالحروف الصغيرة. داخله مجلد weapon_<name> فيه:
fxmanifest.luaوclient.lua: المانيفست، وسكربت صغير يسجّل اسم السلاح اللي يظهر في اللعبة.meta/: ملفات الميتا، منهاweapons.metaوweaponarchetypes.metaوweaponanimations.meta، وملفات التريل إذا حطيت تريل.stream/: مجسم السلاح وتكستشره (.ydrو.ytd) وملفات المؤثرات.data/: ملف التريل (.dat)، إذا فيه تريل.README.md: أسماء السلاح وأسطر الإنفنتوري الخاصة فيه.weapon_<name>.png: أيقونة السلاح بمقاس 100 × 100، إذا سويت له أيقونة.
سلاح من باك عندك (أد أون)
يرجع لك نفس المجلد اللي حمّلته وبنفس اسمه، واللي تغيّر فيه بس الملفات اللي احتاجها التريل والتريسر. هالمجلد يحل محل القديم في سيرفرك.
بروب
الملف اسمه ls_prop_<id>.zip. داخله مجلد ls_prop_<id> فيه fxmanifest.lua وREADME.md، ومجلد stream فيه ملفي .ydr و.ytyp باسم المجسم ls_<id>_<tag>. الـ <tag> أربع خانات يضيفها الاستوديو عشان ما يتعارض بروبك مع بروب ثاني بنفس الاسم، وتلقى الاسم كامل في README.md.
أيقونات
الملف اسمه <item>_icons.zip، و<item> هو اسم الغرض اللي كتبته. داخله:
ox_inventory/web/images/<item>.png: لـ ox_inventory، بمقاس 128 (أو أكبر مقاس سويته إذا ما اخترت 128).qb-inventory/html/images/<item>.png: لـ qb-inventory، بمقاس 100 (أو أصغر مقاس سويته).all_sizes/: كل المقاسات اللي سويتها (من 100 و128 و256 و512)، بأسماء مثل<item>_256.png، لأي إنفنتوري ثاني.
حط المجلد في resources
فك الضغط، وحط المجلد داخل مجلد resources في سيرفرك.
- خلّ اسم المجلد مثل ما هو. سطر
ensureيستخدم اسم المجلد، والسلاح اللي فيه تريل يحمّل التريل منresources:/weapon_<name>/data/، فلو غيّرت الاسم يختفي التريل. - إذا فيه نسخة قديمة من نفس الريسورس، احذفها وحط الجديدة مكانها. لا تخلي النسختين مع بعض، لأن هذا أشهر سبب إن ما يتغيّر شي.
- للسلاح من باك عندك، لازم يبقى اسم المجلد نفس اسم مجلد الباك بالضبط.
أضف ensure في server.cfg
افتح server.cfg وأضف سطر للريسورس، تحت سطر الإنفنتوري:
ensure weapon_<name>
للبروب، السطر يكون باسم مجلد البروب، وهو ls_prop_<id> إذا ما غيّرته:
ensure ls_prop_<id>
الأيقونات ما تحتاج سطر، لأنها صور تنحط داخل الإنفنتوري نفسه.
أسطر الإنفنتوري للسلاح
عشان يصير السلاح غرض تقدر تعطيه وتشيله، أضف أسطره للإنفنتوري. الاستوديو يعطيك الأسطر جاهزة باسم سلاحك ونوعه في نافذة التنزيل وفي README.md، فانسخها من هناك.
الأمثلة تحت لسلاح نوعه Pistol. الوزن والذخيرة ونوع السلاح تتغيّر حسب النوع اللي تختاره، و<Label> هو اسم السلاح اللي يظهر للاعب.
qb-core
في qb-core/shared/items.lua، داخل جدول الأغراض:
['weapon_<name>'] = { ['name'] = 'weapon_<name>', ['label'] = '<Label>', ['weight'] = 1000, ['type'] = 'weapon', ['ammotype'] = 'AMMO_PISTOL', ['image'] = 'weapon_<name>.png', ['unique'] = true, ['useable'] = false, ['description'] = '<Label>' },
وفي qb-core/shared/weapons.lua، داخل جدول الأسلحة:
[`weapon_<name>`] = { ['name'] = 'weapon_<name>', ['label'] = '<Label>', ['weapontype'] = 'Pistol', ['ammotype'] = 'AMMO_PISTOL', ['damagereason'] = 'Pistoled / Blasted / Plugged / Bust a cap in' },
ox_inventory
في ox_inventory/data/weapons.lua، داخل Weapons = { }:
['WEAPON_<NAME>'] = {
label = '<Label>',
weight = 1130,
durability = 0.1,
ammoname = 'ammo-9',
},
لاحظ إن qb-core يكتب اسم الغرض بالحروف الصغيرة (weapon_<name>)، و ox_inventory يكتبه بالحروف الكبيرة (WEAPON_<NAME>). انسخ كل سطر مثل ما هو.
بعد ما تعيد تشغيل السيرفر، جرّب تعطي نفسك السلاح، مثلاً في qb-core: /giveitem 1 weapon_<name> 1.
إذا السلاح من باك عندك وهو موجود في الإنفنتوري من قبل، ما تحتاج تضيف شي.
وين تحط الأيقونات
اسم ملف الصورة لازم يطابق اسم الغرض بالضبط، والحروف الكبيرة والصغيرة تفرق.
- ox_inventory: انسخ الصورة إلى
ox_inventory/web/images/. - qb-inventory: انسخ الصورة إلى
qb-inventory/html/images/. سطر qb-core للسلاح فيه['image'] = 'weapon_<name>.png'، فلازم يكون الملف بنفس الاسم. - ملف الأيقونات مرتّب بنفس هالمجلدات، فانسخ كل صورة للمجلد اللي يقابلها في سيرفرك.
- أيقونة السلاح اللي تجي مع ريسورس السلاح اسمها
weapon_<name>.png.
البروبات: الستريم والإظهار
البروبات تجريبية: ما انجرب بروب مسوّى بهالطريقة داخل اللعبة للحين، فجرّبه على سيرفر تجريبي قبل السيرفر الأساسي.
الستريم يصير لحاله: فايف ام يستريم كل اللي داخل مجلد stream، والمانيفست فيه سطر يعرّف اللعبة على ملف .ytyp:
data_file 'DLC_ITYP_REQUEST' 'stream/ls_<id>_<tag>.ytyp'
لا تغيّر أسماء الملفات: الربط بين ملف .ydr وملف .ytyp يعتمد على اسم المجسم.
عشان تطلّع البروب داخل اللعبة، استخدم اسم المجسم في أي سكربت كلاينت. هالمثال من README.md، ويضيف أمر spawn_ls_<id>_<tag> يحط البروب قدامك على الأرض:
local MODEL = GetHashKey('ls_<id>_<tag>')
RegisterCommand('spawn_ls_<id>_<tag>', function()
if not IsModelInCdimage(MODEL) then
print('ls_<id>_<tag> is not streamed: is the resource started?')
return
end
RequestModel(MODEL)
local deadline = GetGameTimer() + 10000
while not HasModelLoaded(MODEL) do
if GetGameTimer() > deadline then
print('ls_<id>_<tag> took too long to load')
return
end
Wait(0)
end
local ped = PlayerPedId()
local x, y, z = table.unpack(GetOffsetFromEntityInWorldCoords(ped, 0.0, 1.5, 0.0))
local object = CreateObject(MODEL, x, y, z, true, true, false)
PlaceObjectOnGroundProperly(object)
FreezeEntityPosition(object, true)
SetModelAsNoLongerNeeded(MODEL)
end, false)
التصادم صندوق بسيط حول المجسم كله، مو شكله بالضبط. وإذا اخترت بدون تصادم، اللاعبين والسيارات يعدّون من خلاله.
أعد تشغيل السيرفر كامل
بعد ما تضيف ريسورس السلاح وأسطر الإنفنتوري، أعد تشغيل السيرفر كامل، مو الريسورس بس.
- ليش؟ ميتا الأسلحة (
weapons.metaواللي معها) تنحمّل بس لما يشتغل السيرفر، فإعادة تشغيل الريسورس لحاله ما تكفي. - للبروب، يكفي تكتب
refreshوبعدهاensure ls_prop_<id>في كونسول السيرفر، أو تعيد تشغيل السيرفر. - إذا صدّرت السلاح مرة ثانية والألوان ما تغيّرت: أوقف السيرفر، احذف
cache/files/weapon_<name>، وبعدين شغّله. فايف ام يحتفظ هناك بروابط ثابتة (hard links) لملفات الستريم.
مشاكل شائعة
السلاح ما يطلع، أو يطلع مخفي
غالبًا الريسورس ما اشتغل. تأكد إن اسم المجلد نفس الاسم اللي في سطر ensure بالضبط، وإنك أعدت تشغيل السيرفر كامل، وشوف كونسول السيرفر إذا فيه خطأ عن الريسورس. وتأكد إن ما فيه نسختين من نفس الريسورس.
أمر giveitem يقول إن الغرض مو موجود
أسطر الإنفنتوري ما انضافت، أو انضافت في جدول غلط، أو السيرفر ما انعاد تشغيله بعدها. وتأكد إن اسم الغرض في الأمر مكتوب مثل ما هو في السطر.
الأيقونة ما تظهر
اسم الملف لازم يطابق اسم الغرض بالضبط وبنفس الحروف الكبيرة والصغيرة، ويكون في مجلد الصور الصحيح: web/images لـ ox_inventory وhtml/images لـ qb-inventory. في ox_inventory اسم السلاح بالحروف الكبيرة (WEAPON_<NAME>)، فإذا ما ظهرت أيقونة السلاح سمّ الصورة بنفس الشكل: WEAPON_<NAME>.png.
التريل اختفى
غالبًا انغيّر اسم المجلد. التريل ينحمّل من مسار فيه اسم المجلد، فرجّع الاسم مثل ما كان.
الألوان ما تغيّرت بعد ما صدّرت مرة ثانية
أوقف السيرفر، احذف cache/files/weapon_<name>، وبعدين شغّله. وتأكد إنك استبدلت المجلد القديم وما خليت النسختين.
سلاحي تعارض مع سلاح ثاني
اسم السلاح واسم الغرض واسم المجسم عامة على السيرفر كله. إذا فيه ريسورس ثاني يستخدم نفس الاسم، ابنِ السلاح من جديد بمعرّف ثاني بدل ما تغيّر الأسماء بيدك، لأن الاسم مكتوب في meta/weapons.meta وclient.lua وأسطر الإنفنتوري.
البروب ما يطلع
إذا كتب أمر الإظهار في كونسول F8 إن البروب is not streamed: is the resource started?، فالريسورس ما اشتغل: راجع سطر ensure واسم المجلد.
ما زبط معك؟
اسألنا في سيرفر الديسكورد حقنا، وأرسل اسم الريسورس وصورة من الخطأ اللي في الكونسول إذا فيه.
ادخل سيرفر الديسكوردإذا عندك حساب في الموقع فأنت عضو في سيرفرنا على ديسكورد أصلًا، واسألنا هناك.