PL/Resource:Editor/EDF

From Multi Theft Auto: Wiki
Revision as of 23:12, 28 April 2023 by FileEX (talk | contribs) (Update)
Jump to navigation Jump to search

EDF oznacza Editor Definition File - Są to pliki XML z rozszerzeniem .edf, które definiują niestandardowe elementy używane przez zasób. Są to elementy, które nie mają znaczenia dla samego MTA. Przykładami są np. <spawnpoint>, <flag>, <checkpoint> itd. Takie niestandardowe elementy są także używane do definiowania ustawień używanych przez tryby gry i umieszcza się je w tagu <settings> w pliku meta.xml danego zasobu.


Wprowadzenie

Niektóre zasoby używają niestandardowych elementów mapy. Przykładowo tryb gry "Capture the flag" używać będzie zapewne elementu <flag>, który będzie zawierał pozycję flagi i przypisaną do niej drużynę. Gdy mapa zostanie załadowana to tryb gry szuka elementów <flag> i odpowiednio je rozmieszcza np. tworząc obiekt flagi w otrzymanej pozycji.

Jest jednak pewien problem z niestandardowymi elementami, który polega na tym, że edytor map nie wiele o nich wie. Nie ma on informacji w jaki sposób element <flag> ma być zaprezentowany wizualnie czy jakie ma właściwości ten element. Jeśli nie dostarczymy edytorowi map tych informacji to nie będzie można użyć tych niestandardowych elementów, a zamiast tego będzie trzeba ręcznie edytować plik .map w jakimś edytorze tekstowym. Na szczęście jednak nie jest to konieczne, ponieważ każdy zasób może zawierać plik .edf z informacjami o niestandardowych elementach w nim użytych.

Używanie plików EDF w edytorze

Jak opisano w Instrukcji edytora map, aby móc tworzyć niestandardowe elementy zasobu na mapie, należy dodać je w oknie Definitions. Kliknij przycisk Definitions w menu głównym edytora, a następnie kliknij dwukrotnie na zasób znajdujący się na liście po lewej stronie. Po tym zamknij okno i przesuwaj kółkiem myszki w panelu elementów aż zobaczysz wybrany zasób. W tym momencie możesz już tworzyć niestandardowe elementy zasobu i manipulować nimi tak samo jak wszystkimi innymi elementami w MTA.

Tworzenie plików EDF

EDF są zwykłymi plikami XML, tyle tylko, że mają rozszerzenie .edf. Zaczniemy od przykładu, w którym stworzymy plik EDF dla trybu gry "Capture the Orb".

<def name="Capture the Orb">
    <element name="orb" friendlyname="Orb spawnpoint" instructions="Umieść swoją kulę w miejscu, gdzie można ją zebrać.">
        <data name="position" type="coord3d" default="0,0,0" />
        <marker size="0.5" type="corona" color="#ffff00ff" />
    </element>
    <element name="objective" friendlyname="Objective point" instructions="Umieść punkt docelowy w miejscu, gdzie można dotrzeć.">
        <data name="position" type="coord3d" default="0,0,0" />
        <marker size="3" type="cylinder" color="#9370dbaa" />
    </element>
    <element name="spawnpoint" friendlyname="Spawnpoint">
        <object editorOnly="true" model="3092" posZ="1" />
        <data name="position" type="coord3d" default="0,0,0" />
        <data name="rotation" type="coord3d" default="0,0,0" />
        <data name="skin" type="skinID" default="0" />
    </element>
</def>

Jak widzisz, składnia jest banalnie prosta. Głównym źródłem jest element <def>, który zawiera wszystkie niestandardowe elementy. Każdy z niestandardowych elementów jest tworzony przez tag <element>, który zawiera nazwę elementu, jego właściwości oraz oraz sposób wizualnej reprezentacji.

Wizualna reprezentacja

Każdy wpis/węzeł wewnątrz tagu <element> to tzw. dziecko/potomek tego elementu i takim słownictwem będziemy się dalej posługiwać.

Każdy potomek elementu, który nie jest węzłem odpowiada za reprezentację wizualną danego elementu. Może być jeden lub więcej obiektów, markerów, pickupów itp. Dla każdego takiego potomka można opcjonalne ustawić jego pozycję (posX, posY, posZ) i rotację (rotX, rotY, rotZ). Pozycja i rotacja elementu będzie zależna od pozycji i rotacji rodzica, czyli reprezentacji niestandardowego elementu (tag <element>). Korzystając z powyższego przykładu; jeśli chciałbyś stworzyć np. spawnpoint w pozycji (30, 14, 3) to edytor wyświetliłby obiekt o modelu 3092 w pozycji (30, 14, 4). Dzieje się tak, ponieważ pozycja (posZ) obiektu z tagu <object> zostanie dodana do pozycji (posZ) samego rodzica z tagu <element>, czyli spawnpointa. Stąd wychodzi 3 + 1 = 4.

Właściwości

Właściwości niestandardowych elementów są opisywane poprzez węzły z tagiem . Niektóre nazwy właściwości mają specjalne znaczenie np. position i rotation. Ich wartość może być zmieniana przez poruszanie lub obracanie elementu w edytorze map. Pozostałe właściwości mogą być zmienione w oknie właściwości.

Reprezentacja wizualna zależna od właściwości

Możliwe jest uzależnienie wizualnej reprezentacji elementu od jednej lub więcej właściwości. Weźmy za przykład taki <checkpoint>, który jest elementem trybu gry race. Element ten zawiera <marker> dla wizualnej reprezentacji, ale oprócz tego posiada kilka atrybutów takich jak kolor czy rozmiar, które będą przypisane do markera. Aby uzależnić wizualną reprezentację od właściwości elementu (w tym przypadku np. od właściwości color zależeć będzie wizualna reprezentacja elementu typu checkpoint, którego ową reprezentacją jest marker), należy zastosować zapis w postaci !nazwawłaściwości w jednym lub więcej atrybutach elementu. Przykład:

<def name="Race">
	<element name="checkpoint" friendlyname="Race checkpoint">
		<data name="position" type="coord3d" required="true" default="0,0,0" />

		<data name="type" type="selection:checkpoint,ring" required="true" default="checkpoint" />
		<data name="size" type="number" required="true" default="2.25"/>
		<data name="color" type="color" required="false" default="#ff0000ff" />
		...
		
		<marker type="!type!" size="!size!" color="!color!" />
	</element>
</def>

Teraz jeśli zmienimy właściwość "type", "size" lub "color" checkpointa to zostanie ona przeniesiona na marker, ponieważ to on jest wizualną reprezentacją tego elementu.

Integracja EDF w zasobie

Gdy już stworzyłeś plik EDF, zapisz go jako plik z rozszerzeniem .edf w folderze ze swoim zasobem. Musisz dodać do pliku meta.xml wpis z atrybutem edf:definition. Tak jak w przykładzie poniżej

<meta>
    <info author="erorr404" type="gamemode" ... edf:definition="cto.edf" />
    ...
</meta>

Odwołania do EDF

Wbudowane elementy MTA

Poniżej znajdziesz listę elementów, które możesz użyć dla wizualnej reprezentacji swoich niestandardowych elementów wraz z ich właściwościami.

<blip>
Właściwość Typ
position coord3d
icon blipID
size integer
color color
dimension integer


<marker>
Właściwość Typ
position coord3d
type markerType
size number
color color
interior integer
dimension integer


<object>
Właściwość Typ
model objectID
position coord3d
rotation coord3d
interior integer
dimension integer


<ped>
Właściwość Typ
position coord3d
model skinID
rotZ number
interior integer
dimension integer


<pickup>
Właściwość Typ
position coord3d
type pickupType
amount number
respawn integer
interior integer
dimension integer


<vehicle>
Właściwość Typ
model vehicleID
position coord3d
rotation coord3d
color vehiclecolors
upgrades vehicleupgrades
plate plate
interior integer
dimension integer


<radararea>
Właściwość Typ
posX number
posY number
sizeX number
sizeY number
color color
dimension integer

Nazwy wbudowanych właściwości

Właściwości o tych nazwach mają specjalne znaczenie dla edytora map. Oznacza to, że mogą one być modyfikowane w inny sposób niż okno właściwości.

Nazwa Typ
position coord3d
rotation coord3d

Typy właściwości

Oto typy, które możesz wybrać dla właściwości węzła niestandardowych elementów.

Prymitywy

Nazwa Opis Wartość
boolean Przykładowa wartość typu boolean. "true" lub "false"
natural Liczby naturalne (całkowite i nieujemne).
integer Liczba całkowita.
number Liczba wymierna.
string Przykładowy łańcuch tekstu/ciąg znaków.
color Kolor z lub bez kanału alfa. #RRGGBB lub #RRGGBBAA

Koordynaty

Nazwa Opis Wartość
camera Pozycja kamery i pozycja gdzie ma patrzeć kamera. posX,posY,posZ,lookatX,lookatY,lookatZ
coord3d Trójwymiarowy wektor, zazwyczaj używany do określenia pozycji lub rotacji. x,y,z

Pojazdy

Nazwa Opis Wartość
plate Treść tablicy rejestracyjnej pojazdu.  
vehiclecolors Kolory pojazdu. colorID1,colorID2,colorID3,colorID4
vehicleupgrades Ulepszenia pojazdu. upgradeID1,upgradeID2,...

ID Modeli

Nazwa Opis Wartość
blipID ID znacznika (blipa).  
objectID ID modelu obiektu.  
pickupType Kamizelka, serce lub broń jako ikona. "armor", "health" lub ID w postaci liczby
skinID ID postaci.  
vehicleID ID modelu pojazdu.  
weaponID Broń np. M4 ID broni w postaci liczby np. 31

Markery(znaczniki) & Colshape'y(kolizje)

Nazwa Opis Wartość
colshapeType kolizja typu circle, cube, rectangle, sphere lub tube Jedno z tych: "colcircle", "colcube", "colrectangle", "colsphere", "coltube"
markerType Marker typu arrow, checkpoint, corona, cylinder lub ring marker. Jedno z tych: "arrow", "checkpoint", "corona", "cylinder", "ring"

Specjalne

Nazwa Opis Wartość
element:type Element określonego typu np. element:flag ID elementu
selection:val1,val2,... Pokazuje rozwijaną listę, z której można wybrać jedną wartość Wybrana wartość