RU/Resource:Editor/EDF

From Multi Theft Auto: Wiki
Revision as of 08:23, 13 May 2012 by Vincent (talk | contribs)
Jump to navigation Jump to search

EDF означает Editor Definition File (файл-описание редактора). EDF'ы являются XML-файлами с расширением .edf, которые описывают специфические элементы, используемые ресурсом: новые типы элементов, которых самих по себе в MTA нет. Образцами служат <spawnpoint> (спавн), <flag> (флаг), <checkpoint>(чекпоинт) и т.д. Они также используются для того, чтобы устанавливать настройки, используемые модами (gamemode), эти настройки находятся под тегом <settings> внутри meta.xml ресурса.

Вступление

Некоторые ресурсы используют специфические элементы карты. Например, мод захвата флага (CTF) скорее всего будет использовать элементы <flag> (флага), которые будут содержать позиции флагов и их принадлежность командам. Когда загружается карта, мод ищет любые элементы <flag> (флага) и соответствующе расставляет флаги - например, через создания объекта флага и его коллизии.

Проблема с этими специфическими элементами в том, что в отличие от встроенных в MTA элементов, редактор карт не понимает, что они из себя представляют. Как должен быть визуально представлен собой элемент <flag> (флага)? Какие у него есть характеристики? Без передачи редактору этой информации, вы не сможете его использовать для создания таких специфических элементов, и вам придется прибегнуть к ручному редактированию .map-файла через текстовый редактор. К счастью, это необязательно: любой ресурс может содержать editor definition file, который опишет специфические элементы карты, используемые ресурсом.

Использование definition files в редакторе

Как и описано в главной инструкции по редактору, чтобы иметь возможно создавать специфические элементы ресурса на вашей карте, вам придется его добавить в окне Definitions. Нажмите кнопку Definitions в главном меню и дважды щелкните по ресурсу из левого списка. Затем закройте окно и крутаните колесиком мыши в панели элементов, пока не появится желаемый ресурс. С этого момента вы можете создавать и управлять специфическими элементами этого ресурса, как любым другим элементом.

Построение EDF-файлов

EDF-файлы - просто XML-файлы с расширением .edf. Начнем с образца: EDF'а мода 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>

Как вы уже убедились, синтаксис очень легок для понимания. Root element (корневой элемент), <def>, содержит несколько <элементов>. Каждый из этих <элементов> описывает специфический элемент и задает его имя, визуальное представление и доступные ему настройки.

Визуальное представление

Каждый child node (дочерний узел) <элемента>, не являющийся <data>, отвечает за визуальное представление. Объектов, маркеров, пикапов и т.д. могут быть один или несколько. Для каждого элемента вы можете опционально задать позицию (posX, posY, posZ) и угол вращения (rotX, rotY, rotZ): они родственны с позицией и вращенем каждого отдельно взятого элемента. На примере Capture the Orb выше, если бы вы захотели создать spawnpoint на (30, 14, 3), редактор бы отобразил объект модели 3092 на координатах (30, 14, 4), потому что posZ объекта, равная 1, была бы сложена с координатой spawnpoint по оси z, равной 3.

Настройки

Настройки специфического элемента описаны в <data>. Имена некоторых настроек, такие как position и rotation, особенные: они могут быть изменены при перемещении и вращении элемента прямо в редакторе. Другие настройки могут быть изменены в окне Properties.

Визуально представление, зависимое от настроек

Специфический элемент можно сделать зависимым от одной или более настроек элемента. Например, элемент <checkpoint> race мода, содержащий <marker>: checkpoint, имеет несколько атрибутов, таких как color и size, которые должны быть отражены в маркере. Чтобы это сделать, укажите что-нибудь из формы !propertyname! в качестве одного или более атрибутов, ответственных за элемент. Например:

<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>

Теперь, когда бы настройки чекпоинта "type", "size" или "color" не менялись, новое значение будет также скопировано в его маркер, в связи с чем изменится внешний вид маркера.

Интеграция в ресурсы

Когда вы написали свой EDF, сохраните его как .edf-файл в папке своего ресурса и добавьте атрибут "edf:definition" в тег <info> meta.xml, как здесь:

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

EDF ссылки

Встроенные элементы

Эти элементы могут использоваться для ваших специфических элементов, вкупе с их настройками.

<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

Встроенные названия настроек

Настройки с данными именами особенно воспринимаются редактором и могут быть изменены не только через окно Properties.

Name Type
position coord3d
rotation coord3d

Типы настроек

Это - типы, которые могут быть выбранными из (<data>) ваших специфических элементов.

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

Координаты

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

Транспорт

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,...

ID моделей

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

Колшейпы и маркеры

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"

Специальные

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