addon მანქანა FiveM-ზე არის resource, რომლის stream საქაღალდეში მანქანის მოდელი და ტექსტურებია, პლუს ოთხი ან ხუთი meta ფაილი - vehicles.meta, carvariations.meta, carcols.meta, handling.meta, ზოგჯერ vehiclelayouts.meta - დარეგისტრირებული data_file ხაზებით fxmanifest.lua-ში. მას საკუთარი spawn-ის სახელი აქვს და საბაზისო თამაშის მანქანების გვერდით დგას. replace მანქანა უფრო მარტივია: stream-ით აწვდი ფაილს, რომელსაც საბაზისო თამაშის მოდელის სახელი აქვს, და ორიგინალი ყველგან ქრება, ტრაფიკის ჩათვლით. addon-ები სწორი ნაგულისხმევი არჩევანია. რაც ფუჭდება, არის სახელები, რომლებიც ფაილებს შორის არ ემთხვევა, ორი მანქანა, რომლებიც ერთსა და იმავე modkit ID-ს იჩემებს, და პაკეტები, იმდენად დიდი, რომ ყოველი ახალი მოთამაშე შესასვლელად ათ წუთს ელოდება. ეს გზამკვლევი ხსნის resource-ის სტრუქტურას, თითოეულ meta ფაილს, ველებს, რომლებიც უნდა დაემთხვეს, ზომას, framework-თან ინტეგრაციას და შეცდომებს, რომლებსაც ნახავ.
addon თუ replace#
| Addon | Replace | |
|---|---|---|
| spawn-ის სახელი | საკუთარი, მაგალითად rmodgtr | საბაზისო მოდელის, მაგალითად adder |
| meta ფაილები | აუცილებელია | არჩევითი, მხოლოდ handling-ისთვის |
| ორიგინალი მანქანა | ისევ ადგილზეა | ქრება, ტრაფიკის ჩათვლით |
| რისკი | სახელისა და modkit-ის კონფლიქტები | ამ მოდელის ყოველი ეგზემპლარი იცვლება |
| გამოიყენე | თითქმის ყველაფრისთვის | პოლიციის ავტოპარკისთვის, განზრახ ცვლილებებისთვის |
replace მუშაობს, რადგან FiveM stream-ს ფაილის სახელით აკეთებს: resource, რომელიც აწვდის adder.yft-ს, adder_hi.yft-ს და adder.ytd-ს, თამაშის საკუთარ Adder-ს ყველა მოთამაშისთვის ანაცვლებს. ეს ზუსტად ის არის, რაც გინდა, ვთქვათ, საბაზისო პოლიციის მანქანების ერთგვაროვანი ავტოპარკით ჩანაცვლებისთვის - NPC პოლიციის ყოველი მანქანაც იცვლება. ეს ზუსტად ის არის, რაც არ გინდა სალონის მანქანისთვის, რადგან Adder ტრაფიკში და ყოველ სკრიპტში, რომელიც მას ქმნის, შენი მორგებული მოდელი ხდება.
addon-ები ამატებს ახალ მოდელს საკუთარი სახელით, ასე რომ საბაზისო თამაშში არაფერი იცვლება და სკრიპტები მას ამ სახელით ქმნის. ფასი meta ფაილებია, და სწორედ იქ ცხოვრობს ინსტალაციის პრობლემების უმეტესობა.
resource-ის სტრუქტურა#
ერთი addon მანქანა:
resources/[vehicles]/rmodgtr/ fxmanifest.lua data/ vehicles.meta carvariations.meta carcols.meta handling.meta stream/ rmodgtr.yft rmodgtr_hi.yft rmodgtr.ytdfx_version 'cerulean'game 'gta5'files { 'data/**/*.meta',}data_file 'HANDLING_FILE' 'data/**/handling.meta'data_file 'VEHICLE_METADATA_FILE' 'data/**/vehicles.meta'data_file 'CARCOLS_FILE' 'data/**/carcols.meta'data_file 'VEHICLE_VARIATION_FILE' 'data/**/carvariations.meta'data_file 'VEHICLE_LAYOUTS_FILE' 'data/**/vehiclelayouts.meta'files ბლოკი meta ფაილებს კლიენტებისთვის ხელმისაწვდომს ხდის; data_file ხაზები თამაშს ეუბნება, რა არის თითოეული. ** glob ერთ manifest-ს საშუალებას აძლევს, მოიცვას პაკეტი, სადაც ყოველ მანქანას data/-ის ქვეშ საკუთარი ქვესაქაღალდე აქვს, და გაერთიანებული პაკეტების უმეტესობა ასეა აგებული. data_file ხაზი, რომელიც არარსებულ ფაილზე მიუთითებს, უვნებელია, ამიტომ პაკეტები ხშირად შეიცავს layouts-ის ხაზს, იყენებს თუ არა მას რომელიმე მანქანა.
stream ფაილები: .yft მოდელია, _hi.yft მაღალი დეტალიზაციის ვერსია, რომელიც ახლო მანძილზე გამოიყენება, .ytd ტექსტურები. ზოგიერთი მანქანა ამატებს +hi.ytd-ს ახლო ტექსტურებისთვის და ცალკე .ytd ფაილებს modkit-ის ნაწილებისთვის. stream-ში ნებისმიერი ფაილი ავტომატურად რეგისტრირდება - stream შიგთავსის ზოგადი წესები აღწერილია FiveM-ის MLO-ებსა და streaming asset-ებში.
დაამატე ის server.cfg-ში ensure rmodgtr-ით, framework-ის შემდეგ და ყველაფრის წინ, რასაც მისი შექმნა სჭირდება.
vehicles.meta: სახელები, რომლებიც უნდა დაემთხვეს#
vehicles.meta მანქანას განსაზღვრავს. პრობლემების უმეტესობა რამდენიმე ველიდან მოდის, რომლებიც სხვა ფაილებს ზუსტად უნდა ემთხვეოდეს:
| ველი | უნდა ემთხვეოდეს |
|---|---|
modelName | .yft ფაილის სახელს, გაფართოების გარეშე |
txdName | .ytd ფაილის სახელს, გაფართოების გარეშე |
handlingId | handlingName-ს handling.meta-ში |
gameName | ტექსტურ label-ს საჩვენებელი სახელისთვის |
vehicleMakeName | ტექსტურ label-ს მწარმოებლისთვის |
<Item> <modelName>rmodgtr</modelName> <txdName>rmodgtr</txdName> <handlingId>RMODGTR</handlingId> <gameName>RMODGTR</gameName> <vehicleMakeName>NISSAN</vehicleMakeName> <type>VEHICLE_TYPE_CAR</type> <vehicleClass>VC_SPORT</vehicleClass> <layout>LAYOUT_STANDARD</layout></Item>type და vehicleClass წყვეტს, როგორ მოეპყრობა მას თამაში: VEHICLE_TYPE_BIKE მოტოციკლისთვის, VC_EMERGENCY მას საგანგებო კლასში ათავსებს და ა.შ. layout წყვეტს სავარძლების პოზიციებს და ჩაჯდომის ანიმაციებს; მორგებული layout-ები vehiclelayouts.meta-დან მოდის.
spawn-ის სახელი modelName-ია. საჩვენებელი სახელი გარაჟებსა და მანქანის HUD-ში მოდის gameName-ის ტექსტური label-იდან, ხოლო addon მანქანა, რომლის label-იც არასოდეს განისაზღვრა, ჩანს როგორც NULL ან როგორც ნედლი label. განსაზღვრე ის კლიენტზე:
CreateThread(function() AddTextEntry("RMODGTR", "GT-R R35")end)handling.meta, carcols.meta და საგანგებო ავტოპარკი#
handling.meta განსაზღვრავს, როგორ დადის მანქანა. მისი handlingName უნდა უდრიდეს vehicles.meta-ს handlingId-ს, ხოლო handling-ის სახელები გლობალურია: ორი მანქანა ერთი და იმავე handling-ის სახელით ერთ ჩანაწერს იზიარებს, და რომელიც ბოლოს ჩაიტვირთა, ორივესთვის იმარჯვებს. ასე ხდება, რომ სედანი ჰიპერმანქანასავით აჩქარდება.
<Item type="CHandlingData"> <handlingName>RMODGTR</handlingName> <fMass value="1750.000000" /> <fInitialDragCoeff value="8.500000" /> <fInitialDriveForce value="0.340000" /> <fInitialDriveMaxFlatVel value="168.000000" /> <fBrakeForce value="1.100000" /> <fTractionCurveMax value="2.650000" /></Item>შემქმნელები handling-ს ერთმოთამაშიანი გართობისთვის არეგულირებენ, რაც roleplay სერვერზე ჩვეულებრივ ზედმეტად სწრაფს ნიშნავს. მთელი ავტოპარკის ერთგვაროვან მნიშვნელობებზე დარეგულირება ნორმალურია, და ზემოთ მოცემული ველები - მასა, წევის ძალა, მაქსიმალური სიჩქარე, მუხრუჭები, ჩაჭიდება - საწყისი წერტილია. ერთ ჯერზე ერთი მნიშვნელობა შეცვალე და გამოცადე.
carcols.meta ინახავს მანქანის modkit-ს: tuning-ის ნაწილების სიას და kit ID-ს, რომელსაც carvariations.meta მიმართავს.
<Kits> <Item> <kitName>4517_rmodgtr_modkit</kitName> <id value="4517" /> <kitType>MKT_SPECIAL</kitType> </Item></Kits><kits> <Item>4517_rmodgtr_modkit</Item></kits>აუდიტის მარტივი გზა: მოძებნე ყოველ carcols.meta-ში <id value= და დაალაგე შედეგები. დუბლიკატები ის მანქანებია, რომლებიც უნდა გაასწორო. შეცვალე ID carcols.meta-ში და kit-ის სახელი carvariations.meta-ში ახალ kitName-თან შესაბამისობაში შეინარჩუნე.
ზომა: ფასი, რომელსაც ყოველი მოთამაშე იხდის#
ყოველი ახალი მოთამაშე ყოველ stream მანქანას ჩამოტვირთავს, სანამ თამაშს შეძლებს, ხოლო კლიენტი გარშემო მყოფი მანქანების ტექსტურებს მეხსიერებაში ინახავს. addon მანქანები ზომით ძალიან განსხვავდება: კარგად შექმნილი მანქანა რამდენიმე მეგაბაიტია, მანქანა, ამოღებული 4K ტექსტურებით ყოველ ზედაპირზე, შეიძლება ოცდაათი ან მეტი იყოს. FXServer გაშვებისას გაფრთხილებს ნებისმიერ asset-ზე, რომელიც 16 MiB ფიზიკურ მეხსიერებას აღემატება:
Asset rmodgtr.ytd uses 24.0 MiB of physical memory. Oversized assets can and WILLlead to streaming issues (such as models not loading/rendering).სერვერზე სამასი მანქანით, რამდენიმე oversized მანქანა დატვირთულ პარკინგზე საკმარისია, რომ იქ მდგომი ყველასთვის ტექსტურები ვერ ჩაიტვირთოს.
როგორ შეინარჩუნო ავტოპარკი მართვადი:
- დაალაგე შენი `stream` საქაღალდეები ზომით. ოცი ყველაზე დიდი ფაილი ჩვეულებრივ ჯამის უმეტესი ნაწილია.
- შეამცირე oversized ტექსტურები.
.ytd-ის გახსნა და დიდი ტექსტურების 2048-მდე ან 1024-მდე შემცირება მანქანის ზომას ჩვეულებრივ ანახევრებს პარკინგზე ხილული განსხვავების გარეშე. - შეამცირე ავტოპარკი. სერვერების უმეტესობა ატარებს მანქანებს, რომლებიც არავის ეკუთვნის. შენმა მონაცემთა ბაზამ იცის, რომელი მოდელები აქვთ მოთამაშეებს რეალურად; დანარჩენი ჩამოტვირთვის ფასია არაფრისთვის.
- დაყავი დანიშნულების მიხედვით.
[vehicles-emergency],[vehicles-dealer],[vehicles-donor]- ცალკე resource-ების გაზომვა და წაშლა უფრო ადვილია, ვიდრე ერთი 4 GB-იანი "carpack"-ის.
resource-ების რაოდენობა თავისთავად მანქანებისთვის წარმადობის პრობლემა არ არის: მათ სკრიპტები არ აქვთ და სერვერის მთავარ thread-ს არაფერი უჯდებათ. ფასი ჩამოტვირთვა და კლიენტის მეხსიერებაა. როგორ გაზომო სკრიპტების მხარე, აღწერილია FiveM სერვერის წარმადობაში.
საგანგებო მანქანები, livery-ები და extra-ები
პოლიციის, EMS-ისა და სახანძრო ავტოპარკი ყველაზე გავრცელებული მიზეზია, რის გამოც roleplay სერვერი საერთოდ ამატებს მანქანებს, და მათ სამი დამატებითი სამართავი რამ მოაქვთ.
livery-ები. საგანგებო პაკეტების უმეტესობა თითო მანქანაზე რამდენიმე livery-ს აწვდის - დეპარტამენტები, წოდებები, მოუნიშნავი ვერსიები - ან მოდელის შიგნით ტექსტურის ვარიაციებად, ან livery-ის ჩანაწერებად meta-ში. სკრიპტი ან გარაჟი ერთ-ერთს SetVehicleLivery native-ით ირჩევს. თუ livery-ის მენიუ ვარიანტების არასწორ რაოდენობას აჩვენებს, მოდელი და meta არ თანხმდება, რამდენია.
extra-ები. შუქის პანელები, წინა ბამპერის დამცავები, აღჭურვილობა და ტიხრები ხშირად extra-ებად არის მოდელირებული, დანომრილი ნაწილებით, რომლებიც SetVehicleExtra-ით ირთვება და ითიშება. დეპარტამენტის გარაჟები ჩვეულებრივ თითო მანქანაზე ფიქსირებულ კომბინაციას აყენებს, რომ ავტოპარკი ერთგვაროვნად გამოიყურებოდეს. extra-ები, რომლებიც თამაშში აკლია, მოდელის საკითხია და არა სკრიპტის.
სირენები. შუქის ნიმუშები carcols.meta-ში სირენის პარამეტრებად ცხოვრობს, და modkit-ების მსგავსად რიცხვით იდენტიფიცირდება. ორი პაკეტი, რომლებიც სირენის პარამეტრის ერთსა და იმავე ID-ს იყენებს, კონფლიქტშია, და ერთი მანქანა მეორის ნიმუშით ციმციმებს. სხვადასხვა შემქმნელის საგანგებო პაკეტების გაერთიანებისას სირენის ID-ები ისევე შეამოწმე, როგორც modkit-ის ID-ები.
საგანგებო პაკეტებში ხდება replace-ისა და addon-ის არჩევანი საინტერესო. საბაზისო პოლიციის მანქანების ჩანაცვლება ნიშნავს, რომ NPC პოლიცია და გამოძახებული ეკიპაჟებიც შენს ავტოპარკს იყენებს, რაც ზოგიერთ სერვერს ერთგვაროვნებისთვის უნდა. roleplay სერვერების უმეტესობა addon-ებს ამჯობინებს, რომ მოთამაშე პოლიციელებს საკუთარი მანქანები ჰქონდეთ და გარემოს პოლიციამ საბაზისო შეინარჩუნოს, შემდეგ კი გარემოს პოლიციის dispatch-ს საკუთარი სკრიპტებით თიშავენ.
framework-ისთვის მანქანის გაცნობა#
მანქანის stream-ით მიწოდება მას სახელით შექმნადს ხდის. სალონებს, გარაჟებსა და ადმინის მენიუებს უნდა იცოდნენ, რომ ის არსებობს.
- QBCore ინახავს მანქანების სიას გაზიარებულ Lua ფაილში
qb-core-ში (ბოლო ვერსიებშიshared/vehicles.lua), თითო ჩანაწერი მოდელზე მისი სახელით, ბრენდით, ფასით, კატეგორიითა და მაღაზიით. მანქანა, რომელიც მასში არ არის, ვერ იყიდება და შეიძლება გარაჟებში ვერ შეინახოს. - ESX-ის სალონები ტრადიციულად კითხულობს
vehiclesცხრილს მონაცემთა ბაზაში, მოდელით, სახელით, ფასითა და კატეგორიით. დაამატე სტრიქონები SQL-ით ან phpMyAdmin-ით. - Qbox მანქანების გაზიარებულ სიას საკუთარ ბირთვში ინახავს; ზუსტი ადგილი მიმდინარე რეპოზიტორიაში შეამოწმე, რადგან ის გამოშვებებს შორის გადაადგილდებოდა.
მოთამაშეების კუთვნილი მანქანები მონაცემთა ბაზაში თითოეული მოთამაშისთვის ინახება (owned_vehicles ESX-ზე, player_vehicles QBCore-ზე) მოდელის სახელით ან hash-ით. სერვერიდან მანქანის წაშლა ამ სტრიქონებს ტოვებს, და გარაჟები მაშინ ფუჭდება, როცა მოთამაშე ცდილობს გამოიყვანოს მოდელი, რომელიც აღარ არსებობს. როცა მანქანას ხმარებიდან იღებ, გადაწყვიტე, რას მიიღებენ მფლობელები - თანხის დაბრუნებას, შემცვლელ მოდელს - და განაახლე სტრიქონები, ნაცვლად იმისა, რომ გაფუჭებული ჩანაწერები დატოვო. FiveM-ის მონაცემთა ბაზები და oxmysql ხსნის ამ ცხრილებთან უსაფრთხოდ მუშაობას, ხოლო backup ნებისმიერ მასობრივ ცვლილებამდე არჩევითი არ არის.
თუ sv_entityLockdown-ს იყენებ, მანქანები სერვერზე უნდა შეიქმნას. თანამედროვე გარაჟები ამას უკვე აკეთებს; ძველი სალონი, რომელიც თავის საჩვენებელ მანქანას კლიენტზე ქმნის, მუშაობას შეწყვეტს. OneSync და მოთამაშის სლოტები სერვერის მხარის ნიმუშს შეიცავს.
თამაშის build, წყაროები და ლიცენზირება#
ზოგიერთი addon მანქანა იყენებს საბაზისო თამაშის მანქანების ნაწილებს GTA Online-ის ბოლო განახლებებიდან. ისინი მხოლოდ სერვერზე მუშაობს, რომელიც sv_enforceGameBuild-ით მინიმუმ ამ build-ს აიძულებს. მანქანა, რომელიც spawn-ისას კლიენტებს ავარიულად ხურავს ან საბურავების გარეშე ჩნდება, ხშირად build-ის შეუსაბამობაა; შემქმნელმა საჭირო build უნდა მიუთითოს.
მნიშვნელოვანია ისიც, საიდან მოდის მანქანები. ბევრი უფასო "addon პაკეტი" სხვა სარბოლო თამაშებიდან ამოღებული მოდელებია, რაც სხვისი ინტელექტუალური საკუთრებაა. Cfx.re-ის წესები კრძალავს წვდომის გაყიდვას შიგთავსზე, რომლის უფლებებიც არ გაქვს, ხოლო ფასიანი resource-ები ვრცელდება Cfx.re-ის escrow სისტემით, მიბმული მყიდველის ანგარიშზე - FiveM-ის escrow და asset-ების ლიცენზირება ხსნის, როგორ მუშაობს ეს და რატომ არის გაჟონილი პაკეტები რისკი შენი ლიცენზიის key-სთვის. დონორის მანქანები განსაკუთრებული ხაფანგია; წაიკითხე თამაშის სერვერის მონეტიზაცია წესების ფარგლებში, სანამ მანქანას გადახდის მიღმა მოათავსებ.
მანქანის დაყენება გათიშვის გარეშე#
მანქანის დამატებას სერვერის სრული გადატვირთვა არ სჭირდება:
- ატვირთე resource-ის საქაღალდე. RE:NODE-ზე გადაათრიე zip ფაილების მენეჯერში და ის ადგილზევე გაიხსნება, ან დიდი პაკეტისთვის ატვირთე SFTP-ით.
- დაამატე
ensure rmodgtrserver.cfg-ში, რომ შემდეგ გადატვირთვას გადაურჩეს. - კონსოლში გაუშვი
refresh, შემდეგensure rmodgtr. - უკვე ონლაინ მყოფი მოთამაშეები ახალ ფაილებს იღებენ; meta-ს ზოგიერთი ცვლილება სრულად მხოლოდ ხელახლა მიერთების შემდეგ მოქმედებს.
- შექმენი ის ერთხელ ადმინის ბრძანებით და შეამოწმე ტექსტურები, handling, tuning და საჩვენებელი სახელი, სანამ გამოაცხადებ.
ჯერ backup გააკეთე, თუ პაკეტი არსებული მანქანების meta ფაილებს ეხება, და გაერთიანებული პაკეტები სერვერის ასლზე გამოცადე და არა ცოცხალზე; გაფუჭებულმა carcols.meta-მ შეიძლება ავარიულად დახუროს ყოველი კლიენტი, რომელიც mod shop-ში შედის.
პრობლემების მოგვარება#
"Model does not exist" ან არაფერი ჩნდება. spawn-ის სახელი modelName-ს არ ემთხვევა, resource არ არის გაშვებული, ან data_file ხაზები meta ფაილებზე არ მიუთითებს. IsModelInCdimage(GetHashKey("rmodgtr")) კლიენტზე გეტყვის, იცის თუ არა თამაშმა მოდელი.
მანქანა ტექსტურების გარეშე ჩნდება. txdName .ytd ფაილის სახელს არ ემთხვევა, ან .ytd oversized-ია და stream-ით ვერ მიეწოდება.
ის ქარხნული მანქანასავით დადის. handlingId და handlingName არ ემთხვევა, ან handling-ის ფაილი არ არის დარეგისტრირებული. ან სხვა მანქანა იმავე handling-ის სახელს იყენებს.
tuning-ის მენიუ არასწორ ნაწილებს აჩვენებს ან ავარიულად იხურება. modkit-ის ID-ების დუბლიკატები ორ მანქანას შორის.
სახელი ჩანს როგორც NULL. gameName label-ისთვის AddTextEntry არ არის.
კლიენტები ავარიულად იხურება, როცა მანქანა ჩნდება. გაფუჭებული მოდელი, oversized asset, ან თამაშის build, რომელიც მანქანის მოთხოვნაზე დაბალია.
FAQ#
რა განსხვავებაა addon და replace მანქანებს შორის FiveM-ში?
addon მანქანა ახალი მოდელია საკუთარი spawn-ის სახელითა და meta ფაილებით, საბაზისო თამაშის გვერდით. replace მანქანა ანაცვლებს იმავე სახელის საბაზისო მოდელს, ასე რომ ამ მანქანის ყოველი ეგზემპლარი - ტრაფიკის ჩათვლით - მორგებული ხდება.
მჭირდება ყველა meta ფაილი addon მანქანისთვის?
გჭირდება vehicles.meta და ჩვეულებრივ carvariations.meta, carcols.meta და handling.meta. vehiclelayouts.meta მხოლოდ მაშინ, როცა მანქანას მორგებული layout აქვს. თითოეული files-ში უნდა იყოს ჩამოთვლილი და data_file ხაზით დარეგისტრირებული.
რამდენი addon მანქანა შეიძლება ჰქონდეს FiveM სერვერს?
ფიქსირებული რიცხვი არ არსებობს. პრაქტიკული ლიმიტი ჯამური ჩამოტვირთვის ზომა და კლიენტის მეხსიერებაა და არა სერვერის CPU. ასობით მუშაობს, თუ თითოეული მანქანა გონივრული ზომისაა; რამდენიმე ათეული oversized-ს თავისთავად შეუძლია ტექსტურების დაკარგვა გამოიწვიოს.
რატომ აქვს ჩემს ორ მანქანას ერთმანეთის tuning-ის ნაწილები?
ისინი carcols.meta-ში modkit-ის ერთ ID-ს იზიარებს. მიეცი ერთს უნიკალური ID და განაახლე მისი kit-ის სახელი carvariations.meta-ში.
შემიძლია მანქანების დამატება სერვერის გადატვირთვის გარეშე?
დიახ. ატვირთე resource, გაუშვი refresh და ensure კონსოლში და დაამატე ensure ხაზი server.cfg-ში. ზოგიერთ მოთამაშეს შეიძლება ხელახლა მიერთება დასჭირდეს, სანამ ყველაფერი სწორად ჩაიტვირთება.




კომენტარები
სრულიად ანონიმურად: ანგარიშის, ელფოსტის და cookie-ის გარეშე. ინახება მხოლოდ სახელი, ტექსტი და დრო - სხვა არაფერი. ბმულების რაოდენობა ლიმიტირებულია.