PL/Resource:Editor/EDF: Difference between revisions
Tararysz12 (talk | contribs) No edit summary |
m (FileEX moved page PL/EDF to PL/Resource:Editor/EDF) |
||
(5 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{PL/Resource}} | {{PL/Resource page}} | ||
__NOTOC__ | __NOTOC__ | ||
EDF oznacza ' | 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== | ==Wprowadzenie== | ||
Niektóre zasoby używają niestandardowych elementów mapy. | 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 [[PL/Resource:Editor|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 | 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". | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<def name="Capture the Orb"> | <def name="Capture the Orb"> | ||
<element name="orb" friendlyname="Orb spawnpoint" instructions=" | <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" /> | <data name="position" type="coord3d" default="0,0,0" /> | ||
<marker size="0.5" type="corona" color="#ffff00ff" /> | <marker size="0.5" type="corona" color="#ffff00ff" /> | ||
</element> | </element> | ||
<element name="objective" friendlyname="Objective point" instructions=" | <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" /> | <data name="position" type="coord3d" default="0,0,0" /> | ||
<marker size="3" type="cylinder" color="#9370dbaa" /> | <marker size="3" type="cylinder" color="#9370dbaa" /> | ||
Line 33: | Line 36: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
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 ''<data>'' 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 ''<data>''. 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: | |||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
Line 62: | Line 68: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
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 | |||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
Line 75: | Line 81: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==EDF | ==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. | |||
{| cellspacing="1" | {| cellspacing="1" | ||
! style="background-color: #EEE" colspan="2" | <blip> | ! style="background-color: #EEE" colspan="2" | <blip> | ||
|- | |- | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Właściwość | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Typ | ||
|- | |- | ||
| style="background-color: #EEE"|position | | style="background-color: #EEE"|position | ||
Line 106: | Line 112: | ||
! style="background-color: #EEE" colspan="2" | <marker> | ! style="background-color: #EEE" colspan="2" | <marker> | ||
|- | |- | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Właściwość | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Typ | ||
|- | |- | ||
| style="background-color: #EEE"|position | | style="background-color: #EEE"|position | ||
Line 132: | Line 138: | ||
! style="background-color: #EEE" colspan="2" | <object> | ! style="background-color: #EEE" colspan="2" | <object> | ||
|- | |- | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Właściwość | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Typ | ||
|- | |- | ||
| style="background-color: #EEE"|model | | style="background-color: #EEE"|model | ||
Line 155: | Line 161: | ||
! style="background-color: #EEE" colspan="2" | <ped> | ! style="background-color: #EEE" colspan="2" | <ped> | ||
|- | |- | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Właściwość | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Typ | ||
|- | |- | ||
| style="background-color: #EEE"|position | | style="background-color: #EEE"|position | ||
Line 178: | Line 184: | ||
! style="background-color: #EEE" colspan="2" | <pickup> | ! style="background-color: #EEE" colspan="2" | <pickup> | ||
|- | |- | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Właściwość | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Typ | ||
|- | |- | ||
| style="background-color: #EEE"|position | | style="background-color: #EEE"|position | ||
Line 204: | Line 210: | ||
! style="background-color: #EEE" colspan="2" | <vehicle> | ! style="background-color: #EEE" colspan="2" | <vehicle> | ||
|- | |- | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Właściwość | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Typ | ||
|- | |- | ||
| style="background-color: #EEE"|model | | style="background-color: #EEE"|model | ||
Line 236: | Line 242: | ||
! style="background-color: #EEE" colspan="2" | <radararea> | ! style="background-color: #EEE" colspan="2" | <radararea> | ||
|- | |- | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Właściwość | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Typ | ||
|- | |- | ||
| style="background-color: #EEE"|posX | | style="background-color: #EEE"|posX | ||
Line 258: | Line 264: | ||
|} | |} | ||
=== | ===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. | |||
{| cellspacing="1" | {| cellspacing="1" | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Nazwa | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Typ | ||
|- | |- | ||
! style="background-color: #EEE"|position | ! style="background-color: #EEE"|position | ||
Line 271: | Line 277: | ||
|} | |} | ||
=== | ===Typy właściwości=== | ||
Oto typy, które możesz wybrać dla właściwości węzła ''<data>'' niestandardowych elementów. | |||
==== | ====Prymitywy==== | ||
{| cellspacing="1" | {| cellspacing="1" | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Nazwa | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Opis | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Wartość | ||
|- | |- | ||
! style="background-color: #EEE"|boolean | ! style="background-color: #EEE"|boolean | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|Przykładowa wartość typu boolean. | ||
| style="background-color: #EEE"|"true" | | style="background-color: #EEE"|"true" lub "false" | ||
|- | |- | ||
! style="background-color: #EEE"|natural | ! style="background-color: #EEE"|natural | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|Liczby naturalne (całkowite i nieujemne). | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"| | ||
|- | |- | ||
! style="background-color: #EEE"|integer | ! style="background-color: #EEE"|integer | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|Liczba całkowita. | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"| | ||
|- | |- | ||
! style="background-color: #EEE"|number | ! style="background-color: #EEE"|number | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|Liczba wymierna. | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"| | ||
|- | |- | ||
! style="background-color: #EEE"|string | ! style="background-color: #EEE"|string | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|Przykładowy łańcuch tekstu/ciąg znaków. | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"| | ||
|- | |- | ||
! style="background-color: #EEE"|color | ! style="background-color: #EEE"|color | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|Kolor z lub bez kanału alfa. | ||
| style="background-color: #EEE"|#RRGGBB | | style="background-color: #EEE"|#RRGGBB lub #RRGGBBAA | ||
|} | |} | ||
==== | ====Koordynaty==== | ||
{| cellspacing="1" | {| cellspacing="1" | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Nazwa | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Opis | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Wartość | ||
|- | |- | ||
! style="background-color: #EEE"|camera | ! style="background-color: #EEE"|camera | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|Pozycja kamery i pozycja gdzie ma patrzeć kamera. | ||
| style="background-color: #EEE"|posX,posY,posZ,lookatX,lookatY,lookatZ | | style="background-color: #EEE"|posX,posY,posZ,lookatX,lookatY,lookatZ | ||
|- | |- | ||
! style="background-color: #EEE"|coord3d | ! style="background-color: #EEE"|coord3d | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|Trójwymiarowy wektor, zazwyczaj używany do określenia pozycji lub rotacji. | ||
| style="background-color: #EEE"|x,y,z | | style="background-color: #EEE"|x,y,z | ||
|} | |} | ||
==== | ====Pojazdy==== | ||
{| cellspacing="1" | {| cellspacing="1" | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Nazwa | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Opis | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Wartość | ||
|- | |- | ||
! style="background-color: #EEE"|plate | ! style="background-color: #EEE"|plate | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|Treść tablicy rejestracyjnej pojazdu. | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"| | ||
|- | |- | ||
! style="background-color: #EEE"|vehiclecolors | ! style="background-color: #EEE"|vehiclecolors | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|Kolory pojazdu. | ||
| style="background-color: #EEE"|colorID1,colorID2,colorID3,colorID4 | | style="background-color: #EEE"|colorID1,colorID2,colorID3,colorID4 | ||
|- | |- | ||
! style="background-color: #EEE"|vehicleupgrades | ! style="background-color: #EEE"|vehicleupgrades | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|Ulepszenia pojazdu. | ||
| style="background-color: #EEE"|upgradeID1,upgradeID2,... | | style="background-color: #EEE"|upgradeID1,upgradeID2,... | ||
|} | |} | ||
==== | ====ID Modeli==== | ||
{| cellspacing="1" | {| cellspacing="1" | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Nazwa | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Opis | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Wartość | ||
|- | |- | ||
! style="background-color: #EEE"|blipID | ! style="background-color: #EEE"|blipID | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|ID znacznika (blipa). | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"| | ||
|- | |- | ||
! style="background-color: #EEE"|objectID | ! style="background-color: #EEE"|objectID | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|ID modelu obiektu. | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"| | ||
|- | |- | ||
! style="background-color: #EEE"|pickupType | ! style="background-color: #EEE"|pickupType | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|Kamizelka, serce lub broń jako ikona. | ||
| style="background-color: #EEE"|"armor", "health" | | style="background-color: #EEE"|"armor", "health" lub ID w postaci liczby | ||
|- | |- | ||
! style="background-color: #EEE"|skinID | ! style="background-color: #EEE"|skinID | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|ID postaci. | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"| | ||
|- | |- | ||
! style="background-color: #EEE"|vehicleID | ! style="background-color: #EEE"|vehicleID | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|ID modelu pojazdu. | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"| | ||
|- | |- | ||
! style="background-color: #EEE"|weaponID | ! style="background-color: #EEE"|weaponID | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|Broń np. M4 | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|ID broni w postaci liczby np. 31 | ||
|} | |} | ||
==== | ====Markery(znaczniki) & Colshape'y(kolizje)==== | ||
{| cellspacing="1" | {| cellspacing="1" | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Nazwa | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Opis | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Wartość | ||
|- | |- | ||
! style="background-color: #EEE"|colshapeType | ! style="background-color: #EEE"|colshapeType | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|kolizja typu circle, cube, rectangle, sphere lub tube | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|Jedno z tych: "colcircle", "colcube", "colrectangle", "colsphere", "coltube" | ||
|- | |- | ||
! style="background-color: #EEE"|markerType | ! style="background-color: #EEE"|markerType | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|Marker typu arrow, checkpoint, corona, cylinder lub ring marker. | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|Jedno z tych: "arrow", "checkpoint", "corona", "cylinder", "ring" | ||
|- | |- | ||
|} | |} | ||
==== | ====Specjalne==== | ||
{| cellspacing="1" | {| cellspacing="1" | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Nazwa | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Opis | ||
! style="background-color: #EEE"| | ! style="background-color: #EEE"|Wartość | ||
|- | |- | ||
! style="background-color: #EEE"|element:type | ! style="background-color: #EEE"|element:type | ||
| style="background-color: #EEE"|Element | | style="background-color: #EEE"|Element określonego typu np. element:flag | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|ID elementu | ||
|- | |- | ||
! style="background-color: #EEE"|selection:val1,val2,... | ! style="background-color: #EEE"|selection:val1,val2,... | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|Pokazuje rozwijaną listę, z której można wybrać jedną wartość | ||
| style="background-color: #EEE"| | | style="background-color: #EEE"|Wybrana wartość | ||
|} | |} | ||
[[pl:Resource:Editor/EDF]] | |||
[[en:Resource:Editor/EDF]] | |||
[[ru:Resource:Editor/EDF]] | [[ru:Resource:Editor/EDF]] |
Latest revision as of 17:10, 29 April 2023
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ść |