- Dokumentacja
- Zasoby i meta.xml
Przewodnik
Zasoby i meta.xml
Wszystko o pliku meta.xml: skrypty serwera, klienta i wspólne, pliki dla graczy, eksporty i kolejność pobierania.
Pełny przykład
<meta>
<info author="Ty" name="Mój tryb" version="1.0" type="gamemode" />
<script src="server.lua" type="server" />
<script src="client.lua" type="client" />
<script src="wspolne.lua" type="shared" />
<script src="tajne.lua" type="client" cache="false" />
<file src="logo.png" />
<file src="muzyka.mp3" download="false" />
<download_priority_group>10</download_priority_group>
<export function="dajNagrode" type="server" />
</meta>
info
Opis zasobu. Atrybut type to script (domyślnie) albo gamemode. Tryby gry startują na końcu, gdy inne zasoby są już gotowe.
script
| Atrybut | Znaczenie |
|---|---|
src | ścieżka do pliku .lua w folderze zasobu |
type="server" | skrypt działa tylko na serwerze i nigdy go nie opuszcza |
type="client" | skrypt jest wysyłany do gracza i działa w jego grze |
type="shared" | ten sam plik działa po obu stronach |
cache="false" | skrypt klienta nie jest zapisywany na dysku gracza, tylko pobierany przy każdym wejściu |
Skrypty wspólne przydają się na stałe dane i funkcje pomocnicze, np. tabelę cen albo listę pojazdów. Po każdej stronie działają niezależnie: zmiana zmiennej na serwerze nie zmienia jej u gracza.
file
Plik wysyłany do gracza: obraz, dźwięk, czcionka, dane. Gracz pobiera go przy wejściu, a przy następnym wejściu tylko wtedy, gdy plik się zmienił.
Z download="false" plik nie jest pobierany przy starcie. Skrypt klienta ściąga go sam, kiedy go potrzebuje, przez downloadFile("muzyka.mp3"), a wynik dostaje w zdarzeniu onClientFileDownloadComplete.
Wzorce w src
W src znaczników script, file i map możesz wpisać wzorzec zamiast jednej nazwy,:
| Wzorzec | Pasuje do |
|---|---|
* | dowolne znaki w nazwie, bez przechodzenia do podfolderów (*.lua) |
** | dowolne znaki razem z podfolderami (images/**) |
? | jeden znak (sounds/s?.mp3) |
<meta>
<script src="shared/**/*.lua" type="shared" />
<script src="client/*.lua" type="client" />
<file src="images/**" />
</meta>
Pliki z jednego wzorca są ładowane w kolejności alfabetycznej. Wzorzec w file pomija pliki zadeklarowane jako script (kod serwera nie trafi do graczy), meta.xml i ukryte foldery (.git itp.). Wzorzec, który nie pasuje do żadnego pliku, daje ostrzeżenie w konsoli serwera, a zasób startuje normalnie.
download_priority_group
Kolejność pobierania przy wejściu gracza. Większa liczba jest pobierana wcześniej, domyślnie 0, ujemne na końcu. Przydaje się, gdy ekran logowania ma się pojawić, zanim dojdą ciężkie pliki innych zasobów.
export
Udostępnia funkcję innym zasobom. Wywołujesz ją przez exports:
-- meta.xml zasobu "nagrody": <export function="dajNagrode" type="server" />
function dajNagrode(gracz, kwota)
givePlayerMoney(gracz, kwota)
return true
end
exports.nagrody:dajNagrode(gracz, 500)
W funkcji eksportu sourceResource to zasób, który ją wywołał, a sourceResourceRoot jego korzeń. Dzięki temu zasób z eksportami może sprzątać po zasobach, które przestały działać (np. zamknąć ich panele w onResourceStop z source == sourceResourceRoot):
local wywolania = {}
function dajNagrode(gracz, kwota)
wywolania[sourceResource] = (wywolania[sourceResource] or 0) + 1
givePlayerMoney(gracz, kwota)
return true
end
include
<include resource="nazwa" /> = ten zasób wymaga innego. Przy starcie serwer najpierw uruchamia zasoby z <include> (także te z disabled_resources), a gdy któregoś brakuje w resources/, zasób nie startuje i w konsoli jest błąd. Pętla zależności (A wymaga B, B wymaga A) też zatrzymuje start.
<meta>
<include resource="trilogy_core" />
<script src="server.lua" type="server" />
</meta>
Które zasoby startują i w jakiej kolejności
- Każdy folder z
meta.xmlwresources/(także w podfolderach-grupach) startuje razem z serwerem. - Kolejność: alfabetycznie po nazwie, a zasoby
<info type="gamemode">na końcu. Zależności z<include>ruszają przed zasobem, który ich wymaga. - Wyłączenie bez kasowania folderu:
"disabled_resources": ["nazwa"]wserver-config.json. Taki zasób uruchomisz komendąstart nazwaalbo jako zależność innego. - Nowy folder dodany w trakcie działania serwera:
start nazwaw konsoli albo ze skrypturefreshResources()istartResource(getResourceFromName("nazwa")).
Limity i konsola
Jeden plik może mieć do 64 MB, cały zasób do 256 MB. Wszystko, co zasób utworzy (pojazdy, obiekty, okna, timery), znika po jego zatrzymaniu.
| Komenda | Co robi |
|---|---|
start <zasób> | uruchamia zasób |
stop <zasób> | zatrzymuje zasób i usuwa wszystko, co utworzył |
restart <zasób> | zatrzymuje i uruchamia ponownie, także u graczy |