Dokumentacja Pulse Phone
Ekwipunki
4. Przedmioty i ekwipunki
Przedmioty są potrzebne tylko na serwerach z frameworkiem. Pliki są w config/items/, a obrazki w config/items/images/.
Co telefon robi sam. Przy starcie ustala, których przedmiotów potrzebują włączone funkcje (tabela poniżej), a potem:
| Twój ekwipunek | Co się dzieje |
|---|---|
| ESX z domyślnym ekwipunkiem | Brakujące przedmioty są dodawane do tabeli items w ESX. Istniejące wiersze nigdy nie są zmieniane. Konsola wypisuje jedną linię z tym, co dodano. Na starszym ESX, który nie potrafi przeładować przedmiotów, zrestartuj serwer raz. config/items/esx.sql służy tylko do ręcznego dodania. |
| QBCore z qb-inventory (także ps-, lj-inventory) | Brakujące przedmioty są dodawane do shared items QBCore w trakcie działania serwera. Przedmiot, który qb-core już ma, na przykład własny phone, zostaje bez zmian. Konsola wypisuje jedną linię z tym, co dodano. |
| ox_inventory (ESX, Qbox, ox_core) | ox_inventory czyta przedmioty tylko z własnego pliku. Sprawdzenie startowe wymienia tylko brakujące przedmioty i wypisuje ich wpisy pod ramką, gotowe do wklejenia do ox_inventory/data/items.lua. |
| Każdy inny ekwipunek | Sprawdzenie startowe wymienia brakujące przedmioty. Dodaj je tak, jak dany ekwipunek dodaje przedmioty (tabela pod "Co zrobić dla twojego ekwipunku"). |
Ważne
Obrazki nigdy nie są kopiowane za ciebie. Sprawdzenie startowe wymienia każdy brakujący obrazek i folder, do którego trafia, na przykład copy pulse_magpack.png, pulse_router.png from config/items/images/ into qb-inventory/html/images.
Sprawdzenie startowe ma jedną linię Items: [OK], gdy wszystkie przedmioty są na miejscu, albo [FAIL] z brakującymi nazwami i rozwiązaniem pod spodem. phone:health wypisuje je ponownie, gdy coś naprawisz.
| Przedmiot | Potrzebujesz go, gdy |
|---|---|
phone |
Tylko z Config.Item.required = true (gracze muszą nosić telefon) albo z unikalnymi telefonami. |
pulse_phone_box |
Sklep sprzedaje telefony w zaplombowanym pudełku. Domyślnie włączone (Config.Store.box). |
pulse_magpack, pulse_magpack_max, pulse_cable |
Akcesoria do ładowania. Domyślnie włączone (Config.Charging). |
pulse_router |
Pulse Home Wi-Fi, router, który gracze stawiają w domu. Domyślnie włączone (config/apps.lua). |
pulse_burner |
Pulse Burner, telefon na kartę z własnym numerem. Domyślnie włączone (config/apps.lua). |
pulse_case, pulse_case_clear, pulse_pouch, pulse_protector |
Ochrona telefonu: etui, wodoodporny pokrowiec i szkło ochronne. Domyślnie włączone (config/apps.lua). |
pulse_buds, pulse_ringlight, pulse_wallet |
Pulse Buds, Pulse Ring Light i Pulse Card Wallet. Domyślnie włączone (config/apps.lua). |
powerbank |
Opcjonalnie. Stary przedmiot powerbanku; działa jak Reserve. |
pulse_phone_box_<finish> |
Tylko z Config.Store.boxPerFinish = true. |
radio (albo dowolna nazwa) |
Tylko gdy ustawisz Config.Radio.item (sekcja 5, Radio). ox_inventory i qb-core mają już przedmiot radio. |
Jeśli brakuje przedmiotu, telefon i tak startuje. Sklep wyłącza pudełka albo zdejmuje ten przedmiot ze sprzedaży, a konsola podaje przedmiot do dodania.
Reserve'y się stackują. Pełne powerbanki nie mają metadanych, więc do 20 mieści się w jednym slocie. Częściowo zużyty powerbank po zdjęciu staje się osobnym przedmiotem z naładowaniem zapisanym w metadanych (na ox_inventory, qb-inventory i qs-inventory), więc potrzebuje wolnego slotu. Bez metadanych przedmiotów (standalone, domyślny ekwipunek ESX) śledzony jest tylko używany powerbank, jeden na postać na rozmiar.
Z Config.Item.required = true (albo unikalnymi telefonami) serwer sprawdza przedmiot telefonu przez twój ekwipunek i odrzuca zapytania telefonu od gracza, który go nie ma. Utrata przedmiotu kończy połączenia gracza, łącznie z alarmowymi, i zamyka telefon.
Oddawanie zaplombowanego pudełka komuś innemu. Na ox_inventory, qb-inventory i qs-inventory sam przedmiot pudełka niesie kupiony model i wykończenie, więc ten, kto je otworzy, dostaje ten telefon. Na każdym innym ekwipunku pudełko to zwykły przedmiot, a model i wykończenie są zapisane w rekordzie zakupu kupującego: oddane pudełko otwiera się jako kolejny zakup nowego właściciela albo jako domyślny model i wykończenie. Z Config.Store.boxPerFinish = true nazwa przedmiotu pudełka zachowuje wykończenie, ale nie model.
Dokładny tekst do wklejenia dla twojego ekwipunku
Nigdy nie musisz sam rozpracowywać wpisu przedmiotu. Gdy brakuje przedmiotu, sprawdzenie startowe wypisuje pod ramką dokładny tekst dla twojego ekwipunku, a Settings > Server > Health Check pokazuje ten sam tekst z przyciskiem Copy. Wklej go, zrestartuj ekwipunek i telefon i uruchom ponownie phone:health.
| Twój ekwipunek | Co jest wypisywane | Gdzie to trafia |
|---|---|---|
| ox_inventory (ESX, Qbox, ox_core, ND Core) | Wpisy ox_inventory | ox_inventory/data/items.lua, wewnątrz jego tabeli |
| QBCore (qb-, ps-, lj-inventory) | Wpisy QBCore (tylko jeśli telefon nie mógł dodać ich sam) | qb-core/shared/items.lua |
| qs-inventory | Wpisy w formacie QBCore | Lista przedmiotów qs-inventory |
| Domyślny ekwipunek ESX | Jedna linia SQL (tylko jeśli telefon nie mógł dodać ich sam) | Twoje narzędzie do bazy, potem restart |
| TMC | Wpisy TMC dla każdego przedmiotu, którego potrzebuje telefon (TMC nie da się zapytać, które ma) | Lista przedmiotów TMC (plik z sim_card), z zachowaniem tych, które już masz |
| Każdy inny ekwipunek | Wpisy w formacie QBCore, który czyta większość ekwipunków | Lista przedmiotów danego ekwipunku |
Jak wygląda każdy z nich, na przykładzie Reserve:
-- ox_inventory/data/items.lua
['pulse_magpack'] = { label = "Pulse Reserve", weight = 110, stack = true, close = true, consume = 0, description = "Magnetic battery pack. Fills 70% of a phone.", client = { export = "phone.usePack", image = "pulse_magpack.png" } },
-- qb-core/shared/items.lua, qs-inventory and similar
['pulse_magpack'] = { name = "pulse_magpack", label = "Pulse Reserve", weight = 110, type = 'item', image = "pulse_magpack.png", unique = false, useable = true, shouldClose = true, description = "Magnetic battery pack. Fills 70% of a phone." },
-- TMC
['pulse_magpack'] = { ['label'] = "Pulse Reserve", ['weight'] = 110, ['type'] = 'item', ['image'] = "pulse_magpack.png", ['unique'] = false, ['stackable'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = "Magnetic battery pack. Fills 70% of a phone." },-- ESX default inventory
INSERT IGNORE INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES
('pulse_magpack', 'Pulse Reserve', 1, 0, 1);Własny przedmiot phone w ox_inventory. ox_inventory ma wpis phone zrobiony dla innego skryptu telefonu. Nie musisz go zmieniać: jego użycie otwiera Pulse Phone. Sprawdzenie startowe ma linię Phone item, która mówi, jak jest podpięty twój wpis. Tylko gdy wskazuje eksport innego skryptu ([WARN] albo [FAIL] przy wymaganych lub unikalnych telefonach), wypisuje wpis zastępczy. Jeśli skrypt telefonu, dla którego zrobiono ten wpis, dalej działa, przedmiot otwiera zamiast tego jego: linia Phone item go wymienia; usuń go z server.cfg.
Co zrobić dla twojego ekwipunku
| Ekwipunek | Gdzie trafiają przedmioty | Gdzie trafiają obrazki |
|---|---|---|
| ox_inventory (ESX, Qbox, ox_core) | Wklej wpisy, które wypisuje sprawdzenie startowe (albo cały ox_inventory.lua), do ox_inventory/data/items.lua, wewnątrz jego tabeli. Zostaw własny wpis ['phone'] z ox_inventory (otwiera Pulse Phone); zastąp go wypisanym tylko wtedy, gdy linia Phone item mówi, że otwiera inny skrypt |
ox_inventory/web/images/ |
| qb-inventory | Nic: dodawane przy starcie. Żeby dodać je ręcznie, wklej qb-core.lua do qb-core/shared/items.lua |
qb-inventory/html/images/ |
| ps-inventory, lj-inventory | Nic: dodawane przy starcie, tak jak dla qb-inventory | folder obrazków twojego ekwipunku |
| qs-inventory | Wklej qb-core.lua do qb-core/shared/items.lua albo do własnej listy przedmiotów qs-inventory |
folder obrazków twojego ekwipunku |
| codem-inventory, core_inventory, tgiann-inventory, origen_inventory | Dodaj przedmioty do jego listy przedmiotów tak samo jak każdy inny przedmiot, używając nazw, etykiet i wag z qb-core.lua (phone, powerbank, pulse_magpack, pulse_magpack_max, pulse_cable, pulse_router, pulse_burner, pulse_buds, pulse_ringlight, pulse_wallet, pulse_phone_box). Użyj pulse_magpack.png także dla powerbank i pulse_magpack_max |
folder obrazków twojego ekwipunku |
| ak47_inventory | Dodaj przedmioty oraz linie onUse poniżej |
folder obrazków twojego ekwipunku |
| Domyślny ekwipunek ESX | Nic: dodawane przy starcie. esx.sql to sposób ręczny |
niepotrzebne |
| vRP 2 | Zobacz sekcję vRP powyżej | |
| Standalone | Nic |
Dla pozostałych ekwipunków w tej tabeli telefon sam czyni przedmioty używalnymi. ox_inventory używa linii client = { export = 'phone....' }, które już są w jego pliku.
ox_inventory: jeśli wcześniej używałeś innego telefonu, usuń też jego hook Item('phone', ...) z ox_inventory/modules/items/client.lua.
ak47_inventory trzyma użycie przedmiotu we własnym wpisie każdego przedmiotu. Dodaj te:
-- powerbank
server = { onUse = function(source) exports.phone:UsePowerbank(source) end },
-- pulse_magpack and pulse_magpack_max
server = { onUse = function(source, item) exports.phone:UseMagPack(source, item and item.slot, item and item.name) end },
-- pulse_cable
server = { onUse = function(source) exports.phone:UseChargingCable(source) end },
-- pulse_phone_box
server = { onUse = function(source, item) exports.phone:UseBox(source, item and item.slot) end },
-- pulse_router
server = { onUse = function(source) exports.phone:UseRouter(source) end },
-- pulse_burner
server = { onUse = function(source, item) exports.phone:UseBurner(source, item and item.slot) end },
-- pulse_case, pulse_case_clear, pulse_pouch, pulse_protector
server = { onUse = function(source, item) exports.phone:FitPhoneProtection(source, item and item.name) end },
-- pulse_buds
server = { onUse = function(source) exports.phone:UseBuds(source) end },
-- pulse_ringlight
server = { onUse = function(source) exports.phone:UseRingLight(source) end },
-- pulse_wallet
server = { onUse = function(source) exports.phone:UseCardWallet(source) end },Unikalne telefony (Config.Item.unique = true) zapisują numer telefonu w przedmiocie, więc przekazanie przedmiotu przekazuje telefon. Wymagają ox_inventory, qb-inventory, qs-inventory, core_inventory albo codem-inventory.