NewRaven.net - Forum

Rung stellte hier auf Renes Anmerkung folgende Frage:

Zitat:
Edit: Also kann man das Script nicht bedenkenlos anwenden? Was soll ich nun tun? Muss ich jetzt die 20 Quests, die nur in Zusammenarbeit mit diesem Script funktionieren umschreiben?



Ich denke, wenn kein Cellchange ( z.B. if ( CellChange == 0 ) oder so) in der so besuchten Cell abgefragt wird ist das doch in Ordnung, also kann es bleiben. Andersrum weißt du dann warum diese Abfrage nicht funktioniert.
Wird das Cellchange auch abgefangen, wenn es in eine unerfülten Bedingung eingegrenzt ist? Wenn nicht ein Vorschlag, bei dem man sich das activate sparen kann:

PHP-Code:
begin OD3_door_K_Rittercave

If ( MenuMode == )
    return
endif

if ( 
player->GetItemCount"OD3_key_K_Raubritter" == ) ;wenn der PC diesen Schlüssel nicht hatwird er die Tür nicht übverwinden können
    
If ( OnActivate == )
        
PlaySound "LockedDoor" ;Geräusch einer abgeschlossenen Tür
        messagebox 
"Hier wohnen Leute, die nicht wollen, dass jeder Dahergelaufene in den privaten Räumen umherläuft."
    
endif
endif

end

Sobald ein "OnActivate" im Script abgearbeitet wird geht der Cellchange verloren, also sowohl mit der Methode

set Angebimmelt to OnActivate

oder auch mit

if ( OnActivate [== 1] )

ist - natürlich nur an Türen - der Zellwechsel nicht mehr feststellbar.
Umgehen des Problems: Baut Eure Spezial-Türen als Schleusen innerhalb einer Zelle, so das beim Benutzen der Tür garkein Zellwechsel stattfindet.

Wenn der Spieler aber unbedingt durch eine bescriptete Tür gehen soll dann ist darauf zu achten das in der Zelle dahinter eingangs kein Cellchange stattfindet und andere Scripts an Objekten in dieser Zelle möglicherweise umsonst auf ein Cellchange warten. Also, keine kranken bzw. original gelevelten Kreaturen, Soundmarker oder ähnliches hinter solche Türen packen.
Scripts in der Zelle kontrollieren ob eine if ( Cellchanged ) oder set x to Cellchanged- Anweisung enthalten ist. Mehr kann man nicht tun.
Ist gut,

dann werde ich an allen möglichen Stellen das Locklevel auf Null setzen und einen Schlüssel definieren. Leider kommt dann gar keine Message und der Spieler weiß nicht was los ist. :( Die Umgehungsmethode mit der zweiten Tür im Inneren des Raumes ist es etwas schwierig und schränkt sehr in der Zellengestaltung ein, denke ich.
Allerdings habe ich auch eine Tür, an der ein Scriptt hängt, wo der Spieler ein Rätsel lösen muss und die Person, die hinter der Tür steht darauf reagiert, je nachdem wieviele Versuche der PC benötigt hat. Bei dieser Tür wird ebenfalls ein Zelenwechsel vollzogen, und ich hatte einige kleine Probleme damit, allerdings denke ich diese jetzt behoben zu haben. Dialoge werden also nicht davon betroffen? Bei dem Rätsel benutze ich eine short-Variable, die auch an demr Person hängt.
Nein, es wären nur Scripte betroffen die auf Cellchanged reagieren.
Dialoge (ausser Thema "Reisen") haben nix mit Cellchange zu tun wenn nicht die lokalen Variablen des Sprechers zufällig bei Zellwechseln berechnet oder gesetzt werden

Wenn beispielsweise eine Tür die in Ald'ruhn auf den Platz führt ein Script trägt welches bei OnActivate reagiert dann würden "Lichter bei Nacht" sich niemals ein oder ausschalten wenn man diese Tür benutzt.
Oder wenn man an Caius Cosades Haustür aussen ein Script macht welches auf OnActivate mit Activate reagiert, d.h. den Spieler nach drinnen bringt könnte Caius niemals auf's Festland verschwinden.
Oder wenn ein Aktivator gerade einen Sound während des Cellchanged startet fängt im günstigsten Fall nur die Soundkarte an zu hacken ansonsten hat man dazu noch das volle Dia-Show-Zitterprogramm.

@jmk - ja Du hast recht- wenn die Tür nicht mit Activate reagiert kann auch kein Cellchange stattfinden der "verloren gehen" könnte.

Noch ein kurzes Beispiel, Script an einer Tür
Code:

begin

short MessageOn

if ( MessageOn == -1 )
return
elseif ( MessageOn == 0 )
set MessageOn to OnActivate
elseif ( MessageOn == 1 )

;passiert irgendwas...
; z.B.
if ( Player-> GetStrength > 80 )
MessageBox "Ihr müsst kräftiger rütteln!"
set MessageOn to -1
else
Messagebox "Ihr seid ja zu schwach um die Klinke zu drücken!"
set MessageOn to 0
endif
endif

end


Sobald in diesem Beispiel MessageOn == -1 ist verhält sich diese Tür ganz "normal".
Würde das Script aber direkt auf das abgefangene OnActivate mit Activate reagieren würde in dem Raum den man betritt kein Cellchanged == 1 registriert werden können.
@ Uranor

zuerst einmal danke für deine Beiträge ;) (jaja, jetzt kommts :lol: )
Der Thread ist allerdings nicht dazu gedacht, reine Befehle an sich zu erklären (disable, AddTopic) sondern ein paar Scriptansätze bzw. Lösungen zu bieten.

Zudem möchte ich dir in einigen Dingen (AddTopic-Geschichte) noch meine Meinung/Fragen entgegenstellen ;)
Jedes vermeidbare Script ist erst einmal ein Script zuviel. (siehe Vorteil)
Was meinst du mit: "... Stichwort kann via Zuweisungen unter Speaker Condition PC-Gruppen bekannt gemacht werden. "?

Zitat:
Nachteil/Sorgfalt: Dialog erscheint nur, wenn das Stichwort/die Stichworte im Greeting des aktuellen Gespräches stehen. Im RPG ist gerade das oft regelrecht verpönt.

:? Arme RPG-Spieler ... sollten mal mehr an die frische Luft gehen und Leute kennenlernen. :lol: Wenn ich mich mit jemandem unterhalte (so in echt, ne?) weiß ich nichts darüber, das er eine schlechte Ernte hatte. Erst im Gespräch erfahre ich Dinge, die ich wiederum zum Thema weiteren Dialoges machen kann. So könnte ich ihn dann nämlich fragen, ob er Landwirt ist, woher die schlechte Ernte kommt ... nun ja, Hilfe biete ich ihm wohl nur im Spiel an ;) Wesentlich unwahscheinlicher erscheint mir da die Methode (ich bleibe mal bei den Beispielen aus dem anderen Thread) auf einen Fremden zuzustürzen und ihn auf ein schlechtes Gewissen anzusprechen.

Zitat:
Auch soll oftmals genau ein PC das Topic kennen.


Und? (Ich nehm mal an, du meinst NPC.) Wo ist der Unterschied zum AddTopic? Hier (Greeting) wie da (AddTopic) mußt du die passenden Conditions festlegen.... :huh:

Zitat:
Dem Greeting wird die Flexibilität genommen.
Auch der Spielraum für eine lebendige, abwechslungsreiche Dialogführung wird genommen. Folgestichworte müssten mit oft schwer erzwingbaren Folgegreetings bekannt gemacht werden.


Sorry, aber hast du dir das genau überlegt? Lediglich der Respekt vor deinen bisherigen Äußerungen verhindert einen Ausruf wie: Totaler Quatsch! (jaja, ich weiß - ich bin ihn ja trotzdem losgeworden)
Ausschließlich dein allererstes Greeting benötigt die Stichworte (müssen also genau einmal vorkommen). Den ganzen Rest kannst du so gestalten wie du willst. Ich finde es sogar viel cleverer folgende Stichworte im Dialog einzubauen. Dazu ist natürlich ein Wechsel zwischen Topic und Greeting nötig. Das Greeting liefert das Stichwort für das Topic, über das Topic steuere ich das Gespräch, Journaleinträge und ggf. weitere Topics. Dadurch werden Dialoge lebendiger und glaubwürdiger.

Beispiel auf unseren Beispielen:
Greeting (NPC_ID festlegen, ggf. weitere Bedingungen):
Geht Fremder, lasst mich mit meinen Sorgen allein, ich hatte eine miese Ernte.

Ab hier kennst du (als Spieler) das Topic, hat der NPC etwas dazu zu sagen taucht dies auf und du kannst mit ihm darüber reden.
Topic miese Ernte (selbe NPC_ID)
... was immer es zu sagen gibt ... :) willst du gleich neue Topics hinzufügen z.B.
Nun, wenn Ihr schon fragen müßt und mein schlechtes Gewissen wieder aufrüttelt ... wollt Ihr mir helfen?

Womit du das Topic schlechtes Gewissen bekannt gemacht hast (was im Gespräch natürlicher kommt als wenn da so ein Fremder angelatscht kommt und mich auf mein schlechtes Gewissen anspricht...) und gleich eine Frage stellen kannst (choice)

oder

Nun ja, man merkt gleich daß Ihr nicht von hier stammt. Es gab eine lange Dürre in diesem Landstrich. Und nun habe ich ein schlechtes Gewissen. Schaut mich nicht so an, ich weiß selbst dies ist Unsinn, aber so bin ich nun einmal, Fremder. Sagt, wollt ihr mir helfen?

bei ja kann man erst mal nach dem Namen fragen, sich noch etwas bekannt machen lassen, vertrauensbildende (kleine) Aufgaben zuweisen, zu größeren, schwierigeren und/oder gefährlicheren Dingen übergehen ... und ich seh nicht wo mich da das Ablehnen von AddTopic negativ trifft? Ganz im Gegentum ...

Über Meinungen anderer (auch Nur-Spieler) diesbezüglich würde ich mich auch freuen ;)
Das sieht mir ja wieder ähnlich. Sorry, jsc. Dann hab ich den Sinn des Threads völlig falsch verstanden. Soweit ich es bisher recherchieren konnte, fehlt eine solche Referenz allerdings. Wo ich hinschau, werden Befehle und Bezeichner genutzt, als wären sie allgemein bekannt und verstanden. Auch Werke wie "Scripting_for_Dummies" bewegen sich innerhalb eines Bereiches der Praxis, nicht wirklich erst mal rein bei den Grundlagen. Warum benutzt man einen Bezeichner gerade dort und jetzt? Was bedeutet er überhaupt. Zu beiden Fragen sollte man nachschlagen können. Existiert es noch nicht, kann es erarbeitet werden.


Zitat:
"... Stichwort kann via Zuweisungen unter Speaker Condition PC-Gruppen bekannt gemacht werden. "


Damit meinte ich, dass man z.B. Faction oder Rank wählen kann. Schon verfügen mehrere PC über das Stichwort.


Ja klar, die armen RPG-Spieler. Ich geh eher davon aus, bei der Begrüßung werden die üblichen freundlichen und bissigen Floskeln ausgetauscht. Dann kommt erst der Maulwurf im Blumenbeet.

Dann hab ich das Problem, wie soll ich gerade in der jetzigen, vielleicht dritten oder achten Begegnung genau das aktuell anliegende Stichwort unterbringen? Welche Begrüßung wird er denn wählen?
"Na, hattet Ihr Erfolg?" wäre durchaus typisch, müsste aber expilizit eingerichtet werden.
Ich will ihm aber sagen,
"Vor der Höhle hockte ein grauer Riesenmarder, der freundlich mit mir sprach und dort nicht wegzubewegen war!"
Wie bring ich meine Anliegen in der Grußfloskel des NPC unter?
Solche Stichworte wie "schlechtes Gewissen" wollen ja gerade zeigen, dass das Anliegen des Spielers oft schwer in der Begrüßung des NPC unterbringbar ist. Und wie gesagt, ihm stehen zich Auswahlen zur Verfügung. Ich hab das mal gecheckt und kam nicht an mein eingerichtetes Greeting. Es blieb Zufall. Nur das erste Force-Greeting kann ich bestimmen. Alles weitere wir der Erfahrung bedürfen. Derzeit wüsste ich keine sinnvolle Möglichkeit.

Zitat:
Dazu ist natürlich ein Wechsel zwischen Topic und Greeting nötig.


Nach Gesprächsende und erneuter Aufnahme ist der Faden weg. Ich komm nicht mehr an das Stichwort. Hab es probiert und mich dann für AddTopic entschieden. Aus meiner jetzigen Sicht ist das also kein Quatsch. So kann ich arbeiten. Wenn es besseres gibt, ist das nicht so ohne weiteres ersichtlich. Derzeit sehe ich nur die Möglichkeit, alle Greetings zu löschen und die gewollten einzusetzen. Ich denk allerdings, die NPC des Spiels sollte man original lassen und nur die eigenen Dialoge dazubringen.

Oder die konkrete Frage. Wie erreiche ich, dass der NPC das jeweils richtige Greeting nutzt?
zunächst mal, gib allen deinen NPC's die local short nolore bzw. das nolore-Script.
Schon hast Du eine Menge unnötigen Quatsch ausgeschlossen.

Setze z.B. die Bedingung "Cell" ein wenn Deine sonst ungruppierbaren NPC's 100% stationär sind und nicht erst ein extra Script für sie angelegt werden soll.

Checke mit dem Dialog-Filter auf welche Themen deine NPC's eingehen würden, schreibe "Abfangsprüche" wie "Interressiert mich nicht" oder "Keine Ahnung was Ihr meint" für Deine Leute. Benutze dabei ClearInfoActor in den Results so das auch keine Tagebuchvermerke zu dem Gesprächsthema gemacht werden

Gruppiere eigene NPC's mit Hilfe einer eigenen, einzigartigen lokalen Short-Variablen
vgl. Mietbegleiter-PlugIn - keine Sorge das hat nur ein Script und die gewisse einzigartige Variable die zudem noch anzeigt ob derjenige schonmal gemietet war wird Dir gleich ins Auge stechen...

Ausserdem mit Dialogverlängerungen wie Choice "weiter" 1 oder mit
Journal/ AddItem/RemoveItem-Aktionen werden die Wahlmöglichkeiten aufgefrischt d.h. es wird neu durchforstet welche Gesprächsthemen dem Spieler verfügbar sein sollen.
Ahahaha, nun schäm ich mich ja direkt etwas... :oops:

Wobei ich das hier
Zitat:
Damit meinte ich, dass man z.B. Faction oder Rank wählen kann. Schon verfügen mehrere PC über das Stichwort.

mal auf 39.2 und nicht schlafen könen schiebe ^_^

Da hab ich wohl mehr Wissen bei dir angenommen als du dir schon aneignen konntest. Hm. Dialoge ... ist eh nicht ganz leicht ;)

NewRavens Tut kennst du ja, und dann kommt es darauf an, was du erreichen möchtest.
Du baust deine Gespräche bei Null auf, deine NPC sind neu. Funktion Talked To PC = 3 und beim dritten Ansprechen wird dieses Greeting mit eben dieser Bedingung gewählt geht leider nicht. (Nur 0 und 1, schonmal gesprochen oder nicht) Aber analog Creatures könnte man Greetings weiterschalten. Gibt es eine Aufgabe erfolgt sicher auch ein Journaleintrag, schon hat man eine weitere Condition, um zu filtern, zu selektieren.

Mit dem Beispiel wart ich jetzt bis es mir wieder besser geht, bevor ich noch mehr Mist verzapfe, sorry :)

Da hilft wirklich nur Übung und das Analysieren der Dialoge vorhandener Mods und MWs selbst. Schwieriger (wegen dem Überblick) wird es wenn man viele Verzweigungen anbieten will. Der Möglichkeiten sind leider viele, kann ich Gespräche ja sogar wetterabhängig führen :D
Befehle, Bezeichner und deren Grundlagen wird meines Erachtens für diesen (anderen) Thread einfach zu viel und führt in der Tat vom gedachten Sinn weg, ich wollte auch nur eine Hilfe für die Praxis bieten. Ich bin nämlich im großen und ganzen ziemlich "ungerecht" im Verhalten und nehme wenig Arbeit ab. Hilfe auf Fragen gern, aber Grundlagen habe ich mir selbst erarbeitet, warum sollen das nicht auch die anderen? Halte mich da frei an Mr. Lincoln ;)
Entschuldige Rene,

ich bin etwas schwer von Begriff. Okay, also muss ich mir um die Dialoge keine Sorgen machen. Nur Scripts, die durch ein Cellchange aktiviert werden (wie besagte Soundscripts oder ein Dis-Enable-Script), denn Cellchange wird dabei nicht mehr abgefragt. In Ordnung, das habe ich verstanden.
Danke Dir, Rene.
Seiten: 1 2 3
Referenz-URLs