Jonny65 hat geschrieben:
Wenn man es sich nicht schwer machen will, dann macht man gar keinen Wherigo.
Was hat ein Wherigo mit "sich schwer machen" zu tun? Es geht darum, ob man umständlich programmiert oder nicht. Und unnötig Variablen anzulegen ist umständlich und reduziert die Übersichtlichkeit.
Jonny65 hat geschrieben:
Es kommt ziemlich schlampig rüber, wenn entweder ein 2. Dialog gar nicht mehr kommt oder der gleiche nochmal.
Was jetzt? Nix erfinden, wovon keiner gesprochen hat. Man spricht die Person an, die Info wird angezeigt und im Anschluß des Dialogs wird die entsprechende Funktion (nennen wir sie "ansprechen") bei der Person disabled und ein Zähler erhöht.
Jonny65 hat geschrieben:
Der 2. kann dann so bleiben, sonst wird es natürlich umständlich und der Spieler klickt öfters noch ein 2.mal auf "Ansprechen", ein 3. mal wohl eher nicht. Und eine Abfrage nach "MitPolizistGesprochen true/false" ist ja nun wirklich keine nächtelange Programmierung, dafür sauber und v.a realistischer.
Sauber und realistisch???
Wir haben für die eine Zone schon 4 booleans. Wenn das in anderen Zonen auch nochmal kommt, wird's langsam unübersichtlich. Außerdem ist ein Abfrage ob ein Zähler einen bestimmten Wert hat sicherlich sauberer und übersichtlicher als 4 booleans über ein logisches und zu verknüpfen.
Warum sollte man nicht einfach die Frage disablen und einen Zähler hoch setzen? Nach einmal fragen, sollten alle Infos übergeben sein. Zur Not könnte man dem Spieler noch ein Notizbuch einstecken und die Infos da nochmal reinschreiben, fall er es nicht schafft, sich das alles zu merken.
Von mehr als einmal fragen hat der TO übrigens auch nichts erwähnt.
Jonny65 hat geschrieben:
Also z.b TagebuchGenommen=true und Tagebuch.Nehmen=disable
Nach diesen 2 Kommandos wird eine Funktion aufgerufen (wie docfred angedeuted hat) in der steht :
if TagebuchGenommen=true and LampeGenommen=true and .... then AllesMitgenommen=true (hier können dann Messages aufpoppen wie "Du hast in dieser Zone alles erledigt, suche nun ..."
Dafür gibt's den Befehl "enthält". Damit kann man abfragen, ob der Spieler etwas im Inventar hat und spart sich schon wieder einen boolean. In dem Beispiel sogar mehr als einen.
Je weniger Variablen, desto übersichtlicher.