DE/Resource:Editor/EDF
EDF steht für Editor Definition File. EDFs sind XML-Dateien mit einer .edf-Erweiterung, die die von einer Ressource verwendeten benutzerdefinierten Elemente beschreiben: neue Elementtypen, die für MTA selbst keine Bedeutung haben. Beispiele sind <spawnpoint>, <flag>, <checkpoint> usw. Sie werden auch verwendet, um Einstellungen zu definieren, die von Gamemodes verwendet werden, die unter dem <settings> Tag innerhalb der meta.xml einer Ressource platziert werden.
Introduction
Einige Ressourcen verwenden benutzerdefinierte Kartenelemente. Ein "Capture the Flag"-Gamemodus zum Beispiel wird wahrscheinlich <flag> Elemente verwenden, die Flaggenpositionen und Teams enthalten. Wenn eine Karte geladen wird, sucht der Gamemode nach <flag> Elementen und installiert die Flaggen entsprechend - zum Beispiel durch Erstellen eines Flaggenobjekts und einer Kollisionsform.
Das Problem mit diesen benutzerdefinierten Elementen ist, dass der Karteneditor im Gegensatz zu den eingebauten MTA-Elementen keine Ahnung von ihrer Bedeutung hat. Wie sollte ein <flag> Element visuell dargestellt werden? Welche Eigenschaften hat es? Ohne dem Editor diese Informationen mitzuteilen, könnten Sie ihn nicht verwenden, um diese benutzerdefinierten Elemente zu erstellen, und müssten stattdessen auf die manuelle Bearbeitung der .map-Datei mit einem Texteditor zurückgreifen. Glücklicherweise ist dies nicht notwendig: Jede Ressource kann eine Editor-Definitionsdatei enthalten, die die von dieser Ressource verwendeten benutzerdefinierten Map-Elemente beschreibt.
Using definition files in the editor
Wie im main editor manual beschrieben, müssen Sie, um die benutzerdefinierten Elemente einer Ressource in Ihrer Karte erstellen zu können, diese im Fenster Definitions hinzufügen. Klicken Sie auf die Schaltfläche Definitions im Hauptmenü und doppelklicken Sie auf die Ressource in der linken Liste. Schließen Sie dann das Fenster und bewegen Sie das Mausrad im Elementfenster, bis die Ressource angezeigt wird. Nun können Sie die benutzerdefinierten Elemente dieser Ressource wie jedes andere Element erstellen und bearbeiten.
Writing EDF files
EDF-Dateien sind einfach XML-Dateien mit der Erweiterung .edf. Wir beginnen mit einem Beispiel: der EDF des Spielmodus Capture the Orb.
<def name="Capture the Orb"> <element name="orb" friendlyname="Orb spawnpoint" instructions="Place your orb in a position that can be collected."> <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="Place your objective point in a position that can be reached."> <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>
Wie Sie sehen können, ist die Syntax recht einfach. Das Wurzelelement, <def>, enthält eine Reihe von <element>s. Jedes dieser <element>s beschreibt ein benutzerdefiniertes Element und gibt dessen Namen, visuelle Darstellung und verfügbare Eigenschaften an.
Visual representation
Jeder Kindknoten eines <element>, der kein <data> Knoten ist, ist Teil der visuellen Darstellung. Das können ein oder mehrere Objekte, Marker, Pickups usw. sein. Für jedes Darstellungselement können Sie optional eine Position (posX, posY, posZ) und eine Drehung (rotX, rotY, rotZ) angeben: Diese sind relative zur Position und Drehung des dargestellten benutzerdefinierten Elements. Anhand des obigen Capture the Orb-Beispiels würde der Editor bei der Erstellung eines Spawnpoints an der Position (30, 14, 3) ein Objekt des Modells 3092 an der Position (30, 14, 4) anzeigen, da die posZ des Objekts von 1 zur Z-Position des Spawnpoints von 3 addiert wird.
Properties
Die Eigenschaften eines benutzerdefinierten Elements werden durch <data> -Knoten beschrieben. Einige Eigenschaftsnamen haben eine besondere Bedeutung, wie z. B. position und rotation: Diese können durch Verschieben und Drehen des Elements im Editor geändert werden. Die anderen Eigenschaften können im Fenster Eigenschaften geändert werden.
Property-dependent visual representation
Es ist möglich, die Darstellung eines benutzerdefinierten Elements von einer oder mehreren der Eigenschaften des Elements abhängig zu machen. Nehmen wir als Beispiel ein <checkpoint> Element eines Rennspielmodus, das einen <marker> zur Darstellung enthält: der Checkpoint hat mehrere Attribute wie Farbe und Größe, die in dem Marker widergespiegelt werden sollen. Um dies zu erreichen, geben Sie etwas der Form !propertyname! in einem oder mehreren der Attribute des repräsentierenden Elements an. Zum Beispiel:
<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>
Wenn nun die Eigenschaften "type", "size" oder "color" eines Kontrollpunkts geändert werden, wird der neue Wert in die Markierung kopiert, und das Erscheinungsbild der Markierung ändert sich entsprechend.
Integrating in a resource
Sobald Sie Ihre EDF geschrieben haben, speichern Sie sie als .edf-Datei im Ordner Ihrer Ressource und fügen Sie ein "edf:definition"-Attribut zum <info> Tag Ihrer meta.xml hinzu, etwa so:
<meta> <info author="erorr404" type="gamemode" ... edf:definition="cto.edf" /> ... </meta>
EDF reference
Built-in elements
Dies sind die Elemente, die Sie zur Darstellung Ihrer benutzerdefinierten Elemente verwenden können, zusammen mit ihren Eigenschaften.
<blip> | |
---|---|
Property | Type |
position | coord3d |
icon | blipID |
size | integer |
color | color |
dimension | integer |
<marker> | |
---|---|
Property | Type |
position | coord3d |
type | markerType |
size | number |
color | color |
interior | integer |
dimension | integer |
<object> | |
---|---|
Property | Type |
model | objectID |
position | coord3d |
rotation | coord3d |
interior | integer |
dimension | integer |
<ped> | |
---|---|
Property | Type |
position | coord3d |
model | skinID |
rotZ | number |
interior | integer |
dimension | integer |
<pickup> | |
---|---|
Property | Type |
position | coord3d |
type | pickupType |
amount | number |
respawn | integer |
interior | integer |
dimension | integer |
<vehicle> | |
---|---|
Property | Type |
model | vehicleID |
position | coord3d |
rotation | coord3d |
color | vehiclecolors |
upgrades | vehicleupgrades |
plate | plate |
interior | integer |
dimension | integer |
<radararea> | |
---|---|
Property | Type |
posX | number |
posY | number |
sizeX | number |
sizeY | number |
color | color |
dimension | integer |
Built-in property names
Eigenschaften mit diesen Namen haben für den Editor eine besondere Bedeutung und können auf andere Weise als über das Eigenschaftenfenster geändert werden.
Name | Type |
---|---|
position | coord3d |
rotation | coord3d |
Property types
Dies sind die Typen, die Sie für die Eigenschaften (<data>) Ihrer benutzerdefinierten Elemente auswählen können.
Primitives
Name | Description | Value |
---|---|---|
boolean | Simple boolean value. | "true" or "false" |
natural | Natural number (whole and non-negative). | |
integer | Whole number. | |
number | Rational number. | |
string | Simple string of text. | |
color | color, with or without alpha. | #RRGGBB or #RRGGBBAA |
Coordinates
Name | Description | Value |
---|---|---|
camera | Position and lookat coordinates for the camera. | posX,posY,posZ,lookatX,lookatY,lookatZ |
coord3d | 3-component vector, typically used for positions and rotations. | x,y,z |
Vehicles
Name | Description | Value |
---|---|---|
plate | Number plate text for a vehicle. | |
vehiclecolors | colors of a vehicle | colorID1,colorID2,colorID3,colorID4 |
vehicleupgrades | Upgrades of a vehicle | upgradeID1,upgradeID2,... |
Model ID's
Name | Description | Value |
---|---|---|
blipID | Picture ID for blips | |
objectID | Model ID for objects | |
pickupType | Armor, health or weapon | "armor", "health" or numeric weapon ID |
skinID | Skin ID for peds | |
vehicleID | Model ID for vehicles | |
weaponID | Weapon, e.g. M4 | Numeric weapon ID, e.g. 31 |
Colshapes and markers
Name | Description | Value |
---|---|---|
colshapeType | collision circle, cube, rectangle, sphere or tube | One of: "colcircle", "colcube", "colrectangle", "colsphere", "coltube" |
markerType | Arrow, checkpoint, corona, cylinder or ring marker. | One of: "arrow", "checkpoint", "corona", "cylinder", "ring" |
Specials
Name | Description | Value |
---|---|---|
element:type | Element of a certain type, for example: element:flag | The element's ID |
selection:val1,val2,... | Shows a dropdown box from which to pick one value. | The selected value |