XML Format: Unterschied zwischen den Versionen
Zeile 62: | Zeile 62: | ||
|- | |- | ||
| | | | ||
<helpstatus ref="faction.1234" | <helpstatus ref="faction.1234" set="59"/> | ||
| | | | ||
* helpstatus ist denke ich das bessere Element um die aktuelle Eressea Situation für Gruppen und Parteien zu beschreiben. | * helpstatus ist denke ich das bessere Element um die aktuelle Eressea Situation für Gruppen und Parteien zu beschreiben. | ||
|- | |||
|colspan="2"| | |||
=== Gruppen (wie in Eressea verwendet) === | |||
|- | |||
| | |||
<unitgroup key="unitgroup.1234.Kapitäne"> | |||
<helpstatus remove="2"/> | |||
<helpstatus ref="faction.gtzu" add="2"/> | |||
</unitgroup> | |||
<unitgroup key="unitgroup.1234.Matrosen" basegroup="unitgroup.1234.Kapitäne"> | |||
<helpstatus remove="1"/> | |||
</unitgroup> | |||
| | |||
* Vorsicht, hier muss der eindeutige Key auch den Parteikey enthalten, sonst ist die Gruppe möglicherweise nicht eindeutig. | |||
* Neben einer einfach Auflistung der Helfestati sollte der client/server erlauben unterschiede zur Partei oder einer anderen Gruppe zu definieren | |||
* Im angegebenen Beispiel basiert die Gruppe Kapitäne auf der Partei. Allerdings wird der Status 2 für alle entfernt, dann aber wieder für ein Volk gesetzt. Die Matrosen basieren auf den Kapitänen, nur nehmen sie von anderen keine Waren entgegen. | |||
* Naja so ähnlich jedenfalls sollte es laufen, nicht immer überall alles neu definieren, sondern sozusagen deltas definiert werden können. Wenn es der Server nicht unterstützt, soll der Client entsprechend die Helfe Stati automatisch setzen. | |||
|- | |- | ||
|colspan="2"| | |colspan="2"| |
Version vom 22. April 2008, 09:54 Uhr
Anstatt sofort einen DTD zu definieren (die Dinger kann eh kaum jemand lesen) arbeiten wir hier ein Beispiel-Dokument aus, und diskutieren darüber.
Beispiel Report
Header und Serverinfos | |
<!DOCTYPE atlantis PUBLIC "-//PBEM//DTD Atlantis 1.0//EN" "http://eressea.de/atlantis-report.dtd"> <?xml version="1.0" encoding="UTF-8"?> <atlantis rules="eressea"> <server> <uri>mailto:eressea-server@eressea.kn-bremen.de</uri> <subject>ERESSEA BEFEHLE</subject> </server> |
|
Allianzen | |
<alliance key="alliance.1234"> ??? <helpstatus mask="59"/> <helpstatus ref="faction.1234" mask="59"/> <helpstatus ref="alliance.badg" mask="1"/> </alliance> |
|
Parteien | |
<faction key="faction.Lotr"> <name>xxxxx</name> <descr>dsfsf sdf sdf</descr> <race ref="racetype.aquarians"/> <magic><area>Gwyrrd</area></magic> <culture>...</culture> <status type="age">60</status> <status type="points">12345</status> <status type="avgpoints">10000</status> <inventory> <item type="itemtype.birthdaycake">1</item> </inventory> |
|
Allianzen (HELFE Stati) | |
<helpstatus ref="faction.1234" set="59"/> |
|
Gruppen (wie in Eressea verwendet) | |
<unitgroup key="unitgroup.1234.Kapitäne"> <helpstatus remove="2"/> <helpstatus ref="faction.gtzu" add="2"/> </unitgroup> <unitgroup key="unitgroup.1234.Matrosen" basegroup="unitgroup.1234.Kapitäne"> <helpstatus remove="1"/> </unitgroup> |
|
Messages | |
<message id="message.123456" type="msgtype.23423546"> <rendered xml:lang="de"> Die Nussschale (1234) segelt von Irgendwo (1,2) nach Nirgendwo (99,99). Dabei wurden Ozean (1,3), Ozean (1,4) ... und Ozean (98,99) durchquert. </rendered> <attribute name="ship"><shipref ref="ship.1234"/></attribute> <attribute name="from"><regionref ref="region.653456"/></attribute> <attribute name="to"><regionref ref="region.653567"/></attribute> <attribute name="through"> <regionref ref="region.953456"/> <regionref ref="region.68656"/> ... <regionref ref="region.114562"/> </attribute> <message id="message.456346" type="msgtype.456902645"> <rendered xml:lang="de"> Die Nussschale (1234) wurde in Ozean (77,78) von Stürmen nach Ozean (78,78) abgetrieben. Sie erlitt dabei 2% Schaden. </rendered> <attribute name="ship"><shipref ref="ship.1234"/></attribute> <attribute name="from"><regionref ref="region.673256"/></attribute> <attribute name="to"><regionref ref="region.322167"/></attribute> <attribute name="damage"><int>2</int></attribute> </message> </message> |
|
Regionen | |
<region id="region.126788" type="terraintype.plain"> <coordinate x="14" y="27"/> <name>xxxxx</name> <descr>dsfsf sdf sdf</descr> |
|
Regionsresourcen | |
<resources> <resource type="resourcetype.mallorntrees">50</resource> <resource type="resourcetype.mallornsaplings">10</resource> <resource type="resourcetype.laen"> <level depth="33">10</level> <level depth="34">12</level> </resource> <resource type="resourcetype.silver">10000</resource> <resource type="resourcetype.peasant">1000</resource> <resource type="resourcetype.elvendear" quantity="many"/> <resource type="resourcetype.elvendear">many</resource> </resource> </resources> |
|
Handel | |
<trade amount="10"> <buy type="balm">5</buyitem> <sell type="spice">35</sellitem> <offer> <get><item>balm</item><amount>1</amount></get> <give><item>silver</item><amount>5</amount></give> </offer> </trade> |
|
Einheiten | |
<unit key="unit.mag3"> <name ...> <descr xml:lang="de">Er schützt die Region.</descr> <descr xml:lang="en">He protects the region.</descr> <descr type="private"> Botschafter (1234) ist ein parteigetarnter Spion der xxx </descr> <persons race="race.daemons">1</persons> <factionref ref="faction.Lotr"/> <status type="guard"/> <status type="fight">front</status> <status type="health">wounded</status> <status type="hungry"/> <camouflage> <factionref ref="faction.3243"/> <race ref="race.aquarians"/> <skilllevel>14</skilllevel> </camouflage> <magic area="Gwyrrd"> <spell type="spelltype.xxx"/> <spell type="spelltype.xxy"/> </magic> <inventory> <item type="itemtype.laen">14</item> <item type="itemtype.wood">44</item> </inventory> <skills> <skill type="skilltype.perception"><level>17</level></skill> <skill type="skilltype.camouflage"> <level>17</level><days>4567</days> </skill> </skills> <effect> <keytext key="ew34" xml:lang="de"> Die Einheit fühlt sich sehr stark. </keytext> </effect> <effect> <item type="itemtype.sevenmilestea">7</item> </effect> <message ...> </unit> |
|
Gebäude | |
<building key="building.h0us" type="buildingtype.academy"> <name>xxxxx</name> <descr>dsfsf sdf sdf</descr> <size>25</size> |
Name und Beschreibung sind klar #PCDATA. Typ und Grösse sind zumindest bei Eressea etwas das jedes Gebäude als Eigenschaft hat. Den Typ würde ich lieber als Attribut auslegen, da man dann ggf. auf einen Gebäudetyp referenzieren kann. In dem Fall muss es aber wieder global eindeutig sein. Also doch wieder sowas wie type="buildingtype.academy". Leider kann man ja nicht klar stellen, dass type auf einen buildingtype referenziert. Die Grösse hingegen würde ich als Element angeben - warum - keine Ahnung. |
Schiffe | |
<ship id="ship.ttnc" type="shiptype.boat"/> <name>... <descr>... <status tag="load">2000</status> <status tag="damage">2</status> |
|
</region> |
|
Messagetypen | |
<messagetype id="msgtype_5673456873"> <section>travel</section> <pattern locale="de"> <attribute name="unit"/> segelt von <attribute name="from"/> nach <attribute name="to"/>. Dabei wurden <function type="regions"><attribute name="through"></function> durchquert. </pattern> </messagetype> |
So richtig gefällt mir das hier noch nicht.
Man sollte anhand der Pattern bereits den Typ des jeweiligen Attributs erkennen. Vermutlich müsste jede $xyz() die es derzeit gibt, als extra Elementtyp in der (Eressea)-DTD definiert werden. |
</atlantis> |
Regelset
Und noch ein Dokument fuer eine Spiel-Definition
<!DOCTYPE atlantis PUBLIC "-//PBEM//DTD Atlantis 1.0//EN" "http://eressea.de/atlantis-ruleset.dtd"> <?xml version="1.0" encoding="UTF-8"?> <atlantis> <itemtype id="itemtype.laen"> <weight>2</weight> <produce> <skill type="skilltype.bergbau" minlevel="7" productionpoints="7"/> <building type="buildingtype.mine" required="yes"/> <components> <resource type="resourcetype.laen">1</resource> </components> </produce> </itemtype> <itemtype id="itemtype.peasantblood"> <produce> <skill type="skilltype.alchemy" minlevel="4" productionpoints="4"/> <components> <resource type="resourcetype.peasant">1</resource> <item type="itemtype.fjordfungus">1</item> ... </components> <command><cmd_make/> <amount optional="true"/> ...</command> </produce> </itemtype> <race/> <plane/> <terraintype/> <skilltype/> <buildingtype/> <shiptype/> <command/> </atlantis>
Siehe auch