Przejdź do głównej zawartości

Personalizacja

Prawie wszystko dotyczące questa — kto go daje, co mówi i co dzieje się dalej — buduje się w edytorze i zapisuje w Twojej bazie danych. Pliki służą do kilku rzeczy, które są takie same dla każdego questa.


PlikZa co odpowiadaOtwarty?
config.luaFramework, język, sposób rozmowy graczy z NPC, kolor okna dialogowego, /cancelquest, zrzuty ekranuTak
bridge/bridge_server.luaPieniądze, przedmioty, dane gracza, callbacki i sprawdzanie uprawnieńTak
bridge/bridge_client.luaPowiadomienia, tekst pomocy, dane gracza i sposób, w jaki gracz jest ratowany (revive)Tak
locales/*.luaKażdy fragment tekstu: edytor, okno dialogowe, powiadomienia, logi webhookówTak
install.sqlOsiem tabel, importowanych jednorazowoTak
web/Edytor, okno dialogowe, minigra i pasek postępu (HTML, CSS, JS)Do odczytu
client/, server/Silnik questówEscrow
client/game_data/*.luaListy stojące za wybierakami edytora: pedy, auta, kości, animacje, cząsteczki, dźwięki, efekty ekranuEscrow

OpcjaCo robiDomyślnie
Config.FrameworkZ którym frameworkiem się komunikować: 'esx' lub 'qbcore'. Nie jest wykrywany automatycznie. Na QBox użyj 'qbcore' — QBox uruchamia zasoby QBCore przez swoją warstwę kompatybilności'esx'
Config.LocaleJęzyk edytora, okna dialogowego i powiadomień. Zobacz Języki'en'
Config.DebugJest w pliku; ta wersja nie wypisuje przy nim nic dodatkowegotrue
OpcjaCo robiDomyślnie
Config.InteractionType'ox_target', 'qb-target' lub 'drawtext' (tekst 3D i klawisz)'ox_target'
Config.InteractionDistanceJak blisko, w metrach, gracz musi być, aby porozmawiać z NPC2.5
Config.InteractionKeyKontrolka używana z 'drawtext' i przez węzeł Interact in Area. 38 to E38
Config.ThemeColorKolor akcentu okna dialogowego: blue, pink, yellow, red, green, purple, orange, cyan, white lub black"purple"
OpcjaCo robiDomyślnie
Config.EnableCancelQuestRejestruje komendę, która pozwala graczowi porzucić aktywny questtrue
Config.CancelQuestCommandNazwa komendy, bez ukośnika"cancelquest"

Anulowanie czyści zapisany postęp gracza w tym queście i usuwa to, co quest wygenerował.

OpcjaCo robiDomyślnie
Config.ScreenshotBasicPozwala węzłowi Send Webhook dołączyć zrzut ekranu, gdy zaznaczone jest jego pole zrzutu. Wymaga uruchomionego screenshot-basictrue

KomendaKto może jej użyćCo robi
/questcreatorKażdy z ACE mic_questcreator.openOtwiera Quest & Event Creator
/cancelquestKażdy gracz, gdy Config.EnableCancelQuest jest włączonePorzuca aktywny quest. Zmieniana przez Config.CancelQuestCommand

To samo uprawnienie chroni wszystko, co edytor zapisuje, usuwa, importuje i eksportuje — sprawdzenie odbywa się na serwerze, a nie tylko przy otwarciu menu. Nadaj je linijką add_ace dla identyfikatora lub grupy; samo sprawdzenie znajduje się w Bridge.Server.IsPlayerAllowed w bridge/bridge_server.lua, jeśli wolisz powiązać je z własnym systemem adminów.


W locales/ dostarczanych jest trzynaście plików: en, es, fr, de, it, pt, ru, ja, ko, zh-CN, ar, nl i cs. Ustaw Config.Locale na nazwę pliku bez .lua.

Dodawanie języka:

  1. Skopiuj locales/en.lua i nazwij kopię kodem swojego języka, na przykład locales/pl.lua.
  2. W środku zmień nazwę tabeli z 'en' na swój kod i przetłumacz tekst po prawej stronie każdej linijki. Klucze po lewej oraz każde %s zostaw w spokoju.
  3. Dodaj swój plik do shared_scripts w fxmanifest.lua, razem z pozostałymi plikami językowymi i powyżej config.lua.
  4. Ustaw Config.Locale na swój kod, a następnie wykonaj refresh i zrestartuj.

Brakujący w Twoim pliku klucz pojawia się w grze jako Translation [xx][key] does not exist, co mówi dokładnie, którą linijkę dodać.

To, co mówią NPC, tytuły questów i treść powiadomień nie znajdują się w plikach językowych — wpisujesz je w edytorze, w jakim języku chcesz.


Dwa otwarte pliki stoją między silnikiem questów a resztą Twojego serwera.

bridge/bridge_server.lua

FunkcjaDo czego służy
Bridge.Server.InitializePobiera fmLib oraz obiekt ESX lub QBCore przy starcie zasobu
Bridge.Server.RegisterServerCallbackRejestruje callbacki przez ESX lub QBCore
Bridge.Server.GetPlayer, GetPlayerParamsGracz przez fmLib oraz jego identyfikator, imię i praca
Bridge.Server.GetMoney, AddMoney, RemoveMoneyPieniądze, przez fmLib
Bridge.Server.GetItem, AddItem, RemoveItemPrzedmioty, przez fmLib, z którymkolwiek ekwipunkiem fmLib rozmawia
Bridge.Server.IsPlayerAllowedKto może otwierać i używać edytora. Sprawdza ACE mic_questcreator.open

bridge/bridge_client.lua

FunkcjaDo czego służy
Bridge.Client.ShowNotificationKażde powiadomienie. Zastąp treść, aby użyć własnego zasobu powiadomień
Bridge.Client.ShowHelpNotificationTekst pomocy w lewym górnym rogu
Bridge.Client.GetPlayerData, IsPlayerLoadedDane gracza, używane przez sprawdzenia Has Job i Is Night/Day
Bridge.Client.TriggerServerCallbackCallbacki przez ESX lub QBCore
Bridge.Client.RevivePlayerUżywane przez handler śmierci. Wywołuje esx_ambulancejob:revive na ESX lub hospital:client:Revive na QBCore, a następnie ratuje natywnie, jeśli gracz nadal jest martwy

Używasz innego skryptu ambulansu? Zmień event w Bridge.Client.RevivePlayer na ten, którego nasłuchuje Twój skrypt. Inny zasób powiadomień? Zmień Bridge.Client.ShowNotification. Zachowaj nazwy funkcji — silnik wywołuje je po nazwie.


Dwa eksporty klienckie pozwalają innemu zasobowi pożyczyć minigrę i pasek postępu z quest creatora.

EksportArgumentyCo robi
StartMinigametrudność (1–5), szybkość (1–5), rundy, callbackOtwiera minigrę w stylu włamywania zamków. Callback otrzymuje true lub false
StartProgressBarczas trwania w milisekundach, etykietaPokazuje wbudowany pasek postępu

Wywołuj je na mic_questcreator ze skryptu klienckiego.


Community Events w edytorze wylistowuje wydarzenia, którymi podzieliły się inne serwery; zaimportuj jedno, a zostanie dodane do Twoich wydarzeń jak każde inne. Lista jest pobierana z GitHuba, więc Twój serwer potrzebuje wychodzącego dostępu do internetu, by się wypełniła.

Export Event pyta o nazwę, opis i autora, a następnie zapisuje wydarzenie do pliku JSON w folderze zasobu, w exports/. Ten folder nie jest dostarczany z zasobem — najpierw utwórz pusty folder exports w mic_questcreator, bo inaczej plik wyląduje w katalogu głównym zasobu jako export_<name>.json.