Geschrieben um 10:17 am 22.07.2003 | Zitat | Editieren | Löschen | |
Mitglied Bachelor Gumby Beiträge: 60 | So, nach relativ langer Zeit melde ich mich auch mal wieder. Natürlich aufgrund eines Problems. :roll: Es geht darum, dass ich NPCs brauche, die mal tot und mal nicht sind. Bisher muss ich noch bei jedem Objekt die Routinen für die Todesnachrichten extra einfügen, weil das mit der Klasse nicht funktionieren wollte. Beispiel:
Weiß jemand eine bessere Möglichkeit, die auf mehrere Objekte übertragbar ist? So ist es nämlich ziemlich umständlich. Mit einer Klasse für die Toten habe ich es schon probiert, aber anstelle des Alternativtextes wurde dann gar nichts ausgegeben, sobald das Objekt das Attribut dead bekommen hatte(bzw. nur die standardnachrichten der library). Mein zweites Problem ist das Adjektiv. Wenn da steht: "Du siehst hier einen Gardist." obwohl der Gardist tot ist, erscheint mir das etwas verwirrend, vor allem, wenn er in einem Satz mit anderen NPCs genannt wird, die noch leben. Ich habe allerdings nicht geschafft, nachträglich ein Adjektiv einzufügen. Wenn ich es auf ähnliche Weise wie oben versuche, wird ausgegeben: "Du siehst hier einen yten Gardist." oder ein Buchstabensalat, wenn ich es mittels Object.adj und Routine versuche. Woran liegt das und wie kann ich es umgehen? Eine Alternative wäre natürlich die initial - property, aber das ist dann wieder ein Haufen Mehrarbeit, vor allem, wenn es viele verschiedene Tote im Spiel gibt. 8) Außerdem hätte ich (wenn möglich) schon gern wechselnde Adjektive... Vielen Dank im Vorraus schonmal für hoffentlich viele fachkundige Antworten. |
Geschrieben um 14:21 am 23.07.2003 | Zitat | Editieren | Löschen | |
Mitglied Bachelor Gumby Beiträge: 61 | Hi, es ist ein bisschen schwierig, zu sagen, was du falsch machst, weil du zu wenig Code gezeigt hast. Ich hab da was zusammengebastelt, das ist ein bisschen lang, aber es scheint mehr oder weniger zu funktionieren. Allerdings hab ich eine uralte deutsche Library gehabt, und weiss nicht, wie das bei neueren ist.
|
Geschrieben um 22:31 am 23.07.2003 | Zitat | Editieren | Löschen | |
Mitglied Bachelor Gumby Beiträge: 60 | Danke! Ja, damit kann ich etwas anfangen. Mein ursprünglicher Fehler war, dem Gardist erst im toten Zustand seine Klasse zuzuweisen, die sich nur auf seine Todesnachrichten bezieht. Das hatte sich zwar zwischenzeitlich erledigt, aber auf die Idee, das Adjektiv zu umschreiben, statt selbst zu benutzen, bin ich noch gar nicht gekommen. Danke vielmals, das wird mir helfen! Das nächste Problem ist allerdings schon in Sicht. Wie in deinem Beispiel nämlich auch aufgeführt, brauche ich mehrere "Gardisten" (lassen wir sie mal weiterhin die Sündenböcke sein). Und zwar in Verbindung mit einem Kampfsystem. Alles funktioniert perfekt, solange wir bei einem Gardisten bleiben. Aber bei mehreren sieht es im Moment ja so aus:
etc. Was ich erreichen will, ist allerdings:
Ich bin sicher, es gibt eine entsprechende Stelle im Manual, aber irgendwie hab ich das Richtige noch nicht gefunden, da sie sich auch unabhängig voneinander bewegen können müssen. Wenn z.B. der Spieler in eine Stadt kommt, und die Gardisten die Stadtwache darstellen, von denen hier und da einige sind und die Zahlen auch wechseln. Jemand ne Idee? Verweis auf Seite im Manual? Oder wäre das eine passende Aufgabe für den Guru-Wettbewerb? Vielen Dank schonmal für alle Antworten! |
Geschrieben um 14:49 am 02.08.2003 | Zitat | Editieren | Löschen | |
Mitglied Bachelor Gumby Beiträge: 60 | Wirklich niemand ne Idee? Im Moment kann ich die Gardisten nur zusammenlegen, wenn sie unangreifbar sind. Denn wenn ich sie als Klasse deklariere...
und dann ein paar von ihnen in einen Raum setze...
Habe ich sie zwar gestapelt, aber sämtliche Aktionen beziehen sich nur auf den ersten. Bsp.:
Man sieht also weder, dass einer von ihnen tot ist, noch kann man mit den anderen interagieren, solange der erste sich noch im Raum befindet. Ich verzweifle noch daran! |
Geschrieben um 13:47 am 04.08.2003 | Zitat | Editieren | Löschen | |
Mitglied Bachelor Gumby Beiträge: 61 | Ich hab mir das jetzt genauer angeschaut. Ich glaube, es geht nicht, dass man das automatisch auflisten lässt, und trotzdem die Gardisten unterscheiden kann. Am Einfachsten wäre es wahrscheinlich, wenn du die Aufzählung selbst codierst, mit einer describe property in der Klassendefinition. (Nicht, dass ich das ausprobiert hätte.) Z.B. du zählst, wieviele Gardisten im Raum sind, und wieviele davon tot sind, und schreibst das dann selbst. Ungefähr so:
oder
Und dann gibt's noch den Fall, dass nur ein einziger Gardist im Raum ist, ... Dann solltest du wahrscheinlich noch irgendeine Variable setzen, wenn das zum ersten mal ausgespuckt worden ist, damit das nicht für jeden Gardisten gezeigt wird, und am Ende des turns die Variable wieder zurücksetzen, oder so. Wie gesagt, nichts getestet, nur eine Idee. Sophie |
Geschrieben um 19:30 am 04.08.2003 | Zitat | Editieren | Löschen | |
Mitglied Bachelor Gumby Beiträge: 60 | Danke, werd ich mal ausprobieren. |
Geschrieben um 16:23 am 07.08.2003 | Zitat | Editieren | Löschen | |
Mitglied Bachelor Gumby Beiträge: 60 | Hm, irgendwie hab ich das Spiel nicht dazu bringen können, die Meldung bei mehreren Gardisten nur einmal auszuspucken. Aber was anderes hat (teilweise) geklappt, und das Gute daran ist, ich kann meine Gardisten einfach vervielfältigen. Folgend die beiden Klassen, die gebraucht werden:
red Bei der Klasse DeadGardist musste ich das Adjektiv beim Plural schon in die Kurzbeschreibung setzen, weil es sonst bei mehreren Toten einfach weggelassen würde. Kann ich das verhindern? red Bei derselben Klasse kann ich in der name-property nicht 'gardist' oder 'gardisten' verwenden, solange die lebenden Gardisten kein Adjektiv haben. Wenn ich das aber vermeiden möchte, gibt es eine Möglichkeit, dass bei der Spielereingabe von 'gardist' die Klasse "DeadGardist" nur aufgerufen wird, wenn es kein Objekt mit der Klasse "Gardist" im selben Raum gibt? Fehlen noch zwei Routinen:
Und dann natürlich noch die Einträge in der Initialise-Routine, um am Anfang ein paar Gardisten zu haben:
Hm, soweit meine bisherige Lösung. Wär dankbar, wenn mir jemand sagen könnte, wie die beiden oben beschriebenen Schönheitsfehler in ihr zu bewältigen sind. Gruß Clive |
Geschrieben um 10:54 am 08.08.2003 | Zitat | Editieren | Löschen | |
Mitglied Prof Gumby Beiträge: 634 | Zitat:
Wie Sophie bereits geschrieben hat: Du musst eine Flagge setzen, ob der Text bereits geschrieben wurde oder nicht, etwa so:
Zitat:
Hmmm. Ist hier vielleicht der List Writer nicht an die deutsche Sprache angepasst? Die Eigenschaft adj wird wohl nur zusammen mit short_name verstanden. Zitat:
Ja, Du kannst die Priorität von Objekten in ChooseObjects bestimmen:
Das hat allerdings den Nachteil, dass die Wahl des Parsers in Klammern angezeigt wird und dass "leere" Befehle versuchen, etwas mit dem Gardisten anzustellen:
Außerdem würde ich das verschieben der Gardisten an einen Ort direkt in der Eigenschaft create der Klassen erzeugen:
Das Problem bei Deinen Ansätzen scheint mir zu sein, dass man die Klasse eines Objekts nicht während des Spiels ändern kann. Du musst also - wie Du es ja auch gemacht hast - mit parallelen Objekten für tote und lebendige Gardisten arbeiten. Oder Du arbeitest mit einer Klasse und dem Attribut dead. Dann wird die Ausgabe der Liste natürlich kompliziert. Vielleicht solltest Du Dir mal die Lösung zur Aufgabe mit den "featureless white cubes" (Aufgabe 79) ansehen, die werden auch durch eine Klasse dargestellt und haben zwei Zustände: Entweder sind sie "featureless" oder haben einen Namen. Vielleicht kannst Du da etwas pasendes für Deine Gardisten finden. Da Gardisten üblicherweise nicht in der Liste aller Gegenstände auftauchen, sondern in einem eigenen Absatz, muss hier wohl describe anstatt short_name und plural benutzt werden. Vielleicht kannst Du aber den List Writer für Deine Zwecke benutzen? Und zum Schluss der Disclaimer: Der Code ist mit dem Manual überprüft, aber nicht am Rechner getestet worden. |
Geschrieben um 19:23 am 08.08.2003 | Zitat | Editieren | Löschen | |
Mitglied Bachelor Gumby Beiträge: 60 | Juhu, endlich funktioniert alles (soweit ich das bisher beurteilen kann) einwandfrei! Vielen Dank an euch! Falls das Spiel jemals fertig werden sollte, werdet ihr beiden in der Danksagung ganz oben erwähnt. Gruß Clive |