Sklepy ox_inventory: data/shops.lua, RegisterShop i punkty mapy
Jak utworzyć sklep w ox_inventory: wpis data/shops.lua, ceny i waluta, lokalizacje i cele, sklepy zablokowane na pracę, RegisterShop z innego zasobu, i punkty mapy.
Sklep w ox_inventory to lista przedmiotów z cenami, i jedno lub więcej miejsc gdzie gracze mogą go otworzyć. Możesz edytować plik, lub zarejestrować sklep ze swojego własnego zasobu. Ten artykuł obejmuje oba, plus ceny, waluty, ograniczenia pracy, ox_target i punkty mapy.
Wpis sklepu w data/shops.lua
Otwórz ox_inventory/data/shops.lua. Każdy sklep to tabela kluczona po typie sklepu:
return {
General = {
name = 'Shop',
inventory = {
{ name = 'burger', price = 10 },
{ name = 'water', price = 5, count = 50 },
{ name = 'lockpick', price = 150 },
},
locations = {
vec3(25.7, -1347.3, 29.5),
},
},
}Klucz (General) to typ sklepu. Pola:
| Pole | Znaczenie |
|---|---|
name |
Tytuł pokazany na górze sklepu |
inventory |
Przedmioty do sprzedaży |
locations |
Współrzędne gdzie gracze mogą otworzyć sklep |
targets |
Tym samym idea, ale z pudełkami ox_target (patrz poniżej) |
groups |
Prace dozwolone do użycia sklepu |
blip |
Ustawienia punktu mapy |
Sprawdź domyślne wpisy w twojej kopii pliku: pokazują dokładne pola które twoja wersja wspiera, i najlepszy sposób aby zacząć to skopiować jeden i zmienić.
Ostrzeżenie: każda nazwa przedmiotu w
inventorymusi istnieć wdata/items.lua. Sklep który wymienia brakujący przedmiot może nie otworzyć się lub wydrukować błędy. Patrz dodawanie przedmiotów do ox_inventory.
Przedmioty, ceny i waluta
Każda linia inventory to mała tabela:
inventory = {
{ name = 'water', price = 5 },
{ name = 'sandwich', price = 12, count = 20 },
{ name = 'lockpick', price = 150, currency = 'black_money' },
{ name = 'WEAPON_PISTOL', price = 2500, license = 'weapon' },
},priceto co jeden koszt jednostki.countto zapasy. Bez niego przedmiot jest nieograniczony, i z nim zapasy idą w dół gdy gracze kupują.currencyto przedmiot który za to płaci. Domyślnie do pieniędzy, iblack_moneyto powszechna alternatywa.licenseprosi o przedmiot licencji zanim gracz może kupić.gradeogranicza jeden przedmiot do minimalnej klasy pracy, gdy sklep używagroups.
Otwieranie: lokalizacje i cele
Z locations, ox_inventory pokazuje interakcję na tych współrzędnych. Z targets, tworzy pudełka ox_target zamiast, co jest lepsze dla licznika lub okna:
targets = {
{
loc = vec3(25.7, -1347.3, 29.5),
length = 0.7,
width = 0.5,
heading = 0.0,
minZ = 29.0,
maxZ = 31.0,
distance = 1.5,
},
},ox_target musi działać aby to zadziałało, ponieważ sklep na tym zależy. Jeśli chcesz tylko jeden z dwóch sposobów, usuń drugą tabelę.
Sklepy zablokowane na pracę i punkty mapy
Ograniczy sklep do pracy z groups, używając nazw prac i minimalnych klas:
Police = {
name = 'Police armory',
groups = { police = 0 },
inventory = {
{ name = 'WEAPON_STUNGUN', price = 0 },
{ name = 'ammo-9', price = 0, count = 200 },
},
locations = { vec3(480.2, -996.5, 30.7) },
},Dla punktu mapy, dodaj tabelę blip do sklepu:
blip = { id = 59, colour = 69, scale = 0.8 },id to numer sprite'a i colour numer koloru. Numery pochodzą z list punktów GTA, i ta sama idea jest wyjaśniona w tworzeniu punktów mapy w FiveM. Uruchom ponownie ox_inventory aby zastosować zmiany pliku.
Zarejestruj sklep z innego zasobu
Gdy sklep jest tworzony przez twój własny skrypt, na przykład przez biznes lub zasób pracy, nie edytuj data/shops.lua. Zarejestruj go na serwerze:
-- server.lua of your resource
exports.ox_inventory:RegisterShop('Bakery', {
name = 'Bakery',
inventory = {
{ name = 'bread', price = 4 },
{ name = 'croissant', price = 6, count = 30 },
},
locations = {
vec3(-1285.7, -1127.1, 6.8),
},
})RegisterShop(type, data) bierze string typu i tę samą tabelę co w pliku. Zarejestruj to gdy zasób się uruchamia. Jeśli ox_inventory restartuje, twój zasób musi zarejestrować sklep ponownie, więc rejestruj na onServerResourceStart dla ox_inventory też:
AddEventHandler('onServerResourceStart', function(resource)
if resource == 'ox_inventory' then
registerMyShops()
end
end)Otwórz sklep z klienta
Jeśli nie chcesz lokalizacji lub celu na sklepie, lub chcesz otworzyć go ze swojego własnego interfejsu, użyj exportu klienta:
exports.ox_inventory:openInventory('shop', { type = 'General', id = 1 })type to klucz sklepu. id to pozycja lokalizacji w liście locations (lub targets), zaczynając od 1. Jeśli sklep ma jedną lokalizację, użyj id = 1. Sklep bez lokalizacji który został zarejestrowany przez kod jest otwierany tylko z jego typem, więc testuj twoją wersję jeśli id jest potrzebny.
Porada: serwer wciąż sprawdza sklep gdy go otwierasz, więc klient nie może kupić ze sklepu pracy którą nie ma pracę.
Tworzenie sklepów bez edytowania kodu
Jeśli tworzysz wiele sklepów, edytowanie Lua staje się powtarzalne. Shop Creator pozwala ci tworzyć sklepy w grze.
Shop CreatorZbuduj sklep w niecałą minutę — właściciele, pracownicy, sejfy i napady w zestawie.od 24,20 €Zobacz skrypt →
Checklist
| Objaw | Naprawić |
|---|---|
| Sklep nie pojawia się | Uruchom ponownie ox_inventory po edytowaniu data/shops.lua |
| Sklep otwiera się pusty lub z błędem | Przedmiot w inventory brakuje z data/items.lua |
| Nie można wchodzić w interakcję ze sklepem | Sprawdź locations lub targets, i że ox_target działa |
| Zła waluta | Ustaw currency na wpisie przedmiotu |
| Sklep pracy otwarty dla wszystkich | Dodaj groups = { job = grade } |
| Zarejestrowany sklep utraty po restarcie | Wołaj RegisterShop ponownie gdy ox_inventory się uruchamia |
Szybkie odpowiedzi
Gdzie dodaję sklep w ox_inventory?
W ox_inventory/data/shops.lua, jako nowy wpis z nazwą, listą inventory i jedną lub więcej locations lub targets. Uruchom ponownie ox_inventory potem.
Czy sklep może wziąć czarne pieniądze zamiast gotówki?
Tak. Ustaw currency = 'black_money' na wpisie przedmiotu, i sklep pobiera ten przedmiot zamiast domyślnych pieniędzy.
Jak utworzyć sklep ze swojego własnego skryptu?
Wołaj exports.ox_inventory:RegisterShop(type, data) na serwerze, potem otwórz to z klienta z exports.ox_inventory:openInventory('shop', { type = type }).
