DE/Resource:Editor/EDF

From Multi Theft Auto: Wiki
Jump to navigation Jump to search

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