متجر ضبط المركبات FiveM: برمجة LS Customs بشكل صحيح
تشغيل ورشة تعديل سيارات مناسبة على سيرفرك في FiveM. العجلات، ترقيات المحرك، الطلاء وأفضل سكربتات LS Customs المخصصة لـ QBCore و ESX.
Agency Scripts
المؤسس والمطور الرئيسي في Agency Scripts
تعديل المركبات في سياق اللعب التمثيلي
تخصيص المركبات هو أحد أكثر الميزات شعبية في أي سيرفر لعب تمثيلي على FiveM. يستثمر اللاعبون وقتًا ومالًا كبيرين في سياراتهم، ويمنحهم متجر التعديل القدرة على تخصيص سياراتهم بترقيات أداء، تعديلات بصرية، طلاء مخصص، وقطع غيار بعد البيع. نظام التعديل المصمم جيدًا لا يقتصر على عرض وظائف تعديل المركبات المدمجة في GTA من خلال قائمة. بل يخلق نظامًا بيئيًا كاملاً يشمل ورش ميكانيكيين يديرها اللاعبون، هياكل تسعير تعمل كمصارف اقتصادية، مؤقتات تركيب تخلق أوقات انتظار واقعية، وسوق قطع حيث يمكن الحصول على المكونات من موردين مختلفين بجودات متفاوتة. يصبح متجر التعديل مركزًا اجتماعيًا يجتمع فيه عشاق السيارات، يبني الميكانيكيون سمعتهم، وكل مركبة معدلة تحكي قصة ذوق وميزانية مالكها.
فهم الوظائف الأصلية لتعديل مركبات GTA
يكشف GTA V عن تعديلات المركبات من خلال سلسلة من الدوال الأصلية التي تتيح لك تطبيق ترقيات على فتحات تعديل محددة. كل مركبة لديها مجموعة من أنواع التعديلات المحددة بمؤشرات رقمية: ترقيات المحرك تستخدم المؤشر 11، الفرامل تستخدم المؤشر 12، ناقل الحركة يستخدم المؤشر 13، التعليق يستخدم المؤشر 15، والأجزاء البصرية مثل المفسدات، الصدامات، والجيوب تستخدم المؤشرات من 0 إلى 10. ال SetVehicleMod native يطبق تعديلًا محددًا من الخيارات المتاحة لطراز المركبة ونوع التعديل. ليست كل مركبة تدعم كل فئة تعديل، لذا تحتاج إلى التحقق من التوفر باستخدام GetNumVehicleMods قبل عرض الخيارات على اللاعب. تستخدم دهانات المركبات natives منفصلة مثل SetVehicleColours للألوان الأساسية والثانوية، SetVehicleExtraColours للألوان اللؤلؤية وألوان العجلات، و SetVehicleCustomPrimaryColour لقيم RGB المخصصة:
-- Mod type indices reference
local ModTypes = {
spoiler = 0,
front_bumper = 1,
rear_bumper = 2,
side_skirt = 3,
exhaust = 4,
frame = 5,
grille = 6,
hood = 7,
fender = 8,
right_fender = 9,
roof = 10,
engine = 11,
brakes = 12,
transmission = 13,
horns = 14,
suspension = 15,
armor = 16,
turbo = 18,
xenon = 22,
front_wheels = 23,
back_wheels = 24,
plate_holder = 25,
vanity_plates = 26,
trim = 27,
ornaments = 28,
dashboard = 29,
dial = 30,
door_speaker = 31,
seats = 32,
steering_wheel = 33,
shifter_leavers = 34,
plaques = 35,
speakers = 36,
trunk = 37,
hydraulics = 38,
engine_block = 39,
air_filter = 40,
struts = 41,
arch_cover = 42,
aerials = 43,
trim2 = 44,
tank = 45,
windows = 46,
livery = 48,
}
function GetAvailableMods(vehicle, modType)
local count = GetNumVehicleMods(vehicle, modType)
local mods = {}
for i = 0, count - 1 do
table.insert(mods, {
index = i,
label = GetModTextLabel(vehicle, modType, i) or ('Option ' .. (i + 1)),
})
end
return mods
end
تكوين متجر الضبط
قم بتكوين مواقع ورش التعديل مع خدماتها المتاحة، مضاعفات الأسعار، وفئات التعديلات التي تقدمها. ليس من الضروري أن يقدم كل ورشة كل خدمة. قد تتخصص ورشة فاخرة في Vinewood في طلاءات فاخرة وتعديلات بصرية مميزة بأسعار أعلى وجودة أفضل. قد تركز ورشة على مستوى الشارع في جنوب LS على قطع أداء ميسورة التكلفة وأعمال هيكلية أساسية. هذا التمايز يخلق أسبابًا لزيارة اللاعبين لورش مختلفة ويدعم هوية الدور لكل عمل. تحتاج كل ورشة إلى موقع مادي مع نقطة دخول للمركبات حيث يقود اللاعب سيارته إلى الداخل، موقع كاميرا لمعاينة التعديل، وخيار داخلي MLO لبيئة الورشة:
Config.TuningShops = {
['benny_motorworks'] = {
label = "Benny's Original Motor Works",
coords = vector3(-205.67, -1312.58, 31.30),
vehicleSpot = vector4(-211.89, -1320.88, 31.09, 178.94),
camOffset = vector3(0.0, 5.5, 1.5),
blipSprite = 72,
categories = {'performance', 'visual', 'paint', 'wheels', 'lights', 'livery'},
priceMultiplier = 1.0,
restrictedTo = nil, -- Open to all
},
['ls_customs'] = {
label = 'LS Customs - Burton',
coords = vector3(-347.55, -133.00, 39.01),
vehicleSpot = vector4(-339.20, -136.73, 39.01, 116.89),
camOffset = vector3(0.0, 5.0, 1.5),
blipSprite = 72,
categories = {'performance', 'visual', 'paint', 'wheels'},
priceMultiplier = 0.85,
restrictedTo = nil,
},
}
Config.ModPrices = {
engine = {1500, 3500, 6000, 10000}, -- Level 1-4
brakes = {1000, 2500, 4500, 7500},
transmission = {1200, 3000, 5500, 9000},
turbo = {15000},
suspension = {800, 1500, 2500, 4000},
armor = {2500, 5000, 10000, 17500, 25000},
spoiler = 2000, -- Flat price per option
front_bumper = 1800,
rear_bumper = 1500,
side_skirt = 1200,
exhaust = 1000,
hood = 2500,
roof = 1500,
paint_standard = 500,
paint_metallic = 1500,
paint_custom_rgb = 5000,
wheels = 3000,
xenon = 3000,
livery = 2500,
}
نظام معاينة المركبات في الوقت الحقيقي
يحتاج اللاعبون إلى رؤية التعديلات على مركباتهم قبل الالتزام بالشراء. نفذ نظام معاينة مباشر يطبق التعديلات المختارة مؤقتًا على المركبة أثناء تصفح اللاعب للخيارات، ثم يعيد كل التغييرات إذا ألغى اللاعب أو يطبق فقط التعديلات المشتراة. عند دخول اللاعب إلى قائمة التعديل، خزّن خصائص المركبة الحالية كصورة لحظية. أثناء تصفح الخيارات المختلفة، طبق كل تعديل مؤقتًا باستخدام natives تعديل المركبة ليكون التغيير مرئيًا فورًا. إذا اختار اللاعب خيارًا مختلفًا في نفس الفئة، أعد التعديل المؤقت السابق قبل تطبيق الجديد. عند تأكيد الشراء، يصبح التعديل دائمًا ويحفظ في سجل قاعدة بيانات المركبة. إذا ألغى، استعد المركبة إلى حالة الصورة المحفوظة. ضع كاميرا اللعبة لتدور حول المركبة أثناء المعاينة، مما يسمح للاعب بتدوير العرض وفحص التعديلات من كل زاوية:
local originalMods = {}
function SaveVehicleSnapshot(vehicle)
originalMods = QBCore.Functions.GetVehicleProperties(vehicle)
end
function PreviewMod(vehicle, modType, modIndex)
SetVehicleMod(vehicle, modType, modIndex, false)
end
function RevertToSnapshot(vehicle)
if originalMods then
QBCore.Functions.SetVehicleProperties(vehicle, originalMods)
end
end
function SetupTuningCamera(vehicle, shopConfig)
local coords = GetEntityCoords(vehicle)
local camCoords = coords + shopConfig.camOffset
tuningCam = CreateCam('DEFAULT_SCRIPTED_CAMERA', true)
SetCamCoord(tuningCam, camCoords.x, camCoords.y, camCoords.z)
PointCamAtEntity(tuningCam, vehicle, 0.0, 0.0, 0.0, true)
SetCamActive(tuningCam, true)
RenderScriptCams(true, true, 1000, true, false)
end
تكامل وظيفة الميكانيكي
حوّل متجر التعديل من قائمة آلية إلى عمل تجاري يديره اللاعب من خلال دمجه مع نظام وظيفة الميكانيكي. يمكن للميكانيكيين المناوبين إجراء تعديلات على المركبات للعملاء، مما يخلق تفاعلًا تمثيليًا موجهًا للخدمة. عندما يحضر العميل مركبته إلى المتجر، يمكنه إما استخدام كشك الخدمة الذاتية بسعر أعلى أو طلب ميكانيكي بسعر مخفض. يرى الميكانيكي طلبات الخدمة الواردة على واجهة جهازه اللوحي، يقبل الوظيفة، يناقش التعديلات المطلوبة مع العميل، ويؤدي العمل. أثناء التركيب، شغّل الرسوم المتحركة والتأثيرات الجسيمية المناسبة لمحاكاة عمل الميكانيكي على المركبة. أضف مؤقتات تركيب تختلف حسب تعقيد التعديل، مع استبدال المحرك يستغرق عدة دقائق وطلاء المركبة يستغرق وقتًا أقل. يكسب الميكانيكي عمولة على كل وظيفة يكملها، مما يحفزه على تقديم خدمة جيدة وبناء قاعدة عملاء. تتبع إحصائيات الميكانيكي مثل إجمالي الوظائف المكتملة، تقييمات رضا العملاء، ومجالات التخصص لإنشاء نظام تقدم داخل مهنة الميكانيكي.
نظام الطلاء والتغليف المخصص
تجاوز لوحة ألوان GTA القياسية من خلال تنفيذ نظام طلاء مخصص مع منتقيات ألوان RGB، وتشطيبات معدنية ومطفية، وطبقات لؤلؤية، ولفائف مخصصة. يجب أن يعرض منتقي الألوان NUI عجلة ألوان كاملة الطيف أو منزلق HSL يسمح للاعبين باختيار أي لون يمكن تخيله. طبق اللون المحدد باستخدام SetVehicleCustomPrimaryColour و SetVehicleCustomSecondaryColour مع قيم RGB من أداة الاختيار. لتأثيرات التغليف، استخدم نظام طلاء المركبات مع استبدال النسيج المخصص لتطبيق أنماط، نسيج ألياف الكربون، أو تصاميم تحمل علامات تجارية على جسم المركبة. قدم خيار طلاء ثنائي اللون حيث يمكن أن تكون الألواح الأساسية والثانوية بألوان مختلفة، مما يخلق تركيبات ألوان مميزة. احفظ قيم RGB الدقيقة في سجل قاعدة بيانات المركبة بحيث تستمر الألوان المخصصة عبر الجلسات وإعادة تشغيل الخادم. سعر وظائف الطلاء المخصصة أعلى من الألوان القياسية لتعكس طبيعة الخدمة المميزة وتوفر مصروفًا فعالًا للأموال.
ضبط الأداء واختبار Dyno
تستحق تعديلات الأداء عمقًا أكبر من مجرد اختيار خيار من القائمة والحصول على نتائج فورية. قم بتنفيذ ميزة اختبار Dyno حيث يمكن للاعبين اختبار إحصائيات أداء مركباتهم قبل وبعد التعديلات. يحاكي اختبار Dyno تشغيل المركبة بأقصى سرعة ويعرض مقاييس مثل القدرة الحصانية المقدرة، العزم، السرعة القصوى، وزمن التسارع. استخدم بيانات معالجة المركبة في اللعبة لحساب هذه القيم بناءً على التعديلات المثبتة. عرض النتائج في لوحة NUI نظيفة تقارن القيم قبل وبعد باستخدام مخططات شريطية أو قراءات رقمية. هذا يمنح اللاعبين تغذية راجعة ملموسة حول كيفية تأثير كل ترقية على أداء مركباتهم، مما يجعل قرار الشراء أكثر وعيًا ورضا. لإضافة طبقة إضافية من الواقعية، قم بتنفيذ شريحة ضبط أو نظام إعادة برمجة ECU حيث يمكن للاعبين ضبط معلمات مثل استجابة دواسة الوقود، نسب التروس، وتوازن الفرامل من خلال واجهة منزلق، مع انعكاس التغييرات في خصائص معالجة المركبة الفعلية باستخدام SetVehicleHandlingFloat natives.
حفظ وتثبيت تعديلات المركبات
يجب حفظ كل تعديل يُطبق على مركبة اللاعب في قاعدة البيانات ليظل دائماً بين الجلسات. معظم أُطُر FiveM تخزن خصائص المركبة ككتلة JSON في جدول مركبات اللاعبين. عند تطبيق تعديل ودفع ثمنه، حدّث خصائص المركبة المخزنة بالقيم الجديدة. عند استدعاء المركبة من المرآب، طبق كل التعديلات المحفوظة باستخدام إطار العمل SetVehicleProperties function. تعامل مع الحالات الحدية مثل الحفظ الجزئي حيث يتعطل الخادم أثناء جلسة تعديل، مما قد يترك المركبة في حالة غير متسقة. استخدم نمط المعاملة حيث تتم معالجة الدفع وحفظ التعديل في عملية قاعدة بيانات ذرية واحدة. إذا فشل أي من الخطوتين، قم بالتراجع عن كلاهما لمنع تحميل اللاعب دون استلام التعديل، أو تلقي تعديل مجاني. سجّل كل التعديلات مع الطوابع الزمنية والأسعار للمراجعة الإدارية ولدعم التراجع المحتمل إذا تم اكتشاف استغلالات.
تعديلات غير قانونية وسباقات الشوارع
إضافة طبقة من اللعب الإجرامي من خلال تنفيذ تعديلات غير قانونية متاحة فقط عبر متاجر التعديل السرية. حقن أكسيد النيتروز يوفر دفعة سرعة مؤقتة يمكن أن تسبب ارتفاع حرارة المحرك وتلفه إذا تم استخدامها بشكل مفرط. تبديلات المحرك التي تتجاوز الحد القانوني للقوة الحصانية تجعل المركبة عرضة لتفتيش الشرطة والمصادرة إذا تم القبض عليها. إزالة لوحات الترخيص، النوافذ المعتمة بنسبة تتجاوز الحد القانوني، وتعديلات نظام التعليق الهيدروليكي كلها تمنح الشرطة سببًا محتملاً لإيقاف المركبة. تتبع التعديلات على المركبة المصنفة كغير قانونية وكشف هذه المعلومات للشرطة من خلال آلية تفتيش المركبات. يمكن للضباط استخدام ماسح يدوي لفحص حالة تعديل المركبة، كاشفًا عن الأجزاء غير القانونية التي تستوجب مخالفة أو مصادرة. هذا يخلق ديناميكية قط وفأر بين ثقافة التعديل وإنفاذ القانون التي تثري نظام لعب الأدوار في الخادم.