Queste mit AOQML - crash Tutorial (Der Auftrag)

Queste mit AOQML - crash Tutorial (Der Auftrag)

Beitragvon Lowlander » So 16 Mär, 2008 18:08

Moin Moin,

in diesem Thread soll Schritt für Schritt ein kleines Quest mit AOQLM aufgebaut werden. AOQML ist eine HTML-ähnliche Sprache, die für Antamar Zufallsbegegnungen und Queste entwickelt wurde und derzeit in Antamar implementiert wird, es bedeutet Avesjünger und Ordenskrieber Quest Modelling Language.

Wie gesagt, ist AOQML ähnlich zu HMTL, genaugenommen XHTML. Es ist also grundsätzlich erst einmal Text, der auch ausgegeben wird, und dazwischen sind sogenannte "Tags" eingetreut, welche den Ablauf und die Darstellung beeinflussen. Z.B. bedeutet <p>Dieses ist ein Absatz.</p>, dass "Dieses ist ein Absatz." als eigenständiger Absatz dargestellt wird. Das <p>-Tag erzeugt also Absätze. Und jedes Tag hat einen Anfang, eben <p>, und ein Ende, hier also </p>.

Desweiteren wird jedes Ereignis mit dem die Spieler in einem Quest konfrontiert werden in ein eigenes Dokument geschrieben. Eine reine ZB wäre genaugenommen ein Quest mit einem einzigen solchen Dokument. Das Ganze ist dann noch in einen Rahmen eingebunden, der ebenfalls aus solchen Tags besteht. Hier ein Beispiel:
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>

<event>
<p>Du siehst eine Ente mit Küken.</p>
</event>


Dieses Beispiel wäre also praktisch eine ganz simple Zufallsbegegnung, die nur den einen Satz "Du siehst eine Ente mit Küken." ausgibt, sonst nichts.

Ok. Soweit der erste Teil des Tutorials. Jetzt wären die Quest-Schreiber dran, um mir eine Vorgabe zu machen: Was soll in der Eingangsszene eines kleinen Questes geschehen? Ich kodiere es dann mit Erläuterungen in AOQML.

EDIT Athuran\ Ich habe zwei Threads draus gemacht, einen für die simple Ente, einen für den komplexeren Questeinstieg. Das Schritt für Schritt Tutorial hier: viewtopic.php?f=28&t=3801
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh

Re: Queste mit AOQML - ein Tutorial

Beitragvon neonix » So 16 Mär, 2008 20:41

Na dann, beginnen wir mit etwas simplem... Ich gehe mal von der klischeehaften Standarteröffnung in einer Kneipe aus:



Gerade hast du dich mit einem frisch gezapften Bier niedergelassen, als dir die Blicke auffallen, mit denen dich ein ebenfalls im Schankraum sitzender, wohlhabend aussehnder Bürger mustert. Er scheint nervös zu sein, vor allem als sein Blick auf deine Waffen fällt, rafft sich dann aber dennoch auf und tritt zu dir.

"Ähm, also, ja... Seid ihr zufällig an einem Auftrag interessiert? Es könnte gefährlich werden, aber ich bin bereit, euch gut zu bezahlen."


Option 1:
Nö, keine Lust. Du bist hier um dich auszuruhen, nicht um irgendwas gefährliches zu machen.

Führt zu:
Enttäuscht geht der Mann wieder, und du kannst in Ruhe dein Bier trinken.

ENDE


Option 2:
Tja, warum nicht. Erst mal hören, was er will.

Führt zu:
Auf deine Einladung hin setzt sich der Bürger zu dir an den Tisch und bestellt gleich noch zwei Gläser Wein. In echten Gläsern, nicht in Tonkrügen wie das billige Zeug, das du sonst so oft trinken musst! Zufrieden, dass es so gut beginnt, hörst du dir seine Geschichte an:

"Ich... also es ist so, dass... Nun ja, wisst ihr, ich bin verheiratet - glücklich verheiratet, bei Travia! - aber, es ist nun einmal so, wisst ihr, Rahjas Wege sind unergründlich..." Mit einer Ahnung, was los sein könnte, unterbrichst du ihn. "Kleine Probleme beim Fremdgehen, was?" Errötend stürzt der Mann seinen Wein herunter. Dann nickt er. "Ich... Ich bin in eine Falle gelockt worden. Diese falsche Schlange hat mich erst verführt, dann sollte ich ihr Liebesbriefe schreiben, und noch bevor wir... also, eigentlich ist ja noch gar nichts passiert, als..." Ah, ja. "Sie erpresst euch, ohne euch vorher beglückt zu haben? Wahrhaft, wie grausam... Und ich soll euch jetzt die Briefe besorgen, oder was?" Erleichtert, dass du seine Not begriffen hast, holt er einen kleinen Lederbeutel hervor und legt ihn auf den Tisch.

"Ich biete euch 20 Dukaten, wenn ihr mir die Briefe beschafft. Willigt ihr ein?"


Option 1:
Nee, das ist mir zu schmuddelig. Sollen ihn die Götter für seine Wollust strafen, oder auch seine Frau!

Führt zu:
Enttäuscht zieht sich der Mann zurück, und du trinkst kichernd den Rest des kostenlosen Weins. Idiot...

ENDE


Option 2:
Klar, das ist genau dein Ding. Und 20 Dukaten für ein bisschen Schattenarbeit sind nicht zu verachten!

Führt zu:
Du willigst ein, und erleichtert erklärt dir der Mann, wo die hinterlistige Erpresserin logiert. Es ist ein Gasthaus ganz in der Nähe.



Das führt dann zu den nächsten Optionen, wie man vorgehen will (Fassadenklettern, Einschleichen oder die Erpresserin bedrohen zum Beispiel).

So, ich hoffe, damit kannst du was anfangen!
Zufallszauberer und Questenschmied.
Kanzler Westendar und Vizekanzler Flora & Fauna.
Ansonsten verantwortlich für Rastfunktion, Mietstall, Tempel, Gosse, Söldnerlager, Blutrabe, Kommandantur ET, Alte Kaserne, diverse Gegenstandsquesten und so weiter...
Benutzeravatar
neonix
Erzmarschall
Erzmarschall
 
Beiträge: 5077
Registriert: Di 11 Dez, 2007 11:33
Wohnort: Braunschweig
Heldenname: Marquez Santarosa
Mitglied bei: Helden Schurken Suchende

Re: Queste mit AOQML - ein Tutorial

Beitragvon Lowlander » So 16 Mär, 2008 21:15

neonix hat geschrieben:Na dann, beginnen wir mit etwas simplem...


Ob das für den Anfang wirklich sooo simpel ist ... denn das sind eigentlich gleich mehrerer Schritte auf einmal. Doch fange ich erstmal mit Schritt 1 an.

Diese Datei würde man als index.xml (oder index.aoqml) in ein neues Verzeichnis für das Quest legen:
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>

<event>
<quest status="started"/>
<p>Gerade hast du dich mit einem frisch gezapften Bier niedergelassen, als dir die Blicke auffallen, mit denen dich ein ebenfalls im Schankraum sitzender, wohlhabend aussehnder Bürger mustert. Er scheint nervös zu sein, vor allem als sein Blick auf deine Waffen fällt, rafft sich dann aber dennoch auf und tritt zu dir. </p>

<p><q>Ähm, also, ja... Seid ihr zufällig an einem Auftrag interessiert? Es könnte gefährlich werden, aber ich bin bereit, euch gut zu bezahlen.</q></p>
<ul>
    <li><choice target="ausruhen">Nö, keine Lust.</choice>
             Du bist hier um dich auszuruhen, nicht um irgendwas gefährliches zu machen. </li>
    <li><choice target="anhoeren">Tja, warum nicht.</choice>
             Erst mal hören, was er will. </li>
</ul>
</event>


Das wäre die Eingangsszene, alles weitere sind schon Folgeszenen! (Das Tag <event> wird evtl. auch noch in <szene> umbenannt, heisst aber im Programm nunmal noch <event>.) Angezeigt würde es in etwa so:
Gerade hast du dich mit einem frisch gezapften Bier niedergelassen, als dir die Blicke auffallen, mit denen dich ein ebenfalls im Schankraum sitzender, wohlhabend aussehnder Bürger mustert. Er scheint nervös zu sein, vor allem als sein Blick auf deine Waffen fällt, rafft sich dann aber dennoch auf und tritt zu dir.

"Ähm, also, ja... Seid ihr zufällig an einem Auftrag interessiert? Es könnte gefährlich werden, aber ich bin bereit, euch gut zu bezahlen."
  • Nö, keine Lust. Du bist hier um dich auszuruhen, nicht um irgendwas gefährliches zu machen.
  • Tja, warum nicht. Erst mal hören, was er will.


Die beiden unterstrichenen Stellen wären Links, das geht hier im Forum leider nicht so richtig (ich weiss, Links gehen schon, aber nicht so wie ich es hier bräuchte).

Als nächstes käme also Interaktion vom Spieler, und daher ist die Szene erstmal beendet. Je nachdem, ob der Spieler nun auf "Nö, keine Lust." oder "Tja, warum nicht." klickt, würde eine der beiden folgenden Szenen abgespielt werden:

Dies käme also in demselben Verzeichnis in die Datei ausruhen.xml:
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>
<p>Enttäuscht geht der Mann wieder, und du kannst in Ruhe dein Bier trinken. </q>
<quest status="aborted"/>
<event>


Und dieses in die Datei anhoeren.xml:
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>
<p>Auf deine Einladung hin setzt sich der Bürger zu dir an den Tisch und bestellt gleich noch zwei Gläser Wein. In echten Gläsern, nicht in Tonkrügen wie das billige Zeug, das du sonst so oft trinken musst! Zufrieden, dass es so gut beginnt, hörst du dir seine Geschichte an:</o>

<p><q>Ich... also es ist so, dass... Nun ja, wisst ihr, ich bin verheiratet - glücklich verheiratet, bei Travia! - aber, es ist nun einmal so, wisst ihr, Rahjas Wege sind unergründlich...</q> Mit einer Ahnung, was los sein könnte, unterbrichst du ihn. <q>Kleine Probleme beim Fremdgehen, was?</q> Errötend stürzt der Mann seinen Wein herunter. Dann nickt er. <q>Ich... Ich bin in eine Falle gelockt worden. Diese falsche Schlange hat mich erst verführt, dann sollte ich ihr Liebesbriefe schreiben, und noch bevor wir... also, eigentlich ist ja noch gar nichts passiert, als...</q> Ah, ja. <q>Sie erpresst euch, ohne euch vorher beglückt zu haben? Wahrhaft, wie grausam... Und ich soll euch jetzt die Briefe besorgen, oder was?</q> Erleichtert, dass du seine Not begriffen hast, holt er einen kleinen Lederbeutel hervor und legt ihn auf den Tisch.</p>

<p><q>Ich biete euch 20 Dukaten, wenn ihr mir die Briefe beschafft. Willigt ihr ein?</q></p>

<ol>
    <li><choice target="schmuddelig">Nee, das ist mir zu schmuddelig.</choice>
             Sollen ihn die Götter für seine Wollust strafen, oder auch seine Frau! </li>
    <li><choice target="deinding">Klar, das ist genau dein Ding.</choice>
             Und 20 Dukaten für ein bisschen Schattenarbeit sind nicht zu verachten! </li>
</ol>
</event>


Das ist sie schon die zweite Szene. Weisst du jetzt schon, wie die beiden Ereignisse/Szenen "führt zu" (schmuddelig und deinding) aussehen müssten?

Doch zum Abschluss dieses Teils des Tutorials mal eben in wenigen Worten, was die verwendten Tags bedeuten:

<?xml ...?>
Das braucht jede XML-Datei, hier wird u.a. der Zeichensatz festgelegt.

<event>...</event>
Muss in jeder AOQML Datei das oberste Tag sein und zwar genau einmal. Darin beschreibt man die Szene.

<p>...</p>
Wie in HTML: ein Absatz. Dient also nur der Formatierung der Ausgabe.

<q>...</q>
Wie in HTML: Ein sogenanntes inline-Zitat. Der Inhalt wird auf besondere Weise für wörtliche Rede formatiert.

<quest ... />
Hiermit wird das Quest-Gedächtnis gesteuert. Dafür muss man manchmal wissen, ob ein Quest abgebrochen wurde (Spieler kann es dann nochmal bekommen) oder ausgeführt wurde (der Spieler kann es dann nie wieder bekommen). Evtl. wird es noch weitere Status geben, mal sehen, was wir brauchen, bestimmt Unterbrechnungen, falls man reisen muss etc.. Insbesondere wird aber auch bei started der Quest-Speicher angelegt (ZBs haben so einen nicht) und bei finished und aborted wird er gelöscht. Mehr dazu später.

<ul><li>...</li>...</ul>
Wie in HTML, das ist eine Aufzählung. <ol>...</ol> wäre mit Nummern statt Aufzählungspunkten.

<choice target="...">...</choice>
Dies gibt dem Spieler eine Wahlmöglichkeit mit einem Text auf den er klicken kann und einer Ziel-Szene, mit der es dann weiter geht.

Hab ich was vergessen?
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh

Re: Queste mit AOQML - crash Tutorial (Der Auftrag)

Beitragvon MyOwnOwner » Mo 17 Mär, 2008 16:31

Die Möglichkeiten der Formatierung gefallen mir soweit sehr gut!

Könnte man zusätzlich noch Variablen einführen ? Beispielsweise:

<heldenname> :arrow: Name des Helden wird eingestzt (Wenn man z.B. dem Auftraggeber seinen Namen nennt, und der einen im weiteren Verlauf dann direkt anspricht oder als Questereignis durch einen Boten eine Nachricht zukommen lässt. Beispiel: "Grüße <heldenname> , leider bin ich gezwungen euren Auftrag zu ändern, sodass ihr zusätzlich...(irgendein sekundärziel halt)". Diese Variable müsste zusätzlich "variabel" sein, also dass man anstatt seinen namen anzugeben auch lügen kann, und irgendwas anderes wie "Alrik Alrikkson" zur Auswahl hat und dieser Name dann im späteren Verlauf für <heldenname> eingesetzt wird.

<*heldenname> :arrow: hier würde der echte heldenname "erzwungen". Beispielereignis: Man hat beim lügen eine schlechte Probe abgeliefert und im weiteren Verlauf der Quest kommt dann wieder eine Nachricht. "Ich hoffe ihr erhaltet diese Nachricht <heldenname>, oder sollte ich besser sagen <*heldenname>? Ihr habt mich belogen! Wie soll ich euch trauen, dass ihr mir bei der Erfüllung eures Auftrages ehrlich bericht erstattet / gefundenen Gegenstand überbringt /etc, wenn ihr mir nicht einmal euren Namen verratet? ..."

Das würde natürlich Vorraussetzen das Patzer bei den Proben auch abgespeichert werden und später abgerufen werden könnten.
<speichern_probe_XX> :arrow: Man müsste also wichtigen Proben, die Auswirkungen auf den Questverlauf haben eine ID zuweisen können.
<abfrage_probe_XX> :arrow: Und abfragen ob die Probe gelang.

Wenn die Probe nur direkt auf die nachfolgende Aktion eine Auswirkung hat, müsste man stattdessen alles in der Quest nachfolgende in 2 Varianten abspeichern. Wenn mehrere dieser Proben, die nicht direkt den Abbruch der Quest als ausgang haben , in einer Quest vorkommen, wirds für den Questschreiber unübersichtlich.

Ich hoffe ich konnte das nachvollziehbar rüberbringen.
Edit zu den Variablen: hatte leider viewtopic.php?f=14&t=2516 übersehen...
Οὐκ ἐν τῷ πολλῷ τὸ εὖ, ἀλλ᾿ ἐν τῷ εὖ τὸ πολύ
Benutzeravatar
MyOwnOwner
Ordenskrieger
Ordenskrieger
 
Beiträge: 210
Registriert: Fr 08 Feb, 2008 14:41
Wohnort: Niedernhausen im Taunus
Heldenname: Kapitän Efferdan Trondeson
Mitglied bei: Des Hauptmanns geiler Haufen

Re: Queste mit AOQML - crash Tutorial (Der Auftrag)

Beitragvon Lowlander » Mo 17 Mär, 2008 17:30

MyOwnOwner hat geschrieben:Die Möglichkeiten der Formatierung gefallen mir soweit sehr gut!

Könnte man zusätzlich noch Variablen einführen ?


Halt! Bitte hier keine Vorschläge, dafür neuen Thread aufmachen. Danke! Lieber fragen, wie es geht. Es geht schon VIEL mehr, als ich bis jetzt gezeigt habe.

MyOwnOwner hat geschrieben:<heldenname>


Dafür gibt's bis jetzt <hero .../> mit diversen Attributen, die man abfragen kann. Hier überlegen wir (Saroll und ich) aber noch, das mit <get ...> zu machen, und man dann per Attribut auch Daten von NPCs abfragen kann. Also z.B.

Einen Fake-Namen gibt es noch nicht, es gibt auch noch keine Eingabe-Felder, außer den o.g. choice-Links.

MyOwnOwner hat geschrieben:Das würde natürlich Vorraussetzen das Patzer bei den Proben auch abgespeichert werden und später abgerufen werden könnten.
<speichern_probe_XX> :arrow: Man müsste also wichtigen Proben, die Auswirkungen auf den Questverlauf haben eine ID zuweisen können.
<abfrage_probe_XX> :arrow: Und abfragen ob die Probe gelang.


Das mit den IDs für Proben-Ergebnisse ist eine gute Idee. Ergebnisse speicher geht auch schon, nur anders. Es gibt zwei Möglichkeiten, etwas zu speichern:

1. Abläufe, d.h. der Programmcode wird gespeichert und kann später abgerufen werden
2. Ergebnisse, d.h. der aus dem Programmcode resultierte HTML-Code kann später abgerufen werden

Genau diese Variablen löscht nämlich z.B. das <quest status="finished"/>

Aber in diesem Thread will ich eben nicht die Tags Stück für Stück erklären, sondern aufzeigen, wie man konkrete Probleme löst. Die Anforderung, je nach Probenergebnis, einen vom Spieler angegebenen Fake-Namen oder echten Namen im weiteren Verlauf zu verwenden, kann ich leider noch nicht erfüleln, weil man eben noch keine Text-Eingaben machen kann.
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh

Re: Queste mit AOQML - crash Tutorial (Der Auftrag)

Beitragvon neonix » Mo 17 Mär, 2008 17:36

Ich versuche jetzt mal, dem Schema zu folgen. Die Teile, die ich noch nicht abkupfern kann, setze ich in Klammern.



Datei angenommen.xml:

<?xml version="1.0" encoding="UTF-8"?>
<p>Du willigst ein, und erleichtert erklärt dir der Mann, wo die hinterlistige Erpresserin logiert. Es ist ein Gasthaus ganz in der Nähe. Nur, wie solltest du jetzt am besten vorgehen? </p>
<ul>
<li><choice target="reinstuermen">Keine Zeit für Feinheiten, die Sache wird rondrianisch geregelt!</choice>
Am besten wartest du, bis sie das Gasthaus verlässt, um sie dann in einer stillen Seitenstraßen einzuschüchtern. Solche Erpresser und Gauner haben keinen Mumm, das wird ein leichtes werden!</li> <li><choice target="einschleichen">Lieber phexisch vorgehen, man weiß ja nie...</choice>
Du wartest, bis sie das Gasthaus verlässt, und schaust dich dann heimlich ein wenig in ihrem Zimmer um. </li>
</ul>
</event>



Datei reinstürmen.xml:

<?xml version="1.0" encoding="UTF-8"?>
<p>Es dauert fast drei Stunden, aber irgendwann gegen Abend verlässt die Streunerin ihr Nest und schlendert durch die Straßen. In verschiedenen Läden gibt sie ihr unrechtmäßig erworbenes Geld aus, und immer sind zu viele Zeugen in der Nähe. Doch dann bietet sich dir eine Gelegenheit, als sie in eine kleine Nebenstraße abbiegt. Jetzt nur noch schnell anschleichen und ihr den Fluchtweg versperren... </p>

(So, hier sollte dann eine Probe auf Schleichen +3 kommen.)

- Fehlschlag: führt zu Datei verfolgung.xml
- Erfolg: führt zu Datei kampf.xml


Datei verfolgung.xml:

<?xml version="1.0" encoding="UTF-8"?>
<p>Verdammt, sie hat dich bemerkt! Schnellen Schrittes biegt sie in eine der vielen engen Seitengassen ab, und sofort machst du dich an die Verfolgung... </p>

(Probe auf Orientierung +8)

- Fehlschlag: Führt zu Datei verloren.xml
- Erfolg: Führt zu Datei erwischt.xml


Datei verloren.xml

<?xml version="1.0" encoding="UTF-8"?>
<p>So schnell du auch rennst, in dem Gewirr von Gassen, Höfen und Winkeln verlierst du sie schnell aus den Augen. Den ganzen restlichen Tag kannst du sie nicht mehr finden, und eine Nachfrage im Gasthaus ergibt, das sie schnell und heimlich mit ihren ganzen Sachen ausgezogen ist. Zerknirscht musst du deinem Auftraggeber dein Versagen beichten. Und Geld bekommst du natürlich nicht. </p>

(1 AP, Quest gescheitert, ENDE)


Datei erwischt.xml:

<?xml version="1.0" encoding="UTF-8"?>
<p>Hah! Sie hat versucht zu entkommen, aber du warst schneller! </p>

(Führt zu Datei kampf.xml)


Datei kampf.xml:

<?xml version="1.0" encoding="UTF-8"?>
<p>Erschrocken fährt die Streunerin zu dir herum, als du sie an der Schulter packst, und zieht sofort einen scharf glänzenden Dolch. <q> FINGER WEG! Wage es nicht mich anzurühren, du dahergelaufener Strauchdieb! </q> Du zuckst zurück und tastest nach deiner eigenen Waffe. <q> Von wegen, DU bist hier die Verbrecherin! Her mit den Briefen, dann lasse ich dich laufen! </q> Der kurze Moment der Überraschung in ihren Augen macht einem spöttischen Grinsen Platz. </q> Hat der geile Depp einen Dummen gefunden, der für ihn die Kastanien aus dem Feuer holt? Na, dann strengt euch mal an für euer Geld. Ich habe nicht Wochen in die Vorbereitung gesteckt, um jetzt einfach aufzugeben! </q> Entschlossen, sich den Weg freizukämpfen, greift sie dich an... </p>

(Führt zu einem Kampf gegen sie, Werte wie besserer Räuber mit Kettenhemd und Dolch, gibt bei weniger als 20 LE auf, flieht nicht)

- Sieg führt zu Datei sieg.xml
- Niederlage führt zu Datei niederlage.xml
- Flucht führt zu flucht.xml


Datei sieg.xml:

<?xml version="1.0" encoding="UTF-8"?>
<p>Nach einem kurzen aber erbitterten Kampf ist deine Gegnerin geschlagen. Als du sie durchsuchst, findest du die gesuchten Briefe sorgsam in einer kleinen Ledertasche verborgen. Zufrieden nimmst du ihr noch den Dolch ab und gehst. </p>

(+ Dolch, +8 AP, führt zu belohnung.xml)


Datei niederlage.xml:

<?xml version="1.0" encoding="UTF-8"?>
<p>Die tückischen Angriffe deiner unerwartet starken Gegnerin sind zu viel für dich. Das letzte, was du noch mitkriegst, ist, wie sie eilig hinter der nächsten Ecke verschwindet. Dann raubt dir der Blutverlust das Bewusstsein... </p>

(+4 AP, Quest gescheitert, Ende)


Datei flucht.xml:

<?xml version="1.0" encoding="UTF-8"?>
<p>Die tückischen Angriffe deiner unerwartet starken Gegnerin sind zu viel für dich. Da du nicht bereit bist, für so eine Kleinigkeit dein Leben zu opfern, nimmst du lieber die Beine in die Hand. Das allerdings deinem Auftraggeber zu beichten ersparst du dir lieber... </p>

(+2 AP, Quest gescheitert, Ende)


Datei einschleichen.xml: Mach ich dann später...


So, ich hoffe das war einigermaßen brauchbar.
Zufallszauberer und Questenschmied.
Kanzler Westendar und Vizekanzler Flora & Fauna.
Ansonsten verantwortlich für Rastfunktion, Mietstall, Tempel, Gosse, Söldnerlager, Blutrabe, Kommandantur ET, Alte Kaserne, diverse Gegenstandsquesten und so weiter...
Benutzeravatar
neonix
Erzmarschall
Erzmarschall
 
Beiträge: 5077
Registriert: Di 11 Dez, 2007 11:33
Wohnort: Braunschweig
Heldenname: Marquez Santarosa
Mitglied bei: Helden Schurken Suchende

Re: Queste mit AOQML - crash Tutorial (Der Auftrag)

Beitragvon Lowlander » Mo 17 Mär, 2008 18:13

neonix hat geschrieben:<?xml version="1.0" encoding="UTF-8"?>
<p>Du willigst ein,


Da fehlt das <event>...</event> um den ganzen Inhalt, außer <?xml ...?> herum. Dieses Top-Tag braucht jede XML Datei. Ditto bei den anderen Dateien.

Man könnte noch überlegen, dass man mehrere Szenen in eine Datei packt, dann brauchts ein neues Top-Tag. Aber die werden so schon teilweise recht groß, so dass es vermutlich so sogar übersichtlicher ist .

Sonst war alles korrekt soweit. Super!

neonix hat geschrieben:(So, hier sollte dann eine Probe auf Schleichen +3 kommen.)

- Fehlschlag: führt zu Datei verfolgung.xml
- Erfolg: führt zu Datei kampf.xml


Probe wie zuvor. Doch dann wird's spannend. Wir wollen ja keine neue Seite, wie vorher, sondern wir wollen, dass die Folge-Szene sich sozusagen innerhalb dieser Szene (HTML-Seite) abspielt. Das geht so:

Code: Alles auswählen
<challenge talent="Schleichen" modification="+3">
    <failure><include target="verfolgung"></failure>
    <success><include target="kampf"></success>
</challenge>


Datei verfolgung.xml:

neonix hat geschrieben:(Probe auf Orientierung +8)
- Fehlschlag: Führt zu Datei verloren.xml
- Erfolg: Führt zu Datei erwischt.xml


Wie das geht, weisst du ja jetzt. Genau wie oben. Man kann auch in Dateien, die per include eingebunden wurden, weitere per include einbinden. Landet dann alles in einer HTML-Ausgabe-Seite.

neonix hat geschrieben:Datei verloren.xml
...
(1 AP, Quest gescheitert, ENDE)


Das geht so:
Code: Alles auswählen
<set attribute="Abenteuerpunkte" inc="1"/>
<quest status="failed"/>


neonix hat geschrieben:Datei erwischt.xml:

<?xml version="1.0" encoding="UTF-8"?>
<p>Hah! Sie hat versucht zu entkommen, aber du warst schneller! </p>

(Führt zu Datei kampf.xml)


Auch hier, du ahnst es schon, wieder include verwenden. Achtung: In XML muss JEDES Tag (außer Steuertags wie <?xml ...?> gehöffnet UND geschlossen werden. Gibt es keinen Inhalt, macht man es mit <include .../> - was dasselbe ist wie <include ...></include>. Wenn diese "Grammatik" (Syntax) nicht stimmt, dann kommt es schon beim Lesen der Datein zu einem Fehler.

neonix hat geschrieben:Datei kampf.xml:
...
(Führt zu einem Kampf gegen sie, Werte wie besserer Räuber mit Kettenhemd und Dolch, gibt bei weniger als 20 LE auf, flieht nicht)
- Sieg führt zu Datei sieg.xml
- Niederlage führt zu Datei niederlage.xml
- Flucht führt zu flucht.xml


Ja, jetzt wird es wieder spannend, denn Kämpfe sind bisher so geplant (soweit ich weiss ist die Anbindung an Antamar noch unvollständig):

Code: Alles auswählen
<fight>
    <rivals><npc npcid="123" surrender-below="20" escape="false" /></rivals>0
    <victory><include target="sieg"/></victory>
    <defeat><include target="niederlage"/></defeat>
    <escape><include target="flucht"/></escape>
</fight>


Hier wird also ein NPC aus der Datenbank geholt und zwei Werte überschrieben. Es soll auch Möglichkeiten geben, eigene NPC zu definieren. Dieser Bereich (NPC Spezifikation) ist aber noch recht unausgegoren, da müssen wir auch sehen, was in Antamar überhaupt geht - und weder Saroll noch ich kennen den Teil von Antamar besonders gut. Kampf gegen mehrere Gegener und vor allem wie man dann den Ausgang festlegt, ist auch schon definiert, aber auch hier müssen wir noch sehe, inwiefern sich das an Antamar anbinden lässt.

neonix hat geschrieben:Datei sieg.xml:
...
(+ Dolch, +8 AP, führt zu belohnung.xml)


Neu ist hier ja nur das mit dem Dolch, doch hier zumindest die ganze obige Anforderungs-Zeile umgesetzt:

Code: Alles auswählen
<take item="Säbel"/>
<set attribute="Abenteuerpunkte" inc="8"/>
<include target="belohnung"/>


Es steht noch nicht 100%ig fest, wie wir Gegenstände spezifizieren. Auch hier müssen wir sehen, wie wir es in Antamar anbinden können. Aber es gibt Ideen, wie das obige funktionieren könnte. D.h. das oben ist zwar im Interpreter implementiert, in der Anbindung an Antamar aber noch nicht - wäre also noch funktionslos.

Ok, wie die restlichen Sachen gehen, hatten wir ja schon. Es gab auch schon einmal einen Dummy-Interpreter, wo man die Skripte abspielen konnte, ohne dass Antamar dahinter lag. Den werde ich demnächst mal an die aktuelle Version anpassen - da gab es wegen der Antamar-Einbindung ein paar Änderungen, so dass es ohne Antamar derzeit nicht geht.
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh

Re: Queste mit AOQML - crash Tutorial (Der Auftrag)

Beitragvon neonix » Mo 17 Mär, 2008 18:40

Na also!

Danke für die Einweisung, ich werde morgen oder so mal das ganze zu einem Text / Programmrohling zusammenfassen und demnächst noch einige andere Miniquests basteln. :mrgreen:

Für Gegner und Gegenstände habe ich im Forum irgendwelche Listen gesehen, letztere mit vierstelligen Nummern codiert. Die braucht man, damit das Programm sie korrekt erkennt, oder? Müsste mal Gaddezwerch oder einen anderen Programmierer fragen... Mit Gegnern und Gegenständen hätte ich dann eigenlich das meiste zusammen, zumindest für einfache Miniquests. Die epischen Kampagnen müssen halt noch warten... :twisted:

Es wäre echt cool, wenn man die Queste irgendwann in den nächsten Tagen oder Wochen zumindest mal testweise einbinden könnte. Dafür müssen aber noch einige Grundlagen eingebaut werden, oder habe ich das falsch verstanden? Auf jeden Fall könnten einige Miniquests das Spiel schon erheblich aufwerten!

Für den Anfang müsste man dann noch eine Art "Quest Suchen"-Schalter für die Tavernen (oder Rathäuser oder andere Gebäude) basteln. Damit hätten die dann auch eine größere Bedeutung als jetzt.
Zufallszauberer und Questenschmied.
Kanzler Westendar und Vizekanzler Flora & Fauna.
Ansonsten verantwortlich für Rastfunktion, Mietstall, Tempel, Gosse, Söldnerlager, Blutrabe, Kommandantur ET, Alte Kaserne, diverse Gegenstandsquesten und so weiter...
Benutzeravatar
neonix
Erzmarschall
Erzmarschall
 
Beiträge: 5077
Registriert: Di 11 Dez, 2007 11:33
Wohnort: Braunschweig
Heldenname: Marquez Santarosa
Mitglied bei: Helden Schurken Suchende

Re: Queste mit AOQML - crash Tutorial (Der Auftrag)

Beitragvon Lowlander » Mo 17 Mär, 2008 19:00

Super, bin dann schon gespannt auf die ersten Werke. Und wenn es dann neue Aufgabenstellungen gibt: Einfach fragen, es sind schon noch einige Sachen implementiert, die wir bisher noch gar nicht hatten.

Ja, für die Einbindung ins Spiel ist noch einiges offen. Ich kenne aber den Stand gar nicht, weil mein Saroll, der sich hauptsächlich darum gekümmert hat, seit fast zwei Wochen nicht mehr im Chat aufgetaucht war :-( Ich hoffe, ich sehe ihn bald wieder, damit wir abklären können, wie es weiter geht.
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh

Re: Queste mit AOQML - crash Tutorial (Der Auftrag)

Beitragvon neonix » Mi 19 Mär, 2008 12:51

Ok, ich versuche jetzt mal alles als komplette Datei auszuarbeiten:

Questdatei index.xml (oder so...)



<?xml version="1.0" encoding="UTF-8"?>

<event>
<quest status="started"/>
<p>Gerade hast du dich mit einem frisch gezapften Bier niedergelassen, als dir die Blicke auffallen, mit denen dich ein ebenfalls im Schankraum sitzender, wohlhabend aussehnder Bürger mustert. Er scheint nervös zu sein, vor allem als sein Blick auf deine Waffen fällt, rafft sich dann aber dennoch auf und tritt zu dir. </p>

<p><q>Ähm, also, ja... Seid ihr zufällig an einem Auftrag interessiert? Es könnte gefährlich werden, aber ich bin bereit, euch gut zu bezahlen.</q></p>
<ul>
<li><choice target="ausruhen">Nö, keine Lust.</choice>
Du bist hier um dich auszuruhen, nicht um irgendwas gefährliches zu machen. </li>
<li><choice target="anhoeren">Tja, warum nicht.</choice>
Erst mal hören, was er will. </li>
</ul>
</event>


Datei ausruhen.xml:

<?xml version="1.0" encoding="UTF-8"?>
<p>Enttäuscht geht der Mann wieder, und du kannst in Ruhe dein Bier trinken. </q>
<quest status="aborted"/>
</event> (Hier ist doch das Event zu Ende, oder?)


Datei anhoeren.xml:

<?xml version="1.0" encoding="UTF-8"?>
<p>Auf deine Einladung hin setzt sich der Bürger zu dir an den Tisch und bestellt gleich noch zwei Gläser Wein. In echten Gläsern, nicht in Tonkrügen wie das billige Zeug, das du sonst so oft trinken musst! Zufrieden, dass es so gut beginnt, hörst du dir seine Geschichte an:</o>

<p><q>Ich... also es ist so, dass... Nun ja, wisst ihr, ich bin verheiratet - glücklich verheiratet, bei Travia! - aber, es ist nun einmal so, wisst ihr, Rahjas Wege sind unergründlich...</q> Mit einer Ahnung, was los sein könnte, unterbrichst du ihn. <q>Kleine Probleme beim Fremdgehen, was?</q> Errötend stürzt der Mann seinen Wein herunter. Dann nickt er. <q>Ich... Ich bin in eine Falle gelockt worden. Diese falsche Schlange hat mich erst verführt, dann sollte ich ihr Liebesbriefe schreiben, und noch bevor wir... also, eigentlich ist ja noch gar nichts passiert, als...</q> Ah, ja. <q>Sie erpresst euch, ohne euch vorher beglückt zu haben? Wahrhaft, wie grausam... Und ich soll euch jetzt die Briefe besorgen, oder was?</q> Erleichtert, dass du seine Not begriffen hast, holt er einen kleinen Lederbeutel hervor und legt ihn auf den Tisch.</p>

<p><q>Ich biete euch 20 Dukaten, wenn ihr mir die Briefe beschafft. Willigt ihr ein?</q></p>

<ol>
<li><choice target="schmuddelig">Nee, das ist mir zu schmuddelig.</choice>
Sollen ihn die Götter für seine Wollust strafen, oder auch seine Frau! </li>
<li><choice target="deinding">Klar, das ist genau dein Ding.</choice>
Und 20 Dukaten für ein bisschen Schattenarbeit sind nicht zu verachten! </li>
</ol>
</event>


Datei schmuddelig.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Errötet vor Scham und Enttäuschung geht der Mann wieder und lässt dich mit deinem kostenlosen Wein allein. </q>
<quest status="aborted"/>
</event>


Datei deinding.xml:

<?xml version="1.0" encoding="UTF-8"?>
<p>Du willigst ein, und erleichtert erklärt dir der Mann, wo die hinterlistige Erpresserin logiert. Es ist ein Gasthaus ganz in der Nähe. Nur, wie solltest du jetzt am besten vorgehen? </p>
<ul>
<li><choice target="reinstuermen">Keine Zeit für Feinheiten, die Sache wird rondrianisch geregelt!</choice>
Am besten wartest du, bis sie das Gasthaus verlässt, um sie dann in einer stillen Seitenstraßen einzuschüchtern. Solche Erpresser und Gauner haben keinen Mumm, das wird ein leichtes werden!</li> <li><choice target="einschleichen">Lieber phexisch vorgehen, man weiß ja nie...</choice>
Du wartest, bis sie das Gasthaus verlässt, und schaust dich dann heimlich ein wenig in ihrem Zimmer um. </li>
</ul>
</event>


Datei reinstürmen.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Es dauert fast drei Stunden, aber irgendwann gegen Abend verlässt die Streunerin ihr Nest und schlendert durch die Straßen. In verschiedenen Läden gibt sie ihr unrechtmäßig erworbenes Geld aus, und immer sind zu viele Zeugen in der Nähe. Doch dann bietet sich dir eine Gelegenheit, als sie in eine kleine Nebenstraße abbiegt. Jetzt nur noch schnell anschleichen und ihr den Fluchtweg versperren... </p>
<challenge talent="Schleichen" modification="+3">
<failure><include target="verfolgung"></failure>
<success><include target="kampf"></success>
</challenge>
</event>


Datei verfolgung.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Verdammt, sie hat dich bemerkt! Schnellen Schrittes biegt sie in eine der vielen engen Seitengassen ab, und sofort machst du dich an die Verfolgung... </p>
<challenge talent="Orientierung" modification="+8">
<failure><include target="verloren"></failure>
<success><include target="erwischt"></success>
</challenge>
</event>


Datei verloren.xml

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>So schnell du auch rennst, in dem Gewirr von Gassen, Höfen und Winkeln verlierst du sie schnell aus den Augen. Den ganzen restlichen Tag kannst du sie nicht mehr finden, und eine Nachfrage im Gasthaus ergibt, das sie schnell und heimlich mit ihren ganzen Sachen ausgezogen ist. Zerknirscht musst du deinem Auftraggeber dein Versagen beichten. Und Geld bekommst du natürlich nicht. </p>
<set attribute="Abenteuerpunkte" inc="1"/>
<quest status="failed"/>
</event>


Datei erwischt.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Hah! Sie hat versucht zu entkommen, aber du warst schneller! </p>
<include target="kampf"> (Richtig so?)
</event>


Datei kampf.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Erschrocken fährt die Streunerin zu dir herum, als du sie an der Schulter packst, und zieht sofort einen scharf glänzenden Dolch. <q> FINGER WEG! Wage es nicht mich anzurühren, du dahergelaufener Strauchdieb! </q> Du zuckst zurück und tastest nach deiner eigenen Waffe. <q> Von wegen, DU bist hier die Verbrecherin! Her mit den Briefen, dann lasse ich dich laufen! </q> Der kurze Moment der Überraschung in ihren Augen macht einem spöttischen Grinsen Platz. </q> Hat der geile Depp einen Dummen gefunden, der für ihn die Kastanien aus dem Feuer holt? Na, dann strengt euch mal an für euer Geld. Ich habe nicht Wochen in die Vorbereitung gesteckt, um jetzt einfach aufzugeben! </q> Entschlossen, sich den Weg freizukämpfen, greift sie dich an... </p>
<fight>
<rivals><npc npcid="123" surrender-below="20" escape="false" /></rivals>0
<victory><include target="sieg"/></victory>
<defeat><include target="niederlage"/></defeat>
<escape><include target="flucht"/></escape>
</fight>
(Entsprechend an den Gegner anpassen, "Streunerin" mit Dolch oder Spezial-NSC)
</event>


Datei sieg.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Nach einem kurzen aber erbitterten Kampf ist deine Gegnerin geschlagen. Als du sie durchsuchst, findest du die gesuchten Briefe sorgsam in einer kleinen Ledertasche verborgen. Zufrieden nimmst du ihr noch den Dolch ab und gehst. </p>
<take item="Dolchl"/>
<set attribute="Abenteuerpunkte" inc="8"/>
<include target="belohnung"/>
</event>


Datei niederlage.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Die tückischen Angriffe deiner unerwartet starken Gegnerin sind zu viel für dich. Das letzte, was du noch mitkriegst, ist, wie sie eilig hinter der nächsten Ecke verschwindet. Dann raubt dir der Blutverlust das Bewusstsein... </p>
<set attribute="Abenteuerpunkte" inc="4"/>
<quest status="failed"/>
</event>


Datei flucht.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Die tückischen Angriffe deiner unerwartet starken Gegnerin sind zu viel für dich. Da du nicht bereit bist, für so eine Kleinigkeit dein Leben zu opfern, nimmst du lieber die Beine in die Hand. Das allerdings deinem Auftraggeber zu beichten ersparst du dir lieber... </p>
<set attribute="Abenteuerpunkte" inc="2"/>
<quest status="failed"/>
</event>


Datei belohnung.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Nachdem du deinen Auftrag erledigt und die Erpresserbriefe in der Hand hast, schickst du einen Botenjungen zu deinem Auftraggeber und wartest so lange in der Taverne. Endlich kommt er, erwartungsfroh zitternd, und mit einem ebenso generösen wie verschwörerischen Lächeln übergibst du ihm das Bündel unter dem Tisch. Aufgeregt reißt er die Briefe auf, zählt sie und hält sie dann kurz in die Kerzenflamme, um die Beweise seiner Untreue zu vernichten. Der wütend herbeieilenden Bedienung drückt er einige Münzen in die Hand und lässt zwei Flaschen vom besten kommen, und du siehst dich dazu genötigt, noch ein wenig mit ihm zu feiern - bis gut eine halbe Stunde später seine Frau hereinstürmt und ihm am Ohr nach Hause zerrt... Na, immerhin hat er dir das versprochene Geld da gelassen!</p>
<take item="2000 Heller"/> (Nee, geht vermutlich anders, oder? Bitte korrigieren...)
<set attribute="Abenteuerpunkte" inc="10"/>
<quest status="failed"/> (oder "sucsessfull" ???)
</event>






Datei einschleichen.xml

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Betont unauffällig treibst du dich ein wenig im Gasthaus der Streunerin herum und wartest, bis sie es verlässt. Dann, in einem unbeobachteten Moment, schlenderst du die Treppe nach oben zu den Gästezimmern. Es ist ruhig, auf dem Flur ist niemand zu sehen, aber dennoch solltest du erst einmal leise vorgehen, damit keine anderen Gäste oder das Personal auf dich aufmerksam werden. </p>
<challenge talent="Schleichen" modification="+5">
<failure><include target="ausrede"></failure>
<success><include target="tuer"></success>
</challenge>
</event>


Datei ausrede.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Die morschen Bodenbretter knarren unter deinen Füßen, und zu allem Unglück schaut auch noch eine Dienstmagt mit einem Stapel Wäsche in den Armen um die Ecke. <q>Was machen sie denn hier? Sie gehören doch nicht zu den Gästen, oder? </q> Oha, ertappt... Wie kannst du dich da am besten herauswinden? </p>
<ul>
<li><choice target="luegen">Ja klar gehöre ich zu den Gästen... </choice> </li>
<li><choice target="bestechen">Hier hast du einen Dukaten, du hast nichts gesehen, klar?</choice></li>
<li><choice target="betoeren">Dich suchte ich, und nur dich, meine Angebetete!</choice></li>
<li><choice target="drohen">Ein Wort und ich schneide dir deine Gurgel durch!</choice></li>
</ul>
</event>


Datei luegen.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Mit gespieltem Selbstbewusstsein behauptest du, natürlich einer der Gäste zu sein. Aber ob sie dir das abkauft?</p>
<challange talent="Schauspielerei" modification="+3">
<failure><include target="kreischen"></failure>
<success><include target="aha"></success>
</challenge>
</event>


Datei aha.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p><q>Oh. Ja, verzeihung... Brauchen sie noch Handtücher? </q>Dankend nimmst du eines der Handtücher, bevor sie sich um die anderen Zimmer kümmert. So, und jetzt ab zur Tür... </p>
<take item="Handtuch"/> (Gibt es die schon in der Liste???)
<set attribute="Abenteuerpunkte" inc="5"/>
<include target="tuer"/>
</event>


Datei bestechen.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Du bietest ihr einige klingende Münzen an. Leider scheint sie mehr an ihrem Job oder Praios Wohlwollen zu hängen als an deinem Angebot... </p>
<include target="kreischen"/>
</event>


Datei betoeren.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Mit schmachtendem Blick fällst du vor der eher unscheinbaren Dienstmagd auf die Knie. <q>Dich, und nur dich will ich, oh teuerste! Schon seit Tagen verwirrt Rahja mir mit deinem Bild den Geist, nur deine Berührung kann das Feuer meiner Sehnsucht bändigen! Nimm mich, gleich hier, gleich jetzt! </q> Bei Rahja, wenn das mal klappt... </p>
<challenge talent="Betören" modification="+3"> (Bei Frauen +8, auch wenn wir bei DSA ja überaus freizügig sind...)
<failure><include target="kreischen"></failure>
<success><include target="besenkammer"></success>
</challenge>
</event>


Datei besenkammer.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Errötend lässt sie ihren Wäschastapel fallen, packt dich und zerrt dich in die Besenkammer. Zwei anstrengende, enge und rahjagefällige Stunden später ist sie selig eingeschlummert und du hast endlich deine Unterwäsche wieder zusammengesammelt. Du musst dringend Rahja ein Dankopfer bringen! Wobei, eigentlich hast du das ja gerade eben. Vier mal. Trotz aller Rückenschmerzen widmest du dich wieder deinem Auftrag. </p>
<set attribute="Abenteuerpunkte" inc="10"/>
<include target="tuer"/>
</event>


Datei drohen.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Mit deinem bösesten Blick und der Hand nach der Waffe tastend machst du der Dienstmagt klar, was du mit ihr machst, wenn sie nicht spurt. Leider gerät sie daraufhin sofort in Panik... </p>
<include target="kreischen"/>
</event>


Datei kreischen.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Tja, deine Bemühungen sind gescheitert, die Dienstmagt kreischt lauthals das ganze Haus zusammen, sofort sehen die ersten Gäste aus den Türen, der Wirt stürmt mit zwei Schankknechten und derben Knüppeln in den Händen nach oben und du kommst gerade noch so aus dem Gasthaus heraus. Auf der Straße musst du dann auch noch den herbei eilenden Wachen ausweichen, und als sich die Aufregung endlich legt, kannst du gleich darauf verzichten, deinem Auftraggeber die Blamage mitzuteilen... </p>
<set attribute="Abenteuerpunkte" inc="2"/>
<quest status="failed"/>
</event>


Datei tuer.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Na also, du hast es bis vor die Zimmertür der Streunerin geschafft. Jetzt noch rasch das Schloss öffnen... </p>
<challenge talent="Schlösser Knacken" modification="+0"> (Hier würde ich noch gerne einen Bonus von -2 für den "Satz Dietriche" (?) vergeben)
<failure><include target="mist"></failure>
<success><include target="zimmer"></success>
</challenge>
</event>


Datei mist.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Verdammt, bei Phex, du bekommst das Schloss nicht auf! Hm... Vielleicht solltest du es noch einmal versuchen, auch wenn du schon einmal versagt hast? Oder doch lieber die Tür eintreten, auch wenn es Lärm macht? </p>
<ul>
<li><choice target="tuer2">Noch einmal versuchen!</choice> </li>
<li><choice target="eintreten">Und bist du nicht willig... </choice></li>
</ul>
</event>


Datei tuer2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Deine Hände sind von den ersten Versuchen zwar schon völlig verkrampft, aber du versuchst es dennoch noch einmal. </p>
<challenge talent="Schlösser Knacken" modification="+5"> (Hier würde ich noch gerne einen Bonus von -2 für den "Satz Dietriche" (?) vergeben)
<failure><include target="versagt"></failure>
<success><include target="zimmer"></success>
</challenge>
</event>



Datei versagt.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Egal was du auch tust, du bekommst die Tür nicht auf. Vielleicht bist du einfach nicht für die phexischen Künste geboren? Jedenfalls musst du deinem Auftraggeber gestehen, das du versagt hast. </p>
<set attribute="Abenteuerpunkte" inc="2"/>
<quest status="failed"/>
</event>


Datei eintreten.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>So leise wie möglich versuchst du, die Tür einzuschlagen... </p>
<challenge eigenschaft="Körperkraft" modification="+8">
<failure><include target="versagt"></failure>
<success><include target="zimmer"></success>
</challenge>
</event>


Datei zimmer.xml:

<?xml version="1.0" encoding="UTF-8"?>
<event>
<p>Endlich haben deine Bemühungen Erfolg, du huscht in das Zimmer und lehnst die Tür hinter dir wieder an. Eilig durchsuchst du das Zimmer gründlich und findest schließlich ein Bündel mit den gesuchten Briefen. Dann machst du dich eilig auf den Weg zu deinem auftraggeber! </p>
<set attribute="Abenteuerpunkte" inc="10"/>
<include target="belohnung"/>
</event>




Uff... Das wars. Hoffentlich sind nicht allzu viele Fehler drin. Kampf und Gegner müssen noch überarbeitet werden, ansonsten sollte eigentlich alles fertig sein.

P.S.: Juhu, mein erstes eigenes Programm!!! :) :D :lovl:
Zufallszauberer und Questenschmied.
Kanzler Westendar und Vizekanzler Flora & Fauna.
Ansonsten verantwortlich für Rastfunktion, Mietstall, Tempel, Gosse, Söldnerlager, Blutrabe, Kommandantur ET, Alte Kaserne, diverse Gegenstandsquesten und so weiter...
Benutzeravatar
neonix
Erzmarschall
Erzmarschall
 
Beiträge: 5077
Registriert: Di 11 Dez, 2007 11:33
Wohnort: Braunschweig
Heldenname: Marquez Santarosa
Mitglied bei: Helden Schurken Suchende

Re: Queste mit AOQML - crash Tutorial (Der Auftrag)

Beitragvon Lowlander » Mi 19 Mär, 2008 15:09

Super! Ich werfe das mal in meine Test-Engine (gibt leider derzeit keine, die über das Internet erreichbar wäre) ...
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh

Re: Queste mit AOQML - crash Tutorial (Der Auftrag)

Beitragvon Lowlander » Mi 19 Mär, 2008 17:17

Ich bin zwar noch nicht mit allen Dateien durch, kann aber schon sagen: Funktioniert! Es gab nur einige <p>, die mit </q> oder gar </o> abgeschlossen wurden, einige <event> fehlten und einige Tags waren nicht abgeschlossen (vor allem die <include>, doch das ist ja nur Kleinkram. Normalerweise programmiert man ja auch nicht im Blindflug ohne Instrumente ;-)

Man kann außerdem auch alles, was man zwischen <event> und </event> schreiben kann, in ein succes, failure etc. Tag reinschreiben. Wenn der Inhalt mehrfach benötigt wird, macht das natürlich keinen Sinn, dann besser eigene Datei. Oder wenn es sonst unübersichtlich wird, dann auch eigene Datei. Muss man im Einzelfall abwägen.

Ich gehe nun noch den Rest des Questes durch und dann kommts ins Subversion (Programmarchiv). Spielt aber noch alles in einem Branch ab, d.h. es wird noch nicht auf dem Live-Server landen.
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh

Re: Queste mit AOQML - crash Tutorial (Der Auftrag)

Beitragvon neonix » Mi 19 Mär, 2008 17:30

Sehr schön!

Ja, die </include> habe ich vergessen, und die </p> habe ich aus dem Text herauskopiert und dabei wohl verwechselt... Ich werde mir mal eine Datei mit den ganzen Programmelementen in übersichtlicher Form basteln. Wenn alles korrekt auf einer Seite steht sind die Chancen größer, es richtig zu verwenden.

Jetzt fehlt nur noch die Implementierung...
Zufallszauberer und Questenschmied.
Kanzler Westendar und Vizekanzler Flora & Fauna.
Ansonsten verantwortlich für Rastfunktion, Mietstall, Tempel, Gosse, Söldnerlager, Blutrabe, Kommandantur ET, Alte Kaserne, diverse Gegenstandsquesten und so weiter...
Benutzeravatar
neonix
Erzmarschall
Erzmarschall
 
Beiträge: 5077
Registriert: Di 11 Dez, 2007 11:33
Wohnort: Braunschweig
Heldenname: Marquez Santarosa
Mitglied bei: Helden Schurken Suchende

Re: Queste mit AOQML - crash Tutorial (Der Auftrag)

Beitragvon Lowlander » Mi 19 Mär, 2008 17:49

neonix hat geschrieben:Jetzt fehlt nur noch die Implementierung...


Vor allem die restiche Anbindung an Antamar und das Starten von Questen. Dein Quest lief aber gerade eben schon in Antamar, mit einer echten Heldin und ihren Werten bei den Proben.

Du fragtest nach Bonus für Dietriche, das geht so:

Code: Alles auswählen
<has item="Satz Dietriche">
    <success>
        <challenge talent="Schlösser Knacken" modification="-2">
            <failure><include target="mist"/></failure>
            <success><include target="zimmer"/></success>
        </challenge>
    </success>
    </failure>
        <challenge talent="Schlösser Knacken" modification="+0">
            <failure><include target="mist"/></failure>
            <success><include target="zimmer"/></success>
        </challenge>
    </failure>
</has>


Hier macht es dann auch Sinn, dass mist.xml und zimmer.xml eigene Dateien sind, kommt ja zweimal vor. Die success- und failure-Tags kann man aber nicht in eine Datei ausgliedern, die müssen immer direkt unter dem challenge-Tag sein. Somit ist das wie oben derzeit die einige Möglichkeit, so etwas zu realisieren.
Lowlander
:: Ratsmitglied :: Programmierung
:: Ratsmitglied :: Programmierung
 
Beiträge: 2276
Registriert: So 25 Nov, 2007 18:05
Wohnort: Hage/Ostfriesland
Heldenname: Markorka Faargh

Re: Queste mit AOQML - crash Tutorial (Der Auftrag)

Beitragvon neonix » Mi 19 Mär, 2008 18:04

Auf die Gefahr hin doch noch ein wenig zu nerven... :roll:

Ich hätte gerne noch folgende Programmteile (am Besten mit kleinem Beispiel wie unten):

<challenge talent="Schleichen" modification="+3">
<failure><include target="verfolgung"></failure>
<success><include target="kampf"></success>
</challenge>


- wie endet ein erfolgreiches Quest (oder geht das auch mit <quest status="failed"/> )?
- wie kann ich Geld verteilen?
- wie kann ich SC beklauen (Geld = 0, Geld = -X Heller, Waffe weg, Rucksackschwund...)?
- wie kann ich mehrere Gegenstände verteilen (einfach mehrere <take item="XYZ"/> hintereinander)?
- wie kann ich Zufallsgeneratoren benutzen (Geldmenge, Gegenstände, weiteres Event...)?
- wie kann ich direkt Schaden anrichten (Fallen etc.), mit und ohne Rüstung, Trefferzonen, Wunden... Ja, ich weiß, dürfte etwas komplizierter werden...
- Wie kann ich heilen (LP + X, LP voll, Wunde geheilt...)?
- Wie kann ich Rasse, Volk und Geschlecht abfragen?


Ich denke mal, das wäre alles... Zumindest für erste.

Und schon mal Danke für deine Bemühungen! :D
Zufallszauberer und Questenschmied.
Kanzler Westendar und Vizekanzler Flora & Fauna.
Ansonsten verantwortlich für Rastfunktion, Mietstall, Tempel, Gosse, Söldnerlager, Blutrabe, Kommandantur ET, Alte Kaserne, diverse Gegenstandsquesten und so weiter...
Benutzeravatar
neonix
Erzmarschall
Erzmarschall
 
Beiträge: 5077
Registriert: Di 11 Dez, 2007 11:33
Wohnort: Braunschweig
Heldenname: Marquez Santarosa
Mitglied bei: Helden Schurken Suchende

Nächste

Zurück zu Antamar®-Archiv



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

cron