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.
Który plik za co odpowiada
Dział zatytułowany „Który plik za co odpowiada”| Plik | Za co odpowiada | Otwarty? |
|---|---|---|
config.lua | Framework, język, sposób rozmowy graczy z NPC, kolor okna dialogowego, /cancelquest, zrzuty ekranu | Tak |
bridge/bridge_server.lua | Pieniądze, przedmioty, dane gracza, callbacki i sprawdzanie uprawnień | Tak |
bridge/bridge_client.lua | Powiadomienia, tekst pomocy, dane gracza i sposób, w jaki gracz jest ratowany (revive) | Tak |
locales/*.lua | Każdy fragment tekstu: edytor, okno dialogowe, powiadomienia, logi webhooków | Tak |
install.sql | Osiem tabel, importowanych jednorazowo | Tak |
web/ | Edytor, okno dialogowe, minigra i pasek postępu (HTML, CSS, JS) | Do odczytu |
client/, server/ | Silnik questów | Escrow |
client/game_data/*.lua | Listy stojące za wybierakami edytora: pedy, auta, kości, animacje, cząsteczki, dźwięki, efekty ekranu | Escrow |
config.lua
Dział zatytułowany „config.lua”| Opcja | Co robi | Domyślnie |
|---|---|---|
Config.Framework | Z 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.Locale | Język edytora, okna dialogowego i powiadomień. Zobacz Języki | 'en' |
Config.Debug | Jest w pliku; ta wersja nie wypisuje przy nim nic dodatkowego | true |
Rozmowa z zleceniodawcami questów
Dział zatytułowany „Rozmowa z zleceniodawcami questów”| Opcja | Co robi | Domyślnie |
|---|---|---|
Config.InteractionType | 'ox_target', 'qb-target' lub 'drawtext' (tekst 3D i klawisz) | 'ox_target' |
Config.InteractionDistance | Jak blisko, w metrach, gracz musi być, aby porozmawiać z NPC | 2.5 |
Config.InteractionKey | Kontrolka używana z 'drawtext' i przez węzeł Interact in Area. 38 to E | 38 |
Config.ThemeColor | Kolor akcentu okna dialogowego: blue, pink, yellow, red, green, purple, orange, cyan, white lub black | "purple" |
Anulowanie questa
Dział zatytułowany „Anulowanie questa”| Opcja | Co robi | Domyślnie |
|---|---|---|
Config.EnableCancelQuest | Rejestruje komendę, która pozwala graczowi porzucić aktywny quest | true |
Config.CancelQuestCommand | Nazwa komendy, bez ukośnika | "cancelquest" |
Anulowanie czyści zapisany postęp gracza w tym queście i usuwa to, co quest wygenerował.
Zrzuty ekranu
Dział zatytułowany „Zrzuty ekranu”| Opcja | Co robi | Domyślnie |
|---|---|---|
Config.ScreenshotBasic | Pozwala węzłowi Send Webhook dołączyć zrzut ekranu, gdy zaznaczone jest jego pole zrzutu. Wymaga uruchomionego screenshot-basic | true |
Komendy i uprawnienia
Dział zatytułowany „Komendy i uprawnienia”| Komenda | Kto może jej użyć | Co robi |
|---|---|---|
/questcreator | Każdy z ACE mic_questcreator.open | Otwiera Quest & Event Creator |
/cancelquest | Każdy gracz, gdy Config.EnableCancelQuest jest włączone | Porzuca 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:
- Skopiuj
locales/en.luai nazwij kopię kodem swojego języka, na przykładlocales/pl.lua. - 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%szostaw w spokoju. - Dodaj swój plik do
shared_scriptswfxmanifest.lua, razem z pozostałymi plikami językowymi i powyżejconfig.lua. - Ustaw
Config.Localena swój kod, a następnie wykonajrefreshi 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
| Funkcja | Do czego służy |
|---|---|
Bridge.Server.Initialize | Pobiera fmLib oraz obiekt ESX lub QBCore przy starcie zasobu |
Bridge.Server.RegisterServerCallback | Rejestruje callbacki przez ESX lub QBCore |
Bridge.Server.GetPlayer, GetPlayerParams | Gracz przez fmLib oraz jego identyfikator, imię i praca |
Bridge.Server.GetMoney, AddMoney, RemoveMoney | Pieniądze, przez fmLib |
Bridge.Server.GetItem, AddItem, RemoveItem | Przedmioty, przez fmLib, z którymkolwiek ekwipunkiem fmLib rozmawia |
Bridge.Server.IsPlayerAllowed | Kto może otwierać i używać edytora. Sprawdza ACE mic_questcreator.open |
bridge/bridge_client.lua
| Funkcja | Do czego służy |
|---|---|
Bridge.Client.ShowNotification | Każde powiadomienie. Zastąp treść, aby użyć własnego zasobu powiadomień |
Bridge.Client.ShowHelpNotification | Tekst pomocy w lewym górnym rogu |
Bridge.Client.GetPlayerData, IsPlayerLoaded | Dane gracza, używane przez sprawdzenia Has Job i Is Night/Day |
Bridge.Client.TriggerServerCallback | Callbacki przez ESX lub QBCore |
Bridge.Client.RevivePlayer | Uż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.
Eksporty
Dział zatytułowany „Eksporty”Dwa eksporty klienckie pozwalają innemu zasobowi pożyczyć minigrę i pasek postępu z quest creatora.
| Eksport | Argumenty | Co robi |
|---|---|---|
StartMinigame | trudność (1–5), szybkość (1–5), rundy, callback | Otwiera minigrę w stylu włamywania zamków. Callback otrzymuje true lub false |
StartProgressBar | czas trwania w milisekundach, etykieta | Pokazuje wbudowany pasek postępu |
Wywołuj je na mic_questcreator ze skryptu klienckiego.
Wydarzenia społeczności i eksport
Dział zatytułowany „Wydarzenia społeczności i eksport”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.