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:

lua
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 inventory musi istnieć w data/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:

lua
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' },
},
  • price to co jeden koszt jednostki.
  • count to zapasy. Bez niego przedmiot jest nieograniczony, i z nim zapasy idą w dół gdy gracze kupują.
  • currency to przedmiot który za to płaci. Domyślnie do pieniędzy, i black_money to powszechna alternatywa.
  • license prosi o przedmiot licencji zanim gracz może kupić.
  • grade ogranicza jeden przedmiot do minimalnej klasy pracy, gdy sklep używa groups.

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:

lua
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:

lua
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:

lua
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:

lua
-- 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ż:

lua
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:

lua
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 }).

Skrypty bez tego problemu

Shop CreatorZbuduj sklep w niecałą minutę — właściciele, pracownicy, sejfy i napady w zestawie.Zobacz skrypt →Item Creator V2Twórz używalne przedmioty z animacjami, propami, efektami i nie tylko — bez pisania kodu.Zobacz skrypt →

Czytaj dalej