PL/meta.xml: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
 
(12 intermediate revisions by 9 users not shown)
Line 1: Line 1:
Plik ''meta.xml'' 'pokazuje' serwerowi MTA co ma włączyć, od skryptu, poprzez ustawienia wymaganej wersji klienta do plików zawartych w skrypcie. To także zakres "elementów". Jest ona napisana w języku XML, który jest oparty na języku HTML i jest jednostką dominującą XHTML.
Plik '''meta.xml''' określa zawartość oraz konfigurację zasobu. Plik jak samo rozszerzenie wskazuje jest w formacie XML, który jest oparty na języku HTML i jest jednostką dominującą XHTML.
 
=Tagi=
=Tagi=
XML jest tekstowym formatem danych, który jest stosowany do ich prezentacji. MTA wykorzystuje opartą na XML język do opisu metadanych dla zasobów przy użyciu tagów poniżej:
XML jest tekstowym formatem danych, który jest stosowany do ich prezentacji. MTA wykorzystuje pliki XML do opisu metadanych dla zasobów przy użyciu poniższych tagów:
 
*'''<info />''' Określa podstawowe informacje o zasobie, które mogą być później odczytane przy użyciu [[getResourceInfo]]. Tag nie jest wymagany. Dostępne parametry:
** '''author:''' Autor zasobu.
** '''version:''' Wersja zasobu.
** '''name:''' Nazwa zasobu.
** '''description:''' Krótki opis zasobu.
** '''type:''' Typ zasobu, dostępne opcje to ''gamemode'', ''script'', ''map'' oraz ''misc''.


*'''<info />'''
*'''<script />''' Kod źródłowy zasobu, dostępne parametry:
** '''author:''' Autor tego zasobu.
** '''src:''' Ścieżka do pliku z kodem źródłowym np. '''.lua'''.
** '''version:''' Wersja tego zasobu.
** '''type:''' Rodzaj kodu źródłowego, dostępne opcje to '''client''', '''server''' oraz '''shared'''. W przypadku gdy plik jest po stronie serwera, nie trzeba podawać tego parametru. Domyślnie jest to '''server'''.
** '''name:''' Nazwa tego zasobu.
** '''cache:''' Określa czy plik źródłowy zasobu ma zapisywać się na dysku klienta, dostępne opcje to '''true''' oraz '''false'''. Ma zastosowanie tylko dla plików klienta, czyli tam gdzie parametr '''type''' ustawiono na '''client'''. Domyślnie '''true'''. Pliki z ustawionym parametrem ''cache = false'' są wczytywane jako pierwsze, więc kolejność wczytywania plików może zostać zakłócona w przypadku mieszanych ustawień cache dla różnych plików
** '''description:''' Krótki opis tego zasobu.
** '''validate:''' Sprawdza kompatybilność pobranego zasobu z tym na serwerze, dostępne opcje '''true''' lub '''false'''. Domyślnie '''true'''.
** '''type:''' Typ tego zasobu, które mogą być w postaci "gamemode", "script", "map" i "misc".
*'''<script />''' Kod źródłowy dla tego zasobu, możliwe parametry:
** '''src:''' Nazwa pliku z kodem źródłowym
** '''type:''' Rodzaj kodu źródłowego: "client" lub "server"
<!--
<!--
** '''protected:''' For client-side scripts, whether this script should or not be saved in the clients hard disk: "true" or "false". NOTE: [http://bugs.mtasa.com/view.php?id=6831 there might be a bug with this].
** '''protected:''' For client-side scripts, whether this script should or not be saved in the clients hard disk: "true" or "false".
-->
-->
*'''<map />''' Mapa do gamemode, możliwe parametry:
*'''<map />''' Mapa do gamemode, możliwe parametry:
**'''src:''' nazwa pliku .map ( może być ścieżka np."mapy/nazwapliku.map" )
**'''src:''' Ścieżka do pliku '''.map'''.
**'''dimension:''' Wymiar w którym mapa zostanie załadowana
**'''dimension:''' Wymiar w którym zostanie załadowana mapa.
*'''<file />''' Zdjęcia i pliki w rozmiaże .txd, .dll, .col lub .jpg.
 
**'''src:''' Po stronie clienta nazwa pliku ( może być też ścieżka np."zdjęcia/nazwa.jpg" )
*'''<file />''' Pliki dodatkowe tj. zdjęcia, modele, dźwięki itp.
*'''<include />''' Obejmują środki, które będą używać ten zasób
**'''src:''' Ścieżka do pliku. Od wersji '''1.6.0 r22430''' można podawać globalne ścieżki, oznacza to, że zamiast pisać każdy plik osobno można dodać po prostu wszystkie pliki używając symbolu gwiazdki '''*'''. Zobacz [[PL/Meta.xml#Wczytywanie plików za pomocą wzorca|przykład]].
**'''resource:''' Nazwa zasobu, który chcesz uruchomić z tego zasobu
**'''download:''' Określa czy plik ma zostać pobrany po starcie zasobu, dostępne opcje '''true''' lub '''false'''. Domyślnie '''true''', jeśli ustawimy na '''false''' to można później pobrać plik przez [[downloadFile]].
**'''minversion:''' Minimalna wersja
 
**'''maxversion:''' Maxsymalna wersja
*'''<include />''' Dołącza zasoby, które będą używane przez ten zasób. Oznacza to, że wskazane zasoby zostaną uruchomione wraz z tym zasobem. Tag ten może być używany jeśli korzystamy z innego zasobu przez eksporty [[call]]. Możliwe parametry:
*'''<config />''' Config to poprostu XML, możliwe parametry:
**'''resource:''' Nazwa zasobu, który ma zostać dołączony.
**'''src:''' Nazwa pliku z pliku konfiguracyjnego
**'''minversion:''' Minimalna wersja zasobu (opcjonalnie).
**'''type:''' Typ pliku konfiguracyjnym: "client" lub "server"
**'''maxversion:''' Maksymalna wersja zasobu (opcjonalnie).
*'''<export />''' Te funkcje eksportowane z tego zasobu, do innych zasobów może korzystać z nich [CALL []]
 
**'''function:''' Nazwa funkcji
*'''<config />''' Plik '''.xml''' zawierający konfigurację, która może być odczytywana przez zasoby. Możliwe parametry:
**'''type''' Czy funkcja jest eksportowana po stronie servera lub po stronie clienta (ważne są następujące wartości: "server" i "client")
**'''src:''' Ścieżka do pliku.
**'''http:''' Czy funkcja jest wywoływana za pośrednictwem protokołu HTTP (true / false)
**'''type:''' Typ pliku '''client''' lub '''server'''.
 
*'''<export />''' Funkcje, które są eksportowane z tego zasobu dla innych. W innym zasobie, aby użyć funkcji z tego zasobu użyj [[call]].
**'''function:''' Nazwa funkcji.
**'''type''' Określa czy funkcja jest eksportowana dla strony serwera, klienta czy obu, dostępne opcje to '''client''', '''server''' oraz '''shared'''.
**'''http:''' Określa czy funkcja może być wywoływana z poziomu interfejsu HTTP, dostępne opcje '''true''' lub '''false'''.
 
*'''<html />'''
*'''<html />'''
**'''src:''' Nazwa pliku HTTP (może być ścieżka)
**'''src:''' Ścieżka do pliku HTTTP.
**'''default:''' Plik html jest jeden, który jest domyślnie wyświetlane podczas wizyty/resource Name/on the server. Tylko jeden html może być domyślne, reszta jest ignorowana. (true / false)
**'''default:''' Domyślny plik .html, który będzie wyświetlany po odwiedzeniu strony zasobu przez interfejs HTTP ''/nazwaZasobu/''. Tylko jeden plik może być ustawiony jako domyślny, pozostałe będą ignorowane. Dostępne opcje '''true''' oraz '''false'''.
**'''raw:''' Html nie jest przetwarzany przez interpreter LUA i jest traktowany jako dane binarne. Muszą być stosowane dla plików binarnych (zdjęcia głównie) (true / false)
**'''raw:''' HTML nie jest przetwarzany przez interpreter Lua, a plik jest traktowany jako dane binarne. Używane w przypadku plików binarnych jak np. obrazy. Dostępne opcje '''true''' lub '''false'''.
*'''<settings> <setting name="" value=""/> </settings>:''' Większość gamemodes używać [[System Settings]], aby pozwolić administratorom serwerów skonfigurować go tak, jak im się podoba. Na przykład można ustawić okrągły czas, a następnie użyć [[dostać]] i [[zbiór]], aby uzyskać wartość lub ją zmienić, odpowiednio.
 
*'''<min_mta_version />''' Minimalne wymagania wersji dla tego zasobu do poprawnego działania. Kiedy zasoby autorskie, minimalna wersja powinna zwykle być ustawiony na bieżącej wydanej wersji MTA: SA (który w tej chwili jest "{{Current Version | pełny}}").
*'''<settings/>''' Większość gamemode'ów używa [[PL/Settings system|systemu ustawień]], aby pozwolić administratorom na konfigurację go tak jak chcą. Przykładowo można ustalić czas trwania jednej rundy, a następnie za pomocą funkcji [[get]] oraz [[set]] można odczytać lub zmienić wartość tego ustawienia.
**'''client:''' Minimalna wersja clienta
**'''<setting/>''' Konkretne ustawienie, które może być odczytywane i zmieniane przez skrypty oraz panel admina. Możliwe parametry:
**'''server:''' Minimalna wersja servera
***'''name:''' Nazwa ustawienia, która będzie używana przez funkcje [[get]] oraz [[set]] do zarządzania wartością.
*'''<aclrequest />''' Lista [[Access_Control_List | ACL]] prawa ten zasób będzie potrzebne.
***'''value:''' Wartość ustawienia.
***'''friendlyname:''' Nazwa ustawienia, która będzie wyświetlana dla użytkownika np. w panelu admina. Parametr opcjonalny.
***'''accept:''' Wartości, które są akceptowane dla tego ustawienia. Pozwala uniknąć pomyłek. Parametr opcjonalny.
***'''examples:''' Przykładowe wartości. Parametr opcjonalny.
***'''desc:''' Opis za co odpowiada ustawienie. Parametr opcjonalny.
 
*'''<min_mta_version />''' Minimalna wymagana wersja, która jest niezbędna do poprawnego uruchomienia zasobu. Gdy tworzysz zasoby, w miarę możliwości należy podawać aktualną wersję MTA:SA (w tej chwili jest to {{Current Version|full}}). Tag nie jest wymagany.
**'''client:''' Minimalna wersja klienta.
**'''server:''' Minimalna wersja serwera.
 
*'''<aclrequest />''' Lista praw [[PL/Access Control List|ACL]], które potrzebuje ten zasób. Każdy użytkownik z uprawnieniami administratora może zezwolić lub odmówić udzielenia uprawnień ACL dla zasobu używając komendy /aclrequest [list/allow/deny] <nazwa_zasobu> [<uprawnienie>/all]
**'''<right/>''' Uprawnienie, które zasób chce uzyskać. Możliwe parametry:
***'''name:''' Nazwa uprawnienia.
***'''access:''' Ustaw na '''true''', aby zezwolić na dostęp do uprawnienia dla tego zasobu lub na '''false''', aby odmówić dostępu.
 
*'''<sync_map_element_data/>''' Określa czy dane ([[PL/Element data|element data]]) mapy tj. ''PosX'' czy ''DoubleSided'' mają być przesyłane do klienta. Zazwyczaj większość zasobów i gamemode'ów nie potrzebuje tego ustawienia, a co za tym idzie tej synchronizacji danych (''Map Editor'' oraz ''Interiors'' wymagają tego ustawienia do działania). Dostępne opcje to '''true''' i '''false'''. Jeśli określimy ten tag dla jakiegoś gamemode to ustawienie zostanie dołączone dla każdej mapy wczytanej przez ten zasób.
**'''false''' Wyłącza synchronizację danych mapy dla wszystkich zasobów. Może to wpłynąć na czas wczytywania mapy.
**'''true''' Włącza synchronizację danych mapy dla wszystkich zasobów. Jeśli w różnych zasobach są różne ustawienia tego tagu to wartośc ''true'' ma wyższy priorytet i wszystkie zasoby będą synchronizowały dane mapy.
 
*'''<oop/>''' Zezwala na pseudo-obiektowe skryptowanie. Zajrzyj do [[PL/OOP|dokumentacji OOP]] po więcej. Dostępne opcje to '''true''' i '''false'''.
 
*'''<download_priority_group/>''' Tag, który określa priorytet pobierania zasobu. Jeśli nie został określony to domyślnie priorytet wynosi 0. Jeśli priorytet został określony na większy od 0 to zasób zostanie pobrany i uruchomiony u klienta wcześniej niż inne. Jeśli natomiast priorytet ustawiono na mniejszy niż 0 to zasób zostanie pobrany i uruchomiony u klienta później niż inne. To ustawienie może być przydatne jeśli chcesz np. wyświetlać własny ekran pobierania zasobów zamiast domyślnego paska pobierania. Przykład użycia:
**'''Zasób A:''' Ustawiono ''<download_priority_group>20</download_priority_group>'', więc zasób wystartuje wcześniej niż..
**'''Zasób B:''' Gdzie ustawiono ''<download_priority_group>10</download_priority_group>''.<br/>
Jest to normalna kolejność, ponieważ zasób '''A''' ma wyższy priorytet niż zasób '''B''', dlatego zostanie pobrany i uruchomiony wcześniej. Analogicznie zasób '''B''' zostanie uruchomiony i pobrany wcześniej niż zasób, który ma ustawiony priorytet na niższy niż 10.


== Przykład ==
== Przykład ==
Oto przykład pliku meta.xml:
Prosty plik meta.xml, aby uruchomić zasób
{{#tag:code |
<syntaxhighlight lang="xml">
<meta>
<meta>
     <info name="race" author"SEBO" type="gamemode" version"1.0.0" />
     <script src="c.lua" type="client" />
     <config src="help.xml" type="client"/>
     <script src="s.lua" />
     <min_mta_version client="{{Current Version|full}}" server="{{Current Version|full}}" />
</meta>
</syntaxhighlight>
 
Bardziej złożony przykład meta.xml z niektórymi wspomnianymi wcześniej tagami
<syntaxhighlight lang="xml">
<meta>
     <info author="Slothman" version="1.0.2" name="Stealth" description="Allow scripts to insert a ped that simulates combat with a real player" type="gamemode" />


     <script src="stealthmain_server.lua" />
     <script src="stealthmain_server.lua" />
Line 54: Line 95:
     <script src="gadgets_server.lua" />
     <script src="gadgets_server.lua" />
     <script src="gadgets_client.lua" type="client"/>
     <script src="gadgets_client.lua" type="client"/>
     <script src="stealthmain_client.lua" type="client"/>
     <script src="stealthmain_client.lua" type="client" validate="true"/>
     <script src="noisebar.lua" type="client"/>
     <script src="noisebar.lua" type="client"/>
     <script src="spycam.lua" type="client"/>
     <script src="spycam.lua" type="client"/>
     <script src="riemann_z_demonstration.lua" type="client"/>
     <script src="riemann_z_demonstration.lua" type="client" cache="false"/>


     <file src="riot_shield.txd" />
    <map src="base.map" dimension="1"/>
     <file src="riot_shield.dff" />
 
     <file src="riot_shield.col" />
     <file src="riot_shield.txd" download="false" />
     <file src="armor.png" download="true"/>
     <file src="riot_shield.dff" download="false" />
     <file src="camera.png" download="false"/>
     <file src="riot_shield.col" download="false" />
     <file src="armor.png" />
     <file src="camera.png" />
     <file src="cloak.png" />
     <file src="cloak.png" />
     <file src="goggles.png" />
     <file src="goggles.png" />
Line 73: Line 116:
     <include resource="killmessages" />
     <include resource="killmessages" />
     <include resource="maplimits" />
     <include resource="maplimits" />
   
    <config src="help.xml" type="client"/>
    <export function="exampleExport1" type="server" />
    <export function="exampleExport2" type="client" />
    <export function="exampleExport3" type="shared" />


     <settings>
     <settings>
        <setting name="roundlimit" value="[6]" /> <!-- round length in minutes -->
        <setting name="roundlimit" value="[6]" /> <!-- czas trwania rundy w minutach -->
<setting name="teamdamage" value="[1]" /> <!-- 0 for team protection off, 1 for team protection on -->
<setting name="teamdamage" value="[1]" /> <!-- 1 dla ochrony drużyny, 0 dla braku ochrony drużyny -->
<setting name="teambalance" value="[1]" /> <!--  difference limit of amount of players between teams -->
<setting name="teambalance" value="[1]" /> <!--  limit różnicy graczy pomiędzy drużynami -->
<setting name="spazammo" value="[25]" /> <!-- ammo amounts -->
<setting name="isAllowedToShoot" value="true" />
<setting name="m4ammo" value="[100]" />
<setting name="admingroup" value="Admin,AdminPlus"
<setting name="shotgunammo" value="[25]" />
friendlyname="Admin group list"
<setting name="sniperammo" value="[20]" />
group="_Advanced"
<setting name="ak47ammo" value="[120]" />
accept="*"
<setting name="rifleammo" value="[40]" />
examples="Admin,Moderator,SuperModerator"
<setting name="deserteagleammo" value="[45]" />
desc="To use this resource, the player must belong to one of the groups listed."
<setting name="pistolammo" value="[132]" />
/> <!-- Przykład ustawienia ze wszystkimi opcjonalnymi parametrami -->
<setting name="uziammo" value="[150]" />
<setting name="spazammo" value="[25]" /> <!-- ilość amunicji -->
<setting name="tec9ammo" value="[150]" />
<setting name="m4ammo" value="[100]" />
<setting name="silencedammo" value="[65]" />
<setting name="shotgunammo" value="[25]" />
<setting name="grenadeammo" value="[4]" />
<setting name="sniperammo" value="[20]" />
<setting name="satchelammo" value="[4]" />
<setting name="ak47ammo" value="[120]" />
<setting name="teargasammo" value="[4]" />
<setting name="rifleammo" value="[40]" />
<setting name="molatovammo" value="[4]" />
<setting name="deserteagleammo" value="[45]" />
    </settings>
<setting name="pistolammo" value="[132]" />
<setting name="uziammo" value="[150]" />
<setting name="tec9ammo" value="[150]" />
<setting name="silencedammo" value="[65]" />
<setting name="grenadeammo" value="[4]" />
<setting name="satchelammo" value="[4]" />
<setting name="teargasammo" value="[4]" />
<setting name="molatovammo" value="[4]" />
    </settings>
 
    <min_mta_version server="1.5.2-9.07903" client="1.5.2-9.07903" />
 
    <aclrequest>
        <right name="function.startResource" access="true" />
        <right name="function.stopResource" access="true" />
        <right name="function.setPlayerMuted" access="true" />
    </aclrequest>
 
    <sync_map_element_data>false</sync_map_element_data>
 
    <oop>false</oop>


    <aclrequest>
    <download_priority_group>0</download_priority_group>
<right name="function.startResource" access="true" />
</meta>
<right name="function.stopResource" access="true" />
</syntaxhighlight>
<right name="function.setPlayerMuted" access="true" />
 
    </aclrequest>
== Wczytywanie plików za pomocą wzorca ==
{{PL/New feature/item|3.0161|1.6.0|22430|
Od wersji ''1.6.0 r22430'' dostępna jest możliwość wczytywania plików za pomocą wzorca. Wcześniej konieczne było wypisane każdego z plików osobno, co było bardzo uciążliwe w przypadku dużych zasobów z dużą ilością dodatkowych plików. Wzorzec możesz określić za pomocą [https://pl.wikipedia.org/wiki/Glob_(programowanie) biblioteki glob].
 
<syntaxhighlight lang="xml">
<meta>
    <script src="shared/**/*.lua" type="shared" cache="false" />
    <script src="client/**/*.lua" type="client" cache="false" />
    <script src="server/**/*.lua" type="server" />


    <file src="assets/fonts/**/*.ttf" />
    <file src="assets/sounds/**/*.mp3" />
    <file src="assets/images/**/*.png" />
</meta>
</meta>
|lang="xml"}}
</syntaxhighlight>
[[Category:Scripting Concepts]]
}}
[[cs:Meta.xml]]
[[de:Meta.xml]]
[[en:Meta.xml]]
[[en:Meta.xml]]
[[es:Sobre el archivo "meta.xml"]]
[[Category:Translated/Scripting Concepts]]
[[it:Meta.xml]]
[[ru:Meta.xml]]

Latest revision as of 15:40, 12 September 2024

Plik meta.xml określa zawartość oraz konfigurację zasobu. Plik jak samo rozszerzenie wskazuje jest w formacie XML, który jest oparty na języku HTML i jest jednostką dominującą XHTML.

Tagi

XML jest tekstowym formatem danych, który jest stosowany do ich prezentacji. MTA wykorzystuje pliki XML do opisu metadanych dla zasobów przy użyciu poniższych tagów:

  • <info /> Określa podstawowe informacje o zasobie, które mogą być później odczytane przy użyciu getResourceInfo. Tag nie jest wymagany. Dostępne parametry:
    • author: Autor zasobu.
    • version: Wersja zasobu.
    • name: Nazwa zasobu.
    • description: Krótki opis zasobu.
    • type: Typ zasobu, dostępne opcje to gamemode, script, map oraz misc.
  • <script /> Kod źródłowy zasobu, dostępne parametry:
    • src: Ścieżka do pliku z kodem źródłowym np. .lua.
    • type: Rodzaj kodu źródłowego, dostępne opcje to client, server oraz shared. W przypadku gdy plik jest po stronie serwera, nie trzeba podawać tego parametru. Domyślnie jest to server.
    • cache: Określa czy plik źródłowy zasobu ma zapisywać się na dysku klienta, dostępne opcje to true oraz false. Ma zastosowanie tylko dla plików klienta, czyli tam gdzie parametr type ustawiono na client. Domyślnie true. Pliki z ustawionym parametrem cache = false są wczytywane jako pierwsze, więc kolejność wczytywania plików może zostać zakłócona w przypadku mieszanych ustawień cache dla różnych plików
    • validate: Sprawdza kompatybilność pobranego zasobu z tym na serwerze, dostępne opcje true lub false. Domyślnie true.
  • <map /> Mapa do gamemode, możliwe parametry:
    • src: Ścieżka do pliku .map.
    • dimension: Wymiar w którym zostanie załadowana mapa.
  • <file /> Pliki dodatkowe tj. zdjęcia, modele, dźwięki itp.
    • src: Ścieżka do pliku. Od wersji 1.6.0 r22430 można podawać globalne ścieżki, oznacza to, że zamiast pisać każdy plik osobno można dodać po prostu wszystkie pliki używając symbolu gwiazdki *. Zobacz przykład.
    • download: Określa czy plik ma zostać pobrany po starcie zasobu, dostępne opcje true lub false. Domyślnie true, jeśli ustawimy na false to można później pobrać plik przez downloadFile.
  • <include /> Dołącza zasoby, które będą używane przez ten zasób. Oznacza to, że wskazane zasoby zostaną uruchomione wraz z tym zasobem. Tag ten może być używany jeśli korzystamy z innego zasobu przez eksporty call. Możliwe parametry:
    • resource: Nazwa zasobu, który ma zostać dołączony.
    • minversion: Minimalna wersja zasobu (opcjonalnie).
    • maxversion: Maksymalna wersja zasobu (opcjonalnie).
  • <config /> Plik .xml zawierający konfigurację, która może być odczytywana przez zasoby. Możliwe parametry:
    • src: Ścieżka do pliku.
    • type: Typ pliku client lub server.
  • <export /> Funkcje, które są eksportowane z tego zasobu dla innych. W innym zasobie, aby użyć funkcji z tego zasobu użyj call.
    • function: Nazwa funkcji.
    • type Określa czy funkcja jest eksportowana dla strony serwera, klienta czy obu, dostępne opcje to client, server oraz shared.
    • http: Określa czy funkcja może być wywoływana z poziomu interfejsu HTTP, dostępne opcje true lub false.
  • <html />
    • src: Ścieżka do pliku HTTTP.
    • default: Domyślny plik .html, który będzie wyświetlany po odwiedzeniu strony zasobu przez interfejs HTTP /nazwaZasobu/. Tylko jeden plik może być ustawiony jako domyślny, pozostałe będą ignorowane. Dostępne opcje true oraz false.
    • raw: HTML nie jest przetwarzany przez interpreter Lua, a plik jest traktowany jako dane binarne. Używane w przypadku plików binarnych jak np. obrazy. Dostępne opcje true lub false.
  • <settings/> Większość gamemode'ów używa systemu ustawień, aby pozwolić administratorom na konfigurację go tak jak chcą. Przykładowo można ustalić czas trwania jednej rundy, a następnie za pomocą funkcji get oraz set można odczytać lub zmienić wartość tego ustawienia.
    • <setting/> Konkretne ustawienie, które może być odczytywane i zmieniane przez skrypty oraz panel admina. Możliwe parametry:
      • name: Nazwa ustawienia, która będzie używana przez funkcje get oraz set do zarządzania wartością.
      • value: Wartość ustawienia.
      • friendlyname: Nazwa ustawienia, która będzie wyświetlana dla użytkownika np. w panelu admina. Parametr opcjonalny.
      • accept: Wartości, które są akceptowane dla tego ustawienia. Pozwala uniknąć pomyłek. Parametr opcjonalny.
      • examples: Przykładowe wartości. Parametr opcjonalny.
      • desc: Opis za co odpowiada ustawienie. Parametr opcjonalny.
  • <min_mta_version /> Minimalna wymagana wersja, która jest niezbędna do poprawnego uruchomienia zasobu. Gdy tworzysz zasoby, w miarę możliwości należy podawać aktualną wersję MTA:SA (w tej chwili jest to 1.6.0). Tag nie jest wymagany.
    • client: Minimalna wersja klienta.
    • server: Minimalna wersja serwera.
  • <aclrequest /> Lista praw ACL, które potrzebuje ten zasób. Każdy użytkownik z uprawnieniami administratora może zezwolić lub odmówić udzielenia uprawnień ACL dla zasobu używając komendy /aclrequest [list/allow/deny] <nazwa_zasobu> [<uprawnienie>/all]
    • <right/> Uprawnienie, które zasób chce uzyskać. Możliwe parametry:
      • name: Nazwa uprawnienia.
      • access: Ustaw na true, aby zezwolić na dostęp do uprawnienia dla tego zasobu lub na false, aby odmówić dostępu.
  • <sync_map_element_data/> Określa czy dane (element data) mapy tj. PosX czy DoubleSided mają być przesyłane do klienta. Zazwyczaj większość zasobów i gamemode'ów nie potrzebuje tego ustawienia, a co za tym idzie tej synchronizacji danych (Map Editor oraz Interiors wymagają tego ustawienia do działania). Dostępne opcje to true i false. Jeśli określimy ten tag dla jakiegoś gamemode to ustawienie zostanie dołączone dla każdej mapy wczytanej przez ten zasób.
    • false Wyłącza synchronizację danych mapy dla wszystkich zasobów. Może to wpłynąć na czas wczytywania mapy.
    • true Włącza synchronizację danych mapy dla wszystkich zasobów. Jeśli w różnych zasobach są różne ustawienia tego tagu to wartośc true ma wyższy priorytet i wszystkie zasoby będą synchronizowały dane mapy.
  • <oop/> Zezwala na pseudo-obiektowe skryptowanie. Zajrzyj do dokumentacji OOP po więcej. Dostępne opcje to true i false.
  • <download_priority_group/> Tag, który określa priorytet pobierania zasobu. Jeśli nie został określony to domyślnie priorytet wynosi 0. Jeśli priorytet został określony na większy od 0 to zasób zostanie pobrany i uruchomiony u klienta wcześniej niż inne. Jeśli natomiast priorytet ustawiono na mniejszy niż 0 to zasób zostanie pobrany i uruchomiony u klienta później niż inne. To ustawienie może być przydatne jeśli chcesz np. wyświetlać własny ekran pobierania zasobów zamiast domyślnego paska pobierania. Przykład użycia:
    • Zasób A: Ustawiono <download_priority_group>20</download_priority_group>, więc zasób wystartuje wcześniej niż..
    • Zasób B: Gdzie ustawiono <download_priority_group>10</download_priority_group>.

Jest to normalna kolejność, ponieważ zasób A ma wyższy priorytet niż zasób B, dlatego zostanie pobrany i uruchomiony wcześniej. Analogicznie zasób B zostanie uruchomiony i pobrany wcześniej niż zasób, który ma ustawiony priorytet na niższy niż 10.

Przykład

Prosty plik meta.xml, aby uruchomić zasób

<meta>
    <script src="c.lua" type="client" />
    <script src="s.lua" />
</meta>

Bardziej złożony przykład meta.xml z niektórymi wspomnianymi wcześniej tagami

<meta>
    <info author="Slothman" version="1.0.2" name="Stealth" description="Allow scripts to insert a ped that simulates combat with a real player" type="gamemode" />

    <script src="stealthmain_server.lua" />
    <script src="noiseblip.lua" />
    <script src="mission_timer.lua" />
    <script src="gadgets_server.lua" />
    <script src="gadgets_client.lua" type="client"/>
    <script src="stealthmain_client.lua" type="client" validate="true"/>
    <script src="noisebar.lua" type="client"/>
    <script src="spycam.lua" type="client"/>
    <script src="riemann_z_demonstration.lua" type="client" cache="false"/>

    <map src="base.map" dimension="1"/>

    <file src="riot_shield.txd" download="false" />
    <file src="riot_shield.dff" download="false" />
    <file src="riot_shield.col" download="false" />
    <file src="armor.png" />
    <file src="camera.png" />
    <file src="cloak.png" />
    <file src="goggles.png" />
    <file src="mine.png" />
    <file src="radar.png" />
    <file src="shield.png" />

    <include resource="scoreboard" />
    <include resource="killmessages" />
    <include resource="maplimits" />
    
    <config src="help.xml" type="client"/>

    <export function="exampleExport1" type="server" />
    <export function="exampleExport2" type="client" />
    <export function="exampleExport3" type="shared" />

    <settings>
        <setting name="roundlimit" value="[6]" /> <!-- czas trwania rundy w minutach -->
	<setting name="teamdamage" value="[1]" /> <!-- 1 dla ochrony drużyny, 0 dla braku ochrony drużyny -->
	<setting name="teambalance" value="[1]" /> <!--  limit różnicy graczy pomiędzy drużynami -->
	<setting name="isAllowedToShoot" value="true" />
	<setting name="admingroup" value="Admin,AdminPlus"
		friendlyname="Admin group list"
		group="_Advanced"
		accept="*"
		examples="Admin,Moderator,SuperModerator"
		desc="To use this resource, the player must belong to one of the groups listed."
		/> <!-- Przykład ustawienia ze wszystkimi opcjonalnymi parametrami -->
	<setting name="spazammo" value="[25]" /> <!-- ilość amunicji -->
	<setting name="m4ammo" value="[100]" />
	<setting name="shotgunammo" value="[25]" />
	<setting name="sniperammo" value="[20]" />
	<setting name="ak47ammo" value="[120]" />
	<setting name="rifleammo" value="[40]" />
	<setting name="deserteagleammo" value="[45]" />
	<setting name="pistolammo" value="[132]" />
	<setting name="uziammo" value="[150]" />
	<setting name="tec9ammo" value="[150]" />
	<setting name="silencedammo" value="[65]" />
	<setting name="grenadeammo" value="[4]" />
	<setting name="satchelammo" value="[4]" />
	<setting name="teargasammo" value="[4]" />
	<setting name="molatovammo" value="[4]" />
    </settings>

    <min_mta_version server="1.5.2-9.07903" client="1.5.2-9.07903" />

    <aclrequest>
        <right name="function.startResource" access="true" />
        <right name="function.stopResource" access="true" />
        <right name="function.setPlayerMuted" access="true" />
    </aclrequest>

    <sync_map_element_data>false</sync_map_element_data>

    <oop>false</oop>

    <download_priority_group>0</download_priority_group>
</meta>

Wczytywanie plików za pomocą wzorca

DODANO/ZAKTUALIZOWANO w wersji 1.6.0 r22430

Od wersji 1.6.0 r22430 dostępna jest możliwość wczytywania plików za pomocą wzorca. Wcześniej konieczne było wypisane każdego z plików osobno, co było bardzo uciążliwe w przypadku dużych zasobów z dużą ilością dodatkowych plików. Wzorzec możesz określić za pomocą biblioteki glob.

<meta>
    <script src="shared/**/*.lua" type="shared" cache="false" />
    <script src="client/**/*.lua" type="client" cache="false" />
    <script src="server/**/*.lua" type="server" />

    <file src="assets/fonts/**/*.ttf" />
    <file src="assets/sounds/**/*.mp3" />
    <file src="assets/images/**/*.png" />
</meta>