[Guide][Wiki-Beitrag] How-To Total RP 3 Extended ❔

Ja, ich weiss, dass man da mit eigenen Skripts viel machen kann. Der Gedanke des Cheatings ist mir auch als erstes in den Sinn gekommen, daher hatte ich gefragt, weil ich gerne wissen wollte, ob es eine ganz legale Methode gibt.
Wenn nicht, ist das zwar schade, aber vielleicht kann man ja mal vorschlagen, dass das AddOn noch entsprechend erweitert wird, rein von den Autoren her. :slight_smile:

Ich finde halt, dass da wirklich etwas ganz essenzielles fehlt, wenn man schon die jetzigen Möglichkeiten alle hat. Es fühlt sich an, als würde da einfach noch etwas ganz wichtiges fehlen. :smiley:

LG Asha

Das Abspeichern von eigenen Bildern im „AddOns“-Verzeichnis zur Anzeige im eigenen Spielclient verstößt nicht gegen die Nutzungsbestimmungen und wird daher auch von einigen Addons (darunter TRP3) verwendet.

Aber:
Das Teilen der Bilder, also die Möglichkeit, dass andere Spieler das Bild ebenfalls betrachten können, ist nicht (*) möglich. Auch die Autoren von Addons können daran nichts ändern, denn sie können nur vom Spielclient bereitgestellte „Bausteine“ für ihre Addons verwenden.
Der Spielhersteller wird so einen Baustein wahrscheinlich nicht bereitstellen, denn

  • sie müssten den Inhalt der Bilder überwachen. Hier kann es wirklich „illegal“ werden.
  • sie müssten die damit verbundenen hohen Datenmengen verwalten. Alte IT-Weisheit: Ein Bild ist mehr als tausend Worte.

(*) Es ist theoretisch möglich, aber mit unverhältnismäßig hohem Aufwand verbunden.

2 Likes
▲ Zurück nach oben
Das Dropsystem (Stashes/Verstecke)

Das Dropsystem, vielen auch schlicht als ‚Player Stash‘ oder 'Spieler Versteck’ bekannt, ist ein Transfermechanismus um Items auszutauschen, ohne auf das Handelsfenster und somit dem Handel von Angesicht zu Angesicht oder aber Item-Import-Codes zurück zu greifen.

Konkret erlaubt es Items in der Spielwelt zu platzieren, die durch andere Spieler aufgesammelt werden können. Damit ist es ein recht immersives System, welches von den Möglichkeiten weit über das hinaus geht, was Blizzards eigene WoW-Engine vermag. Aber auch ein oft vergessenes oder ignoriertes Feature von Total RP 3 Extended.

Allerdings ist es auch eine Funktion, die für das korrekte funktionieren in Gänze auf einen zugänglichen Broadcastkanal angewiesen ist. Wer Probleme mit diesem hat oder ihn tiefgreifender verstehen möchte, dem sei an dieser Stelle der How-To zum Boradcast-Kanal nahe gelegt.

Doch wie nutzt man das Dropsystem eigentlich? Im Folgenden würde ich gerne versuchen in zwei Thremenbreichen diese Frage zu erläutern. Zunächst wie man Items in der Spielwelt ausfindig macht. Dann, wie man mit ihnen interagiert und abschließend wie man selbst sie erstellt.


Wichtiges vorab

Wie bereits angedeutet bedarf es bei dieser Funktion einem funktionierenden Boadcast-Kanal. Tritt man einem eigen erstellten Kanal bei, so kann man nur auf Verstecke zugreifen, die von Spielern erstellt worden sind die mit einem selbst den gleichen Kanal teilen. Umgekehrt können nur Spieler die selbst erstellten Verstecke finden und benutzen, die sich im selben Kanal befinden wie man selbst.

Zudem ist erforderlich dass ein Charakter des WoW-Accounts eingeloggt ist, über den ein Versteck erzeugt worden ist. Es ist daher nicht möglich ein Versteck zu finden, dessen Spieler derzeit ausgeloggt ist.

Eine kleine Ausnahme gibt es aber von dieser Regel. Verstecke die man erscannt hat, bevor der Erzeuger ausgeloggt hat, bleiben für eine begrenzte Zeit im Speicher des eigenen Clients erhalten und erlauben es so auch solche Verstecke zu finden.


Verstecke/Items ausfindig machen

Die Welt von WoW ist groß und da TRP3E Items nicht direkt in der Spielwelt dargestellt werden können, bedarf es einem System diese ausfindig zu machen.

Ähnlich dem Flag-Scan besteht daher die Möglichkeit nach fallen gelassenen Items und sogenannten Spieler-Verstecken zu suchen. Aber der Reihe nach.

Öffnet man die Karte, findet sich im unteren linken Bereich der Button für den Kartenscan unter TRP3. Dies ist nominell eine Funktion des Base-Addons ohne Extended, beschränkt sich dort aber auf sie Suche nach Spielern. Mit Extended wird diese Funktion erweitert um nach fallen gelassenen Items und öffentlichen Verstecken zu suchen. Sollte der Button ausgegraut sein, weist dies üblicherweise auf einen nicht zur Verfügung stehenden oder aber in den Optionen abgeschalteten Boadcast-Kanal hin.

Mit einem Mouseover kann man dann Vorabinformationen zu dem jeweiligen Versteck einsehen. Ausgenommen von dieser Suche sind jedoch eigene Verstecke.

Gesondert gehandhabt werden eigene Verstecke, so dass man speziell nach ihnen suchen muss. Dafür erspart dieses Vorgehen, dass man die eigenen Verstecke Mühseelig zwischen allen anderen suchen muss.

Die dritte Option ist es nach fallen gelassenen Items zu suchen. Fallen gelassene Items können üblicherweise nicht durch andere Spieler gefunden werden und nur von dem aufgehoben werden, der sie fallen gelassen hat. So kann man sie vorübergehen wo liegen lassen um sie später erneut an sich zu nehmen.

Item die man erhält, wenn die eigene Tasche werden ebenso automatisch fallen gelassen und sind somit nicht verloren.


Mit Verstecken/fallen gelassenen Items interagieren

Nun wissen wir also, wo Verstecke sich befinden. Wie kann man also nun hinein schauen? Das ist im Grunde recht simpel.

Zunächst muss man sich mit der Hilfe der Karte an die entsprechende Stelle bewegen, an der das Versteck eingetragen wurde.

Dort angelangt, wird man in der TRP3 Button-Leiste einen Button mit dem Symbol einer Schatzkarte finden. Dahinter verbergen sich die Interaktionen die das Dropsystem bietet. Einmal darauf geklickt, kann man nun schlicht nach Spielerverstecken hier suchen.

Wie dem Tooltipp im Bild zu entnehmen ist, muss man während die lokale Suche läuft still halten. Wurde sie mit Erfolg abgeschlossen, bekommt man in der Regel einen oder mehrere Verstecke angeboten, in die man hinein sehen kann.

Einmal geöffnet, funktioniert das Versteck wie ein ganz normaler Container bzw. Tasche, aus der man Items entnehmen kann. Und wenn man der Besitzer des Versteckes ist, neue hinein legen kann.

Eigene Verstecke, nach diesen muss üblicherweise nicht gescannt werden, sondern, sofern man sich in einem Radius von 15 Metern um sie herum befindet, werden direkt angezeigt. Wenn welche vorhanden sind, findet man sie unter „Deine Verstecke innerhalb von 15 Metern“.

Genauso findet man auch fallen gelassene Items.


Wie erzeuge ich Verstecke/lasse ich Items fallen?

Stash erzeugen:

Abschließend, bleibt nur noch die Frage, wie ich nun eigentlich selbst ein Versteck erzeuge. Auch dies ist recht simpel. Öffnet man das Menü des Dropsystem, findet man dort den Punkt „Versteck hier erstellen“. Drückt man da drauf, öffnet sich ein kleines Bearbeitungsfenster.

Dort kann man dem Versteck einen Namen geben, ein kleines Icon auswählen und falls gewünscht verhindern, dass dieses Versteck durch andere Spieler erscannt werden kann.

Wichtig:
Die Option „Vor Scan verbergen“ schützt nur davor dass dieses Versteck auf der Karte gefunden wird. Ein Spieler der weiß wo es sich befindet, wird es öffnen und einsehen können. Denn man sollte sich immer gewahr sein, dass ein Versteck generell durch alle Personen die es finden einsehbar ist.


Item fallen lassen:

Ein Item fallen zu lassen, ist ebenso recht einfach. Vielen wird die entsprechende Option schon oft aufgefallen sein, wenn sie ein Item zerstört haben. Zieht man ein Item aus einer Tasche heraus, bekommt man ähnlich dem Itemsystem der WoW-Enginge die Frage gestellt, ob man es zerstören möchte. Im Falle von TRP3 jedoch wird man auch gefragt ob man es alternativ hier fallen lassen möchte.

Macht man dies, so kann man wie oben beschrieben die fallen gelassenen Items später erneut aufspüren und aufsammeln.

Wie schon einmal angedeutet, werden alle Items die man erhält während die eigene Tasche oder Taschen voll sind automatisch fallen gelassen. Sollte man daher ein Item vermissen, lohnt es sich wohl gar einmal auf der Karte danach zu suchen.

▲ Zurück nach oben
2 Likes
▲ Zurück nach oben
Das Inventarsystem

Mit der Möglichkeit eigene Items in Total RP 3 Extended zu kreieren war auch die Notwendigkeit gegeben ein eigenes Inventarsystem für diese Items zu implementieren, da die WoW-Engine natürlich nicht die Verwendung des Inventarsystems des Client gestattet.

In vieler Hinsicht ist dieses Inventarsystem aber von der Handhabung her identisch zu dem der WoW-Engine. Damit ist es recht intuitiv für den geübten WoW-Spieler in der Handhabung. Dennoch gibt es den Möglichkeiten der Addon-Schnittstellen der WoW-Engine geschuldete Eigenheiten unter Total RP 3 Extended.

Dieser Guide gehört damit zu den kürzeren dieser Sammlung, dennoch möchte ich gerne auf die Möglichkeiten hier genauer eingehen.


Taschen/Container

Das Grundgerüst eines jeden Inventares ist unter TRP3E die sogenannte "Default bag". Jeder Charakter hat sie von beginn an.

Das Icon in der Total RP 3 Leiste auf dem ein mit einem silbernen Schloss geschmückter blauer Beutel prangt gestattet den Schnellzugriff auf jene Tasche.

Mit 4*5 (20) Itemslots hat sie den größtmöglichen Stauraum den eine Tasche, oder auch allgemeiner gesagt Container-Item in TRP3E haben kann.

Bei entsprechener Nutzung der Möglichkeiten von TRP3E passiert es jedoch rasch dass dieser Stauraum sein Ende findet. Wie im Guide zum Dropsystem beschrieben landen überschüssige Items dann zwar auf dem Boden und können später erneut aufgenommen werden. Perspektivisch möchte man aber wohl eher dafür sorgen, dass man mehr Stauraum besitzt und dieser Fall gar nicht erst eintritt.

Um den Stauraum zu erweitern bietet es sich schlicht an ein neues Container-Item zu erstellen.

Dazu klickt man schlicht in der Datenbank auf "Gegenstand erstellen" und anschließen auf "Behälter Gegenstand". Anschließend bekommt man eine Schablone für einen Containergegestand, die man nach belieben gestalten kann.

Wichtig ist hiebei dass die Chechbox „Behälter“ angeharkt ist. Ist dies getan kann man gegebenenfalls unter dem Reiter „Behälter“ noch die Taschengröße anpassen, falls gewünscht.

Diesen neuen Container rasch erzeugt und man findet ihn in der Default bag wieder. Mit einem einfachen Doppelklick kann man diesen nun öffnen und überschüssige Items darin verstauen.

Einen Import-Code für das in diesem Guide gezeigte Beispiel findet ihr am Ende dieses Guides.

Wer nicht möchte, dass diese Kiste in der Tasche liegt, also ein Container in einem Container ist, der kann mit dieser auch den eigenen Charakter im Inventar ausrüsten. Aber Moment. Inventar? Ausrüsten? Genau. Zu den Möglichen in TRP3E zählt auch ein Charakterinventar, welches erlaubt tragbare Items an den eigenen Charakter auszurüsten.


Charakterinventar und anlegbare Gegenstände

Wer den Tooltip des Schnellzugriffs auf das Hauptinventar bereits gelesen hatte, dem ist sicherlich aufgefallen, dass er mit einem Rechtsklick das „Inventar“ öffnet.

Macht man dies, so öffnet sich das Charakter-Inventar, in welchem man Gegenstände die als tragbar definiert sind am Charakter ausrüsten. Behälter gelten generell als tragbar aber auch Gegenstände, die ein Häkchen bei der Checkbox „Anlegbar“ im Itemeditor gesetzt haben.

Solche Gegenstände können schlicht in einen der Itemslots des Inventar gezogen werden und gelten somit am Charakter ausgerüstet.

Ein Klick auf den weißen Kreis neben einem jeden angelegten Item gestattet es darüber hinaus am Charaktermodell des eigenen Charakters einen "Zeiger" zu setzen, der einen Betrachter erlaubt zu ersehen wo am Körper der betreffende Gegenstand gerade getragen wird.

Im Bild auch gut zu sehen der Schnellzugriffsplatz der initial mit der Default bag belegt ist. Jeder Behälter, der an diesen Ort gezogen wird kann anstelle der Default bag über das Icon mit dem blauen Beutel geöffnet werden, ohne zuvor das Inventar zu öffnen.

Aber Moment. Ein Betrachter? Genau. Während der Blick in die Tasche nur dem jeweiligen Eigentümer gestattet ist, können andere Spieler jedoch ersehen welche Gegenstände ein Charakter an sich trägt. Dazu gibt es der entsprechenden Betrachtungsfunktion in der WoW-Engine einen entsprechenden Pendant im TRP3E Interface.

So man einen anderen Spieler mit genutzten TRP3E Addon anvisiert hat, kann man sein Inventar und somit seine ausgerüsteten Items einsehen indem man auf das Piratenhut-Icon in der Aktionsleiste des anvisierten Charakters klickt. Darauf öffnet sich die bekannte Inventaransicht.


An dieser Stelle danke ich für die Aufmerksamkeit und hoffe, dass dieser Guide dem Einen oder Anderen von Nutzen sein konnte. Abschließen noch der TRP3 Import-Code für das in diesem Guide vorgestellte Container-Item. Die Materialkiste.

TRP3 Extendend Beispiel-Item-Code (klicken zum erweitern ...

!Tf1YYPomm0VOlyhWme2LxlyUGHgLekBeqb3PEAimtIHPTl4RP)j9hRsoDx7yBjRxhRJmkXculPTiqH6aeekzOCQsOetUwU9rupIYaMRjPdH4i2kndHmBJ5(()B7CK6S1DFFU5ztRP5JZhCMw7H6biSgiKLHHeajiyBUT7ST74UJTukcjcliGInV81N1ujiKScFcbDecl)bJxz8rak4apeXTkSoIn24LvKlLqqLMJXKZmMjSDk)YbYjiuc(AZyzPMLqmltk4kYNJGNem7GeMDxAk7m8f6vzsZl4KXDWw31pfwM6dNIGmCOqnugEFVC6m1Ozbt8WdznMoxRPR7FPwtu9Ple7Q8Z3fRyWOtfv9Grdic5Q4UwoMaMcQPtYVGwqBY)FdTZp6OwA1Cp)YrqrkIAQ3g7PfqQ0sutySCdROs6mhV2ADVVWCZuZ)Z8OQOp9(zaLuXw6VJjTECF)oLUJF)

▲ Zurück nach oben
1 Like

Grundlagen zum Questsystem

0 Bevor es losgeht…

1 Questen mit Extended

1.1 Kampagnen und Quests

Quests in TRP3:Extended sind Aufgaben, die ein Spieler erledigen kann, entsprechen also im Wesentlichen dem, was man sonst üblicherweise darunter versteht, nur dass Extended-Quests von Spielern erstellt werden und nicht vom Spielentwickler.
Kampagnen sind Sammlungen von Quests. Diese können in einem inhaltlich-logischen Zusammenhang stehen, müssen aber nicht. Das ist ganz dem Ersteller überlassen.

1.2 Kampagnen beziehen

Einzelne Quests kann man nicht teilen, sie sind immer in Kampagnen eingebettet. Kampagnen erhältst du genau wie Gegenstände auch.

  • Von einem Spieler über das Handelsfenster oder als Link im Chat
  • Über einen Import-Code
  • Indem du sie selbst erstellst
  • Einige Kampagnen sind auch öffentlich auf Wago (https://wago.io/totalrp) verfügbar. Diese Website dürfte Benutzern des Addons WeakAuras bekannt sein.

1.3 Das Questlog

https://abload.de/img/toolbarkvko9.png
Sobald du eine Kampagne erfolgreich heruntergeladen hast, erscheint sie im Questlog. Dieses ist über die TRP3-Toolbar oder über das Hauptmenü unter „Charakter“ erreichbar.
https://abload.de/img/questlog37j0d.png
Im Questlog sind alle verfügbaren Kampagnen aufgelistet, davon kann jeweils eine aktiv sein. Du kannst alle Kampagnen durchspielen, auch mehrmals, aber immer nur eine gleichzeitig. Es ist ebenfalls möglich eine Kampagne zu pausieren um sie später fortzusetzen oder zwischendurch eine andere zu bestreiten.

1.4 Eine Kampagne starten

Klicke im Questlog auf den Startknopf (:arrow_forward:) um eine Kampagne zu aktivieren.
Im Questlog erscheint nun eine Übersicht über den Kampagnenverlauf.
https://abload.de/img/questlog_detailh4j2g.png
Außerdem bekommt die Questverfolgung einige neue Einträge. Du kannst deine Extended-Quests also ähnlich wie „normale“ Quests beobachten.
https://abload.de/img/tracker47kzf.png

1.5 Ja, aber was muss ich jetzt machen?

Spieler gestalten ihre Extended-Quests sehr unterschiedlich. Von kinderleicht bis diabolisch schwer ist dabei alles denkbar. Grundsätzlich sollte die Questbeschreibung Klarheit darüber schaffen, was in der Quest zu tun ist. Wie klar die Beschreibung ist und wie schwierig die Aufgabe, liegt aber letztendlich beim Ersteller.

Apropos fiese Quests erstellen:

2 Quests erstellen - Hinter den Kulissen

Hier folgt zunächst nur eine grobe Übersicht. Tutorials für eine konkrete Quest mögen in anderen Beiträgen folgen.

2.1 Was ist eine Quest eigentlich genau?

Wie oben erwähnt ist eine Quest eine Aufgabe für den Spieler. Wichtig ist aber, dass das Spiel in der Lage sein muss, zu überprüfen, ob und wann die Aufgabe erfüllt wurde. Eine Kampagne besteht also aus maschinell überprüfbaren Aufgaben. Wenn wir also von „Quests erstellen“ reden, wird es vordergründig um die passende Platzierung dieser Überprüfungen gehen. Questbeschreibungen, Hinweise, usw. sind zwar notwending für den Spieler, aber nicht für das Funktionieren einer Kampagne.

2.2 Arbeitsabläufe

Wie bei Extendend-Items auch, sorgen Arbeitsabläufe dafür, dass in der Kampagne etwas passiert, zum Beispiel:

  • ein Text erscheint auf dem Bildschirm
  • ein Geräusch erklingt
  • eine neue Quest wird entdeckt
  • eine Quest wird abgeschlossen

Dies ist nur eine kleine Auswahl der sog. Effekte, die das Addon zur Verfügung stellt.

2.3 Ereignisse

Wichtig zu wissen: Kein Arbeitsablauf startet von allein. Damit die Effekte eines Arbeitsablaufs auch wirksam werden, benötigst du ein auslösendes Ereignis („Trigger“).
Moment mal, bei einem Item wird der Arbeitsablauf doch auch „einfach so“ ausgeführt.
Auch hier hat Extended implizit eine Ereignisverknüpfung angelegt, man sieht sie nur nicht (außerhalb des Experten-Modus).
Da das Ereignis „Bei Benutzung“ bei Items das mit Abstand wichtigste ist, haben die Entwickler hier eine Abkürzung eingebaut. Bei Kampagnen sieht das anders aus. Hier gibt es viele mögliche Ereignisse.

2.4 Ereignistypen

  • Objektereignisse hängen mit dem Objekt zusammen. Ein Item kann man benutzen. Eine Quest kann man starten oder abschließen. Ein Dokument kann man öffnen, usw.
  • Mit Aktionen sind die vier Spieleraktionen gemeint, die während einer Kampagne gegenüber NSCs ausgeführt werden können: reden, zuhören, betrachten und intragieren.
    https://abload.de/img/actionsrgk6f.png
  • Außerdem gibt es Spielereignisse. Dies sind interne Mitteilungen des Spiels an das Benutzerinterface. Zum Beispiel kann man eine Mitteilung erhalten, sobald der Spieler Schaden bekommt. Es gibt über 100 solcher „Events“.

2.5 Und wie erstellt man jetzt eine Kampagne?

Eine Kampagne oder eine Quest zu erstellen bedeutet also, das passende Ereignis mit dem richtigen Arbeitsablauf zu verknüpfen:
Sobald Ereignis X eintritt, führe Arbeitsablauf Y aus.
Eine Quest enthält sinnvollerweise wenigstens eine, typischerweise aber ca. 3-10 solcher Verknüpfungen.
Das alles mag erstmal abschreckend klingen, ist aber nach kurzer Eingewöhnung recht intuitiv.

3 Und nu?

Jetzt bereitest du deine Kampagne vor.

1 Like

Der Weg zur ersten Kampagne

0 Bevor es losgeht…

1 Der Plahahahahaaaaaan :smiling_imp:

Natürlich steht es dir frei, einfach draufloszulegen, die Erfahrung zeigt aber, dass zumindest eine grobe Planung sinnvoll sein kann, denn eine Kampagne ohne Plan ist wie ein Film ohne Drehbuch.

1.1 Inhalt der Kampagne - das WAS

  • Halte fest, was passieren soll. Du kannst auch eine Story im Fließtext schreiben.
  • Lege fest, welche Teile davon der Spieler übernehmen soll. Wo soll der Spieler aktiv werden, was wird ihm „nur“ erzählt?
  • Gliedere deinen geplanten Kampagnenverlauf in Schritte und ggf. Teilschritte.
  • Halte deinen Plan schriftlich fest.

Dieser Plan ist nur für dich bestimmt. Niemand außer dir muss ihn verstehen, er kann deiner privaten Rechtschreibung folgen und darf das Layout einer Website aus den 90ern besitzen.

1.2 Machbarkeit & Umsetzung - das WIE

Überlege, wie du deine Quest(s) mit den Mitteln von Extended umsetzen kannst. Grundsätzlich stehen dir folgende Mittel zur Verfügung:

  • Anzeigen von Text auf dem Bildschirm
  • Abspielen von Geräuschen oder Musik
  • Anzeigen eines Dialogs zwischen zwei Akteuren („Zwischensequenz“ / „Cutscene“)
    Solche Dialoge können auch Entscheidungen beinhalten.
  • Anzeigen eines Dokuments mit Text und/oder Bildern, die der Spielclient bereitstellt.
  • Dem Spieler Extended-Items geben oder ihm diese wegnehmen
  • Texteingabe

1.3 Was Extended nicht kann

Bedenke, dass Extended bei all seinem Funktionsumfang ein Interface-Addon bleibt. Als solches kann es

  • nicht in die 3D-Spielwelt eingreifen, Monster oder Objekte spawnen
  • dem Spieler keine „echten“ Items, Gold oder Erfahrung geben
  • dem Spieler keine Buffs oder Debuffs geben oder auf sonstige Weise in das Kampfsystem eingreifen

Was sehr wohl geht, ist das Verfolgen von Geschehnissen im Spiel. Das bedeutet: Du kannst bspw. dem Spieler zwar kein Gold geben, du kannst ihn aber innerhalb einer Quest beauftragen eine bestimmte Goldmenge zu sammeln, und das auch überprüfen.

1.4 Ein Beispiel-Plan

2 Vom Plan zur Kampagne

Gut geplant ist halb verd… ne Moment… Egal.
Wenn du weißt, was du darstellen willst und eine grobe Ahnung hast wie, ist die restliche Umsetzung (nach etwas Übung) reine Formsache.

2.1 Schritt für Schritt, Quest für Quest

Nimm dir jeden Questschritt einzeln vor und identifiziere die auslösenden Ereignisse (Trigger). Wenn es dir hilft, schreibe sie einzeln auf.
Faustregel:

  • Jede Quest sollte mindestens zwei Schritte beinhalten.
  • Jeder Questschritt (bis auf den letzten) sollte wenigstens eine Ereignisverknüpfung mit zugehörigem Arbeitsablauf enthalten.

2.2 Denke an die Spieler

Behalte während des Erstellens die Spieler im Auge, für die du die Kampagne konzipierst. Jenachdem, für wen deine Kampagne gedacht ist, kannst du unterschiedlich viel Wissen voraussetzen. Folgende Maßnahmen machen eine Quest für die Spieler einfacher:

  • ausführliche und konkrete Questbeschreibungen: „Töte 10 Wildschweine in der Nähe vom Trolldorf Sen’jin in Durotar, die Tiere halten sich östlich des Dorfs auf.“
  • klare und elementare Questziele: „Wildschweine getötet: 3/10“
  • klare und verständliche Fehlermeldungen: „Du bist zu weit entfernt.“ (Beim Reden mit NPCs); „Benötigter Gegenstand: Schweinors Schnauze“

Umgekehrt kann man es dem Spieler auch schwerer/kniffliger machen:

  • vage oder abstrakte Questtexte: „Wildschweine sind lecker.“; „In Durotar soll es eine Wildschweinplage geben.“
  • komplexe Questziele: „Gehe jagen.“
  • ungenaue Questziele: „Lies dem Oberschwein die Leviten“
  • Insiderwissen: „Begib dich zum Gildenlager der Rotnasenorks.“
  • lakonische Fehlermeldungen: „Das war wohl nix.“

Das bedeutet: Die Questbeschreibung und andere Texte machen eine Quest einfach oder kompliziert! Die Ereignisse können kompliziert und vertrackt sein, aber die sieht der Spieler nicht.

2.3 Denke an die Spieler (schon wieder)

Spieler wissen normalerweise nicht, wie deine Kampagne funktioniert. Das kann dazu führen, dass sie deine Quests in einer unvorhergesehenen Reihenfolge lösen, oder Kampagnen-Items zur „falschen“ Zeit benutzen.
Prüfe daher, ob deine verwendeten Ereignisse wirklich nur zu beabsichtigten Zeitpunkten eintreten können, insbesondere dann, wenn die zeitliche Reihenfolge wichtig ist.

3 Und jetzt?

Jetzt kannst du deine allererste Kampagne erstellen.

2 Likes
▲ Zurück nach oben
Die Datenbank und das Tutorial

Die „Datenbank der Extended-Objekte“ ist der Dreh- und Angelpunkt im Umgang mit Items, Quests, wie Kampangen in Total RP 3 Extended. Viele Funktionen der Datenbank werden bereits durch das eingebaute Tutorial von Total RP 3 Extended abgedeckt, daher möchte dieser Guide lediglich ein kurzer Abriss darüber sein, wie man zu jenem findet und in der Datenbank im allgemeinen zurecht findet.


Datenbank der Extended-Objekte

Der Button, der die Datenbank öffnet, mag zunächst recht kryptisch gelabelt wirken. „Datenbank der Extended-Objekte“. Die Tatsache, dass als Icon eine Art Uhr oder Zeitzünder gewählt wurde, ist nicht unbedingt zuträglich darin zu vermitteln was genau man dahinter zu erwarten hat.

Wer jedoch den Schritt wagt darauf zu klicken, findet das zentralste Element von Total RP 3 Extended. Die Datenbankansicht. Aber was genau hat es mit dieser auf sich?

Die Datenbank verwaltet alle Items und Kampagnen die entweder selbst erstellt worden, oder aber durch andere Charaktere geteilt worden sind.


Das Tutorial

Wenn man das erste mal die Datenbank öffnet, sollte das Tutorial von TRP3E automatisch starten. Wenn nicht, mag man es auch jeder Zeit mit dem runden Info-Button in der unteren Mitte (:information_source:) erneut starten können.

Jeder, der zuvor noch nie mit TRP3E zu tun hatte, wird nahe gelegt die Schritte des Tutorials durch zu klicken. Die sie öffnende Navigationsbox im oberen Teil gestattet es dabei durch die einzelnen Schritte zu springen.

Behandelt werden die folgenden Themen:

  • Datenbank
  • Datenbank-Typen
  • Suchfilter
  • Objekt-Zeile
  • Wurzel- und innere Objekte
  • Wurzelobjekte
  • Gegenstände erstellen

Man erhält einen Abriss darüber, wo in der Datenbank was wie zu finden und angeordnet ist.

Ebenso wird in den letzten Punkten bereits gezeigt, wie man die Erstellung eigener Items und Kampagnen anstößt.

Gegenstand erstellen:

Kampagne erstellen:

Was aber nicht erklärt wird unbedingt, ist der Import von Items. Im Falle der Funktion „Objekte schnell importieren“ gibt es bereits hier einen Guide.

Die Funktion „Komplettimport von Objekten“ ist der erstgenannten nicht sonderlich unähnlich, nur dass anstelle eines Codes eine totalRP3_Extended_Imp_Export.lua Datei genutzt wird. Ein Komplettexport funktioniert ähnlich dem Schnellexport wie im vorher genannten Guide beschrieben, nur dass man hier einen Komplettexport wählt. Für den Import muss die erzeugte Datei dann beim Zielrechner an die entsprechende Stelle gelegt werden.

Aber insbesondere der Blick in die Lasche „Unterstützer Datenbank“ lohnt sich dabei sehr, finden sich darin Items von Projektunterstützern, die bei jedem Nutzer vorhanden sind und nicht gelöscht werden können. Sie bieten bereits einige solide Beispiele wie bestimmte Item in TRP3E designt sein können und erlaubt es sogleich auch direkt einige Items ausprobieren zu können.

Die Frage an dieser Stelle ist aber wohl nur noch, wie nutzt man diese Items nun eigentlich?


Gegenstände der Tasche hinzufügen

Um ein Item tatsächlich nutzen oder weitergeben zu können, muss man es in der eigenen Tasche vorliegen haben. Was nicht der Fall ist, solange sie nur in der Datenbank gelistet stehen.

Dabei kann man sich die Datenbank als einen gemeinsamen Pool vorstellen, auf denen alle Charaktere eines Clients und Accounts gemeinsam zurückgreifen können. Daraus ergibt sich dass ein mit Charakter A erstelltes oder erhaltenes Item auch direkt einem Charakter B zur Verfügung steht.

Doch damit Charakter A als auch B es besitzen und somit nutzen können, müssen sie ein Exemplar davon in einer ihrer Taschen liegen haben.

Dies ist schnell getan. Man sucht ein Items mit den Bordmitteln, die man im Datenbanktutorial gelernt hat und klickt dann mit einem Rechtsklick auf den gewünschten Eintrag.

Der Menüpunkt „Zum Hauptinventar hinzufügen“ ist der den wir dazu suchen. Er legt eine Kopie oder mehrere Kopien des gewählten Items in die Default bag oder jede andere im Schnellzugriff sich befindende Tasche des Inventarsystems. Mehr zu dem Inventarsystem von TRP3E und wie man also dieses Item dann wiederfindet und nutzt, findet man hier.


▲ Zurück nach oben
1 Like

Die obligatorische „Hallo-Azeroth“-Kampagne

0 Bevor es losgeht…

  • Du hast einen Kampagnen-Plan.
  • Du hast dich schon einmal in der Datenbank umgesehen.
  • Einige Stellen habe ich mit :asterisk:, :eight_spoked_asterisk: oder :scream: markiert. Diese werden weiter unten erläutert.

1 Hallo Welt Azeroth

Ziel diese Beitrags soll es sein eine einfache Begrüßungskampagne zu erstellen. Im ganz klassischen Sinn gibt ein „Hallo Welt“ lediglich einen Text auf dem Bildschirm aus. Ganz so einfach soll es dann doch nicht werden. Wir möchten eine Quest erstellen, in der der Spieler „Hallo Azeroth“ sagt, woraufhin Azeroth dann zurückgrüßt.

2 Der Plan

Kampagne „Hallo Azeroth“
Eine Quest:

  • Spieler sagt (schreibt) „Hallo Azeroth!“
  • –> Zwischensequenz: Azeroth sagt: „Hallo [Spielername]!“
  • –> Quest erfolgreich

Die Quest soll auch die üblichen Elemente Startmelodie, Endmelodie und Questverfolgung enthalten.

3 Identifizierung der Ereignisse

Ort Ereignis/Trigger Effekte
Quest Quest startet Spiele Quest-Start-Sound ab
Zeige das Questziel (Hallo sagen) an
Schritt 1 Spieler sagt "Hallo Azeroth!" Starte Zwischensequenz
Zwischensequenz Am Ende des Dialogs Erfülle das Questziel
Wechsle zu Schritt 2 (Endschritt)
Schritt 2 Bei Erreichen von Schritt 2 Spiele Quest-erfüllt-Sound ab

Du wirst es also mit insgesamt vier Ereigissen und dementsprechend vier Arbeitsabläufen zu tun haben.

4 Eingabe der Kampagnendaten

4.1 Kampagne und Quest

  1. Öffne die Datenbank.
  2. Klicke unten in den Aktionen auf „Erstelle Kampagne“ und dann „Leere Kampagne“.
    Die Kampagnenübersicht öffnet sich.
  3. Gib der Kampagne einen Namen. Z.B. Hallo Azeroth
  4. Gib der Kampagne eine Zusammenfassung. Z.B. Meine allererste Kampagne
  5. Klicke auf das Pokal-Symbol um der Kampagne ein passendes Icon zu verleihen. Ich habe mir achievement_worldevent_childrensweek ausgesucht. Du kannst im dortigen Suchfeld (englischen) Text eingeben um die sehr große Auswahl an Icons einzuschränken.
  6. Stelle unten rechts unter „Wurzelobjekt“ die Sprache auf deutsch um.

Wechsle nun zur zweiten Registerkarte „Kanal“. Dort findest du bereits eine Quest namens „Neue Quest“, die auf „Automatisch aufdecken“ eingestellt ist. (grüner Text). Das bedeutet, dass diese Quest beim Start der Kampagne automatisch verfügbar gemacht wird, wir können uns den Effekt „Quest aufdecken“ also sparen.
Als erste Amtshandlung geben wir der Quest einen anderen Bezeichner (Id):

  1. Klicke mit gedrückter STRG-Taste auf die Quest. Gib dort eine passende Id ein, z.B. q01_say_hello :eight_spoked_asterisk:
  2. Klicke nun auf die Quest um sie anzupassen. Die Questübersicht öffnet sich.
  3. Gib der Quest einen Namen, z.B. Begrüße Azeroth, und eine Zusammenfassung, z.B. Sage Hallo zu deinem Lieblingsplaneten
  4. Auch hier kannst du dir ein Icon aussuchen, z.B. spell_nature_crystalball
  5. Klicke auf der rechten Seite auf „Questziel hinzufügen“. Ein Dialogfenster öffnet sich.
    5.1. Gib dem Ziel die Id o1_say_hello :eight_spoked_asterisk:.
    5.2. Gib als Questzieltext Sage "Hallo Azeroth!" ein.
    5.3. Wähle außerdem „Automatisch aufdecken“ aus.
    5.4. Klicke nun auf „Speichern“ im Questziel-Dialog.

Quest und Kampagne sind jetzt erstellt, aber noch leer.

:floppy_disk: Wir drücken einmal unten mittig auf „Speichern“.

4.2 Ereignis: Quest-Start

  1. Wechsle zur vierten Registerkarte „Arbeitsabläufe“
  2. Dort klickst du „Arbeitsablauf erstellen“. Gib ihm die Id onStart :eight_spoked_asterisk:.
  3. Auf der rechten Seite klickst du nun auf „Element in Arbeitsablauf einfügen“. Wähle dann Effekt > Geräusche und Musik > Klang-Id abspielen.
  4. Im Dialogfeld gibst du die Sound-Id 618 :asterisk: ein. Mit „Abspielen“ kannst du dir den Klang probeweise anhören. Quittiere mit Bestätigen.

Der erste Arbeitsablauf ist nun fertig. In der obigen Tabelle war eigentlich noch ein zweiter Effekt (Questziel aufdecken) verzeichnet, diesen können wir uns aber dank der Option „Automatisch aufdecken“ im Questziel sparen. Solltest du einmal ein Questziel benötigen, das nicht sofort beim Starten der Quest sichtbar ist, wirst du es innerhalb eines Arbeitsablaufs aufdecken müssen. Die Option „Automatisch aufdecken“ muss dann deaktiviert sein.

:floppy_disk: Wir speichern einmal.

Was fehlt jetzt noch? Richtig, das Ereignis:

  1. Wechsle zur Registerkarte „Ereignisverknüpfungen“
  2. Wähle links unter Objektereignisverknüpfungen > Bei Queststart den eben erstellten Arbeitsablauf onStart aus.

:floppy_disk: Wir genehmigen uns eine Speicherung.

4.3 Zwei Questschritte

Quests sind in Schritte unterteilt. Dabei befindet sich eine aufgedeckte Quest immer in einem bestimmten Schritt. Der aktuelle Questschritt ist also ein Zustand der Quest. Man kann ihn auch abfragen.
Questschritte können außerdem zwei Markierungen haben.

  • Die Markierung Anfangsschritt sorgt dafür, dass die Quest automatisch mit diesem Schritt beginnt, sobald sie aufgedeckt wird.
  • Die Markierung Endschritt sorgt dafür, dass die Quest als abgeschlossen gilt, sobald sie diesen Schritt erreicht. Eine Quest kann auch mehrere Endschritte haben. So kann man Entscheidungsquests mit mehreren Ergebnissen modellieren.

Unsere Quest wird zwei Schritte haben: Einen Hauptschritt, der hier auch gleichzeitig Anfangsschritt ist, in dem alles Wesentliche passiert, und einen Endschritt, der das erfolgreiche Absolvieren der Quest markiert.
Wir erstellen zunächst beide Questschritte und kümmern uns dann um den Rest.

  1. In der zweiten Registerkarte „Questschritte“ siehst du bereits einen step_1_first. Er ist auch schon als Anfangsschritt markiert. Das erkennst du am grünen Text „Automatisch aufdecken“.
  2. Natürlich passt mir der Bezeichner nicht. Gib dem Questschritt mit STRG+Klick die neue Id s1_say_hello :eight_spoked_asterisk:.
  3. Füge mit der Schaltfläche „Questschritt hinzufügen“ den Endschritt hinzu. Nenne ihn s2_final :eight_spoked_asterisk:.
  4. Klicke einmal auf den zweiten Questschritt. Wir lassen den Questlogeintrag vorerst links liegen und markieren den Schritt als Endschritt.
  5. Ganz oben in der Navigationsleiste wechselst du zur Quest zurück.
    Beim zweiten Schritt siehst du nun die grüne Markierung „Endschritt“

:floppy_disk: Was fängt mit S an und hört mit peichern auf?

4.4 Die Zwischensequenz

Da die Zwischensequenz, in der Azeroth den Spieler grüßt, während des ersten Questschritts angezeigt werden soll, ist es sinnvoll, diese auch als inneres Objekt dieses Schritts anzulegen.

  1. Klicke auf „Questschritte“, dann auf s1_say_hello. Dort klickst du auf „Innere Objekte“.
  2. Klicke auf „Neues Objekt erstellen“, dann „Zwischensequenz“. dialog_hello :eight_spoked_asterisk: ist eine gute Id.
  3. Die Zwischensequenz erscheint in der Objektliste. Klicke einmal darauf. Du landest in der Dialogübersicht.

Links siehst du die Liste der Dialogschritte (momentan einer) und rechts die Einstellungen dazu. Wenn du auf „Vorschau“ klickst, siehst du, wie der Dialog aussehen wird. Momentan noch ziemlich leer. Zeit, das zu ändern:

  1. Gib rechts oben bei „Text zu diesem Schritt“ Hallo, ${trp:player:first}! ein. Das etwas kryptische ${trp:player:first} :asterisk: ist ein Platzhalter für den TRP3-Vornamen des Spielers, ein sogenanntes Variable Tag.
  2. Ein Stück weiter unten wählst du „Endpunkt“ aus. Wir benötigen nur einen einzigen Dialogschritt, also ist der erste zugleich auch der letzte.
  3. Aktiviere dann „Dialogrichtung ändern“. Eine weitere Auswahl erscheint, in der du „Rechts“ einstellst.
  4. Direkt darunter: „Name des Redenden ändern“. Azeroth begrüßt uns, also schreiben wir hier Azeroth hinein.
    Und ja, Azeroth kann sprechen :crazy_face:.
  5. Unter Dekoration > Hintergrundbild ändern kannst du ein anderes Hintergrundbild einstellen. Ich habe mir Interface\worldmap\cosmic\cosmic-azeroth-highlight :asterisk: ausgesucht.
  6. Unter „Modelle“ klickst du „Linkes Modell ändern“ und „Rechtes Modell ändern“ an. Beim linken Modell ist player voreingestellt, das kann so bleiben. player steht für deine eigene Spielfigur. (Um es ganz genau zu nehmen ist player die Spielfigur der Person, die die Kampagne durchspielt.)
    Beim rechten Modell gibst du DID44652 :asterisk: ein, das ist die Id eines „Charaktermodells“ von Azeroth.

Wenn du nun auf „Vorschau“ klickst, siehst du den Dialog in seiner geplanten Form.

:floppy_disk: Speichern, und so.

4.5 Ereignis bei Beenden des Dialogs

Wenn der Dialog beendet wird, soll die Quest als erfüllt gelten.

  1. Wechsle zur Registerkarte „Arbeitsabläufe“ und lege einen neuen Arbeitsablauf onFinish :eight_spoked_asterisk: an.
  2. Füge auf der rechten Seite das Element Effekt > Kampagne und Quest > Questziel erfüllen ein. Ein Dialog erscheint.
    Suche dort nach deiner Quest q01_say_hello (Durchsuchen).
    Bei „Ziel ID“ gibst du das Questziel, also o1_say_hello ein.
  3. Als zweiten Effekt fügst du Effekt > Kampagne und Quest > Ändere Questschritt ein. Suche hier ebenfalls mit „Durchsuchen“ nach dem Endschritt s2_final.

:floppy_disk: Speichern nicht vergessen.

Wechsle nun zu „Ereignisverknüpfungen“ und verknüpfe dort das Ereignis „Bei Beenden der Sequenz“ mit dem eben erstellten Arbeitsablauf onFinish.

:floppy_disk: Schon gespeichert?

4.6 Ereignis zur Anzeige des Dialogs

Das Beenden des Dialogs ist behandelt, aber es fehlt noch das wichtige Starten. Dazu begibst du dich in der Navigation eine Ebene nach oben zum Questschritt s1_say_hello.
Beginnen wir mit dem Arbeitsablauf:

  1. Wechsle innerhalb des Questschritts zu „Arbeitsabläufe“ und lege dort den Arbeitsablauf onSay :eight_spoked_asterisk: an.
  2. Diesen versiehst du mit einem Element Effekt > Kampagne und Quest > Starte Zwischensequenz. Auch dort kannst du wieder die „Durchsuchen“-Funktion verwenden um deinen dialog_hello zu finden.

:floppy_disk: Gib mir ein S! Gib mir ein P! …

Fehlt noch das auslösende Ereignis. Lesen wir das ganze mal Wort für Wort: Sobald der SpielerHallo Azeroth!sagt, startet die Zwischensequenz.

  • sagt (bzw. schreibt): Es handelt sich um eine Chatnachricht.
  • der Spieler: Nicht irgendjemand, sondern der Spieler soll eine Chatnachricht absetzen.
  • Hallo Azeroth!: Der Spieler soll auch nicht irgendwas schreiben, sondern einen ganz bestimmten Text.

Wenn eine Chatnachricht eintrifft, bekommt das Interface eine Information, d.h. ein Spielereignis tritt ein. Für unsere Zwecke gibt es das Ereignis CHAT_MSG_SAY :asterisk:. Dieses tritt immer ein, wenn irgendjemand irgendwas im /sagen-Chat schreibt. Wenn dein Chat z.B. folgendermaßen aussieht, …

… dann tritt das Ereignis CHAT_MSG_SAY vier Mal ein, interessant ist aber nur die zweite Zeile.

Du benötigst also ein Spielereignis, verbunden mit einem Filter, damit der Dialog nur unter einer bestimmten Bedingung angezeigt wird.

  1. Wechsle zu „Ereignisverknüpfungen“ und schau dir die rechte Seite „Spielereignisverknüpfungen“ an.
  2. Dort klickst du auf „Ereignisverknüpfung hinzufügen“. Ein Dialog erscheint.
  3. Zunächst stellst du im Dropdown-Menü (dort wo „kein Link“ steht) den Arbeitsablauf onSay ein.
  4. Um die passende Ereignis-Id zu finden kannst du den Ereigniskatalog öffnen. Uns interessiert das Ereignis CHAT_MSG_SAY in der Kategorie ChatInfo. Halte deine Maus über den Eintrag CHAT_MSG_SAY im Ereigniskatalog.
  5. Im Tooltip wird aufgelistet, welche Informationen mitgeliefert werden, wenn das Ereignis eintritt. Die ersten beiden sind in diesem Fall relevant: (1) text ist das Gesagte und (2) playerName ist der Sprechende.
  6. Wähle also CHAT_MSG_SAY aus und klicke dann im Dialog auf „Speichern“.

Jetzt erscheint das Ereignis in der rechten Liste, mit dem Hinweis, dass das Ereignis keine Bedingung hat. Das können wir nicht auf uns sitzen lassen.

  1. Klicke das Ereignis mit gedrückter STRG-Taste an. Der Bedingungseditor öffnet sich.
  2. Klicke auf die erste (und einzige) Zeile, der Testeditor erscheint.
  3. Wähle im linken Dropdown Expert > Ereignisparameter als Text mit dem Argument-Index 1 aus. :scream:
    Das mittlere Dropdown bleibt wie es ist.
    Rechts klickst du auf „Einstellen“ und gibst dann Hallo Azeroth! ein.
    Das ist unsere erste Bedingung: Das Gesagte ist gleich Hallo Azeroth!.
  4. Klicke „Bestätigen“ und dann „Test hinzufügen“. Eine UND-Zeile erscheint sowie eine zweite Bedingung. Klicke auf die zweite Bedingung.
  5. Wieder wählst du links Expert > Ereignisparameter als Text aus, diesmal aber mit dem Argument-Index 2. :scream:
    Rechts wählst du Ausgewerteter Wert > Wert einer Einheit > Einheiten-Id mit dem Typ Spieler aus.
    Die zweite Bedingung ist demnach: Die Einheit „Sprecher“ ist gleich der Einheit „Spieler“.

:floppy_disk: Jetzt noch zwei mal „Bestätigen“ und dann das allseits beliebte „Speichern“.

4.7 Letzte Schritte

Die Übersicht für den ersten Questschritt s1_say_hello ist noch ziemlich leer. Hier solltest du noch eine Beschreibung einfügen.

  • Im Questlogeintrag sollte die Beschreibung des Questschritts stehen, also die Aufgabenstellung an den Spieler, das was passieren soll. Ich fasse mich hier kurz und schreibe: Begrüße Azeroth mit den Worten „Hallo Azeroth!“ Benutze dazu den Chat. (/sagen)
  • Der Questverlauf wird sichtbar, sobald der Questschritt wechselt, hier kannst du hineinschreiben was passiert ist:
    Du hast Azeroth begrüßt und es hat freundlich zurückgegrüßt.

Selbiges wiederholen wir im zweiten Questschritt, nur dass wir uns hier diesmal den Questverlauf sparen können, denn dieser Schritt ist der letzte, aus ihm führt kein Weg mehr hinaus.
Questlogeintrag: Azeroth kennt sogar deinen Namen. Wahnsinn!

Fehlt noch etwas? Ach ja, das Quest-erfüllt-Geräusch.

  1. Lege im zweiten Schritt den Arbeitsablauf onEnter :eight_spoked_asterisk: an.
  2. Dort fügst du wieder das Element Effekt > Geräusche und Musik > Klang-Id abspielen ein, diesmal mit der Sound-Id 619 :asterisk:.

:floppy_disk: Bloß nicht das Speichern vergessen.

Jetzt verknüpfst du noch das Ereignis „Bei Betreten des Questschritts“ mit dem Arbeitsablauf onEnter.

4.8 Geschafft

Geschafft?

:floppy_disk: SPEICHEEEEEEEEEEEEEEERN!!!

Geschafft. jetzt kannst du die Kampagne einmal ausprobieren. Da du immer fleißig ge-:floppy_disk: hast liegt sie schon in deinem TRP3-Questlog bereit.

5 Anmerkungen

5.1 :asterisk: Woher kommt dieser Code?

Ich habe mich darüber ausgeschwiegen, woher ich z.B. weiß, dass ich ausgerechnet 618 eingeben muss, um an das Geräusch für eine startende Quest zu kommen. Das habe ich bewusst getan um den Beitrag kurz weniger lang zu halten. Erstmal genügt zu wissen, dass es viele solcher IDs gibt. Um sie selbst zu finden, vertröste ich dich an dieser Stelle auf einen späteren Beitrag.

5.2 :eight_spoked_asterisk: Warum dieser Bezeichner?

Das ist mein System: Englische Bezeichnungen mit vorangestelltem q##_, s#_ bzw. o#_. Arbeitsabläufe benenne ich entweder nach dem Auslöser (onStart, onFinish, …) oder nach dem, was sie tun sollen (addItem, initialize, …). Das hat mehrere Vorteile:

  • Quests und Questziele sind automatisch richtig sortiert, denn TRP:E sortiert nach Id.
  • Englische Begriffe stechen in (deutschem) Text besser hervor. Wenn ich irgendwo etwas englisches sehe, weiß ich, dass etwas nicht richtig funktioniert.
  • Wenn man mal eine Frage hat, findet man mitunter mehr Hilfe, wenn man auch nichtdeutsche Personen einbezieht. Diese finden sich dann besser zurecht, auch wenn sie die deutschen Texte nicht lesen können.

Es ist dir selbstverständlich freigestellt ein anderes System zu verwenden.

5.3 :scream: WTF? Experte? In der ersten Kampagne???

Von „Experteneffekten“ brauchst du dich nicht abschrecken lassen. Das sind Effekte/Bedingungen wie alle anderen auch. Manche davon werden sogar so häufig gebraucht, dass sie eigentlich in eine andere Kategorie gehören.
Sieh es als Herausforderung. :wink:

6 „Hallo Azeroth“ als Import-Code

Import-Code anzeigen !vA12YTTnq0Vf7Pp0oTYIKw2nwZKh0nBPP2sjgYooDYasisisebbQaa5mYDk)v6psFl)yDbb0fkBR0msIIaCb2Dp7zpGyF8y8qF4RxW54HbyKVVFd)lo1ZZ7I(F(Sg4HNcwGA1bUQXOXFeJ60cJqUXjunHXv2bVVNX0V45hQiRcZOCE(URTDlZObDWi1c4zHcIEPKgglxP0e(ecNJrD7b7njLwe1hgNxe90YIOektqNxeDnJoHZePQfCIGQPcm6D3IBJrdHiQnnv(T)9B)dS0wprL56mWxdHNQDrlkxG0eP2ClAS5Qj3rulaa3XsGilFPijKLeQO8PyerMQSphHU8bd(m8C)3aBP5dc(YzknE9h01dm7Zi0wFbtEtxZK3mccZrMX9BTfkF)DLbz5yBmP2d82F1oq0KyOlhGNyt(kRc19b4hGBzeLEdAuenXHqWCqswervgtGrtLuycoloZG3GnXZsxB7jqG(WlHUfrZzAtTrue9HCP28)XUIMZKJoUiQnvSu)eSSeITucM1b86jfr)CDfuPf)sLkez1bRpjmcppnuvcU7wE2J2wevHgwePQmYTnw861QMLfkRR7Dpq773AC4nORcrT(yza7cxuNrRTZfNyuCgnEwi9rQqh(ircrk21MvU1M(S3(wxR1JGNQcBBS5xTM8932GNVTG5lfmDOb1CMHG(MvujwVZNsAia3wUR2rhrvaOn0WoDbGUrDF)6bEfrb(n9cAgCgmpqgruoeyQAJZKLDYOxyohngHEL95Ela5i5DhGh6Tl54sMGPYoi)4llPkD4CIC2OjFUBUG(dqskXV8DNypMbceCminC5vCCA(4CKMU4hWRa1miCktq4hMiUvEP3oyHRacqfQlAtaz6yl5u)wr0p9xA5IM2kFZPmPs)3hbvbOcC7GR6Bk8JmQi9EN56T3z2RUnAC(zbwLLnAPTVc4gcnvoLet)0xZL8K5KfFkoxnNf7(RgXADTmwAgh(zc67EgVB9jcWDBY9dj1TwKBTTL53gzOzuHaeIu5PeP7ScqJzizovaImFGKjumH4Os5YkNg0ZKnhKn9)50Gl(ULT1N)T7PdwFR3Q(7Adlx4O2Lb4ENeysA7rJptMf8rRYCZ5zlscfw485xU700P9773q7FrZt9A65bld078pPbKu37E1Gk9Ubb19AupWhwYBa7B679I976sE24NrH3jT3(obK4mgS45gTTs2LvMdMLNiPc1xP0zabf4bGBRbE2eNMxx4gtfVicCivsb6nC)FqMVGKAA(hCdgDfrk)tqkO1egNPxvdozEcNQSKQQqzjLKgVuc2DneaCJykiS2WchAm()o
2 Likes
▲ Zurück nach oben
Eine Karte

Bei diesen Beispiel ein besonderer Dank an Hathel(@DieAldorEU) vom Bund des Lichts. Die Idee für dieses Item basiert auf einer Rollenspielgegebenheit im Rollenspiel mit seinem Bund.

Die Grundidee hinter der Karte in TRP3E basiert darauf, dass man in Form eines interaktiven Items über eine Karte verfügen möchte, die man an andere Charaktere weiter reichen möchte. Hierbei gibt es zwei grundlegende Vorgehens weisen. Zum einen ein schlichtes Dokumenten-Item, welches eine hohe Sicherheitstufe besitzt, jedoch Grenzen aufzeigt in ihrer Ausgestaltung. Alternativ ist eine Variante mit einem Makro und zwei simpler Skripte möglich, die es dem Item gestattet, die Ingame-Karte von World of Warcraft zu verwenden. Jedoch zu dem Preis, dass dieses Item gemäß Sicherheitsstufe als niedrig eingestuft wird.

Sollte jemand Schwierigkeiten haben, so kann sie oder er das Item welches wir nun bauen auch als Import-Code weiter unten finden.

Aber der Reihe nach.

Je nachdem für welche Variante du dich interessierst, wähle nun einen der beiden Themen:


Dokument-Item

Erstelle erstellen wir ein neues Dokumenten-Item, indem wir in der Datenbank Gegenstand erstellen → Dokumentengegenstand auswählen. Anschließend können wir die die Anzeigeinstellungen und Gegenstandseigenschaften so ausfüllen, dass einem Verwender deutlich wird: Er hält gerade eine Karte in der Hand. Dies könnte zum Beispiel folgendermaßen aussehen:

Nun speichern nicht vergessen.

Nun wechseln wir in den Reiter Innere Objekte. Klicken dort auf das Dokument in der Liste, so dass sich ein Texteditor öffnet. Im Editor klicken wir auf den Button Bild und suchen im Filter nach den Dateien TAXIMAP um eine für uns geeignete Karte auszuwählen. Zum Beispiel die Karte der Östlichen Königreiche.

Das Bild ausgewählt, sollte nun im Seiteneditor folgende Zeile zu finden sein: {img:Interface\TAXIFRAME\TAXIMAP0:512:512}

Was bedeutet diese? Recht simpel. Wir haben ein bereits im Addon TRP3E vorhandenes Bild einer Karte eingefügt mit den Abmessungen von 512*512 Pixeln. Damit dieses Bild aber nicht beim anzeigen des Dokumentes abgeschnitten ist, müssen wir das Bild entweder auf die Größe des Dokumentes anpassen indem wir die Zahlen in der oberen Zeile verringern. Oder aber, indem wir das Dokument selbst vergrößern.

Da wir den Rahmen des Dokumentes berücksichtigen müssen, der ungefähr ~80 Pixel beträgt, tragen wir also in der linken Seite unter Seitenhöhe und Seitenbreite 590 jeweils ein. Ein Klick auf die Vorschau sollte nun etwas was hier nach aussieht anzeigen:

Nun speichern nicht vergessen.

Und das war es auch schon. Wir haben nun eine funktionsfähige Karte der Östlichen Königreiche, die wir über die Datenbank in unsere Tasche legen können. Wer bis hier hin Schwierigkeiten gehabt haben sollte, weiter unten findet man den Importcode für das Item mit dem man es direkt im eigenen Client nachvollziehen kann wie das Item funktioniert.

Lust auf mehr? Nun folgt die geskriptete Variante.


Skript-Item

Für das geskriptete Item, fangen wir zunächst ähnlich wie zuvor an. Doch anstelle eines Dokumentengegenstand erstellen wir nun einen Experten-Gegenstand. Doch keine Sorge, es wird nun nicht so schwer, wie der Name des Items vermuten lassen könnte. Zunächst müssen wir ohnehin wie zuvor das Item so gestalten, dass es wie eine Karte aussieht.

Nun speichern nicht vergessen.

Nun gehen wir in den Reiter Arbeitsabläufe und legen zunächst einen Arbeitslauf links mit dem Button Arbeitsablauf erstellen. Anschließend mit dem Button Element in den Arbeitsablauf einfügen rechts einen Makroeffekt einfügen.

Effekt → Experte → Makro ausführen

Wichtig: Nicht vergessen diesen Arbeitsablauf unter Ereignisverknüpfung bei ‚Bei Benutzung‘ einzutragen, damit er auch bei einem Rechtsklick auf das Item ausgeführt wird.

Nun speichern nicht vergessen.

Ein Klick auf dieses Element öffnet eine Textbox, recht ähnlich wie wenn ihr ein Makro im Client selbst anlegt. Dort kopieren wir nun folgende Zeilen hinein:

/run ToggleFrame(WorldMapFrame);
WorldMapFrame:SetMapID(13);

Soweit so leicht. Aber was bedeuten diese Zeilen eigentlich? Bei diesen Zeilen handelt es sich um schlichte Lua-Skripte, die man auch direkt im Warcraft-Chat ausführen kann, sofern man die Ausführung von Skripten erlaubt hat im Client.

/run ToggleFrame(WorldMapFrame); ist ein Toggle-Befehl, der die Ingamekarte öffnet wenn sie geschlossen ist oder sie schließt wenn sie offen ist.

WorldMapFrame:SetMapID(13); teil der Karte mit, dass sie die Region mit der ID 13 anzeigen soll.

Die Karte der Östlichen Königreiche wird im Client mit der ID 13 referenziert. Wenn man andere Regionen anzeigen möchte, muss man somit nur die ID der Karte herausfinden und man kann sie wie eine jede Karte im Spiel anzeigen lassen. So simpel ist es. Um heraus zu finden welche ID welche Karte hat hilft diese Liste:

Nun speichern nicht vergessen.

Wer bis hier hin Schwierigkeiten gehabt haben sollte, weiter unten findet man den Importcode für das Item mit dem man es direkt im eigenen Client nachvollziehen kann wie das Item funktioniert.


Noch ein paar Worte zu Sicherheitsstufen

Wie bereits zu Beginn angedeutet, werden alle Items in Sicherheitsstufen eingeordnet. Wobei ’Hoch’ die unbedenklichste ist und ’Niedrig’ die potentiell bedenklichste.

Aber was genau bedeutet dies eigentlich? Gemeinhin sei gesagt, dass Items mit einer niedrigen Einstufung weder Schaden am Spieler-PC, dem Client, dem Charakter oder seiner Gilde anrichten können. Darauf hat das Addon TRP3 schlichtweg keinen Einfluss. Wohl aber können manche Arbeitsschritte mit ‚bösartigen‘ Absichten formuliert werden.

Makros können nämlich auch Effekte besitzen, die einem Spieler in eine Unvorteilhafte Situation versetzen könnten. Zum Beispiel indem sie Mitteilungen in den Chat schreiben, deren Ursprung andere Personen nicht als ein Ergebnis eines Makros erkennen können sondern annehmen müssen, dass der Verfasser der Spieler hinter dem Charakter war. Ebenso können Makros die Fähigkeiten eines Charakter auslösen oder wie wir vorhin gesehen haben, bestimmte Fender im Spiel steuern.

Daher ist stets zu empfehlen, sollte ein Item aus nicht vertrauenswürdiger Quelle eine Einstufung als Mittel oder Niedrig besitzen, ind er Datenbank nachzusehen was genau dieses Item eigentlich macht oder im Zweifel es nicht benutzen.


An dieser Stelle sei bedankt, wer mir bis hier hin gefolgt ist. Und ich hoffe, dieser kleine Guide konnte dem ein oder anderen von Nutzen sein.

Wer nun Probleme oder Fragen hat darf gerne sich an uns in der Schreibstube wenden. Oder sie oder er möge in das Beispielitem hinein schauen. Wie dieser Code zu verwenden ist kann man hier nachlesen.

Beispiel-Item-Code Simple Karte (klicken zum erweitern ...)

!Trv4YPnoq4xOluBkCb4Fogi4cyiiG0BMoYwGfgnXwIrsU9AUP(XO)TVf9x5F8ID7kdzYL5gWYY7UA3p9TFsuF6AASp83RDpACBkXRJxp45w)(3pExNqA8hHiirX4yj7uIIBSfI9h5jAo(cTV(VOKHlOKzrWxwk5UfyojtcA(CYiAC3(EG9107OesyJ5Lbn1gtWNPK)ruMpisA56dS98VSo4ZrJxfmFKB28GLEd663gF(bSySiHtPX9G3yAiXbaeupvvYLoVt(yYyk5EwjFSsAJv6swXmMoNtjJxr3rjpgDbut8XihcBlH87yWtQWOM0gn)qfyhnM0yD51SUwPkSItt4SmUMsMpebXCGdIx4GN9kWgoIsgjK860zmz2tmTfMcRPo98pVWKY60PN)TuK3WOTQ)uDA9NgIXSrBoPp)Im3fyD6wKDmg01rMTo1aMRtZ1QZ)c8o)8lyqzSsb4lNxY2FeMCszbwrWlkaN3ZpWoQ5YD8MQ9h1PRuvweevYS60foa(vf8TRzWHQvNY2z4cR5cYxEa211PCH85kRMLZLTaQHant)(GekkKsGkl4FLJTJKNvsEcNzGSjFsiZZuLMepqGmd4MPiJqjHlWMc2fN2qr38gc6)YpGcAng8dbovgiJW2PBClyQJNh0vdxHsTvrusWoZ(JAXblcEyhqEslozvArvPbApiQB71Ns2qWv8WimpK7WXnX4yORypcA42qITx0Ve1jUmboqGZb8aJoLm)vnTiJsYu7DkYeZr13asrNBA8)(Jz1P)VNTUOKG)fcJLE9hjJBzIctZ5i3PoYInVbt2RkYzlWGHnbEU7OiJDZqbpOitbA2T04BbpdbW07dED(qB)6uVod8UDGpqhzBHDuRoqX36UD4pBK3JGtQK3VeF)bD66yT3xeRRZIWlczX5psJHMZWnUxarsGcqGMu3)gNScMGlbVpjATRLSUjmLCJb2gbHVQpyvhG(Abk(WLy47R0c73NbIUc8sRR3(ybfHBN0QnmN(V

Beispiel-Item-Code geskriptete Karte (klicken zum erweitern ...)

!TnvZYPnmq4xNKzAi2yYpqo5y72scysy5N2Eqybwy0GrMrsK0Md(XOx7BrpLB8I1DfPzs60XEK3)3pVFRy(SrSuF81R5LS0MmWlWZ3piOzRlKRI)MhlnaJa6MINwgCDiPfNWGePsuN1JRYxZ1wumxORZ2)tJTuUyLqvND7(FRKfAbP2O(M6S6BIPygRnB17Fwv4cSoBIqVKBmKRvCBDMbnxNvOR2)l0B)9ptbLZ3irFfIn8fRqHTvwHYkfLLOZpjwYxPfQ5IdD7d1zdR2zjqStLxNnWbWhQq9Uklge2T6m(CJqAnVG87wYZrJcP6PDwnVqOAWG7aCY43ghlDJya2zP4bXgSXZEQsjMj4gSAQ1svrE1gZmpFg0dNn3stegenGnNbPHVyOo7K3mGE)8HbWik47dj2aUlKuM6oNGMA555H1Bi7AgmSldcNBwSslxAjWJ)bWATCRTsl3TXG0dH6METzWyGY4(eQoW1054u6mY1SPjiJJfg5viI41hR0Rxww94SQTc1Sn8TKrey4jTNaIdllOKmNbgXIDAbg2cDfoC0fMdUHt17Wj9OQIIsXh18nIJMwPlZ7Z360o(Q6S3zOdiSOC34J8do(keo0dGVLsJL93hixy5YsJdtjrZgMecdsN1pmA4GxA8)U76sRxxkJbJ)F)EO7(XK7OymB)t9coTPFDMFqNGMDADHBObjkHXs7mNelfHL5vAKuW7fxIPHUHvYC(BC1BabvSW43KVGYtWPxJw4p0e31SZXuOUD(RDRvh)2DoRnHMOboW2LON(tzPiRhp29bzialcGS)zFNegIcukJ(kUDoYX1JoewLASbbqy0RlE8DlXfMsARMsXXCs7p6HBZLUj3NdD3VT4QMdTnAIYS)a

▲ Zurück nach oben
2 Likes

Vielen lieben Dank für das Tutorial.

Ich habe einiges dort herausnehmen können, leider aber auch vieles nicht. Gibt es extern irgendwelche deutschsprachigen Tutorials die mich unterstützen könnten etwas komplexere Kampagnen zu machen?

Das Beispiel „Hallo Azeroth“ war super hilfreich aber es behandelte leider nicht alle Themen um die Kampagnen/Quests herum.

Vielen lieben Dank für die Antworten :slight_smile:

1 Like

Freut mich zu hören, dass Seleves Guide dir bisher gute Diente leisten konnte.

Leider sind mir keine anderen deutschspachigen Guides bekannt, die auch nur Ansatzweise so sehr in die Tiefe gehen wie die ihren.

Englisch sähe dort natürlich besser aus. Auf dem GitHub der Entwickler wurden einige Video-Tutorials zusammen getragen, denen man womöglich auch noch so manchen Kniff entnehmen könnte, selbst wenn man in der Sprache sich nicht so sattelfest wähnt.

Wenn du konkrete Fragen hast, könntest du natürlich auch versuchen mit Seleves@Thrall in Kontakt zu treten. Erfahrungsgemäß sind individuelle Fragen zu TRP3 recht mühseelig hier im Forum zu beantworten.

Sollte das nicht zum Erfolg führen und die einige konkrete Fragen besitzt, wäre das womöglich der ideale Aufhänger für einen TRP3E FAQ/Troubleshootin Thread. :slightly_smiling_face:

Ich hoffe das mag dir erst einmal weiterhelfen können.

Extended am Sonntag #1


Sounds und wie man sie findet

Extended wird gern verwendet, um Geräusche oder Musik abzuspielen. Aber welchen Effekt sollte man verwenden? Und wo findet man diese ominösen "Sound Ids"?

Soundeffekte

Zunächst stehen zwei verschiedene Effekte zur Verfügung: "Sound-Id abspielen" und "Musik abspielen".

Musik abspielen

Mit Effekt > Geräusche und Musik > Musik abspielen ersetzt du die Hintergrundmusik durch ein von dir gewähltes Musikstück. "Musik anhalten" sorgt dafür, dass wieder die Standardmusik des Gebiets abgespielt wird, in dem du dich befindest.

Sound-Id abspielen

Effekt > Geräusche und Musik > Sound-Id abspielen ist für jedes Geräusch gedacht, das keine Musik ist, also z.B. Kampfgeräusche, gesprochener Text (Voice Over), Emotes usw. Im Gegensatz zu Musik können auch mehrere Sounds gleichzeitig abgespielt werden.

Bei diesem Effekt kannst du dir ebenfalls aussuchen, ob der Sound im SFX- oder im Umgebungskanal abgespielt werden soll. Der SFX-Kanal ist üblicherweise etwas lauter eingestellt (Regler „Sound“ in den Spielsoundeinstellungen) als der Umgebungskanal (Regler „Umgebung“).

Umgebungs-Sounds

Neben den beiden obigen Effekten gibt es "Umgebungs-Sound abspielen" und "Umgebungs-Musik abspielen". Diese sorgen dafür, dass auch andere Spieler in der Nähe deine Sounds oder Musik hören können. Ansonsten funktionieren sie analog. Das ganze geht natürlich nur, wenn die anderen Spieler ebenfalls Extended benutzen und wenn sie die Sounds anderer Spieler in ihren Extended-Einstellungen zulassen.

Sound Ids

Wenn du Musik abspielen möchtest, stellt dir Extended einen Musikbrowser zur Verfügung, mit dessen Hilfe du Musikstücke anhand ihres englischen Namens finden kannst. (Klicke auf "Durchsuchen" in den Musikeffekteinstellungen)

Für jeden anderen Sound benötigst du eine Sound Id.

Sound Ids finden

Wowhead bietet eine Soundsuche an.

Beispiel
Ich möchte das Geräusch verwenden, das bei der Jägerfähigkeit „Begleiter rufen“ zu hören ist (ein lautes Pfeifen).

  1. Öffne die Sound-Suche von Wowhead: https://www.wowhead.com/sounds/.
  2. Im Suchfeld gibst du den (englischen!) Namen der Fähigkeit ein: call pet.
  3. Es sollten vier Suchergebnisse erscheinen, zwei davon heißen PetCall. Du kannst sie dir dort probeweise anhören.
  4. Sollte ein passendes Ergebnis dabei sein, enthält dessen URL die gesuchte Id, in diesem Fall https://www.wowhead.com/sound=3980/petcall. Die gesuchte Id ist also 3980.
  5. Probiere es aus: /run PlaySound(3980)

Alternativ kannst du auch bei der Fähigkeit selbst dein Glück versuchen:

  1. Suche bei Wowhead nach begleiter rufen. Du wirst mehrere Treffer haben.
  2. Bei einigen Suchergebnissen ist die Sound-Id (bzw. Klang-Id) unten unter „Weiteres“ gelistet.

Diese Suchstrategien führen leider nicht immer zum Ziel. Allgemein empfehle ich:

  • Versuche herauszufinden, wann der Sound abgespielt wird. Ist er an einen Zauber gebunden? Ein Spielzeug? Einen NSC? …
  • Suche auf englisch. Die Dateinamen haben meistens etwas mit dem Inhalt zu tun, aber diese sind eben englisch.

Sounddatei-Id

Sound-Ids wie oben beschrieben, stehen nicht für eine bestimmte Datei, sondern für eine Gruppe von Dateien. Bspw. hat jedes Volk unterschiedliche Witze auf Lager (/witz), aber die Witze sind nach Volk und Geschlecht zu einer einzigen Sound-Id zusammengefasst.

/run PlaySound(9695)
wird dir unterschiedliche weibliche Draenei-Witze liefern.
Wenn du also an einem ganz bestimmten Draeneiwitz interessiert bist (z.B. „Wie genau rast man in einen Planeten…?“), musst du die Sounddatei-Id verwenden.

  1. Suche nach deinem Sound wie oben. Suchbegriff: draenei silly
  2. Die Ergebnisseite zeigt 7 unterschiedliche Witze. https://www.wowhead.com/sound=9695/draeneifemalevocalsilly
  3. Der siebte Sound DraeneiFemalePissed13 ist der gesuchte Witz.
    Aus unerfindlichen Gründen haben die Entwickler sich für den Namen DraeneiFemalePissed## anstatt DraeneiFemaleSilly## entschieden. :man_shrugging:
  4. Halte deine Maus über das Download-Symbol neben dem Soundeffekt. Der Download-Link wird dich zur URL https://wow.zamimg.com/sound-ids/live/enus/58/539706/DraeneiFemalePissed13.ogg führen.
  5. Auch in diesem Fall ist die Sounddatei-Id Teil der URL: 539706. Es ist die zweite, meist sechsstellige Zahl.

Probiere es aus:
/run PlaySoundFile(539706)

Die Sounddatei-Id ist also immer dann nützlich, wenn es exakt ein bestimmter Sound bzw. Voiceover sein muss. Falls du die Sounddatei-Id verwendest, muss in den Effekteinstellungen das entsprechende Feld „Sounddatei-Id“ ausgewählt sein.


Viel Spaß beim Experimentieren und
:wave: bis zum nächsten Sonntag…

3 Likes

Leider kann ich dir nur ein Herz pro Beitrag geben, sei dir aber um weit mehr bewusst wenn ich könnte!


Ich habe den ersten Beitrag (Die Liste) in diesem Thread zu einem Wiki-Beitrag umgewandelt. Wiki-Beiträge kann ein jeder Forenbenutzer bearbeiten.

Sollte also jemand nicht warten wollen und es sich zutrauen, so kann man nun selbständig den eigenen How-To in der Eingangsliste eintragen!


▲ Zurück nach oben
1 Like

Das mit dem Wiki-Beitrag werde ich gleich mal ausprobieren, aber jetzt heißt es erstmal…

Extended am Sonntag #2


Variablen

Wer sich beim Wort „Variable“ mit Schrecken an seine Mathestunden erinnert, muss sich keine Sorgen machen. Variablen in Extended sind viel schrecklicher, ähm, ich meine, sie erfüllen einen ganz anderen Zweck.

Eine Schublade für jede Information

Immer, wenn sich Extended etwas für einen bestimmten Zeitraum merken soll, wird eine Variable benötigt, zum Beispiel:
  • Text, den der Spieler eingibt
  • Anzahl der bereits besiegten Monster in einer „Killquest“
  • eine Entscheidung, die der Spieler in einer Zwischensequenz trifft

Jenachdem, wie lange die Information benötigt wird, bietet Extended unterschiedliche Speicherorte, oder Quellen an.
Außerdem gibt es verschiedene Operationen, mit denen man den gespeicherten Wert verändern kann.

Wo Variablen gespeichert werden

Arbeitsablauf-Variablen

Diese sind nur so lange gültig, bis der Arbeitsblauf, in dem sie erschaffen werden, beendet wurde. Beispielsweise verwendet die Wurfmünze eine solche Variable. Da sie nur benötigt wird, um einen Münzwurf zu simulieren, ist sie im Arbeitsablauf genau richtig.
Wenn man die Münze ein weiteres Mal wirft, wird die Variable neu berechnet, unabhängig vom vorherigen Wert.

Objekt-Variablen

Wählt man als Quelle Objekt aus, wird der Wert in dem Item gespeichert, das den Arbeitsablauf auslöst.

Vorsicht: Damit das funktioniert, muss Extended einen Bezug zu einem Item herstellen können. Wenn der Arbeitsablauf zu einem Item gehört, ist das möglich, bei einem Questschritt bspw. aber nicht.

Solche Variablen sind persistent, sie bleiben auch bestehen, wenn man sich ausloggt oder das Profil wechselt. Sie werden erst gelöscht, wenn das Item, in dem sie gespeichert sind, zerstört wird.

Außerdem werden diese Variablen für jedes Item individuell gespeichert. Solltest du mehrere Kopien eines solchen Items in deinem Inventar haben, können sich die Werte von Item zu Item unterscheiden.

Kampagnen-Variablen

Ähnlich wie Objektvariablen sind diese individuell und persistent für jede einzelne Kampagne. Sie werden erst dann gelöscht, wenn die Kampagne zurückgesetzt bzw. neu gestartet wird.

Damit eine Variable in der aktiven Kampagne gespeichert werden kann, muss natürlich eine Kampagne aktiv sein.

Beachte, dass man lediglich einstellen kann, dass eine Variable in der momentan aktiven Kampagne gespeichert werden soll, man kann sich aber nicht auf eine bestimmte Kampagne festlegen. Du solltest daher die Quelle „Aktive Kampagne“ nur dann verwenden, wenn sich der Arbeitsablauf innerhalb einer Kampagne oder innerhalb von dessen inneren Objekten befindet.

Wie man Variablen verändern kann

Könnte man Variablen nicht verändern, dann wären sie nicht sehr variabel…

Der Effekt Experte > Variablenoparation bietet neben den vier Grundrechenarten auch Initialisierung und Wertzuweisung an. Über Wertzuweisung kannst du deiner Variablen einen neuen Wert geben, der alte geht dabei verloren. Initialisierung weist der Variablen nur dann einen Wert zu, wenn diese noch nicht existiert, d.h. eine Wertzuweisung ohne Überschreiben.

Mit Experte > Dynamischer Wert kannst du deiner Variablen einen Wert aus einer Vielzahl von Zuständen innerhalb der Spielumgebung zuweisen, z.B.

  • Name des Gebiets, in dem sich der Charakter befindet
  • Charakter-Level
  • zufälliger Wert

Wie man Variablen benennt

Wie in der Beschriftung eines Formulars sollte der Variablenname Aufschluss über den Inhalt geben, gleichzeitig einprägsam und eindeutig sein. Vermeide Sonderzeichen im Variablennamen.

Beispielsweise sind gute Bezeichner für die Anzahl besiegter Gegner innerhalb einer Quest mobsSlain, monsterKillCounter oder numMobsKilled. Weniger treffend sind x, mobs oder count.

Wie man Variablen benutzt

Was nützen die vielen Variablen, wenn man nicht darauf zugreifen kann? Es gibt zwei wesentliche Methoden, um an den Wert einer Variablen zu kommen.

Variablen in Bedingungen

Innerhalb einer Bedingung kann man mit Expert > Variablenwert (Text/Numerisch) den momentanen Wert mit einem anderen vergleichen.

Variablen in Tags

Wird der Variablenwert direkt benötigt, helfen Variable Tags. Das ist ein Thema für einen anderen Sonntag. Hier sei nur kurz erwähnt, dass man ${var} als Platzhalter für den Wert der Variable var verwenden kann.

Beispiel 1: Wurfmünze mit Gedächtnis

Ich möchte die oben erwähnte Wurfmünze etwas aufmotzen. Der Tooltip soll mir anzeigen, wie oft Kopf bzw. Zahl geworfen wurden.

  1. erstelle ein neues Item
    1. linker Tooltip-Text: Kopf: ${headsCount::0} mal
      Mit ${headsCount::0} weisen wir Extended an, diese Passage durch den Wert der Variable headsCount zu ersetzen.
      ::0 sorgt dafür, dass 0 angezeigt wird, falls die Variable (noch) nicht existieren sollte.
    2. rechter Tooltip-Text: analog Zahl: ${tailsCount::0} mal
  2. Stelle das Item als benutzbar ein.
  3. Wechsle ins Tab Arbeitsabläufe, dort stellst du 7 Schritte ein:
    1. Variablenoperation Initialisierung headsCount auf 0.
      Als Quelle geben wir Objekt an.
      Damit setzen wir vor dem ersten Wurf die Anzahl der Kopf-Würfe auf 0.
    2. analog: Variablenoperation Initialisierung tailsCount auf 0.
    3. Dynamischer Wert coinToss als zufällige Zahl zwischen 1 und 2. Die Quelle Arbeitsablauf genügt.
    4. Textausgabe "Kopf", mit Bedingung: coinToss = 1
      Klicke mit gedrückter STRG-Taste auf den Effekt, um die Bedingung einzustellen.
    5. analog "Zahl", falls coinToss = 2
    6. Variablenoperation Addition: headsCount um 1 erhöhen.
      Hier muss dieselbe Beedingung wie in Schritt 4 eingefügt werden. Beachte, dass die Variablenquelle im Effekt Objekt ist, während in der Effektbedingung Arbeitsablauf stehen sollte.
    7. analog zu Schritt 6 für tailsCount
Import-Code: Wurfmünze mit Gedächtnis !9svBpknqq4FlM43mEx3Tuj0e(q5LyicLtMcepJduAxKQL2lTf4uJ8RXFg(T7pMZSTr0k3zIjEbyA3z3zEEMzyFqb6HUc6RHPb6krqinSmmKsRwMoxVkaDnPtadCjBbcDC4vxbuaIwceMcyheg2hHxLEZA7JlpU8PFzJYpmVB6UKcBBJVEC5w)ye6ogxHGRdcZ3LTE7DFp5ZkAROIJlFPk8UVfSPijkhbWJp3RD0Kb6WlM6Y2zKldkpt4fZ7Rx0JjIuysb0x72HTxPTd6IquY(fBJYdweKgLSq0IcxN(jdq4A)nXveUWpkUoHPIf6YfBAY0Cf)cXmYYnmqv21O3IcryVF2I0vFqfqX4N9(8YnHuDj822VJ7HWPMc62abdca(dqFJJYjBccs2H59aWnQm)KWFdbUQ8sZZ1aDqddFM0TmevZvEpxzfA1WRb7q(pwqNAA3FbzYoS(taku3wW0NQNk3v7vIDWgvWhxqX7xH8bnY)SCzCyhTBx93Z9NkXFLW8i(j6gG55y3lyhnEuyN4mSJVX8aSZID08Hho)37GLJ8NDUbUOoPl4o6JhDf)f6w7cN4C94MNUxKRc2Lfv8PHQ9QyDciTnpTiqLea4qVEqLTMKScJiXRrArmoysCJo64bS2cmHNDaqsmw32Omb0JEt1kwJMZpOqcv6(zPS6OEC8dhZUPSrsQGkMis(Z92K5htYNZq3M0UZOc5Igxq5RBp6oN1Lc5LsXXLgg2sPTfjWvmRsmhgrPZL(b1pPPW2SLwCTomev8EdjDYKs300yvG4p(

Beispiel 2: Anpassbare Taschen

Zur Organisation des Extended-Inventars möchte ich eine Tasche erstellen, der ich eine Kategorie zuweisen kann, z.B. Briefe, Kampagnen-Items, Erfindungen,…

  1. erstelle einen Behälter-Gegenstand
  2. Lege ${category::(keine)} als Tooltip-Text fest, links oder rechts je nach Präferenz
  3. Setze die Tasche auf benutzbar
  4. füge im Tab "Arbeitsabläufe" einen Effekt hinzu
    1. Effekt: Experte > Eingabeaufforderung
    2. Text: neue Kategorie eingeben
    3. Variablenname: category
    4. Variablenquelle: Objekt
  5. Fertig ist die anpassbare Tasche.
    Mit der rechten Maustaste kannst du die Kategorie festlegen.
    Mit Doppelklick öffnest du die Tasche wie gewohnt.
Import-Code: Anpassbare Tasche !LfvBpQjqq4)m9JT3Tahnxjnnbr)G501RoOM(LbqyJUremSRMABo(10)j9p2nZYzAtB2ndZ(W8YZ8mOhMIsp6kceO0hbpFrONFGqiEUvyBqzafbmvswlcJI5xpducEpgq4jiOBUKDuBkZ2wSll4JimBccpvyv7A70keswGBrqgJqAHPCpHaPmYxJr5duXI5hBC21eKGYyj)y5ueE3plhk01OOpFqPBuF5fegZ93xqrUcWru9gXXVs6Q6e2MKY4BMWLJOnKW0UTzLrXou)jlp6GAy(jpDfcxk6Yo11E8eLtr3oZWp)ZW0NtuyNARQXPv34glsqRBAqzi7ADhGU1AJfVDGkLTqxBgeZ5J5(oBbdtuMhevT6IY8H09Df11KEGsspHXiicV3Z)EFV(Cp)OGpffsDm5)WfrSOyx)2(eQwtJ5DpChrS5uBKlCA1)2gRBhruzXuw7MVXTegVY9HKoGshOLr43zNLKdNs63O1FQBfKoe2G(cXKBNQCV1COwxEq18((8Zh7Z)lv8hN7Z)9VAQuDnCPmQYZDA71zeRQzX060YbMBr81

Viel Spaß beim Experimentieren und
:wave: bis zum nächsten Sonntag…

2 Likes

Extended am Sonntag #3


Variablen-Tags

Im vorherigen Beitrag ging es darum, wie und wo man Variablen erstellt, und diesmal soll es um eine flexible Methode gehen, diese einzusetzen: Variablen-Tags.

Hier könnte Ihre Variable stehen

Tags sind Platzhalter, die in einem Text oder anderswo eingebaut werden. Sie signalisieren Extended, dass anstelle des Tags der Wert, der mit dem Tag verbunden ist, verwendet werden soll.
Tags werden mit Hilfe der Sequenz ${...} ausgezeichnet. Innerhalb der geschweiften Klammern steht die Referenz.

Beispiel: Aus ${wow:player} ist ${wow:player:class}. wird in meinem Fall Seleves ist Jägerin.

Wo man Tags einsetzen kann

Viele Eingabefelder in Extended unterstützen Tags, aber nicht alle. Dort, wo sie nicht unterstützt werden, bleibt das Tag einfach wie eingegeben stehen.

Die folgende Liste habe ich vom GitHub der Entwickler übernommen (https://github.com/Total-RP/Total-RP-3-Extended/wiki/Variable-tags):

Liste dynamischer Felder
Kategorie Feld
Items
  • linker und rechter Tooltip
  • Tooltip-Beschreibung
  • Text bei Benutzung
Dokumente
  • Seiteninhalt
Zwischensequenzen
  • Dialogtext
  • Sprecher
  • Antwortoptionen
Kampagnen
  • Kampagnenbeschreibung
  • Questzieltext
  • Questbeschreibung und Questlogtexte
Effekt Verzögerung
  • Verzögerungstext / Zauberbalken-Beschriftung
Effekt: Textanzeige
  • Anzeigetext
Effekte: Sprechen und Emotes
  • Gesprochener Text
Effekt: Item hinzufügen/zerstören
  • Anzahl
Effekt: Behälter reparieren/beschädigen
  • Haltbarkeitspunkte
Effekt: Abklingzeit starten
  • Dauer
Effekt: Kamera-Zoom
  • Zoom
Effekt: Makro ausführen
  • Makrotext
Effekt: Variablenoperation
  • Wert (!!!)
    Besonders nützlich, da man hierdurch Variablen addieren kann oder Texte aneinanderknüpfen.
Effekt: Signal senden
  • Signalwert
Zufälliger Wert
  • Ober- und Untergrenze

Worauf man mit Tags zugreifen kann

Wenig überraschend dürfte sein, dass man auf den Wert von Variablen zugreifen kann, doch auch Item Ids werden durch den farblich markierten Namen des Items ersetzt (z.B. blau bei seltenen Gegenständen).
Außerdem gibt es verschiedene vorgefertigte Tokens, für die man keine eigene Variable erstellen muss (bspw. Charaktername).

Tag Beispiel Ergebnis
Token

${wow:player}

Seleves

Variable

${decision_direction}

north
(sofern es eine Variable mit diesem Namen und diesem Wert gibt)

Item

${0924220631wG6dn item_letter}

[Brief]

Die eingebaute Vorfahrt

Was passiert, wenn die Variable var als Objektvariable erstellt wurde und im „Benutzen“-Arbeitsablauf nochmals mit selbem Namen als Arbeitsablauf-Variable? Wie wird ${var} ausgewertet?
Extended hat für solche Fälle eine festgelegte Reihenfolge. Sobald ein Treffer ausgemacht wurde, wird dessen Wert verwendet.

  1. Tokens
  2. Arbeitsablauf-Variablen
  3. Objektvariablen
  4. Kampagnen-Variablen
  5. Item Ids

Die Antwort auf die obige Frage lautet also: Es wird der Wert der Arbeitsablauf-Variablen verwendet, man sagt auch, sie überdeckt die Objektvariable.
An dieser Stelle sei daran erinnert, dass man möglichst eindeutige Variablennamen verwenden sollte, um solche Effekte zu vermeiden.

Tokens

Wie oben erwähnt, bietet Extended verschiedene Tokens für häufig verwendete Werte, wie dem Spielernamen, der Klasse, usw.

Eine vollständige Liste ist ebenfalls dem GitHub der Entwickler zu entnehmen:

Liste vorgefertigter Tags

Token Wert Bemerkung

${wow:player}

Spielername

${wow:target}

Name des Ziels (d.h. der anvisierten Einheit)

${wow:player:id}

Spieler-Id z.B. Seleves-Thrall

${wow:target:id}

Ziel-Id

${wow:player:race}

Volk des Spielers lokalisiert1

${wow:target:race}

Volk des Ziels lokalisiert1

${wow:player:class}

Klasse des Spielers lokalisiert1

${wow:target:class}

Klasse des Ziels lokalisiert1

${trp:player:full}

Voller Name aus dem TRP3-Profil weicht auf wow: aus2

${trp:player:first}

Vorname aus dem TRP3-Profil weicht auf wow: aus2

${trp:player:last}

Nachname aus dem TRP3-Profil weicht auf wow: aus2

${trp:target:full}

Voller Name aus dem TRP3-Profil des Ziels weicht auf wow: aus2

${trp:target:first}

Vorname aus dem TRP3-Profil des Ziels weicht auf wow: aus2

${trp:target:last}

Nachname aus dem TRP3-Profil des Ziels weicht auf wow: aus2

${trp:player:race}

Volksname aus dem TRP3-Profil weicht auf wow: aus2

${trp:target:race}

Volksname aus dem TRP3-Profil des Ziels weicht auf wow: aus2

${trp:player:class}

Klasse aus dem TRP3-Profil weicht auf wow: aus2

${trp:target:class}

Klasse aus dem TRP3-Profil des Ziels weicht auf wow: aus2

${gender:player:M:W}

männliche/weibliche Variante, abhängig vom Geschlecht des Spielers Damit kann man recht leicht grammatikalisch korrekte Sätze bauen, z.B.
${trp:player:first} zieht ${gender:player:seine:ihre} Waffe.

${gender:target:M:W}

männliche/weibliche Variante, abhängig vom Geschlecht des Ziels

${event.1}${event.n}

n-tes Ereignis-Argument nur in Arbeitsabläufen, die von einem Spielereignis ausgelöst werden

${last.return}

Rückgabewert des letzten Effekts z.B. das Ergebnis des „Würfeln“-Effekts

1 Lokalisiert bedeutet, dass der Wert in die Sprache des Spielclients übersetzt wird. Z.B. kann ${wow:player:class} auf einem deutschen Client den Wert „Blutelf“ haben, im englischen jedoch „Blood Elf“.
2 weicht auf wow: aus bedeutet, dass der entsprechende Standardwert aus dem Spiel benutzt wird, falls kein TRP3-Profil existiert, oder dort keine Information vorhanden ist.

Modifikatoren von Variablen-Tags

Standardwert

Mit :: kann man einen Wert für den Fall festlegen, dass die Variable nicht existiert.
Z.B. wird mit

${count::0}

der Wert der Zählervariablen count ausgegeben, oder Null, falls es diese Variable (noch) nicht gibt.

Dezimalstellen festlegen

Mit #n kann man bei einer Zahl einstellen, auf wieviele Dezimalstellen diese gerundet werden soll.
Z.B. liefert

${distance#1}

einen Wert wie 11,6.
Standardmäßig wird auf zwei Stellen gerundet.


Viel Spaß beim Experimentieren und
:wave: bis zum nächsten Sonntag…

2 Likes

Extended am Sonntag #4


Dokumente

Dokumente in Extended sind - wer hätte es gedacht - Objekte, die hauptsächlich zur Anzeige von Text verwendet werden.
Man kann aber auch (spieleigene) Bilder, Links und andere dynamische Elemente einbetten. Sie sind also vielfältiger, als der Name vermuten lässt.

Dokumente erstellen und benutzen

Ein Dokument ist kein eigenständiger Gegenstand, sondern muss als inneres Objekt angelegt werden. Um das Dokument anzuzeigen (ähnlich wie bei einem Buch), kannst du den Effekt Dokument > Dokument anzeigen verwenden. Es kann immer nur ein Dokument gleichzeitig auf dem Bildschirm angezeigt werden.
Für ein einfaches Buch/Brief/etc. bietet die Datenbank die Option „Gegenstand erstellen > Dokumentgegenstand“. Dadurch wird ein Item erstellt, das bei Benutzung ein Dokument anzeigt. Das Dokument, das du nun füllen kannst, findest du im erstellten Gegestand unter „innere Objekte“.
Man kann Dokumente aber auch mit komplizierteren Mechanismen öffnen, zum Beispiel nach Eingabe eines Passworts.

Inhalt und Formatierung

Dokumente können aus mehreren Seiten bestehen, und es gibt mehrere Formatierungsmöglichkeiten, die man auch aus anderen Textprogrammen kennt:

  • Überschriften (H1, H2, H3)
  • Ausrichtung links, rechts, zentriert
  • Textfarbe

Wenn du Formatierungselemente wie H1 oder P (für Absätze) benutzt, wirst du feststellen, dass Marken wie {h1}{/h1} oder {p}{/p} in das Dokument eingefügt werden. Das Dokument besteht also aus Text mit bestimmten Auszeichnungselementen (englisch markup).
Für Überschriften, Absätze, und farbigen Bereiche gibt es eine Anfangs- und eine Endmarke ({...} und {/...}), bei den anderen Elementen reicht eine Marke.

Beispiel
Markup
{h1:c}Zanderfilet{/h1}
{h2}Zutaten{/h2}
{p}
Zander
Filet
{/p}
{h2}Zubereitung{/h2}
{p}
Den Zander und das Filet in eine Pfanne geben...
{/p}
Ergebnis

Zanderfilet

Zutaten

Zander
Filet

Zubereitung

Den Zander und das Filet in eine Pfanne geben...

Links

Mit dem Markup {link*linkziel*linktext} kann man anklickbare Links im Dokument erstellen.

Links zu externen URLs

Wenn ich als Linkziel eine URL angebe, wird der Betrachter des Dokuments die Möglichkeit haben, die angegebene URL in einem Web-Browser zu öffnen.
Beispielsweise baut man mit {link*https://eu.forums.blizzard.com/de/wow/*WoW-Forum} einen Link zu diesem Forum ein.
Aus naheliegenden Gründen wird diese URL nicht automatisch geöffnet. Dem Betrachter wird stattdessen ein Fenster zum kopieren der URL angeboten. Selbstredend sollte man solche URLs prüfen, bevor man sie öffnet.

Links zu Arbeitsabläufen

Wenn du den Namen eines Arbeitsablaufs als Linkziel angibst, z.B. {link*on_doc_link_click*Arbeitsablauf starten}, wird beim Anklicken der entsprechende Arbeitsablauf ausgeführt. Damit das funktioniert, muss der Arbeitsablauf innerhalb des Dokuments angelegt werden.
Mit etwas Fantasie kann man diese Links sehr vielfältig verwenden. Als Einstiegsbeispiel sei hier ein Musik-Dokument genannt, also ein Dokument, das verschiedene Links beinhaltet, die unterschiedliche Musikstücke abspielen.

Links mit Parametern

Wenn der Link einen Arbeitsablauf ansteuert, können an diesen Parameter übergeben werden.
{link*on_doc_link_click(var1=value1,var2=value2,...)*Arbeitsablauf starten}
In der Klammer stehen dabei die Variablen mit ihren zugehörigen Werten. Wenn der Spieler auf den Link klickt, werden diese Parameter als Arbeitsablauf-Variablen voreingestellt und sind im gesamten Arbeitsablauf verwendbar.

Variablen-Tags in Dokumenten

Dokumente können auch auf Variablen zugreifen. Man bindet sie mit ${variable} ein. Beachte das $-Zeichen, welches ein Variablen-Tag von den anderen Marken unterscheidet.
Wichtig ist hierbei, dass zuerst Variablen ausgewertet werden und danach die restlichen Marken. Damit werden sehr flexible Dokumente möglich, denn die Variable selbst kann Textmarken beinhalten.
Beispielsweise kann ich einer Variablen option den Wert {link*run_option_a*Option A} zuweisen. Mit ${option} landet dann dieser dynamisch erzeugte Link in meinem Dokument.
Mit Hilfe dieses Mechanismus wurden Minispiele in Extended realisiert.

Dokumente sind "faul"

Variablen werden nur zum Zeitpunkt der Anzeige des Dokuments ausgewertet. Wenn sich der Wert einer Variablen ändert, während das Dokument auf dem Bildschirm sichtbar ist, wird sich das Dokument nicht ändern.
Das ist meistens auch gewollt. Wenn sich das Dokument aber mit einer Variablen aktualisieren soll, musst du es mit dem Effekt „Dokument anzeigen“ erneut öffnen.


Viel Spaß beim Experimentieren und
:wave: bis zum nächsten Sonntag…

3 Likes

Danke für die Erklärung :slight_smile:

1 Like

Extended am Sonntag #5


Ein Minispiel: Geschenke Sortieren

Heute soll es um ein Extended-Item gehen, mit dem man ein kleines Spiel spielen kann.
In diesem geht es darum, Geschenke möglichst schnell in die richtige Kategorie (bzw. Geschenksack) einzusortieren. Wenn man den falschen Sack auswählt oder zu langsam ist, ist das Spiel zuende.

Import-Code

Probieren geht hier vor analysieren, deshalb gleich zu Beginn der Import-Code, danach die Erklärung.

Geschenksortierspiel

!TN1xtTnss8pllvQ6c5YzSSnBaxfpa2qaIrMWyc3LTwzpwASLonEgxZmcc416ZY9q(mSpLNo)f76EKKT5poqi3v7UxTa1OrJ65x)h1DpDl8C86456a)vUAzp3kEeNkvQvE7nFtTT305QRpXZTkqb5ixCmsyusCsN)HhPzBpsRJG7mEK9AJGqoC3SBpCFp3nlxgwVJ3EEesdCpAdvzWjKo4iYyclJ7i0baf(QOXW2PQH6Shq4sFkpTNp1WgkvxN2BN0EJOMWskQiqo6LoVoTx11tpoNUidBKlDeZs3lNKE8K16WccUU)SpRw71PhV2PjJhZSZouYVHfPzI(0qHDLpgjeAjpa4v2cNr1Ag3o9aP00NYZUzpAsmF2VAUjdjIFiSaJpEatfyx5ez)iE2d)inPptD1SVOgaqnfwcKQ1ElF2xcVIfLXhIjYpg0ToYbdyGSFAsqqKyyb4YyjNgKb3ju1nrJPz7ZvMmKAgRO8irUi3UV2elv9ZXvY55pypf1qhpixDiJzXjCQjkrBVVfRFCIFiqBHe6MO1XcQFmlZW9oM6MCOUGcIPy8aoBitZmz2hwatL2lreaQb4MKjT7X0gMFCbrxqv4RMdyC(OzFPW85o7ZH3WsMRUcgt7hgX6NZ5wr(HgMkMzYrTbD0yW8qt0QzFrBsal100JNU(pv4L8Z)0DDrCkV(pNEC6XGK8bQ6LOdgS6AY1WXITH3umF9vqBHdgEtX81bxE8xc8hpsdJcpsfCHQ33hpq6NmIjmD1HYRULR(Dc8s7neW(HGUgUqL7d9Luvxz))jZ)2HqxzdR3bdKjMWi9zs4TKNBnpYlMOW5tFiMufxyteA4AFWu6hcxNZpFjGr(n5sqMaaor(XDbaO3I9lymYjRaTtEQLvTrPLm18nzfr45)yX8Az7gP9tWtM9z)qWDtN27TOdetexQujiPINlKikitkGjmo9Aq(TBtGQiS4BUVX0W(0TnJTyrwx8Bss7XPIHA6OsPh3eIHTrSIyZn0qE90EVyI2xQytro6w5U2wdQaR2RWNl1S7)24nlSaNU78D25V7rMe6u3FAHgdIIwQmrmftmzJqhiUyY4PnPGr5cmQubzQ8dhaHLP9e0qtEeBqeBHvdXicxvi9dHrm8BoSMFadJ2JXI4WI7dG96jBmoJnt8L86LHFgmykzCeJJr1t2awDk4mZcN9RkyprcGFmyyzY7ZPjOeNrlbs7uc5tojBbenfsrXe6rrqwa(Tbfb7UOA3Yqi)GyvWsPiVblh4CdQHEiKntOnZ(SiG9y4NVxL0Cp0lSgWlf4seeNupsCz3rrA)U9Pd76uUBFEcR(pwB6)(FH)(W0muXyIhJiflajzotdRKX1LmStGJgIFL9O3x1sQTQK5VO)HP5InS1Wkzjai714DEUBbxrpmI7UWr8YyRBj(0dR29apYBHCshifgxPAeL3cIpyEKdoZRVh5IJYp0)qhKYMGtwK4AK4dtqQoScU87tG1Xf7MT6PfO2rk5MOXhYGJ6uEKtAIcXjqngUTZepB6WNzThqADBcZvw6Hkr09kPkEahZk)0ZULLKQ4uJ5j3s)LFPi92LlLeyP0jzBe1P2xc67Qob5bsZ)FzrDNNKGkG0HNTuQ4LYNzVfG153odSZFumWRwqFcg4Q)2zGR(hfd8Qf0hZaV45FnR8JDq9Qk7Bf1MLjA)vBTz2QgS1L58qgZVXQ(wgz18k(EqKxuQ3tc5Nx9KyvBzvS9N989N989)N98TOxIV3Us2cr6R1NWZV7rSvcY2F7z2CkJRSfsU53zDeUDXCqgVNE9)Ug5S3o)8VV2PgF)5Ox15k3t7S96DfvHTRaddOC0RBE7jpd18Ho05XCwQU49Z3A)QPhxCmsPfXm1TTTz7V5ftkIbNA7DbFY74qYualAYG820uycKOH40cm0GfWctEVz2oJW6wF1xVnTIwWkOVYkOFElB3DdvxXgYBFlV)TmR1VV7bZuiyn3h82XMkzqh9SOLTYzVo1y))aYe4vVZwG)95eSBSw4(k(0aEKgTrHg1YL(6exzZ9ZZraIPasE)U2qdWxcvs74h21McTHvVBI8PcQ4h1a8qlm0dJgy6wgIkE)(ivN7IJK9WXgwCVyFeetrBIsX5A2ZpsENVNi5VHu7zFg(NuG6tqExu3z5hsExkuoGzOrCT1aTFJUNT)UK2UDHxbhDANCGZeTIgdY2MTrDs7ZlSVMcplstqMRTHtLnQ4aNx7u3PwDhyRnW(2zC2Lm9FRtiuQd4h8bWXgIlc(aypkvRun77X7rf6RUpKLXaKB)pAqA1gLBaZBXRYBxFZ3uVgEWb6eII3rwFJZWtXjKJGlFQM1TakAL08CRV2jxK7TOz(jQiZ1TaMZT6n4E3jJ8mDKSlmvXapzDSn5KakEizu2Po9zdHYozcek8RzCe(HlSomwnZ459Fc

Dieses Item verwendet einen Lua-Skripteffekt, um die zufälligen Geschenke zu erzeugen. Daher ist die Sicherheitsstufe des Items niedrig.

Wie es funktioniert

Grundstruktur

Das Spiel-Item enthält zwei innere Dokument-Objekte. Das Dokument intro weist den Spieler in das Spiel ein, es enthält einen Link, mit dem sich das Spiel starten lässt.
Die Hauptarbeit leistet das Dokument game. Damit wird eine komplette Spielrunde modelliert, also:

  • Geschenk zufällig auswählen
  • Geschenk anzeigen
  • Aktion des Spielers auswerten

Geschenk auswählen

Jedes Geschenk wird zufällig aus 30 möglichen Geschenken ausgewählt. Diese sind vorab einer der drei Kategorien zugeordnet. Die Auswahl wird von einem Lua-Skripteffekt übernommen.
In diesem Effekt verwende ich math.random, um zufällige Werte auszuwürfeln, sowie setVar. setVar ermöglich es mir, Objektvariablen aus dem Skripteffekt heraus zu setzen. Ich exportiere also die beiden Ergebnisse category, damit das Spiel weiß, was die richtige Lösung ist, sowie itemName, damit der Spieler sieht, um welches Geschenk es sich handelt.

Erste Abbruchbedingung: Falsche Kategorie

Falls der Spieler den falschen Geschenksack erwischt, soll das Spiel beendet werden. Dazu bereite ich zwei Arbeitsabläufe vor: nextRound und gameOver. Diese beiden Arbeitsabläufe werden innerhalb der drei Arbeitsabläufe cat1, cat2 bzw. cat3 aufgerufen, diese wiederum durch Klicks auf die im game-Dokument dargestellten Säcke.
gameOver wird dabei ausgelöst, wenn der vorher gespeicherte Wert von category nicht mit der Kategorie übereinstimmt. (Beachte die Effektbedingung)

Zweite Abbruchbedingung: Zu langsam

Für diese ist ein kleiner Trick nötig. Zunächst starte ich nach dem Anzeigen des game-Dokuments einen Verzögerungs-Effekt. Nachdem die Verzögerung abgelaufen ist, ist das Spiel gelaufen, aber halt! Das soll natürlich nur dann passieren, wenn die Spieler zwischendurch nichts angeklickt hat.
Das realisiere ich mit einem Rundenzähler round. Diesen gibt es einmal als Objektvariable und einmal als Arbeitsablauf-Variable thisRound. Zu Beginn jeder Runde (d.h. nachdem der Spieler etwas angeklickt hat) erhöhe ich den Rundenzähler um eins und weise dann diesen Wert der Variable thisRound zu. Auf diese Weise kann ich erkennen, ob ein „Timeout“ noch gültig ist (round = thisRound), oder nicht (round > thisRound).
An dieser Stelle sei nochmal daran erinnert, dass Arbeitsablauf-Variablen eine kürzere Gültigkeit haben als Objekt-Variablen. Mit jedem Klick im Dokument erzeuge ich neue Arbeitsablauf-Variablen, deshalb kann es auch mehrere Versionen der Variable thisRound geben, die Objektvariable gibt es aber nur ein einziges Mal pro Item.

Ende des Spiels

Am Ende des Spiels zeige ich eine lapidare Meldung an, weshalb das Spiel beendet wurde (zu langsam oder falsch geklickt), dazu noch eine Punktzahl score, die ich vorher in jeder Runde um eins erhöht habe.

Genug Platz für Ideen

Das Item ist ausdrücklich nicht nur dazu da, benutzt zu werden, sondern auch verbessert.

Zum Beispiel kannst du dich an folgendem versuchen:

  • Verändere die Liste der Geschenke oder füge welche hinzu.
  • Gestalte das game- und intro-Dokument hübscher.
  • Verschönere die „Spiel zuende“-Meldung, und/oder baue einen „nochmal spielen“-Link ein.
  • Verringere oder erhöhe die Zeit, die der Spieler zum Reagieren hat.
  • Hübsch sortierte Säcke. Wäre doch schade drum, wenn jemand in jeder Runde die Reihenfolge vertauschen würde… Wer tut sowas nur?
  • Mach ein Endlosspiel draus. Bei Fehlern gibt es Punktabzug statt Spielende.
  • Speichere einen Highscore ab.
  • Es geht auch ohne Lua-Skript. Überführe das Skript in normale Arbeitsablauf-Elemente.
  • (für Fortgeschrittene) Ein Dokument reicht auch aus. Versuche, das ganze Spiel mit einem einzigen Dokument zu bauen.

Viel Spaß beim Experimentieren und
:wave: bis zum nächsten Sonntag…

3 Likes

Extended am Sonntag #6


Zwischensequenzen

Zwischensequenzen (engl. Cutscenes) oder Dialoge sind, ähnlich wie Dokumente, besondere Objekte, die eine bestimmte Situation auf dem Bildschirm anzeigen. In Zwischensequenzen geht es darum, eine Szene mit bis zu zwei Akteuren darzustellen. Sie sind maßgeschneidert für die Anzeige von Dialogen, insbesondere innerhalb von Quests, z.B.:

  • Erklärung einer Questaufgabe in Dialogform
  • ein NSC erzählt etwas
  • Darstellung von Interaktionen mit Objekten (Truhen, Geräte,…)

Wie Dokumente sind auch Zwischensequenzen keine eigenständigen Objekte, sondern müssen als innere Objekte eingebettet werden.

Sichtbare Struktur

Für den Spieler sichtbar ist ein Fenster mit zwei 3D-Modellen, die sich anschauen. Im unteren Bereich befindet sich ein Textfeld, welches den gesprochenen Text der Akteure darstellen kann.
Jede Zwischensequenz kann aus mehreren „Szenenbildern“ bestehen. Mit einem Klick auf das Textfeld gelangt man zum nächsten Schritt.
Außerdem ist es möglich, dem Spieler bis zu fünf Wahlmöglichkeiten anzubieten. In diesem Fall muss sich der Spieler für eine der angebotenen Optionen entscheiden, bevor es weitergeht.

Anzeige einer Zwischensequenz

Mit dem Effekt „Kampagne und Quests > Zwischensequenz starten“ wird eine bestimmte Zwischensequenz angezeigt. Diese beginnt jedes Mal von vorn. es ist also nicht möglich, eine Zwischensequenz ab einem bestimmten Schritt starten zu lassen.
Auch wenn der Effekt unter „Kampagnen“ gelistet ist, können Zwischensequenzen auch außerhalb einer Kampagne verwendet werden.

Verlauf einer Zwischensequenz

Der einfachste Dialog verläuft geradlinig. Jeder Dialogschritt wird der Reihe nach durchlaufen.

Aber es geht noch viel dynamischer.

Wahlmöglichkeiten

Mit der Schaltfläche „Wahlmöglichkeiten“ öffnet man das Menü zur Einstellung von Optionen. Jede Option ist mit einer Schrittnummer versehen. Eine Wahlmöglichkeit ist also eine Sprungmarke. Nachdem der Spieler auf eine Option klickt, springt der Dialog zum angegebenen Schritt.
Optionen können auch mit Bedingungen versehen werden. Man kann den Spieler also auch in seiner Auswahl einschränken. Bestimmte Optionen könnten nur Magiern zur Verfügung stehen, oder nur dann, wenn man vorher eine bestimmte Quest erledigt hat, oder oder oder…

Nächster Schritt

Im Feld „Nächster Schritt“ kann man eintragen, womit es im Dialog weitergehen soll. Das ist zusammen mit Wahlmöglichkeiten praktisch, denn auf diese Weise kann man Dialogteile überspringen, die zu einer anderen Auswahl gehören.
Wenn man das Feld leer lässt, geht es mit dem direkt folgenden Schritt weiter.
Es ist auch möglich, im Dialog rückwärts zu springen, bspw. wenn man möchte, dass der Spieler solange probiert, bis die „richtige“ Option gefunden wurde.

Endschritt

Setzt man die Markierung Endschritt, hört der Dialog nach Anzeige des betreffenden Schritts auf, auch wenn danach noch weitere Schritte folgen sollten. Auch das ist im Zusammenhang mit Wahlmöglichkeiten interessant, denn so lassen sich Dialogteile am Ende überspringen.

Ereignisse und Arbeitsabläufe

Vor, während, und nach einer Zwischensequenz treten Ereignisse ein, die man mit Arbeitsabläufen verknüpfen kann.

  • Bevor der Dialog startet, tritt das Ereignis „Dialog startet“ ein.
  • Nachdem der Dialog beendet wurde, tritt das Ereignis „Dialog beendet“ ein. Wichtig: Dieses Ereignis tritt nicht ein, wenn der Spieler das Dialogfenster zwischendurch schließt.
  • Jeder einzelne Dialogschritt kann mit einem Arbeitsabluf verknüpft werden. Dieser wird vor der Anzeige des Schritts ausgeführt. Hier kann man z.B. Sounds einbauen.

Akteure

Bei „Linkes Modell“ und „Rechtes Modell“ können wir einstellen, wer oder was angezeigt werden soll. Dazu stehen verschiedene Optionen zur Verfügung.

Spielfigur

Geben wir player ein, erscheint die Spielfigur des Spielers.
Bitte beachte, dass es nicht möglich ist, das Aussehen der eigenen Spielfigur in Extended abzuspeichern, bspw. kann ich nicht meinen Charakter als Akteur in einem Dialog anzeigen, den du auf deinem Account ansiehst.

Ziel

Mit target legen wir fest, dass das momentan anvisierte Ziel angezeigt werden soll.
In der einfachsten Version eines Questgeberdialogs steht demnach auf einer Seite player und auf der anderen target.

NSC-Id

Wenn man einen numerischen Wert eingibt, z.B. 10184, wird der NSC mit der angegebenen Id dargestellt, in meinem Beispiel Onyxia. Wer sich an den Beitrag zu Sounds erinnert, wir ahnen, woher ich diese Id kenne: https://www.wowhead.com/npc=10184/onyxia. Man suche nach dem Namen des gewünschten NSC, und der Wowhead-Link wird dessen Id enthalten.
Bei der Benutzung von NSC-Ids ist allerdings Vorsicht geboten:

NSC-Anzeige-Id

NSC-Ids haben zwei Einschränkungen:

  • Das NSC-Modell wird nur angezeigt, wenn es sich im Cache befindet. Das ist normalerweise der Fall, wenn man in letzter Zeit in der Nähe des NSCs war. Beim oberen Beispiel würde Onxyia wahrscheinlich nur dann zu sehen sein, wenn man in letzter Zeit die Raidinstanz besucht hat.
  • Manche NSCs haben mehrere Modelle. Die meisten Stadtwachen haben z.B. ein weibliches und ein männliches Modell. Wenn man die NSC-Id benutzt, wird ein zufälliges Modell ausgewählt.

Beide Einschränkungen kann man mit Anzeige-Ids (engl. display id) umgehen. Diese Ids sind auch auf Wowhead zu finden. Dazu klicke ich auf „Links“ und dann „Anzeige ID“. Wowhead sagt 8570. Damit Extendend normale NSC-Ids von Anzeige-Ids unterscheiden kann, muss ich DID voranstellen. Ich trage also DID8570 ein und Onyxia erscheint (mal wieder).

Wer ein Bisschen auf Wowhead stöbert, wird merken, dass dort immer nur eine einzige Anzeige-Id steht, selbst wenn es mehrere Modelle gibt.
Leider ist es nicht so leicht, alle Anzeige-Ids eines NSCs zu finden, meistens liegen die numerischen Werte aber nahe beieinander. Die gefundene Id plus/minus 1,2,3,… liefert oft die anderen Modelle.

Noch etwas Deko

Dialogtext

Neben Variablen-Tags (${variable}) kann man auch Sternchen oder Spitze Klammern verwenden, um Emotes zu kennzeichnen. Diese erscheinen dann in der gewohnten Emote-Farbe.
Beispiel: <Der Questgeber gähnt laut.> Was willst du?

Hintergrund

Standard-Hintergrund einer Zwischensequenz ist eine nachtelfisch angehauchte Szene. Dort kann man jeden Bildpfad aus dem Spiel eingeben, sofern man ihn kennt. Wie man diese findet, steht in einem anderen Tutorial. :wink:
Fürs erste kannst du versuchen, nightelf im Standardpfad durch den englischen Namen eines anderen Volks zu ersetzen, um thematisch an deren Hintergrundbilder zu kommen.

Bild

Zusätzlich zum Hintergrund ist es möglich, ein Bild in der Mitte des Dialogs anzuzeigen.


Viel Spaß beim Experimentieren und
:wave: bis zum nächsten Sonntag…

2 Likes

Extended am Sonntag #7


Heute mal etwas für Fortgeschrittene und/oder Unerschrockene:

Der Lua-Skripteffekt

WoW-Addons (und auch Weakauren) sind in der Programmiersprache Lua geschrieben. Auch Extended erlaubt es, Lua-Codeschnipsel in eine Kreation einzubauen, falls die vorgefertigten Effekte nicht ausreichen sollten.
Den Effekt findest du unter „Experte > Eingeschränktes Lua-Skript ausführen“.

Eingeschränkt?

Extended kennt verschiedene Sicherheitsstufen. Der Lua-Effekt ist als niedrig eingestuft, trotzdem bietet das Addon einen gewissen Schutz, denn man kann mit dem Effekt nicht beliebigen Code ausführen. Wir werden gleich sehen, dass der Funktionsumfang trotzdem recht groß ist.
Damit erfüllt der Lua-Effekt seinen Zweck als „Sammelstelle“ für vieles, was mit den anderen Effekten nicht geht.
Die Blizzard-API bleibt dem Effekt allerdings verwehrt.

Das Basispaket

Zunächst kann man neben den Strukturelementen if, for, function, … die globalen Elemente date, ipairs, math, next, pairs, select, string, table, tonumber, tostring, type und unpack benutzen.
string ist hier besonders hervorzuheben, denn darin stecken die üblichen Funktionen zur Manipulation von Zeichenketten.
Auch math kann interessant sein, wenn man bspw. eine Wurzel berechnen muss zur Entfernungsmessung.

Der Eingabeparameter args

Code, den man in das Eingabefeld eingibt, wird letztendlich als Funktion ausgeführt:

function(args)
-- dein Code wird hier eingefügt
end

args ist dabei ein Parameter, den man weiterreichen sollte, wenn man die folgenden Funktionen verwendet.

getVar und setVar

Mit getVar kann man Variablen aus Arbeitsablauf, Objekt oder Kampagne in das Skript laden:

local wfVar   = getVar(args, "w", "workflowVar")
local objVar  = getVar(args, "o", "objectVar")
local campVar = getVar(args, "c", "campaignVar")

Umgekehrt kann man mit setVar ein Ergebnis, das im Skript berechnet wird, in Arbeitsablauf, Objekt oder Kampagne speichern:

setVar(args, "w", "workflowVar", wfVar)
setVar(args, "o", "objectVar", objVar)
setVar(args, "c", "campaignVar", campVar)

Effekte auslösen mit effect

Aus einem Lua-Skript heraus kann man auch Effekte auslösen. Das ist praktisch, denn so kann man sich pro Arbeitsablauf auf ein Skript beschränken, sofern man überhaupt auf Skripte angewiesen ist.
Grundsätzlich löst man Effekte mit

effect("effect_id", args, ...)

aus. Man muss also die Ids der Effekte kennen. Bevor ich mit einer langweiligen Liste aufkreuze, lieber ein paar Beispiele.

effect("text", args, "Gruß aus Luanien", 1)
-- gibt einen Text im Chatfenster aus

effect("item_add", args, nil, "xyz123", "5", false)
-- legt 5 Mal das Item mit der Id xyz123 ins Inventar

effect("sound_id_self", args, "SFX", 1234, false)
-- spielt den Sound mit der Id 1234 im SFX-Kanal ab
Alle Effekt-Ids
cam_load
cam_save
cam_zoom_in
cam_zoom_out
companion_dismiss_critter
companion_dismiss_mount
companion_random_critter
companion_summon_mount
dialog_quick
dialog_start
do_emote
document_close
document_show
item_add
item_bag_durability
item_consume
item_cooldown
item_loot
item_remove
item_roll_dice
item_sheath
item_use
quest_goToStep
quest_markObjDone
quest_revealObjective
quest_start
run_item_workflow
run_workflow
script
secure_macro
signal_send
sound_id_local
sound_id_local_stop
sound_id_self
sound_id_stop
sound_music_local
sound_music_local_stop
sound_music_self
sound_music_stop
speech_env
speech_npc
speech_player
text
var_object
var_operand
var_prompt

Operanden auswerten mit op

result = op("operand_id", args, ...)

wertet den Operanden mit einer vorgegebenen Id aus und gibt das Ergebnis an die Variable result zurück. Auch hier muss man die Ids kennen.
Zum Beispiel:

local playerName = op("unit_name", args, "player")
-- gibt den Namen des Spielers

local playerName = op("time_hour", args)
-- gibt die momentane Stunde

local itemCount = op("inv_item_count", args, "xyz123", nil)
-- gibt an, wieviele Items mit der Id xyz123 im Inventar sind
Alle Operanden-Ids
char_achievement
char_cam_distance
char_facing
char_falling
char_flying
char_indoors
char_minimap
char_mounted
char_resting
char_stealth
char_subzone
char_swimming
char_zone
check_event_var
check_event_var_n
date_day
date_day_of_week
date_month
date_year
inv_container_slot_id
inv_item_count
inv_item_icon
inv_item_id_weight
inv_item_name
inv_item_quality
inv_item_value
inv_item_weight
quest_is_npc
quest_is_step
quest_obj
quest_obj_all
quest_obj_current
random
time_hour
time_minute
unit_class
unit_classification
unit_creature_family
unit_creature_type
unit_distance_inspect
unit_distance_me
unit_distance_point
unit_distance_trade
unit_exists
unit_faction
unit_guild
unit_guild_rank
unit_health
unit_id
unit_is_dead
unit_is_player
unit_level
unit_name
unit_npc_id
unit_position_x
unit_position_y
unit_race
unit_sex
unit_speed
var_check
var_check_n

Benutze den Skript-Effekt sparsam

Wenn der Lua-Effekt alles kann, was die anderen Effekte auch können, könnte man in Versuchung kommen, einfach alles mit einem Skript umzusetzen.
Davon sollte man aus mindestens zwei Gründen absehen:

  1. Der Effekt ist als letztes Mittel gedacht, falls es unmöglich sein sollte, die Kreation auf andere Weise zu erstellen.
  2. Der Effekt umgeht den normalen Schritt-für-Schritt-Ansatz des Addons und macht Arbeitsabläufe schwerer nachvollziehbar.

Überlege also, ob es wirklich ein Skript sein muss, oder ob es vielleicht auch einfacher geht.

Den Überblick behalten

In seiner Rolle als Auffanglösung hat der Skript-Effekt nur ein einfaches Eingabefenster bekommen, in das der Lua-Code hineingeschrieben werden muss.
Ich empfehle, den Code in einem „guten“ Editor, z.B. einem mit Syntaxhervorhebung, zu schreiben, und dann alles zu kopieren und in das Fenster einzufügen.
Verwende Kommentare ausgiebig, damit du auch noch nach Wochen weißt, was dein Code macht oder machen soll.


Viel Spaß beim Experimentieren und
:wave: bis zum nächsten Sonntag…

1 Like