Warsztat tuningu pojazdów FiveM: Tworzenie skryptu LS Customs we właściwy sposób
Prowadź porządny warsztat tuningowy na swoim serwerze FiveM. Koła, ulepszenia silnika, lakier i najlepsze customowe skrypty LS Customs dla QBCore i ESX.
Agency Scripts
Założyciel i główny deweloper w Agency Scripts
Tuning pojazdów w kontekście roleplay
Modyfikacja pojazdów to jedna z najpopularniejszych funkcji na każdym serwerze roleplay FiveM. Gracze inwestują mnóstwo czasu i pieniędzy w swoje auta, a warsztat tuningu daje im możliwość personalizacji maszyn za pomocą ulepszeń osiągów, modyfikacji wizualnych, niestandardowego lakieru i części tuningowych. Dobrze zaprojektowany system tuningu robi znacznie więcej niż tylko udostępnianie wbudowanych natywnych funkcji modyfikacji GTA przez menu. Tworzy cały ekosystem obejmujący warsztaty mechaniczne prowadzone przez graczy, cenniki służące jako odpływ gotówki z gospodarki, liczniki czasu montażu tworzące realistyczny czas oczekiwania oraz rynek części, gdzie komponenty można pozyskiwać od różnych dostawców o różnym poziomie jakości. Warsztat tuningu staje się centrum społecznościowym, w którym gromadzą się pasjonaci motoryzacji, mechanicy budują swoją reputację, a każdy zmodyfikowany pojazd opowiada historię o guście i budżecie właściciela.
Zrozumienie natives modyfikacji pojazdów w GTA
GTA V udostępnia modyfikacje pojazdów poprzez serię funkcji natywnych, które pozwalają stosować ulepszenia w konkretnych slotach modyfikacji. Każdy pojazd ma zestaw typów modyfikacji identyfikowanych przez indeksy numeryczne: ulepszenia silnika używają indeksu 11, hamulce indeksu 12, skrzynia biegów indeksu 13, zawieszenie indeksu 15, a części wizualne, takie jak spoilery, zderzaki i progi, używają indeksów od 0 do 10. Ten SetVehicleMod native stosuje określoną modyfikację spośród dostępnych opcji dla danego modelu pojazdu i typu modyfikacji. Nie każdy pojazd obsługuje każdą kategorię modyfikacji, więc musisz sprawdzić dostępność za pomocą GetNumVehicleMods przed przedstawieniem opcji graczowi. Lakiery używają oddzielnych funkcji natywnych, takich jak SetVehicleColours dla kolorów podstawowych i dodatkowych, SetVehicleExtraColours dla kolorów perłowych i felg, a SetVehicleCustomPrimaryColour dla niestandardowych wartości 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
Konfiguracja warsztatu tuningowego
Skonfiguruj lokalizacje warsztatów tuningowych wraz z dostępnymi usługami, mnożnikami cen i oferowanymi kategoriami modyfikacji. Nie każdy warsztat musi oferować wszystkie usługi. Luksusowy customs w Vinewood może specjalizować się w ekskluzywnym lakierowaniu i modyfikacjach wizualnych premium z wyższymi cenami, ale lepszą jakością. Uliczny warsztat w South LS może skupiać się na przystępnych cenowo częściach performance i podstawowych pracach blacharskich. To zróżnicowanie daje graczom powody do odwiedzania różnych warsztatów i wspiera tożsamość roleplay każdego biznesu. Każdy warsztat wymaga fizycznej lokalizacji z punktem wjazdu pojazdu, do którego gracz wjeżdża autem, pozycji kamery do podglądu modyfikacji oraz opcjonalnie wnętrza MLO dla otoczenia warsztatu:
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,
}
System podglądu pojazdów w czasie rzeczywistym
Gracze muszą widzieć modyfikacje swojego pojazdu przed dokonaniem zakupu. Wdróż system podglądu na żywo, który tymczasowo nakłada wybrane modyfikacje na pojazd podczas przeglądania opcji przez gracza, a następnie cofa wszystkie zmiany, jeśli gracz anuluje, lub stosuje tylko zakupione modyfikacje. Kiedy gracz wejdzie do menu tuningu, zapisz aktualne właściwości pojazdu jako migawkę (snapshot). Podczas przeglądania różnych opcji stosuj każdą modyfikację tymczasowo za pomocą natywnych funkcji modyfikacji pojazdów, aby zmiana była od razu widoczna. Jeśli gracz wybierze inną opcję w tej samej kategorii, cofnij poprzednią modyfikację tymczasową przed nałożeniem nowej. Kiedy gracz potwierdzi zakup, modyfikacja staje się trwała i zostaje zapisana w bazie danych pojazdu. Jeśli anuluje, przywróć pojazd do zapisanego stanu migawki. Ustaw kamerę gry tak, aby orbitowała wokół pojazdu podczas podglądu, umożliwiając graczowi obracanie widoku i sprawdzanie modyfikacji pod każdym kątem:
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
Integracja z pracą mechanika
Przekształć warsztat tuningowy z automatycznego menu w biznes prowadzony przez graczy, integrując go z systemem pracy mechanika. Mechanicy na służbie mogą wykonywać modyfikacje pojazdów dla klientów, tworząc nastawioną na usługi interakcję roleplay. Gdy klient przyprowadzi swój pojazd do warsztatu, może skorzystać z samoobsługowego kiosku w wyższej cenie lub wezwać mechanika ze zniżką. Mechanik widzi przychodzące zlecenia serwisowe w interfejsie tabletu, przyjmuje zlecenie, omawia pożądane modyfikacje z klientem i wykonuje pracę. Podczas montażu odtwarzaj odpowiednie animacje i efekty cząsteczkowe, aby symulować pracę mechanika przy pojeździe. Dodaj liczniki czasu montażu zależne od złożoności modyfikacji, gdzie wymiana silnika zajmuje kilka minut, a lakierowanie mniej czasu. Mechanicy otrzymują prowizję za każde zrealizowane zlecenie, co motywuje ich do świadczenia dobrych usług i budowania bazy klientów. Śledź statystyki mechanika, takie jak łączna liczba ukończonych zleceń, oceny zadowolenia klientów i obszary specjalizacji, aby stworzyć system rozwoju w karierze mechanika.
Własny system lakierowania i oklein
Wyjdź poza standardową paletę kolorów GTA, wdrażając własny system lakierowania z próbnikami kolorów RGB, wykończeniami metalicznymi i matowymi, powłokami perłowymi oraz customowymi okleinami. Próbnik kolorów NUI powinien wyświetlać pełne koło barw lub suwak HSL, pozwalający graczom wybrać dowolny możliwy kolor. Zastosuj wybrany kolor za pomocą SetVehicleCustomPrimaryColour i SetVehicleCustomSecondaryColour z wartościami RGB z próbnika. W przypadku oklejania użyj systemu livery pojazdów połączonego z niestandardową podmianą tekstur, aby nałożyć wzory, tekstury włókna węglowego lub projekty z logo na karoserię. Zaproponuj opcję lakierowania dwukolorowego, w której główne i dodatkowe elementy nadwozia mogą mieć różne kolory, tworząc unikalne kombinacje. Zapisz dokładne wartości RGB w bazie danych pojazdu, aby niestandardowe kolory zachowały się między sesjami i restartami serwera. Ustal wyższą cenę za niestandardowe lakierowanie niż za kolory standardowe, aby odzwierciedlić prestiżowy charakter usługi i zapewnić skuteczny odpływ gotówki.
Tuning osiągów i testy na hamowni
Modyfikacje osiągów zasługują na większą głębię niż zwykły wybór opcji z menu i natychmiastowy rezultat. Wprowadź funkcję hamowni, na której gracze mogą sprawdzić statystyki osiągów swojego pojazdu przed i po modyfikacjach. Test na hamowni symuluje jazdę na pełnym gazie i wyświetla parametry, takie jak szacowana moc w koniach mechanicznych, moment obrotowy, prędkość maksymalna oraz czas przyspieszenia. Użyj danych handlingu pojazdu z gry, aby obliczyć te wartości na podstawie zainstalowanych ulepszeń. Wyświetlaj wyniki w przejrzystym panelu NUI porównującym wartości przed i po za pomocą wykresów słupkowych lub odczytów liczbowych. Daje to graczom konkretny feedback dotyczący tego, jak każde ulepszenie wpływa na osiągi pojazdu, sprawiając, że decyzja o zakupie jest bardziej świadoma i satysfakcjonująca. Aby uzyskać dodatkowy poziom realizmu, zaimplementuj chip tuning lub system remapu ECU, w którym gracze mogą precyzyjnie dostosować parametry, takie jak reakcja na gaz, przełożenia skrzyni biegów i balans hamulców za pomocą suwaków, a zmiany znajdują odzwierciedlenie w rzeczywistych właściwościach jezdnych pojazdu przy użyciu SetVehicleHandlingFloat natives.
Zapisywanie i utrwalanie modyfikacji pojazdów
Każda modyfikacja zastosowana w pojeździe gracza musi zostać zapisana w bazie danych, aby zachować się między sesjami. Większość frameworków FiveM przechowuje właściwości pojazdu jako obiekt JSON w tabeli pojazdów graczy. Gdy modyfikacja zostanie zastosowana i opłacona, zaktualizuj zapisane właściwości pojazdu o nowe wartości modyfikacji. Gdy pojazd zostanie zespawnowany z garażu, zastosuj wszystkie zapisane modyfikacje za pomocą frameworka SetVehicleProperties funkcja. Obsługuj przypadki brzegowe, takie jak częściowe zapisy, gdy serwer ulegnie awarii podczas sesji modyfikacji, co mogłoby pozostawić pojazd w niespójnym stanie. Użyj wzorca transakcji, w którym płatność jest przetwarzana, a modyfikacja zapisywana w jednej atomowej operacji na bazie danych. Jeśli którykolwiek krok się nie powiedzie, wycofaj oba, aby zapobiec pobraniu opłaty od gracza bez otrzymania modyfikacji lub otrzymaniu darmowej modyfikacji. Zapisuj wszystkie modyfikacje ze znacznikami czasu i cenami do wglądu dla administratorów oraz na wypadek konieczności wycofania zmian w razie wykrycia exploitów.
Nielegalne modyfikacje i wyścigi uliczne
Wprowadź warstwę rozgrywki przestępczej, wdrażając nielegalne modyfikacje dostępne wyłącznie w podziemnych warsztatach tuningowych. Wtrysk podtlenku azotu zapewnia tymczasowe zwiększenie prędkości, które przy nadmiernym użyciu może przegrzać i uszkodzić silnik. Swapy silnika przekraczające dozwolony limit koni mechanicznych sprawiają, że pojazd w razie kontroli podlega inspekcji policyjnej i odholowaniu na parking policyjny. Zdjęte tablice rejestracyjne, przyciemnione szyby powyżej dopuszczalnego procentu oraz modyfikacje zawieszenia hydraulicznego dają policji uzasadniony powód do zatrzymania pojazdu. Monitoruj, które modyfikacje w pojeździe są sklasyfikowane jako nielegalne, i udostępnij te informacje policji za pomocą mechaniki inspekcji pojazdu. Funkcjonariusze mogą używać ręcznego skanera, aby sprawdzić stan modyfikacji pojazdu, wykrywając nielegalne części kwalifikujące się do mandatu lub odholowania. Tworzy to dynamikę zabawy w kotka i myszkę między kulturą tunerów a organami ścigania, co wzbogaca ekosystem roleplay na serwerze.