mirror of
https://github.com/Rogiel/l2jserver2
synced 2025-12-06 07:32:46 +00:00
This commit adds an XSD file for each template type to that validation can take place. If there is any error in XML files, it can be easily detected by reading the error in the validation log.
309 lines
10 KiB
XML
309 lines
10 KiB
XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
<xs:schema version="1.0" targetNamespace="npc" xmlns:npc="npc"
|
|
xmlns:actor="actor" xmlns:template="template" xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
|
elementFormDefault="qualified">
|
|
<xs:import namespace="template" schemaLocation="template.xsd" />
|
|
<xs:import namespace="actor" schemaLocation="actor.xsd" />
|
|
|
|
<xs:complexType name="npcTemplate">
|
|
<xs:complexContent>
|
|
<xs:extension base="actor:actorTemplate">
|
|
<xs:sequence>
|
|
<xs:element name="info" type="npc:npcInformationMetadata"
|
|
minOccurs="1" maxOccurs="1" />
|
|
<xs:element name="ai" type="npc:aiMetadata" minOccurs="0"
|
|
maxOccurs="1" />
|
|
<xs:element name="teleporter" type="npc:teleporterMetadata"
|
|
minOccurs="0" maxOccurs="1" />
|
|
<xs:element name="talk" type="npc:talkMetadata"
|
|
minOccurs="0" maxOccurs="1" />
|
|
<xs:element name="droplist" minOccurs="0"
|
|
maxOccurs="1">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="item"
|
|
type="npc:dropItemMetadata" minOccurs="0"
|
|
maxOccurs="unbounded" />
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
<xs:element name="skills" minOccurs="0"
|
|
maxOccurs="1">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="skill" minOccurs="1"
|
|
maxOccurs="unbounded">
|
|
<xs:complexType>
|
|
<xs:attribute name="id" />
|
|
<xs:attribute name="level" />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:sequence>
|
|
<xs:attribute name="type" type="xs:string" />
|
|
<xs:attribute name="controller" type="xs:string"></xs:attribute>
|
|
</xs:extension>
|
|
</xs:complexContent>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="npcInformationMetadata">
|
|
<xs:sequence>
|
|
<xs:element name="name" type="npc:npcNameMetadata"
|
|
minOccurs="0" />
|
|
<xs:element name="title" type="npc:npcTitleMetadata"
|
|
minOccurs="0" />
|
|
<xs:element name="level" type="xs:int" />
|
|
<xs:element name="race" type="npc:npcRace" />
|
|
<xs:element name="sex" type="actor:actorSex" minOccurs="0" />
|
|
<xs:element name="stats" type="npc:npcStatsMetadata"
|
|
minOccurs="0" />
|
|
<xs:element name="experience" type="xs:long" />
|
|
<xs:element name="sp" type="xs:int" />
|
|
<xs:element name="item" type="npc:itemMetadata" minOccurs="0" />
|
|
<xs:element name="collision" type="npc:collisionMetadata"
|
|
minOccurs="0" />
|
|
</xs:sequence>
|
|
<xs:attribute name="attackable" type="xs:boolean" />
|
|
<xs:attribute name="targetable" type="xs:boolean" />
|
|
<xs:attribute name="aggressive" type="xs:boolean" />
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="npcNameMetadata">
|
|
<xs:simpleContent>
|
|
<xs:extension base="xs:string">
|
|
<xs:attribute name="send" type="xs:boolean" />
|
|
<xs:attribute name="display" type="xs:boolean" />
|
|
</xs:extension>
|
|
</xs:simpleContent>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="npcTitleMetadata">
|
|
<xs:simpleContent>
|
|
<xs:extension base="xs:string">
|
|
<xs:attribute name="send" type="xs:boolean" />
|
|
</xs:extension>
|
|
</xs:simpleContent>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="npcStatsMetadata">
|
|
<xs:sequence>
|
|
<xs:element name="hp" type="npc:stat" minOccurs="0" />
|
|
<xs:element name="mp" type="npc:stat" minOccurs="0" />
|
|
<xs:element name="attack" type="npc:attackMetadata"
|
|
minOccurs="0" />
|
|
<xs:element name="defense" type="npc:defenseMetadata"
|
|
minOccurs="0" />
|
|
<xs:element name="move" type="npc:moveMetadata" minOccurs="0" />
|
|
<xs:element name="base" type="npc:baseMetadata" minOccurs="0" />
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="stat">
|
|
<xs:sequence />
|
|
<xs:attribute name="max" type="xs:double" use="required" />
|
|
<xs:attribute name="regen" type="xs:double" use="required" />
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="attackMetadata">
|
|
<xs:sequence>
|
|
<xs:element name="physical" type="npc:attackValueMetadata"
|
|
minOccurs="0" />
|
|
<xs:element name="magical" type="npc:attackValueMetadata"
|
|
minOccurs="0" />
|
|
</xs:sequence>
|
|
<xs:attribute name="range" type="xs:int" use="required" />
|
|
<xs:attribute name="evasion" type="xs:int" use="required" />
|
|
<xs:attribute name="critical" type="xs:int" use="required" />
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="attackValueMetadata">
|
|
<xs:sequence />
|
|
<xs:attribute name="damage" type="xs:double" use="required" />
|
|
<xs:attribute name="speed" type="xs:double" use="required" />
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="defenseMetadata">
|
|
<xs:sequence>
|
|
<xs:element name="physical" type="npc:defenseValueMetadata"
|
|
minOccurs="0" />
|
|
<xs:element name="magical" type="npc:defenseValueMetadata"
|
|
minOccurs="0" />
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="defenseValueMetadata">
|
|
<xs:sequence />
|
|
<xs:attribute name="value" type="xs:double" use="required" />
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="moveMetadata">
|
|
<xs:sequence />
|
|
<xs:attribute name="run" type="xs:double" use="required" />
|
|
<xs:attribute name="walk" type="xs:double" use="required" />
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="baseMetadata">
|
|
<xs:sequence />
|
|
<xs:attribute name="int" type="xs:int" use="required" />
|
|
<xs:attribute name="str" type="xs:int" use="required" />
|
|
<xs:attribute name="con" type="xs:int" use="required" />
|
|
<xs:attribute name="men" type="xs:int" use="required" />
|
|
<xs:attribute name="dex" type="xs:int" use="required" />
|
|
<xs:attribute name="wit" type="xs:int" use="required" />
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="itemMetadata">
|
|
<xs:sequence />
|
|
<xs:attribute name="righthand" type="xs:int" />
|
|
<xs:attribute name="lefthand" type="xs:int" />
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="collisionMetadata">
|
|
<xs:sequence />
|
|
<xs:attribute name="radius" type="xs:double" use="required" />
|
|
<xs:attribute name="heigth" type="xs:double" use="required" />
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="aiMetadata">
|
|
<xs:sequence />
|
|
<xs:attribute name="script" type="xs:string" />
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="teleporterMetadata">
|
|
<xs:sequence>
|
|
<xs:element name="teleport" type="npc:teleporterTeleportMetadata"
|
|
minOccurs="0" maxOccurs="unbounded" />
|
|
</xs:sequence>
|
|
<xs:attribute name="default" type="xs:string" />
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="teleporterTeleportMetadata">
|
|
<xs:sequence>
|
|
<xs:element name="region" type="npc:teleportRegion"
|
|
minOccurs="0" maxOccurs="unbounded" />
|
|
</xs:sequence>
|
|
<xs:attribute name="id" type="xs:string" />
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="teleportRegion">
|
|
<xs:sequence />
|
|
<xs:attribute name="id" type="xs:string" />
|
|
<xs:attribute name="price" type="xs:int" use="required" />
|
|
<xs:attribute name="item" type="xs:int" />
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="talkMetadata">
|
|
<xs:sequence>
|
|
<xs:element name="chat" type="npc:chat" minOccurs="0"
|
|
maxOccurs="unbounded" />
|
|
</xs:sequence>
|
|
<xs:attribute name="default" type="xs:string" />
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="chat">
|
|
<xs:simpleContent>
|
|
<xs:extension base="xs:string">
|
|
<xs:attribute name="id" type="xs:string" />
|
|
</xs:extension>
|
|
</xs:simpleContent>
|
|
</xs:complexType>
|
|
|
|
<xs:complexType name="dropItemMetadata">
|
|
<xs:sequence />
|
|
<xs:attribute name="id" type="xs:int" />
|
|
<xs:attribute name="min" type="xs:int" use="required" />
|
|
<xs:attribute name="max" type="xs:int" use="required" />
|
|
<xs:attribute name="category" type="npc:dropCategory" />
|
|
<xs:attribute name="chance" type="xs:int" use="required" />
|
|
</xs:complexType>
|
|
|
|
<xs:simpleType name="npcRace">
|
|
<xs:restriction base="xs:string">
|
|
<xs:enumeration value="HUMAN" />
|
|
<xs:enumeration value="ELVEN" />
|
|
<xs:enumeration value="DARKELVEN" />
|
|
<xs:enumeration value="ORC" />
|
|
<xs:enumeration value="DWARVEN" />
|
|
<xs:enumeration value="KAMAEL" />
|
|
<xs:enumeration value="UNDEAD" />
|
|
<xs:enumeration value="MAGIC_CREATURE" />
|
|
<xs:enumeration value="BEAST" />
|
|
<xs:enumeration value="ANIMAL" />
|
|
<xs:enumeration value="PLANT" />
|
|
<xs:enumeration value="HUMANOID" />
|
|
<xs:enumeration value="SPIRIT" />
|
|
<xs:enumeration value="ANGEL" />
|
|
<xs:enumeration value="DEMON" />
|
|
<xs:enumeration value="DRAGON" />
|
|
<xs:enumeration value="GIANT" />
|
|
<xs:enumeration value="BUG" />
|
|
<xs:enumeration value="FAIRIE" />
|
|
<xs:enumeration value="OTHER" />
|
|
<xs:enumeration value="NON_LIVING" />
|
|
<xs:enumeration value="SIEGE_WEAPON" />
|
|
<xs:enumeration value="DEFENDING_ARMY" />
|
|
<xs:enumeration value="MERCENARIE" />
|
|
<xs:enumeration value="UNKNOWN" />
|
|
<xs:enumeration value="NONE" />
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
|
|
<xs:simpleType name="dropCategory">
|
|
<xs:restriction base="xs:string">
|
|
<xs:enumeration value="DROP" />
|
|
<xs:enumeration value="SPOIL" />
|
|
<xs:enumeration value="UNK_1" />
|
|
<xs:enumeration value="UNK_2" />
|
|
<xs:enumeration value="UNK_3" />
|
|
<xs:enumeration value="UNK_4" />
|
|
<xs:enumeration value="UNK_5" />
|
|
<xs:enumeration value="UNK_6" />
|
|
<xs:enumeration value="UNK_7" />
|
|
<xs:enumeration value="UNK_8" />
|
|
<xs:enumeration value="UNK_9" />
|
|
<xs:enumeration value="UNK_10" />
|
|
<xs:enumeration value="UNK_11" />
|
|
<xs:enumeration value="UNK_12" />
|
|
<xs:enumeration value="UNK_13" />
|
|
<xs:enumeration value="UNK_14" />
|
|
<xs:enumeration value="UNK_15" />
|
|
<xs:enumeration value="UNK_16" />
|
|
<xs:enumeration value="UNK_17" />
|
|
<xs:enumeration value="UNK_18" />
|
|
<xs:enumeration value="UNK_19" />
|
|
<xs:enumeration value="UNK_20" />
|
|
<xs:enumeration value="UNK_21" />
|
|
<xs:enumeration value="UNK_22" />
|
|
<xs:enumeration value="UNK_23" />
|
|
<xs:enumeration value="UNK_24" />
|
|
<xs:enumeration value="UNK_25" />
|
|
<xs:enumeration value="UNK_26" />
|
|
<xs:enumeration value="UNK_27" />
|
|
<xs:enumeration value="UNK_28" />
|
|
<xs:enumeration value="UNK_29" />
|
|
<xs:enumeration value="UNK_30" />
|
|
<xs:enumeration value="UNK_31" />
|
|
<xs:enumeration value="UNK_32" />
|
|
<xs:enumeration value="UNK_33" />
|
|
<xs:enumeration value="UNK_34" />
|
|
<xs:enumeration value="UNK_35" />
|
|
<xs:enumeration value="UNK_36" />
|
|
<xs:enumeration value="UNK_100" />
|
|
<xs:enumeration value="UNK_101" />
|
|
<xs:enumeration value="UNK_102" />
|
|
<xs:enumeration value="UNK_200" />
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
|
|
<xs:simpleType name="teleportRestriction">
|
|
<xs:restriction base="xs:string">
|
|
<xs:enumeration value="NOBLE" />
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
|
|
<xs:element name="npc" type="npc:npcTemplate"></xs:element>
|
|
</xs:schema>
|
|
|