PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Notizbuch für Quests (Logbuch)



Jadoo
07.04.2007, 01:35
Hallo,

habe soeben über die Suche schon einige Themen entdeckt (u.a. dieser (http://www.multimediaxis.de/showthread.php?t=24920) hier), aber ich komme noch nicht so richtig weiter.

Vorgestellt hatte ich es mir in etwa so:

Notizbuch = ein Item, dass man als Gegenstand mit sich trägt. Bei Aufruf des Buches wird dann ein Bild angezeigt, wo man folgende Übersicht bekommt:

1. Bereits erledigte Aufgaben in Zahlen (Du hast bereits X Aufgaben erledigt) - Variable dafür existiert bereits, da ich damit schon etwas getestet hatte.

2. Eine Übersicht aktueller Aufgaben, die noch nicht erledigt sind. Ob ich bereits erledigte Quests noch aufführen lasse, weiß ich noch nicht.

3. Wenn man eine Aufgabe auswählt, kann man noch eine Erklärung anzeigen lassen (kann auch eine normale Message sein).

Was ich jetzt überlege: Sollte ich das Notizbuch als Gegenstand benutzen, weil ich beim Standardmenü bleiben möchte, würde es mich stören, wenn der Gegenstand dann ganz zuletzt angezeigt wird und man alle anderen Items dafür überspringen muss. Schöner würde ich es dann eher finden, wenn man einen Extraeintrag im Menü dafür hätte. Weiß aber nicht (glaube es auch nicht), dass man das ins Standardmenü integrieren kann.

Wenn ich jetzt nur ein "Obermenü" mache, also mit folgender Auswahl:

Menü - Quests - (eventuell weiteres)

würde es wieder stören, wenn ich ins Menü gehen will und dafür zweimal bestätigen muss (weil erst "Menü" auswählen) um hineinzukommen.

Letzteres würde ich aber in Kauf nehmen, wenn es anders nicht geht, zumal das Logbuch ja auch leicht aufrufbar sein sollte.

Wenn ich jetzt ein komplett eigenes Menü mache, wäre es möglich, die einzelnen Rubriken des Standardmenüs aufrufen zu lassen, anstatt dafür auch nochmal selbst etwas zu erstellen?

Was könnt ihr mir empfehlen? Das im verlinkten Thread beschriebene Logbuch klingt jedenfalls sehr gut schon mal (schade, dass die Screenshots von damals nicht mehr existieren).

Und noch ne Frage^^: Kann man das Menü/Logbuch auch später noch machen, wenn das Spiel bereits fortgeschritten ist, oder sollte es von Anfang an mit einbedacht werden?

Danke!

Centipede
07.04.2007, 15:34
Hallo!

Also ich würde dir den Vorschlag machen, falls du den rm2k3 benutzt, einfach so zu machen,dass per Druck auf SHIFT das Buch aufgerufen wird.
Das geht bei "EnterPassword".
Wenn du den rm2k benutzt dann kannst du dir den Tastenpatch laden, dann gehts auch!

Tastenpatch (http://www.rpg2000.4players.de:1061/sonstiges/utils/InelukiKeyPatchv1-2.zip)


Und noch ne Frage^^: Kann man das Menü/Logbuch auch später noch machen, wenn das Spiel bereits fortgeschritten ist, oder sollte es von Anfang an mit einbedacht werden?

Ja, klar! ^^


Wenn ich jetzt ein komplett eigenes Menü mache, wäre es möglich, die einzelnen Rubriken des Standardmenüs aufrufen zu lassen, anstatt dafür auch nochmal selbst etwas zu erstellen?


Ja, mit dem Befehl "Menü Aufrufen"

Hoffe, ich konnte dir etwas helfen!
MfG

Jadoo
07.04.2007, 15:48
Hallo Centipede und danke für deinen Vorschlag,

nutze den rm2k (sorry, dass ichs vergessen hab zu erwähnen), werde mir den Patch mal anschauen.


Ja, mit dem Befehl "Menü Aufrufen"

Ja das würde gehen, war mir auch schon klar. Was ich eher meinte wären aber die einzelnen Rubriken des Menüs (Gegenständen, Ausrüstung usw.) anstatt nur das komplette Menü.

Ich habe leider auch kein Skript gefunden bisher, würde mir das gerne mal anschauen, wie so ein Logbuch aufgebaut ist. Können werde ichs sicherlich, nur fehlt mir da mal wieder der Ansatz zum Aufbau :(

Centipede
07.04.2007, 16:29
Ja das würde gehen, war mir auch schon klar. Was ich eher meinte wären aber die einzelnen Rubriken des Menüs (Gegenständen, Ausrüstung usw.) anstatt nur das komplette Menü.

Das ist mit den Standart Funktionen nicht möglich.
Dann müsstest du ein komplett eigenes Menü basteln!

Willst du den ein Ringmenü oder ein Map-Menü machen?

Hier mal 2 Beispiele von mir :

Ring Menü (http://img243.imageshack.us/img243/6236/ringmenwz8.png)
Map Menü (http://img243.imageshack.us/img243/3171/inventar1va5.png)

Und hier Skripte für eigene Menü´s :

http://www.rpg2000.4players.de:1061/scripts/Ringmenue.zip
http://www.rpg2000.4players.de:1061/scripts/ringmenue2.zip
http://www.rpg2000.4players.de:1061/scripts/mappingskript.zip
http://www.rpg2000.4players.de:1061/scripts/menuskr.zip
http://www.rpg2000.4players.de:1061/scripts/Menuskript.zip

MfG

Jadoo
07.04.2007, 17:31
Vielen Dank!

Habe mir mal ein paar der Skripte geladen und angesehen. Werde mich da mal durcharbeiten und testweise ein Menü mal erstellen.

Aber wie wäre der Ansatz für ein Logbuch? Gut, das Erste wäre ja ein Show Picture für den Hintergrund, danach das Anzeigen einzelner Einträge.

Wenn ich eine Umrandung nehmen möchte, anstatt zB. einen Pfeil, müsste ich ein Picture dafür erstellen oder? Naja mal sehen, ich denke ein Pfeil als Cursor ist auch nicht schlecht.

Also für das Logbuch verstehe ich folgendes:

> Show Picture "Hintergrund"
> If Var. "Aufgabe1" = 1
> Show Picture "Aufgabe1"

Dann müsste ich irgendwie noch integrieren, dass man die einzelnen Pictures auswählen kann

> Enter Passwort 5 - warten auf eingabe
> If Var. Passwort = 5
> Show Message: Beschreibung der Aufgabe

Nur wie bekomme ich das Ganze dann in ein Event hinein? Oder muss dann für jeden Eintrag der Aufgabe ein separates Common Event erstellt werden :confused:

Blick da irgendwie noch nicht ganz durch :(

Edit: Das Menü hab ich jetzt soweit verstanden, werde es selbst mal ausprobieren, um es mir besser einzuprägen.

Fürs Logbuch hätte ich da eine Idee: Damit das Ganze nicht in Common Events ausharrt (sondern nur einen einzigen Punkt dafür), könnte ich doch eine Map extra dafür anlegen. So könnte man dann dorthin teleportieren und danach wieder zurück. Man müsste nur einen Punkt im Common Event setzen, dass der Ort, wo der Held sich gerade befindet, gemerkt wird, und dann automatisch zurückteleportiert wird.

Naja mal sehen ...

Centipede
07.04.2007, 22:23
Wenn ich eine Umrandung nehmen möchte, anstatt zB. einen Pfeil, müsste ich ein Picture dafür erstellen oder?

Ja. Ist am besten!


Also für das Logbuch verstehe ich folgendes:

> Show Picture "Hintergrund"
> If Var. "Aufgabe1" = 1
> Show Picture "Aufgabe1"

Warum nimmst du ne Variable??
Nimm leiber nen Switch, und wenn der Held die Aufgabe gelöst hat, kommt der Switch auf AUS. dann erscheint die Aufgabe auch nicht mehr im Log!
So würde ich das machen!


Dann müsste ich irgendwie noch integrieren, dass man die einzelnen Pictures auswählen kann

> Enter Passwort 5 - warten auf eingabe
> If Var. Passwort = 5
> Show Message: Beschreibung der Aufgabe

Das kannste soweit machen!


Nur wie bekomme ich das Ganze dann in ein Event hinein? Oder muss dann für jeden Eintrag der Aufgabe ein separates Common Event erstellt werden

Ein Comment Event reicht aus!


Fürs Logbuch hätte ich da eine Idee: Damit das Ganze nicht in Common Events ausharrt (sondern nur einen einzigen Punkt dafür), könnte ich doch eine Map extra dafür anlegen.

Würde ich nicht machen, da wenn der Held zurück auf die Ausgangsmap teleportiert wird, alle Events der Ausgangsmap wieder auf den Anfang gesetzt
werden!

Das heißt : Der Spieler kann so vor z.b. Monster flüchten die ihn verfolgen.
Er ruft das Menü auf, und beendet es wieder und dann si das Monster nicht mehr hinter ihm!
(mal so als beispiel)


MfG

Jadoo
07.04.2007, 22:38
Hallo,


Warum nimmst du ne Variable??
Nimm leiber nen Switch, und wenn der Held die Aufgabe gelöst hat, kommt der Switch auf AUS. dann erscheint die Aufgabe auch nicht mehr im Log!
So würde ich das machen!

Ich würde da lieber eine Variable nehmen, weil man dann jeweils nur eine braucht, wenn es zB. wie folgt aussehen soll:

Aufgabe noch nicht erhalten (Var. = 0)
Aufgabe erhalten, aber noch nicht gelöst (Var. = 1)
Aufgabe gelöst (Var. = 2)

Außerdem würde es das Spiel stören, wenn ich zB. denselben Switch der Aufgabe nehmen würde. Wenn ich den dann nämlich ausschalte, würden bestimmte Events dann auch ausgeschaltet werden oder sogar wieder von Neuem beginnen.

Sollte ich die bereits gelösten Aufgaben nicht mehr anzeigen lassen, könnte ich sicherlich einen Switch nehmen - einen unabhängigen Switch natürlich, was das andere s.o. betrifft. Geht aber eben auch per Variable.



Nur wie bekomme ich das Ganze dann in ein Event hinein? Oder muss dann für jeden Eintrag der Aufgabe ein separates Common Event erstellt werden
Ein Comment Event reicht aus!

Überlege gerade .... eventuell könnten auch 2 Common Events benötigt werden, wenn man in diesem Logbuch zB. eine weitere Seite erstellt, sollte die erste bereits voll sein.

Bin gerade dabei mal ein Menü zu erstellen, ich denke wenn ich das erstmal drin habe wirds auch leichter mit dem Logbuch klappen.

Centipede
07.04.2007, 23:39
Außerdem würde es das Spiel stören, wenn ich zB. denselben Switch der Aufgabe nehmen würde. Wenn ich den dann nämlich ausschalte, würden bestimmte Events dann auch ausgeschaltet werden oder sogar wieder von Neuem beginnen.

Alternativ könnte man natürlich einen gesonderten Switch nehmen, einen "ExtraSwitch" ;)
Aber machs, wie du willst!
Im Endeffekt ist es ja auch egal!


Bin gerade dabei mal ein Menü zu erstellen, ich denke wenn ich das erstmal drin habe wirds auch leichter mit dem Logbuch klappen.

Ja, probier einfach etwas herum, das ist gar nicht so schwer! :D

MfG

Jadoo
08.04.2007, 00:13
Ja, den "Extra-Switch" meinte ich ja auch dann, deswegen ist es ja auch egal ob nun Switch oder Variable. Wobei die Variable natürlich den Vorteil hat, dass man sie, bei verändertem Wert, auch noch für weitere Zwecke einsetzen kann, zB. siehe oben.


das ist gar nicht so schwer!

Ist es auch nicht. Man muss nur wissen wie es geht und das Prinzip verstehen. Ist bei mir meistens der Ansatz, der fehlt, sozusagen: "Wo fange ich jetzt an?". Naja, manchmal sind es sehr kleine Dinge, die einem in bestimmten Momenten nicht einfallen. Alsbald aber doch, dann kommt: "Achsooooooo, das war es, menno!" :D

:)

Centipede
08.04.2007, 00:15
Naja, dann probier mal!
Wenn du noch fragen hast, werd ich sehen ob ich dir vielleicht helfen kann! :D

*ab ins Bett*

MfG

Jadoo
08.04.2007, 17:51
Juhu :D ... das Zugriffsmenü ist fertig und funktioniert prima ^.^



Kann man das Menü/Logbuch auch später noch machen, wenn das Spiel bereits fortgeschritten ist

Ja klar!

Mir ist aber etwas aufgefallen: Das man es später noch einbauen kann, ist sicherlich kein Problem. Aber man sollte etwas beachten, nämlich: Hat man zB. auf einer Map einen Lichteffekt als Show Picture im Parallelen Prozess laufen, muss dieses eine höhrere ID haben als die Pictures im Menü. Hat man zB. 4 Bilder insgesamt im Menü, so muss überall, wo ein Bild auftaucht (zB. Lichteffekt) dieses auf ID 5 gesetzt werden, sonst ist das Menü nicht aufrufbar. Oder man deaktiviert eben das Menü dann.

Nun hab ich aber immernoch Fragen zum Logbuch: Dieses funktioniert ja ähnlich einem Menü, weil man eben darin auch navigieren kann. Deshalb kann ich mir immernoch nicht vorstellen, dass dafür ein Common Event ausreicht. Das Menü alleine braucht ja schon 3 Events + je ein Event für je einen Menüeintrag. :confused:

Centipede
08.04.2007, 20:03
Mir ist aber etwas aufgefallen: Das man es später noch einbauen kann, ist sicherlich kein Problem. Aber man sollte etwas beachten, nämlich: Hat man zB. auf einer Map einen Lichteffekt als Show Picture im Parallelen Prozess laufen, muss dieses eine höhrere ID haben als die Pictures im Menü. Hat man zB. 4 Bilder insgesamt im Menü, so muss überall, wo ein Bild auftaucht (zB. Lichteffekt) dieses auf ID 5 gesetzt werden, sonst ist das Menü nicht aufrufbar. Oder man deaktiviert eben das Menü dann.

Ich schreib mir das immer auf, welche Picture,w elche ID haben, dann kann nix passieren! ^^


Nun hab ich aber immernoch Fragen zum Logbuch: Dieses funktioniert ja ähnlich einem Menü, weil man eben darin auch navigieren kann. Deshalb kann ich mir immernoch nicht vorstellen, dass dafür ein Common Event ausreicht. Das Menü alleine braucht ja schon 3 Events + je ein Event für je einen Menüeintrag.

Warum nicht?
Nimm ein Comment Event und stell die Start Kondition auf "Rufen"
Dann machst du immer Forks in denen Abgefragt wird, ob der Switch/Variable An/Aus ist/welchen Wert die Vari hat.
Darunter kommt dann einfach der restliche Code.
Das ist nicht schwer!

Jadoo
08.04.2007, 21:54
Hallo,

du meinst ein Common Event, wo per Forks alle Variablen abgefragt werden und am Schluss dieser "Abfrage" dann der Code, der die bestimmten Aufgaben und Bilder dann anzeigt, je nachdem welche Variable aktiv ist?

OK, dann versteh ich schon so ungefähr. Muss es nur mal umsetzen und probieren ...

Phönix Tear
08.04.2007, 22:51
Ein Logbuch...
In deiner PN hast du ja angesprochen, dass du es so haben willst, dass die Aufträge in der Reihenfolge aufgelistet werden wie man sie findet (nach Datum sortiert zozusagen).
Ich werde mal versuchen das so gut wie möglich zu erklären.

Um ein vernünftiges Logbuch zu bauen brauchst du als erstes eine "Liste" in der du die Aufträge, bzw. deren IDs einträgst. Ich werde als Beispiel diese benutzen:

1: "Die einsame Mine"
2: "Des toten Mann's Truhe"
3: "Ein frischer Fisch am Morgen"
4: "Schatten von Angmar"
Die Zahl steht natürlich jeweils für die ID welche dieser Auftrag im Maker hat. Am besten legst du dir gleich eine Liste (z.B. in Word) an in der du alle Aufträge mit Erläuterung abspeicherst.
Die Liste im Maker lässt sich am besten durch eine Reihe von Variablen (z.B der Bereich von Variable 100 bis Varibale 200) herstellen. Jede dieser Variablen hat nun einen Wert. Zu Beginn des Spiels ist dieser Wert 0. Bekommt man den ersten Auftrag wird die Variable 100 auf die ID dieses Auftrages gesetzt. Beim zweiten Auftrag entsprechend die Variable 101.
Problem bei der Sache ist nun, das es sein kann, das der Variablenplatz aufgebraucht wird. Daher empfiehlt sich, bei z.B. Variable 1000 anzufangen und bis 1300 freizulassen (nur für alle Fälle ;) ).
Es ist nun also sehr wichtig, das diese Variablen auch nur von den Aufträgen und deinem Questlog angetastet werden. Ansonsten heißt es "Finger weg!".
So, wie genau sieht jetzt ein einzelner Auftrag aus, bzw. woraus besteht er?

Zutaten für einen guten Auftrag

- Ein guter Titel
- Eine kurze aber prägnante Beschreibung

- Eine ID
- Eine Zustandsvariable (erledigt / nicht erledigt / z.T. erledigt)
- Evtl Belohnung (Geld / Item)
- Bild das den Auftragsort oder den Questgeber zeigt
Wir haben also nun unsere Variablenliste von 1000 - 1500 und pro Auftrag ein bis zwei Variablen (Zustand und Belohnung). Die Belohnung lasse ich jetzt der Einfachheit halber weg.

Die Liste ist jedoch noch nicht ganz komplett. Wir benötigen noch soetwas wie "Zeiger", bildlich gesprochen "Finger" die immer genau auf einen Eintrag in der Liste zeigen. Veranschaulichen kann man sich dies mit einem 1000 Meter hohen Schrank mit Schubladen. Auf jeder "Etage" des Schrankes befindet sich eine Schublade. Diese Schubladen sind durchnummeriert (von 1000 bis 1500). Nun haben wir mehrere Fahrstühle (oder eben "Finger") die an der Vorderseite dieses Schrankes auf und ab fahren. Dabei lässt sich die Position jedes einzelnen Fahrstuhles eindeutig mit einer Nummer bestimmen. Diese Nummer ist die Nummer der Schublade vor der er sich gerade befindet. (Ich denke ich muss nicht erwähnen, dass man nur über diese Fahrstühle auf die Schubladen zugreifen kann, denn wer will schon 1000 Meter an einem Schrank hochklettern?)
Was müssten wir nun tun um z.B. auf die Schublade 1025 zuzugreifen?
Genau! Wir sagen einem von unseren Fahrstühlen, den wir z.B. "Aktuell" nennen, er soll zur Nummer 1025 hochfahren (wir würden also bildlich in ihm auf die 1025 drücken). Er saust hoch und gewährt uns zutritt zu dieser Schublade.
Andersherum geht es natürlich auch. Stell dir vor wir schicken den Fahrstuhl zu der Schublade in der z.B. ein Teddy liegt. Der Fahrstuhl fährt einfach so lange weiter bis er eine solche Schublade gefunden hat. Wir brauchen dann nichts weiter zu tun, als uns den Inhalt der Variable "Aktuell", also bildich die Position des Fahrstuhles, anzeigen zu lassen, und schon haben wir die Schublade.

Genau dies machen wir auch mit der Liste, nur dass jede Schublade eine ID ist, hinter der Titel, Beschreibung, Belohnung, Zustand und Bild des Auftrages versteckt sind und die Fahrstühle in wirklichkeit normale Variablen sind, die mit ihren Werten auf irgend eine Variable zeigen.

Nochmal zusammenfassend: Was brauchen wir für unsere Liste?

- 500 freie Variablen (Bereich von z.B. 1000 - 1500)
- 1 Variable "Aktuell"
- 1 Variable "Kontrolle"
- 1 Variable "Seite Anfang"
- 1 Variable "Seite Ende"
Wofür wir die Seiten-Variablen brauchen wirst du später erfahren.
Nun aber zurück zu unserem Auftrag. Ich spiele dabei einfach ein Beispiel durch:
Der Hauptheld kommt in das erste Dorf und spricht dort einen Mann an. Dieser bittet ihn darum ihm einen Fisch zu besorgen, er hätte am Morgen immer solchen Hunger. Der Held willigt ein.
Was passiert technisch dahinter? Wie wir wissen hat der Auftrag: "Ein frischer Fisch am Morgen" die ID 3 (diese hast du dir niedergeschrieben). Wir müssen nun also herausbekommen, welche Variable in unser Liste frei ist. Dazu setzen wir die Variable "Aktuell" auf 1000, den Start unserer Liste.
Der Code sieht dann so aus:

<>Change Variable "Aktuell", set 1000
<>
<>!Lable 1!
<>
<>Change Variable "Kontrolle", set [VarNr: "Aktuell"]
<>Fork Variable "Kontrolle" != (ungleich) 0
<><>Change Variable "Aktuell" + 1
<><>!Goto Lable 1!
<>End:
<>
<>Change Variable [VarNr: "Aktuell"], set 3
Um das Questlog später übersichtlicher zu gestalten, solltest du einige einzelne CEs anlegen, welche deine Liste für dich verwalten. Das erste CE hieße z.B. "Springe zur ersten freien Stelle" (im Maker geht allerdings nur weniger, z.B. "ZurErstFreistelle").
Der Code wäre dann dieser:

ZurErstFreistelle

<>Change Variable "Aktuell", set 1000
<>!Lable 1!
<>Change Variable "Kontrolle", set [VarNr: "Aktuell"]
<>Fork Variable "Kontrolle" != (ungleich) 0
<><>Change Variable "Aktuell" + 1
<><>!Goto Lable 1!
<>End:
Sobald du diesen Code ausführst weißt du, dass dein Fahrstuhl "Aktuell" nun bei der ersten Schublade hält, in der nichts drinn ist. Die Lable-Schleife läuft so lange weiter, bis die Varibable "Kontrolle" einen Wert enthält der nicht 0 ist. "Kontrolle" entspricht hierbei dem Inhalt der Schublade mit der Nummer "Aktuell".
Nun bist du also an dieser Stelle, jetzt willst du dort die ID deines Auftrages hinterlegen. Das machst du dann so:

<>...
<>Show Massage: "Ich habe jeden Morgen solchen Hunger. Könntet ihr nicht so nett sein und für mich einen Fisch angeln? Ich würde euch auch bezahlen!"
<>Show Choice ["Ich besorge ihnen den Fisch!" / "Tut mir leid, ich hab zu tun."]
<><>["Ich besorge ihnen den Fisch"] Case
<><><>Show Massage: "Das ist aber nett von ihnen."
<><><>Call Event: "ZurErstFreistelle"
<><><>Change Variable [VarNr "Aktuell"], set 3
<><>["Tut mir leid, ich hab zu tun."] Case
<><><>Show Massage: "Das ist schade..."
<>End Case
<>...
Auf dem Weg zurück begegnet man nun aber noch einer Frau, welche in voller Sorge erklärt, dass ihr Mann seit zwei Tagen verschollen sei. Er hatte zu einer alten Mine gehen wollen, da er dort noch unentdeckte Bodenschätze vermutete, doch nun sei seine Rückkehr schon einen Tag überfällig.
Wiedermal ein neuer Code:

<>...
<>Show Massage: "Mein Mann ist schon seit zwei Tagen verschwunden. Könnten sie so nett sein und sich nach ihm umsehen?"
<>Show Choice ["Klar" / "Hab besseres im Sinn"]
<><>["Klar"] Case
<><><>Show Massage: "Das ist aber nett von ihnen."
<><><>Call Event: "ZurErstFreistelle"
<><><>Change Variable [VarNr "Aktuell"], set 1
<><>["Tut mir leid, ich hab zu tun."] Case
<><><>Show Massage: "Das ist schade..."
<>End Case
<>...
Es wird wohl schnell deutlich, dass sich dieser Codeschnipsel überall weider verwenden lässt.
Wie sieht nach diesen beiden Aktionen nun unsere Liste aus?

Variable 1000: Wert 3
Variable 1001: Wert 1
Variable 1002: Wert 0
...
Für weitergehende Erklärungen füge ich jetzt noch 10 weitere Aufträge mit unterschiedlichen IDs an. Die Geschichten dazu können uns egal sein.
Die Liste sieht nun z.B. so aus:

Variable 1000: Wert 3
Variable 1001: Wert 1
Variable 1002: Wert 18
Variable 1003: Wert 9
Variable 1004: Wert 5
Variable 1005: Wert 256
Variable 1006: Wert 45
Variable 1007: Wert 73
Variable 1008: Wert 99
Variable 1009: Wert 11
Variable 1010: Wert 24
Variable 1011: Wert 51
Variable 1012: Wert 0
...

Nun kommen wir zum eigentlichen Teil des Questlogs. Ich gehe dabei davon aus, dass du es über einen Menüpunkt deines eigenen Menüs aufrufst.
Als erstes brauchen wir ein Hintergrundbild, 3 Cursor, 10 Auftragsüberschriften, 1 Bild und eine Erklärung.
Das sähe z.B. so aus:
http://www.directupload.net/images/070408/bUQDqwpj.png
Cursor 1 dient dazu, direkt einen Auftrag auszuwählen. Belohnung, Beschreibung und Bild wechseln sofort mit der Bewegung des Cursors 1.
Cursor 2 und 3 dienen zum Umblättern, sollte man mehr als 10 Quests haben.
Nun aber zum Technischen. Ich kann dir hier nicht den gesammten Code zum Questlog posten, dass könnte ich auch nicht einfach so fehlerfrei runterschreiben, daher versuche ich lieber es möglichst gut zu erklären.
Die größte Herausforderung bei einem Questlog ist es, immer die richtigen Quests anzeigen zu lassen und das umblättern ordentlich hinzubekommen. Durch unserer Liste ist dies aber nun ganz einfach. Für eine bessere Übersicht solltest du neben dem CE für das QL noch ein weiteres erstellen, in dem du dann das Anzeigen des Bildes, der Belohnung und der Beschreibung einbaust.
Dieses sähe dann z.B. so aus:

<>Fork Variable "Anzeige ID" = 1
<><>Show Picture '2' "Beschreibung Auftrag 1" at [160|120]
<><>Show Picutre '3' "Bild Auftrag 1" at [160|120]
<><>Show Picture '4 "Belohnung Auftrag 1" at [160|120]
<>Else:
<>Fork Variable "Anzeige ID" = 2
<><>Show Picutre '2' "Beschreibung Auftrag 2" at [160|120]
<><>...
<>Else:
<>...
<>End:
Natürlich kannst du Beschreibung, Bild und Belohnung in ein Picture packen. Das macht die Sache sogar noch einfacher.
Den Titel des Autrages musst du anders anzeigen lassen. Da kommt leider ne Menge Arbeit auf dich zu. Da die Aufträge variabel sind, können sie theoretisch an jeder Stelle im Questlog stehen. Das heißt du brauchst für jeden Quest bei 10 angezeigten Aufträgen gleichzeitig auch 10 Show Pictures.
Daher würde ich dir empfehlen nur 5 Aufträge pro Seite zu machen.
Beim Aufrufen muss nun Folgendes geschehen:

<>Change Variable "Seite Anfang", set 1000
<>Change Varbale "Seite Ende", set 1004
<>Call Event: "ZurErstFreistelle"
<>Fork Variable "Aktuell" < 1004
<><>Change Variable "Seite Ende", set "Aktuell"
<>End:
Hier wird nur der Variablenbereich abgesteckt in dem wir uns momentan befinden. Das Umblättern sieht so aus:

<>Call Event: "ZurErstFreistelle"
<>Fork Variable "Aktuell" > "Seite Ende"
<><>Change Variable "Seite Anfang", set "Seite Ende"
<><>Change Variable "Seite Anfang" + 1
<><>Change Variable "Seite Ende" + 5
<><>Fork Variable "Aktuell" < "Seite Ende"
<><><>Change Variable "Seite Ende", set "Aktuell"
<><>End:
<>End:
Hier muss gleich zwei mal überprüft werden, ob das Ende der Liste erreicht ist. Einmal ist das umblättern nur dann möglich wenn unser Bereich noch nicht an das "Nichts" grenzt. Zum anderen wird die oberere Grenze zurückgezogen, sollte sie versehentlich über den Rand gerutscht sein.

Nun zur Anzeige:

<>Change Variable "Anzeige Picture ID", set 5
<>Change Variable "Aktuell", set "Seite Anfang"
<>Change Variable "Kontrolle", set [VarNr "Aktuell"]
<>Change Variable "Auftrag Schrift Scene X", set 110
<>Change Variable "Auftrag Schrift Scene Y", set 80 //Musst du beides anpassen
<>Call Event: "Auftrag Anzeigen"
<>Change Variable "Aktuell" + 1
<>Change Variable "Anzeige Picture ID" + 1
<>Fork Variable "Aktuell" < "Seite Ende"
<><>Change Variable "Kontrolle", set [VarNr "Aktuell"]
<><>Change Variable "Auftrag Schrift Scene Y" + 20
<><>Call Event: "Auftrag Anzeigen"
<>End:
<>Change Variable "Aktuell" + 1
<>Change Variable "Anzeige Picture ID" + 1
<>Fork Variable "Aktuell" < "Seite Ende"
<><>Change Variable "Kontrolle", set [VarNr "Aktuell"]
<><>Change Variable "Auftrag Schrift Scene Y" + 20
<><>Call Event: "Auftrag Anzeigen"
<>End:
<>Change Variable "Aktuell" + 1
<>Change Variable "Anzeige Picture ID" + 1
<>Fork Variable "Aktuell" < "Seite Ende"
<><>Change Variable "Kontrolle", set [VarNr "Aktuell"]
<><>Change Variable "Auftrag Schrift Scene Y" + 20
<><>Call Event: "Auftrag Anzeigen"
<>End:
<>Change Variable "Aktuell" + 1
<>Change Variable "Anzeige Picture ID" + 1
<>Fork Variable "Aktuell" < "Seite Ende"
<><>Change Variable "Kontrolle", set [VarNr "Aktuell"]
<><>Change Variable "Auftrag Schrift Scene Y" + 20
<><>Call Event: "Auftrag Anzeigen"
<>End:
Der Großteil wiederholt sich einfach. Hierbei lasse ich meinen Aktuell-Fahrstuhl immer eine Etage höher fahren und hohle mir den Inhalt der Schublade.
Nun brauchst du noch das "Auftrag Anzeigen" CE:

<>Fork Variable "Kontrolle" = 1
<><>Fork Variable "Anzeige Picture ID" = 5
<><><>Show Picture '5' "Auftrag 1 Titel" at [Auftrag Schrift Scene X | Auftrag Schrift Scene Y]
<><>Else:
<><>Fork Variable "Anzeige Picture ID" = 6
<><><>Show Picture '6' "Auftrag 1 Titel" at [Auftrag Schrift Scene X | Auftrag Schrift Scene Y]
<><>Else:
<><>Fork Variable "Anzeige Picture ID" = 7
<><><>Show Picture '7' "Auftrag 1 Titel" at [Auftrag Schrift Scene X | Auftrag Schrift Scene Y]
<><>Else:
<><>Fork Variable "Anzeige Picture ID" = 8
<><><>Show Picture '8' "Auftrag 1 Titel" at [Auftrag Schrift Scene X | Auftrag Schrift Scene Y]
<><>Else:
<><>Fork Variable "Anzeige Picture ID" = 9
<><><>Show Picture '9' "Auftrag 1 Titel" at [Auftrag Schrift Scene X | Auftrag Schrift Scene Y]
<><>Else:
<><>Fork Variable "Anzeige Picture ID" = 10
<><><>Show Picture '10' "Auftrag 1 Titel" at [Auftrag Schrift Scene X | Auftrag Schrift Scene Y]
<><>End:
<>Else:
<>Fork Variable "Kontrolle" = 2
<><>Fork Variable "Anzeige Picutre ID" = 5
<><><>...
<><>End:
<>Else:
<>...
<>End:
Die Cursorbewegung läuft dann wie in jedem anderen Menü auch. Allerdings kannst du, um zu ermitteln welcher Auftrag gerade unter deinem Cursor ist, diese Rechnung benutzen:

Ausgewählter Auftrag = "Seite Anfang" + (Aktuelle Menüposition (startend bei 1) - 1)
Sollte funktionieren ^^°

Leider fange ich selber an, an der Verständlichkeit des obigen Textes zu zweifeln. Mag daran liegen das ich heute aus dem Urlaub gekommen bin und abgesehen von zwei, drei 15 Minütigen Nickerchen auf unbequemen Sitzen im Zug seit nunmehr 36 Stunden keinen Schlaf mehr hatte. Ich werde mich gleich ins Bett verziehen, wollte nur noch den Text so einigermaßen zuende bringen. Bis morgen hätte ich es bestimmt vergessen ^^°

mfg
Phönix Tear

Jadoo
09.04.2007, 02:41
Hallo,

erstmal vielen Dank für die Mühe mit der ausführlichen Erklärung :A ... habe mir den Beitrag mal gedruckt, um ihn auch ohne Browser durcharbeiten zu können.

Bin die Erklärung nun zweimal durchgegangen, werde es aber nochmals in aller Ruhe machen. Das Prinzip habe ich aber soweit verstanden.

Eines aber erstmal:


In deiner PN hast du ja angesprochen, dass du es so haben willst, dass die Aufträge in der Reihenfolge aufgelistet werden wie man sie findet (nach Datum sortiert zozusagen).

Hab mir sicherheitshalber die PN nochmal angesehen, aber nein - hab das nicht erwähnt dort :D ... musst du wohl verwechselt haben mit dem Thread aus 2004, den ich verlinkt habe. Den hatte ich ganz zu Anfang hier gelesen und mir dann heute gedacht, ich frag mal, weil du es ja damals dort erklärt hattest (aber leider die Bilder nicht mehr existieren).

Ich bin schon eine ganze Weile am überlegen, wie ich das Logbuch am Besten aufbauen könnte. So wie ich es aus deiner Beschreibung verstanden habe, ist es eine komplizierte Methode, auch wenns nachher schön aussehen würde.

Die Beschreibungen als Bild anzuzeigen ist sicherlich eine tolle Idee - was mich dann aber stört ist folgendes: Die Überschriften für jede Quest müssen ja schon als Bild dargestellt werden - die Beschreibungen würden sich aber auch per Show Message aufrufen lassen, sobald man eine Quest ausgewählt hat.

Außerdem könnte ja jemand auf die Idee kommen, sich den Ordner "Pictures" anzugucken und schon vor dem Spielen erfahren, was es für Aufgaben geben wird. Die Beschreibung dann als Message anzuzeigen würde dies dann ausschließen ;)

Eine andere Art für ein Logbuch habe ich in der Demo "Der Bote des Königs" gesehen. Dort kann man die Quests erst getrennt in einer Show Choice auswählen (ob Haupt- oder Nebenquest). Danach werden die Aufgaben dann als Message angezeigt (bei mehreren Aufträgen habe ich jetzt nicht nachgesehen wie es ausschaut).

Ich stelle mir das Logbuch so vor:

1. aufrufbar über einen eigenen Eintrag im Menü
2. Hintergrundbild wird angezeigt (man könnte hier einen Notizblock darstellen oder sowas)
3. Da mehr als 3 Aufgaben aufgelistet werden sollen, werde ich die Überschriften als Pictures nehmen müssen ist klar - also werden dann über das Hintergrundbild alle vorhandenen Aufgaben eingeblendet.
4. Neben den Aufgaben sollte sich dann ein Cursor befinden, mit welchem man zwischen den Aufgaben navigieren kann
5. Wählt man eine Aufgabe aus, so wird ein Picture eingeblendet, über welchem man dann eine transparente Message anzeigen lässt (das Picture natürlich passend zum Logbuch und anders als eine normale Textbox, damit man den Unterschied erkennt und das Ganze auch gut aussieht) - als weitere Hilfe bei wichtigen Quests könnte man dann auch ein Faceset anzeigen lassen oder an anderer Stelle ein Bild (zB. eine Karte oder einen Screenshot von dem Ort wo sich die Quest befindet)
6. Sollte man mehr Aufgaben haben als Pictures sich anzeigen lassen, dann natürlich noch zwei weitere Bilder, die ein vor/zurück geben sollen - vielleicht noch einen "Zusatzbutton" zum Verlassen des Logbuches.

Was ich nun noch nicht sicher weiß ist, was mit den erledigten Aufgaben geschehen soll, ob sie weiterhin angezeigt werden sollen. Hier würde ich dann das bevorzugen, was von der Umsetzung her einfacher ist.

Für den Fall, dass bereits erledigte Aufgaben weiterhin angezeigt werden, würde ich die Überschriften dann farblich anders gestalten (eventuell noch ein Häkchensymbol dahinter) - sodass man also die einzelnen Quests unterscheiden kann.

Natürlich könnte man auch mehrere Seite im Logbuch machen, wo der Spieler dann auswählen kann, ob er aktuelle Quests sehen will, bereits erledigte, oder sogar eine Statistik ("Du hast bereits X Aufgaben gelöst") - Möglichkeiten gibt es da eben viele.

Wie sieht es also mit der Umsetzung für diese Art von Logbuch aus? Ich denke dass sie etwas einfacher ist. Es ist übrigens auch egal, welche Reihenfolge die Aufträge im Logbuch haben, zumal jeder sicherlich unterschiedlich spielt und zuerst an anderer Stelle sich aufhält, als die erste aller Aufgaben wirklich wäre.

Erstmal bis dann, werden heute Mittag mal ein wenig herumprobieren um zu schauen, ob ichs irgendwie hinbekomme.

Phönix Tear
09.04.2007, 14:41
Gut in diesem Fall hast du wieder zwei Möglichkeiten.
Möglichkeit 1 ist die, die ich oben beschrieben habe (also mit der Liste).
Möglichkeit 2 lässt überall dort ein Feld frei wo du den entsprechenden Auftrag noch nicht gefunden hast. Diese sieht man häufig in Spielen mit Fähigkeitsmenüs oder auch bei etwas wie dem Pokedex aus Pokemon. Meiner Meinung nach ist das nicht wirklich schön. Der Pokedex ist allerdings in sofern noch in Ordnung weil er einem ne schöne Übersicht bietet wie viele Pokemon man noch nicht entdeckt hat. Bei Aufträgen kommt es (gerade wenn nur 5 oder so pro Seite angezeigt werden) zu unnötigem Blättern. Bei 10 oder 15 Aufträgen pro Seite könnte das aber wieder gehen. Damit würde es dann nur schwerer noch Extra anzeigen einzubaun (Häkchen, etc.). Daher würde ich 10 empfehlen.

Wenn dir die Methode 1 zu schwierig ist kannst du Methode 2 mit einer Reihe von Forks nachbaun. Dabei brauchst du im Maker nur aufzulisten welcher Auftrag wo steht. Also z.B. so:

Auftrags-Anzeige

<>Erase Picture '1'
<>Erase Picture '2'
<>...
<>Erase Picture '9'
<>Erase Picture '10'
<>
<>Fork Variable "Seite" = 1
<><>Fork Variable "Auftrag 1 erhalten?" > 0
<><><>Show Picture '1' "Auftrag 1 Titel" at [100|60]
<><>End:
<><>Fork Variable "Auftrag 2 erhalten?" > 0
<><>Show Picture '2' "Auftrag 2 Titel" at [100|80]
<><>End:
<><>...
<><>Fork Variable "Auftrag 9 erhalten?" > 0
<><>Show Picture '9' "Auftrag 9 Titel" at [100|220]
<><>End:
<><>Fork Variable "Auftrag 10 erhalten?" > 0
<><>Show Picture '10' "Auftrag 10 Titel" at [100|240]
<><>End:
<>Else:
<>Fork Variable "Seite" = 2
<><>Fork Variable "Auftrag 11 erhalten?" > 0
<><><>Show Picture '1' "Auftrag 11 Titel" at [100|60]
<><>End:
<><>Fork Variable "Auftrag 12 erhalten?" > 0
<><>Show Picture '2' "Auftrag 12 Titel" at [100|80]
<><>End:
<><>Fork Variable "Auftrag 13 erhalten?" > 0
<><>Show Picture '3' "Auftrag 13 Titel" at [100|100]
<><>End:
<><>...
<>Else:
<>...
<>End:
Das sieht erstmal nach viel aus, ist aber sehr einfach zu ergänzen und funktioniert mit Sicherheit. Das Questlog wäre dann einfach zu machen:

Questlog

<>Change Variable "Menüposition", set 1
<>Change Variable "Seite", set 1
<>Change Variable "Cursor X", set 100
<>Change Variable "Cursor Y", set 80
<>Show Picture '11' "Cursor" at [Cursor X|Cursor Y]
<>Call Event "Auftrags-Anzeige"
<>Enter Password "Menüpasswort" [1,2,3,4 ; 5 ; 6] [wait until key hit]
<>Fork Variable "Menüpasswort" = 1
<><>Fork Variable "Menüposition" != 10
<><><>Change Variable "Menüposition" + 1
<><><>Call Event: "Cursor bewegen"
<><>Else:
<><><>Change Varibale "Menüposition", set 1
<><>End:
<>Else:
<>Fork Variable "Menüpasswort" = 4
<><>Fork Variable "Menüposition" != 1
<><><>Change Variable "Menüposition" - 1
<><><>Call Event: "Cursor bewegen"
<><>Else:
<><><>Change Varibale "Menüposition", set 10
<><>End:
<>Else:
<>Fork Variable "Menüpasswort" = 2
<><>Fork Variable "Seite" != 1
<><><>Change Variable "Seite" - 1
<><><>Call Event: "Auftrags-Anzeige"
<><>End:
<>Else:
<>Fork Variable "Menüpasswort" = 3
<><>Fork Variable "Seite" != (die letzte Seite mit Aufträgen)
<><><>Change Variable "Seite" + 1
<><><>Call Event: "Auftrags-Anzeige"
<><>End:
<>Else:
<>Fork Variable "Menüpasswort" = 5
<><>Call Event: "Auftragsbeschreibung"
<>Else:
<>Fork Varibale "Menüpasswort" = 6
<><>Code zum Verlassen des Menüs
<>End:
So, nun brauchst du noch die CEs "Cursor bewegen" und "Auftragsbeschreibung".

Cursor Anzeigen

<>Change Variable "Cursor Y", set "Menüposition"
<>Change Variable "Cursor Y" * 20
<>Change Variable "Cursor Y" + 60
<>Move Picture '11' to [Cursor X | Cursor Y] in [0.1 secs] and [do not wait until key hit]
Warum diese komische Berechnung?
Ich gehe davon aus, dass deine Aufträge alle untereinander stehen mit einem Abstand von 20, beginnend bei der Position [100|80]. Das müsstest du natürlich anpassen.
Die Berechnung selbst spart mir im Haupt-CE jedes mal die neuen Cursor-Positionen angeben zu müssen. Das kann man natürlich auch machen. Hier bot sich nur diese Methode an ;)
Dann noch das "Auftragsbeschreibung"-CE:

Auftragsbeschreibung

<>Fork Variable "Seite" = 1
<><>Fork Variable "Menüposition" = 1
<><><>Show Massage: "Massage mit der Beschreibung zu Auftrag 1"
<><>Else:
<><>Fork Variable "Menüposition" = 2
<><><>Show Massage: "Massage mit der Beschreibung zu Auftrag 2"
<><>Else:
<><>Fork Variable "Menüposition" = 3
<><><>Show Massage: "Massage mit der Beschreibung zu Auftrag 3"
<><>Else:
<><>...
<><>Fork Variable "Menüposition" = 10
<><><>Show Massage: "Massage mit der Beschreibung zu Auftrag 10"
<><>End:
<>Else:
<>Fork Variable "Seite" = 2
<><>Fork Variable "Menüposition" = 1
<><><>Show Massage: "Massage mit der Beschreibung zu Auftrag 11"
<><>Else:
<><>Fork Variable "Menüposition" = 2
<><><>Show Massage: "Massage mit der Beschreibung zu Auftrag 12"
<><>Else:
<><>...
<><>End:
<>Else:
<>...
<>End:
Damit ist dein Questlog fertig.
Jetzt kannst du noch im "Auftags-Anzeige"-CE weitere Pictures, wie ein Bild des Auftragsgebers, etc. hinzufügen. Der Phantasie ist dort nur die Grenze der maximalen Pictures gesetzt ;)
Was dann auch noch zu erledigen wäre, ist das anzeigen der Seiten-Cursors. Das dürfte jedoch sehr einfach sein ;)

Ich hoffe mit der Methode kannst du was anfangen ;)

mfg
Phönix Tear

Jadoo
09.04.2007, 20:18
Hallo,

leider wurde aus dem Test am Mittag nichts, aber mal sehen ob ich gleich etwas Zeit dafür finde ... naja, ansonsten, es läuft ja nicht weg^^.

Auf den ersten Blick muss ich sagen, siehts genauso schwierig aus wie beim Ersten :D ... liegt aber wohl daran, dass ich das Prinzip noch nicht so ganz verstanden habe. Hoffe, dass ich es bald drin habe, damit ich auch sagen kann, es ist einfach :)

Mir kommen jetzt aber ein paar Fragen auf zur 2. Methode:

1. Wird das jeweils alles in ein Common Event gepackt?
2. Warum werden bei dem ersten Code zu Anfang alle Pictures gelöscht?
3. Die Anzeige der Postionen der einzelnen Aufträge klingt verständlich, so müsste es dann sein. Aber, wie sieht es dann aus, wenn ein Auftrag noch nicht erledigt ist? Wird dann nicht eine "leere Fläche" erscheinen zB. zwischen Auftrag 1 und 3 ?

Die Berechnung mit dem Cursor finde ich schon mal in Ordnung so, dann muss man nicht alles mehrfach berechnen ;)

Hmm, das lässt mir einfach keine Ruhe, werde jetzt mein Testprojekt starten und mal loslegen!

Edit: Habe mal ein bisschen herumprobiert und mir dabei deinen Beitrag angesehen. Jetzt ist es schon ein wenig klarer, ebenso konnte ich mir obige Fragen schon teilweise selbst beantworten.

1. Ja, alles in Common Events
2. Der Picture-Löschbefehl am Anfang deshalb, weil das gesamte Common Event mehrmals, je nach Fork, abgerufen wird, und dann immerwieder ermittelt, welche Aufgaben man schon hat, damit er diese anzeigen kann. Ohne das Löschen der Pictures vorher, würde die erneute Anzeige nicht klappen - richtig?

Wenn ich jetzt noch eine Antwort auf die 3. Frage hätte, wäre ich schon gaaaaanz weit :D ... hab mich übrigens entschieden was das anzeigen bereits erledigter Aufgaben betrifft: Nicht mehr anzeigen! (Also nur Aufgaben anzeigen, dessen Variable den Wert 1 trägt. Ist er 0 (noch nicht erhalten) oder 2 (erledigt) dann nicht mehr.

http://www.multimediaxis.de/images/smilies/old/s_065.gif

Phönix Tear
10.04.2007, 00:43
Möglichkeit 2 lässt überall dort ein Feld frei wo du den entsprechenden Auftrag noch nicht gefunden hast.
^^
Ja, das finde ich ist der große Nachteil an der zweiten Methode. Meiner Meinung nach kommt da ein "Noch kein Eintrag" Picture in einem unauffälligen grau ganz gut. Trotzdem ist es nicht so schön wie Methode 1 ;).

Zu deinen Fragen:
1: Eben je nachdem wie viele du haben willst. Manchmal ist "Auslagern" ganz praktisch, wenn man einige Code-Segmente häufig benutzen will.
2: Solltest du bei nicht gefundenen Aufträgen keinen "Noch kein Eintrag" Schriftzug verwenden wollen, muss dies ausgeführt werden, damit nicht der Eintrag der letzten Seite da bleibt. Richtig erkannt ^^
3: s.o. ^^°

Ich würde jedoch, da diese Methode ja gerne Löcher lässt, die Schriftfarbe erledigter Aufträge auf grün ändern. Damit hat der Spieler ein besseres Gefühl, weil er gleich sieht was er alles schon geschafft hat. So kommt dann auch ein größerer Anreiz auf einen speziellen Auftrag zu erledigen, der vielleicht der letzte rote auf einer Seite ist ;) (zumindest bei allen Perfektionisten :) ).
Ich bin leider im Moment sehr beschäftigt (einmal mit meinem Tetris, zum anderen damit, die letzten 2 Ferientage möglichst gut auszunutzen ^^), sonst könnte ich dir das einmal im Maker umsetzen. So lange dürfte das ja nicht dauern (wenn man es einmal verstanden hat ist es ja ganz leicht ;) ).

Die Methode 1 dürfte um einiges klarer werden, wenn man Java im Informaitk-Unterricht hatte. Ich schätze meine Erklärung war etwas schlecht, weil ich einfach ein paar Sachen aus dem Unterricht übernommen habe, die zum Maker nicht so gut passten :rolleyes: .

mfg
Phönix Tear

Jadoo
10.04.2007, 01:19
Achso meinteste das, jetzt verstehe ich. Dachte erst, du meinst, ich solle da ein Feld frei lassen wo keine Aufgaben sind, lol ^^

Mir ist jetzt aber noch etwas klar geworden, und zwar die einfachste aller Möglichkeiten (meiner Meinung nach im Moment): Die Aufgaben alle als Text anzeigen lassen und eventuell Facesets oder Pictures nebenher zu nutzen :D

Einziger Nachteil: Der Spieler kann dann nicht selbst auswählen, welche Aufgabe er sehen will, sondern alle Beschreibungen werden nacheinander eingeblendet. Wenn bereits gelöste Aufgaben aber nicht mehr angezeigt werden, verringert sich der Nachteil jedoch und es ist erträglich. Außerdem wird der Spieler dann automatisch erinnert, wenn er eine Aufgabe noch nicht erledigt hat. Man kann den Text hier ja auch auf normaler Schnelligkeit laufen lassen, dann kann man bestimmte Texte schneller wegdrücken :D

Ansonsten würde ich mich über dein Angebot freuen (falls es eins war), dass du mir das mal als Spiel zeigst und ich mir das im Maker ansehe. Ich denke dann wird es für mich verständlicher. Du kannst dir damit aber ruhig noch Zeit lassen, es eilt nicht!

LG

Phönix Tear
10.04.2007, 15:15
So, ich hab mich mal drangesetzt und das in etwa so umgesetzt wie ich mir das vorgestellt hatte (Methode 2).
Die Graphik sollte man nicht beachten, ist ja wie immer nur ein Lückenfüller.
An einigen Stellen hab ich ein bisschen mit Variablen-Nummern gespielt, was den Code komplizierter erscheinen lässt als er ist. An all diesen Stellen musste man nämlich einfach Stumpf die richtigen Variablen auswählen. Da ich 23 Aufträge eingebaut habe war mir das zuviel Arbeit, wesshalb ich das dort abgekürzt habe. (Hat lange genug gedauert die ganzen Pics für die Aufträge zu machen und zu importieren xD).
Der Großteil ist im Code erklärt, von daher sollte das kein Problem sein :)

Sobald du startest stehst du auf einer Map voll mit Soldaten. Von oben links beginnend gibt dir jeder von ihnen einen Auftrag. Beim ersten ansprechen wird er aktiviert, beim zweiten ansprechen als "erledigt" verbucht. Die beiden Soldaten links aktivieren gleich mehrere Aufträge. Der obere die von 1-10, der untere die von 1-23 (also alle).
Das die Titel meiner Aufträge so eintönig sind (Auftrag 1, Auftrag 2, Auftrag 3, etc.) liegt daran, dass ich mir nicht auf die schnelle 23 Titel ausdenken konnte. Die "Spezifikationen" (also Bild, Beschreibung und Belohnung) sind nahezu bei allen Aufträgen gleich. Auftrag 1 und 2 haben ein Bild. Alle Aufträge haben nur eine Platzhalter beschreibung und die Aufträge 1-10 bringen 10 Gold als Belohnung, die danach 99 Gold. Das wars auch schon ;)

Eingebaut ist die "-kein Eintrag-" Funktion, sowie die rote und grüne Schrift für erledigte und noch ausstehende Quests. Dabei lasse ich die Spezifikationen der Quests die erledigt worden sind weiterhin anzeigen, damit man im späteren Spiel nochmal zurückblicken kann, was man alles schon erlebt hat ;)

Tja, mehr gibts garnicht zu sagen.

Hoffe du kannst damit was anfangen ;)

Hier (http://rapidshare.com/files/25263191/Questlog.rar.html) der Download Link (375 KB bei Rapidshare)

mfg
Phönix Tear

Jadoo
10.04.2007, 17:38
Das ging ja schnell, vielen Dank für die Mühe :A

Ja, das entwerfen der Grafiken und importieren ist denke ich (für die, die das andere auch schon drin haben) am schwierigsten, vor allem wenn man sie noch passend gestalten muss fürs Hauptprojekt.

Das Logbuch sieht natürlich super aus, auch was die Funktionen angeht. Was die Umsetzung aber betrifft siehts immernoch so aus:

Hab jetzt ca. 1 Stunde so vorm Bildschirm gehockt ---> :\ <--- und überlegt. Ich muss mich da nochmal ganz in Ruhe ransetzen und am Besten erstmal Schritt für Schritt nachbauen.

Hatte gestern noch selbst ein Logbuch mal angefangen zu machen, wie gesagt allerdings nur aus ein paar Show Pictures und Messages, das klappt ganz gut und ließe sich ausbauen.

Ich werde in den nächsten Tagen längere Zeit nicht Zuhause sein und deshalb auch nicht Werkeln können. Aber mal sehen, vielleicht sieht es danach ja besser aus, wenn ich mich "frisch" wieder der Aufgabe begebe.

Ich bedanke mich nochmal bei euch für eure Mühe, werde mich melden, sobald ich etwas, was wie ein Logbuch aussieht zustande gebracht habe ;)

LG

Jadoo
12.04.2007, 01:44
Hallo :)

Es gibt ein paar tolle Neuigkeiten: Habe es geschafft, auf einfacher Weise ein Logbuch zu erstellen (ohne Navigation, sondern nacheinander anzeigende Messages) :)

Bin auch nochmal ganz in Ruhe die erste Methode durchgegangen und habe sie bis zum Punkt mit dem Cursor verstanden. Das was danach kommt muss ich nochmal in Ruhe durchgehen, aber so betrachtet und das Resultat daraus in dem Script ist mir jetzt folgendes aufgefallen:

Es werden alle Einträge je Seite angezeigt, wo man auch sofort blättern kann, weil ja je nach Cursorbewegen rechts die Beschreibung usw. angezeigt wird. Wollte das schon früher fragen, aber hatte erstmal nachgesehen, falls sich die Frage von selbst beantwortet.

Wenn ich aber einbauen möchte, dass erst nach dem Drücken der Entertaste ein Bild bzw. Text angezeigt wird, kann man das irgendwie einbauen oder muss dann das gesamte Logbuch ganz anders aufgebaut werden?

Was mir noch aufgefallen ist: Ist es denn nicht so, dass auch bei der ersten Methode immer eine freie Stelle dort bleibt, wo noch kein Auftrag vorhanden ist? Wenn zB. bei der Abfrage ob Var Aktuell = < 1004 .... sagen wir mal 1002 hat noch keinen Eintrag, wie sieht es dann aus?

LG

Phönix Tear
12.04.2007, 14:01
Ersmal zu Frage 2:
Ne, das Logbuch von der ersten Methode hat nur dann ein "Loch" wenn du überhaupt keine Einträge hast. Dadurch das jedes Mal, wenn du einen Auftrag bekommst, die erste Freistelle in der Liste gesucht wird (welche logischerweise immer am Ende deiner Liste ist), kann garkein Loch entstehen.
Solltest du später einen Auftrag löschen - also seine Varibale wieder auf 0 setzen - müsste man noch einen Nachrück-Algorithmus bauen. Das wäre allerdings auch nicht weiter schwer:

Nachrücken

<>Call Event: "ZurErstenFreistelle"
<>Change Variable "Verschiebung 1", set "Aktuell"
<>Change Varibale "Verschiebung 2", set "Aktuell"
<>Change Variable "Verschiebung 2" + 1
<>Change Variable "Verschiebungs Inhalt", set [VarNr: "Verschiebung 2"]
<>!Lable 1!
<>Change Variable [VarNr: "Verschiebung 1"], set "Verschiebungs Inhalt"
<>Change Varibale "Verschiebung 1" + 1
<>Change Varibale "Verschiebung 2" + 1
<>Change Variable "Verschiebungs Inhalt", set [VarNr: "Verschiebung 2"]
<>Fork Varibale "Verschiebungs Inhalt" != 0
<><>!Goto Lable 1!
<>End:
<>
Was macht dieser Code?
Nun, hier haben wir wieder zwei Fahrstühle ^^, nämlich "Verschiebung 1" und "Verschiebung 2". Außerdem noch eine Kiste die "Verschiebungs Inhalt" heißt.
Nun fahren wir beide Fahrstühle zur ersten Schublade ohne Inhalt. Daraufhin lassen wir Fahrstuhl 2 (also "Verschiebung 2") eine Etage weiter nach oben Fahren. Da wir eine Lücke haben ist diese Schublade logischerweise gefüllt. Nun packen wir alles aus Schublade 2 (also auf der Etage bei der "Verschiebung 2" gerade ist) in unsere Kiste "Verschiebungs Inhalt". Danach schicken wir diese Kiste an "Verschiebung 1", der ja eine Etage weiter unten ist, und packen die Kiste dort in die Schublade.
Nun fahren beide Fahrstühle eine Etage weiter nach oben, packen die Kiste erneut und schicken sie nach unten. Das geht so lange weiter bis Fahrstuhl 2 eine weitere leere Schublade entdeckt.
Da ich davon ausgehe das maximal ein Loch auf einmal entsteht ist damit das Ende der Liste erreicht und die Prozedur kann beendet werden.
Fertig ^^

Nun zur Frage 1:
Das sollte auch nicht weiter das Problem sein. Wenn du dir meinen Skript anschaust musst du dort in das CE "Questlog" schaun. Dort steht die Cursor-Bewegung drinn.
Unter dem "Lable 1" wird die Tasteneingabe abgewartet. Drückt man Pfeil unten oder Pfeil oben soll der Cursor bewegt werden. In der Makersprache bekommt meine Variable "QL Passwort" also entweder den Wert "1" (für oben) oder "4" (für unten).
Nun musst du in die Fork-Verschachtelung schauen. Dort wird gleich ganz oben abgefragt ob "QL Passwort" 1 ist. Und etwas weiter unten ob sie 4 ist.
Der Code in den Forks ist dabei nahezu identisch.
Er lautet bei 1:

<>Play SE: "Cursor 1"
<>Change Variable "QL Menüposition" + 1
<>Change Variable "Cursor Y" + 12
<>Fork Variable "QL Menüposition" >= 11
<><>Change Variable "QL Menüposition", set 1
<><>Change Variable "Cursor Y", set 33
<>End:
<>Move Picture '13' (["Cursor X" | "CursorY"]) in 0,1 secs [do not wait until key hit]
<>Call Event: "Spezifikationen Anze"
Das wichtige ist dabei das markierte. Dort wird das CE aufgerufen, welches das Bild, die Beschreibung und die Belohnung anzeigt. Dieses Call-Event musst du einfach in den Forks für 1 und 4 entfernen. Dafür packst du es bei der Fork für 5 rein in der aktuell nur steht:

<>Note:
<>Note: Soll hier was passieren? ^^°
<>Note:
Nun musst du reinschreiben:

<>Call Event: "Spezifikationen Anze"
Damit bist du auch schon fertig. Allerdings sollte nun beachtet werden, dass die Spezifikationen des Auftrages bei dem du Enter gedrückt hast auch bestehen bleiben wenn du den Cursor weiterbewegst. Dazu empfehle ich ein "Erase Picture" Befehl bei der Cursorbewegung einzubaun. Setzt einfach in der Fork für 1 und 4 ein:

<>Erase Picture: '12'
<>Play SE: "Cursor 1"
<>...
Damit wäre auch das Problem behoben ;)

mfg
Phönix Tear

Edit:
Habs gerade getestet und es fehlt noch was, bzw. ist noch was zu viel.
In den Forks für 2 und 3 (bei denen die Seite gewechselt wird), muss das Call Event ebenfalls weg. Außerdem noch beim Menüaufruf. (Lösch es im CE "Questlog" einfach überall wo du es siehst, außer in der Fork für 5 ;) )

Edit 2:
Mir fällt gerade auch noch auf, dass es einen Fehler in der Anzeige des Seitencursors gibt. Ist man auf Seite 1 wird der linke anstatt des rechten Pfeils gelb iluminiert. Du müsstest in der Fork dafür bei "Seite = 1" den Picture von "Questlog Seitencursor Gelb unten" auf "Questlog Seitencursor Gelb oben" ändern (insgesamt drei mal, einmal beim Aufruf des Menüs und in den Forks zum ändern der Seite).

Jadoo
15.04.2007, 00:56
Hallo http://www.multimediaxis.de/images/smilies/old/s_065.gif

hatte mal kurz Zeit wieder am Logbuch zu arbeiten und bin mal die erste Methode durchgegangen. Die gute Nachricht: Habe das Prinzip soweit verstanden, zumindest was das anzeigen der Aufträge pro Seite betrifft. Diese "Fahrstuhl-Variable" mit der ersten freien Stelle macht ja vieles möglich :A

Schlechte Nachricht:

Ich komme noch nicht mit dem Cursormenü klar, wie ich es integrieren kann :(

Der Cursor muss doch auf jeder Seite als letztes angezeigt werden (als höchstes Picture), damit man ihn auch über den ganzen Aufträgen sehen kann.

Ich habe es bisher so verstanden:

Aufruf des Logbuches
Show Picture = Hintergrund
Seitenende/anfang ermitteln
Aufträge anzeigen (Call Event)

Nun fehlt mir aber der Ansatz, wie ich den Cursor dort anbringe und dass bei drücken der Pfeiltasten oben/unten zwischen den Aufträgen gewählt wird, bei Enter angezeigt sowie links/rechts blättern zwischen den Seiten - schließen ESC, aber das wäre klar.

Nun müsste ich das aber für jede Seite einstellen, wäre es dann nicht besser, für jede Seite ein CE zu machen oder klappt das mit einem einzeigen, wo alles drin passiert (inklusive anzeigen der aufträge, cursor usw?) ?

Blicke da noch nicht ganz durch :(

Phönix Tear
15.04.2007, 13:59
Du hast also nur ein Problem dabei wie man den Cursor bewegen kann?
Das dürfte auch bei Methode 1 nicht so schwer sein. Allerdings müssen wir hierbei beachten, dass der Cursor nicht wie bei Methode 2 auch auf leere Felder zeigen darf. Schließlich soll man nicht weitergehen könnten wenn nichts mehr kommt.
Zuerst das einfachere, die hoch/runter Bewegung.
Wie oben gesagt müssen wir vor jeder Bewegung überprüfen, ob die nächste Stelle frei ist. Wenn du dich noch erinnerst ist in der Variable "Aktuell" gespeichert, an welcher Stelle der Liste wir uns gerade befinden. Mit der Variable "Kontrolle" schauen wir nach, was in der Schublade bei "Aktuell" drinn ist. Ist sie leer, ist die Liste zuende, daher dürfen wir dort nicht weitergehen.
Um die Cursorbewegung jedoch gut hinzubekommen sollten wir auch noch eine Variable "Menüposition" einführen die den Cursor steuert.
Der Cursor selbst ist völlig losgelöst vom Auftrag auf den er gerade Zeigt, d.h. wir können ihn - abgesehen von der obigen Einschränkung - völlig frei bewegen.
Die Berechnung der Cursorposition mache ich so:

Cursor bewegen

<>Change Variable "Cursor X", set 80
<>Change Variable "Cursor Y", set "Menüposition"
<>Change Variable "Cursor Y" * 12
<>Change Variable "Cursor Y" + 90
<>Move Picture '20' "Questlog Cursor" to ["Cursor X" | "Cursor Y"] in 0,1 secs
<>
In diesem Fall ständen deine Einträge jeweils 12 Pixel auseinander, hätten alle die X-Koordinate 80 und der erste Eintrag hätte die Y-Koordinate 102.
Anstatt jedes Mal bei einer Bewegung des Cursors die Variablen manuell anzupassen, callt man einfach dieses Event.
Damit können wir schonmal unseren Cursor bewegen, indem wir die Menüposition ändern.
Nun aber zur konkreten Bewegung:

Questlog (Auszug)

<>Enter Passwort "QL Passwort" [1,2,3,4;5;6] [wait until key hit]
<>Fork Variable "QL Passwort" = 1
<><>Change Variable "Menüposition" + 1
<><>Fork Variable "Menüposition" >= 6
<><><>Change Variable "Menüposition", set 1
<><>End:
<><>Change Variable "Aktuell", set "Seite Anfange"
<><>Change Variable "Aktuell" + "Menüposition"
<><>Change Variable "Aktuell" - 1
<><>Change Variable "Kontrolle", set [VarNr: "Aktuell"]
<><>Fork Variable "Kontrolle" != 0
<><><>Play SE "Cursor"
<><><>Call Event: "Cursor bewegen"
<><>Else:
<><><>Play SE "Buzzer"
<><><>Change Variable "Menüposition" - 1
<><>End:
<>Else:
<> // Hier nochmal für Pfeil-hoch
<>End:
<>
Was genau wird hier gemacht?
Als erstes wieder ein Enter Passwort. Drückt der Spieler Pfeil-unten soll der Cursor abwärts bewegt werden. Makerintern tun wir das erstmal ohne Kontrolle. Die Menüposition wird um 1 erhöht. Sollten wir damit bereits über das Maximum von 5 geraten sein (es gibt schließlich nur 5 Einträge pro Seite) wird sie gleich wieder auf 1 gesetzt. Nun muss die entscheidende Abfrage getätigt werden. Dazu bewegen wir unseren Aktuell-Fahrstuhl zu jener Schublade auf die unser Cursor gerade zeigt. Der Cursor selbst weiß nicht auf welche Schublade er zeigt. Er weiß nur wie hoch diese in Relation zum Fahrstuhl "Seiten Anfang" steht. Der Fahrstuhl "Aktuell" muss also erstmal auf die Höhe von "Seite Anfang" fahren und dann nochmal um das höher was der Fahrstuhl "Cursor" höher ist. Es muss daraufhin noch - 1 gerechnet werden, da die Menüposition des Cursors bei 1 startet. 1 bedeutet aber bildlich, dass die Fahrstühle "Cursor" und "Seite Anfang" auf einer Höhe sind. Wenn ich einfach rechnen würde:
Aktuell = Seite Anfang + Menüposition
wäre der Aktuell Fahrstuhl immer eine Etage zu hoch. Daher das - 1.
So, nun zeigt Aktuell auf die Schulbade zu der der Spieler den Cursor bewegen will. Also öffnen wir sie (durch die Variable "Kontrolle") und schauen nach was drinn ist. Ist ihr Inhalt != (ungleich) 0, sie beinhaltet also einen Auftrag, können wir den Sound zur Cursorbewegung abspielen und den Cursor nachrücken. Mission erfolgreich.
Sollte sie aber leer sein, ist das Ende der Liste erreicht. Wir spielen einen Verweigerungs-Sound und setzen die Menüposition wieder zurück (wir haben sie erst um 1 erhöht, danach müssen wir sie wieder um 1 senken).
Fertig ist die vertikale Bewegung.
Nun zum umblättern der Seite. Dazu müssen wir wieder erstmal wissen ob es überhaupt noch Einträge auf der nächsten Seite gibt.
Dazu bemühen wir wieder den selben Code wie oben, diesmal setzen wir nur den Aktuell-Fahrstuhl auf das Ende der Seite und schicken ihn dann eins weiter hoch. Damit hat er automatisch den theoretisch ersten Eintrag der nächsten Seite erreicht. Ist diese Schublade nicht leer, dürfen wir umblättern.
Der Code lautet also:

Umblättern (nur Kontrolle)

<>Change Variable "Aktuell", set "Seite Ende"
<>Change Variable "Aktuell" + 1
<>Change Variable "Kontrolle", set [VarNr: "Aktuell"]
<>Fork Variable "Kontrolle" != 0
<><> // wir dürfen umblättern
<>Else:
<><> // nächste Seite wäre leer. Umblättern nicht erlaubt
<>End:
<>
Damit wäre das erledigt.
Nun können wir uns dem umblättern zuwenden. Das sähe so aus:

<>Change Variable "Seite Anfang", set "Seite Ende"
<>Change Variable "Seite Anfang" + 1
<>Change Variable "Seite Ende" + 5
<>
Da wir 5 Einträge pro Seite haben muss "Seite Ende" um 5 erhöht werden. zuvor können wir aber noch "Seite Anfang" anpassen, indem wir den Fahrstuhl eine Etage höher fahren als "Seite Ende" vorher war. (Natürlich wird dieser Code nur dann ausgeführt wenn die oben angegebene Kontrolle positiv war.)
Allerdings kann es nun noch sein, dass zwar der erste Eintrag der Seite belegt ist, der Rest aber nicht. Daher müssen wir nun eine Schleife bauen, die das Seitenende so lange zurückzieht, bis es auf eine volle Schublade zeigt:

<>!Lable 1!
<>Change Variable "Aktuell", set "Seite Ende"
<>Change Variable "Kontrolle", set [VarNr: "Aktuell"]
<>Fork Variable "Kontrolle" = 0
<><>Change Variable "Seite Ende" - 1
<><>!Goto Lable 1!
<>End:
<>
Da durch das umblättern nun auch der Cursor in ein leeres Feld projiziert werden könnte müssen wir auch das kontrollieren:

<>Change Variable "Cursor Kontrolle", set "Seite Ende"
<>Change Variable "Cursor Kontrolle" - "Seite Anfang"
<>Change Variable "Cursor Kontrolle" + 1
<>Fork Variable "Menüposition" > "Cursor Kontrolle"
<><>Change Variable "Menüposition", set "Cursor Kontrolle"
<>End:
<>
Was wird hier nun wieder gerechnet?
Die Frage ist ja, ob der Cursor in ein leeres Feld zeigt. Leere Felder gibt es nur hinter dem Seitenende. Faktisch müssen wir also kontrollieren, ob der Cursor hinter das Seitenende zeigt. Da aber beide Variablen völlig unterschiedliche Werte haben ("Seite Ende" zeigt irgendwo in die Liste und kann leicht einen Wert wie 2356 haben, wärend der Cursor über die Menüposition gesteuert wird, die sich strikt im Rahmen von 1-5 erstreckt) müssen wir irgendwie umrechnen. Das geht am besten mit der Variable "Seite Anfang". Letztendlich darf der "Cursor"-Fahrstuhl einfach nicht mehr Etagen höher als der "Seite Anfang"-Fahrstuhl sein, wie es der "Seite Ende"-Fahrstuhl ist. Daher errechne ich, wie viele Etagen der "Seite Ende"-Fahrstuhl höher als der "Seite Anfang"-Fahrstuhl ist. Das geht einfach mit:
"Seite Ende" - "Seite Anfang"
Das Ergebnis wäre theoretisch die Menüposition von "Seite Ende" - 1.
Daher rechne ich noch + 1 und habe die tatsächliche Menüposition von "Seite Ende".
Nun noch schnell kontrollieren ob die echte Menüposition (die des Cursors) über dem errechneten Wert liegt und sie in diesem Fall anpassen.
Fertig!
Noch ein kurzes Beispiel dazu:
Seite Anfang liegt bei 1321, Seite Ende bei 1324. Der Cursor hat die Menüposition 5.
Rechnung:
1324 - 1321 = 3
3 + 1 = 4
Menüposition = 5
5 > 4 => Cursor ist zu hoch
Menüposition -> 4
Stimmt :)

Um einmal einen Überblich über den Code zu bekommen, hier der komplette Cursor-Steuerungs Code:

Questlog (Nur Cursorbewegung)

<>Enter Passwort "QL Passwort" [1,2,3,4;5;6] [wait until key hit]
<>Fork Variable "QL Passwort" = 1
<><>Change Variable "Menüposition" + 1
<><>Fork Variable "Menüposition" >= 6
<><><>Change Variable "Menüposition", set 1
<><>End:
<><>Change Variable "Aktuell", set "Seite Anfange"
<><>Change Variable "Aktuell" + "Menüposition"
<><>Change Variable "Aktuell" - 1
<><>Change Variable "Kontrolle", set [VarNr: "Aktuell"]
<><>Fork Variable "Kontrolle" != 0
<><><>Play SE "Cursor"
<><><>Call Event: "Cursor bewegen"
<><>Else:
<><><>Play SE "Buzzer"
<><><>Change Variable "Menüposition" - 1
<><>End:
<>Else:
<>Fork Variable "QL Passwort" = 4
<><>Change Variable "Menüposition" - 1
<><>Fork Variable "Menüposition" <= 0
<><><>Change Variable "Menüposition", set 5
<><>End:
<><>Change Variable "Aktuell", set "Seite Anfange"
<><>Change Variable "Aktuell" + "Menüposition"
<><>Change Variable "Aktuell" - 1
<><>Change Variable "Kontrolle", set [VarNr: "Aktuell"]
<><>Fork Variable "Kontrolle" != 0
<><><>Play SE "Cursor"
<><><>Call Event: "Cursor bewegen"
<><>Else:
<><><>Play SE "Buzzer"
<><><>Change Variable "Menüposition" + 1
<><>End:
<>Else:
<>Fork Variable "QL Passwort" = 2
<><>Change Variable "Aktuell", set "Seite Anfang"
<><>Fork Variable "Aktuell" > 1000 // Der Anfang deiner Liste (ANPASSEN!)
<><><>Play SE "Cursor"
<><><>Change Variable "Seite Ende", set "Seite Anfang"
<><><>Change Variable "Seite Ende" - 1
<><><>Change Variable "Seite Anfang" - 5
<><>Else:
<><><>Play SE "Buzzer"
<><>End:
<>Else:
<>Fork Variable "QL Passwort" = 3
<><>Change Variable "Aktuell", set "Seite Anfang"
<><>Change Variable "Aktuell" + 1
<><>Change Variable "Kontrolle", set [VarNr: "Aktuell"]
<><>Fork Variable "Kontrolle" != 0
<><><>Play SE "Cursor"
<><><>Change Variable "Seite Anfang", set "Seite Ende"
<><><>Change Variable "Seite Anfang" + 1
<><><>Change Variable "Seite Ende" + 5
<><>Else:
<><><>Play SE "Buzzer"
<><>End:
<>Else:
<>...
<>End:
<>
Das müsste es eigentlich sein. Den Code hab ich nicht getestet, d.h. es wird wohl hier und da noch ein paar kleine Bugs geben, aber in dem Fall kannst du ja wieder fragen ;)

mfg
Phönix Tear

P.S:
Wenn ich mal wieder mehr Zeit hab kann ich ja auch mal dazu nen Skript machen xD

Jadoo
15.04.2007, 20:54
Vielen Dank :A

Mal sehen ob ich nachher Zeit finde, das Ganze mal auszubauen (bin derzeit nicht Zuhause und bleib noch ca. eine Woche weg) - habe ja extra den Maker hierhin mitgenommen um an diesem Logbuch zu werkeln, bis ich wieder Zuhause bin. Hoffe ja, dass ich es eventuell schaffe, um es dann sobald ich zurück bin ins Hauptprojekt einzubauen :) Das einfache Logbuch (bestehend aus Text) habe ich ja geschafft, könnte dieses auch nehmen. Nur möchte ich das andere auch umsetzen können, kann doch nicht so schwer sein, menno! (;))

Edit:

Bin jetzt schon so ziemlich weit, müsste noch den Cursor einbauen. Folgendes habe ich erstellt:

Common Event: Zur Freien Stelle
Common Event: Aufruf des Logbuches (zeigt hintergrund an und leitet an nächstes CE weiter)
Common Event: Logbuch anzeigen
Common Event: Aufträge anzeigen

Nun habe ich folgendes Problem: Habe mal einen NPC hineingestellt und ihn den 1. Auftrag vergeben lassen (Call Event Zur Ersten freien Stelle + Set Var. Aktuell 1) - Aufgrund der Schleife in diesem CE wird aber das gesamte Spiel geblockt sobald ich den NPC anspreche.

Also irgendwie weiß ich nicht so recht mit dem Fahrstuhl. Wäre dann zwar einfacher zu kopieren, aber ich komme besser damit klar, wenn ich für jeden Auftrag manuell eine Variable vergebe, und diese dann bei aktiviert auf 1 setze und wenn sie erledigt ist auf 2. Irgendwas scheint da nicht klappen zu wollen, >_<

Jadoo
27.04.2007, 01:46
Hallo,

wollte nur eine Rückmeldung geben. Ich bedanke mich nochmal für die Hilfe. Habe mich allerdings anders entschieden: Ich werde eine einfache Version des Logbuches nehmen, habe es auch schon eingebaut. Ein paar schöne Grafiken gebastelt und: mir gefällts. Und es ist leichter zu verwalten.

Habe mir aber die Tutorials ausgedruckt und werde sie mir bei Gelegenheit nochmal ansehen. Das Testprojekt ist ja auch noch da, wenn ich da mal Zeit und Lust für habe schau ichs mir wieder an.

Ich habe noch einige Sachen mehr mit dem Menü vor, und da ich gerne am Spiel weiterarbeiten möchte, lass ichs mit dem aufwendigen Logbuch erstmal sein. Außerdem ist es ja mein erstes Spiel :)

Caine Luveno
27.04.2007, 12:22
Ich hab den Thread leider erst jetzt gesehen :rolleyes:

Ich glaube nämlich das ich sowas was du haben willst in meinem Spiel eingebaut habe XD Und das sogar recht einfach...

Ein neues Quest in mein Script einzufügen dauert keine 3 Minuten sofern man bereits die Bilder hat. Man muss eigentlich nur eine Abfrage kopieren, Variablen und Bilder anpassen und dann wars das ;) Das Scripot enthält halt beliebig viele Quests, sowie beliebig viele Notizen pro Quest.

Centipede
27.04.2007, 14:53
Kannst das Skript ja trotzdem posten, es interessiert vllt noch jemand anderes als Jadoo!