World of Gothic Archiv
> NWN-Hilfe Türen bei Nacht verschließen |
|
01.09.2002, 22:27 | #1 | ||
Anandra Beiträge: 14 |
Türen bei Nacht verschließen
Hi allerseits :) Mein Team und ich haben bei einer Kleinigkeit ein doch eher großes Problem. Wir kriegen es einfach nicht umgesetzt, dass eine Tür bei Nacht geschlossen ist und bei Tage offen steht. Auch eine mögliche Lösung konnte ich bisher nach längerem Suchen leider nicht finden, so hoffe ich hier auf Hilfe :) Anandra |
||
01.09.2002, 22:53 | #2 | ||
Rhaegar Beiträge: 296 |
Ok: folgendes ins On HeartBeat-Scipt der Tuer: code\: Viel Spass beim weiterbasteln :) ! Ach ja, damit's richtig funtzt sollte die Tuer anfangs verschlossen sein. ___________________________ Verliebt in den UserDefined Event ^^ Überzeugter Episode 2 Hasser[/font] |
||
01.09.2002, 22:56 | #3 | ||
Anandra Beiträge: 14 |
Vielen Dank für die rasche Antwort :) Es handelt sich nämlich eine Ladentür. Zwar gibt es bei D&D sicher kein Ladenschlußgesetz, aber jeder noch so Goldgierige Geschäftsmann braucht in der Nacht wie jeder andere Mensch seinen Schlaf :) |
||
01.09.2002, 22:59 | #4 | ||
Rhaegar Beiträge: 296 |
ja, nachts um drei sind die meissten Ladentueren doch eher geschlossen ;) ! Falls ihr noch irgendwelche Probleme habt: Just post, ich schau dann was sich machen lässt :) ! |
||
02.09.2002, 10:36 | #5 | ||
DTime Beiträge: 155 |
Noch ne Möglichkeit quote: Ist nur ne kleine Alternative! dusk und dawn sind etwas anders geartet als Day und Night... jetzt wird mit dem Sonnenaufgang geöffnet und bei Sonnenuntergang ist Schluss. ActionDoCommand vor Set locked wird benutzt um das ganze in die Reihe einzugliedern, da der Befehl ActionCloseDoor vorher ausgeführt werden soll. Weiß nicht ob´s praktisch nen Unterschied macht... in der Theorie sollte es eigentlich, aber beide Skripte funktionieren tadellos. Wollte eigentlich nur mal wissen ob jemand weiß warum da kein Unterschied besteht???????????????????? Skripten ist nicht unbedingt meine Stärke ;) |
||
02.09.2002, 10:40 | #6 | ||
Rhaegar Beiträge: 296 |
Es besteht ein kleiner Unterschied: Denn der Heartbeat funtzt leider nur wenn ein SC in der jeweiligen Area ist. Wenn die Spieler also mittags um 12 in das Modul kommen und die Tuer geschlossen ist, bleibt sie auch zu und wird erst mit der nächsten Morgendämmerung geöffnet! Hoffe ich konnte deine Frage beantworten :) ! (Und hoffe ich seh das richtig :D) Edit: Ach ja: Das ActionDoCommand bei SetLocked macht Sinn ! |
||
02.09.2002, 11:15 | #7 | ||
DTime Beiträge: 155 |
Dann hätte ich mal ne blöde Frage: Wäre es nicht sinniger diese Abfrage so einzubauen das sie nur gestartet wird wenn ein Player sich nähert? Falls Npc die Tür auch öffnen können müsste man die natürlich auch berücksichtigen! OnPerceived würde sich doch anbieten... oder geht so was bei Türen nicht??? Damit würden auch die OnHeartbeat Aktionen, die ja durchaus Speicherressourcen fressen, entschärft... gerade bei größeren Gebieten? Falls das totaler Blödsinn ist, bedenkt ich bin ein Skripting Rookie ;) |
||
02.09.2002, 11:39 | #8 | ||
Rhaegar Beiträge: 296 |
Tueren haben leider kein OnPerception-Skript. Du kannst höchstens einen NPC dorthinstellen, der der Tuer dann die jeweiligen Anweisungen per AssignCommand oder SignalEvent zuweist. Ich hasse es ja auch OnHB benutzen zu müssen, aber abgesehen von den zwei Mal beim Öffnen und Schliessen muss das Skript ja nichts anderes machen als die if-Conditionals zu ueberpruefen und das sollte Performance-mässig noch halbwegs erträglich sein. Edit: Mögliche Loesung: Einen Npc hinstellen und den die Perception uebernehmen lassen und dann per SignalEvent,ExecuteScript oder AssignCommand die Tuere beeinflussen.[Edit2:Hier stand Blödsinn :D] Problem: Wenn der Spieler jetzt Tagsueber ankommt und ihn der NPC sieht ist die Tuere offen.Wartet der Spieler jetzt noch 5 Stunden und geht um 22:00 Uhr erst rein wird die Tuer vermutlich immer noch offen sein, weil ja keine neue Perception dazukam... [Edit 3:Oops, ich sehe ich wiederhole mich in diesem Posting. Oh Mann, ich bin zu müde um das jetzt noch zu korrigieren ^^] |
||
02.09.2002, 11:56 | #9 | ||
Anandra Beiträge: 14 |
@Rhaegar: Ich bin wohl auf dein Angebot auf weitere Hilfe angewiesen. Wir kommen soweit mit unserem Modul wirklich bestens klar und konnten fast alles bisher alleine lösen Mein Wunsch ist es, dass sich bei uns im Modul ein Lehrer mit 3 Schüler unterhält, per SpeakString. Wir haben ein Skript eingearbeitet, das leider nicht funktioniert. Wir hatten das versucht mit der "Case"-Möglichkeit. Das mehrere Gespräche per Zufall vom Modul ausgewürfelt wird. Frag mich nur nicht, woran es liegen mag, das nichts passiert... Wäre lieb von dir oder jemandem anderen, uns dort ein wenig zu helfen :) Anandra |
||
02.09.2002, 12:00 | #10 | ||
Rhaegar Beiträge: 296 |
Meinst du du koenntest mal das Originalskript hier reinposten, damit ich eine Vorstellung davon bekomme,wie genau es aussehen soll :) ? Edit: Hm, ich schreib' mal kurz ein kleines Beispielskript für einige zufällig ausgewählte Gespräche mit mehreren Charakteren. Gib mir 30 Minuten :) (muss noch Essen ;)) ! |
||
02.09.2002, 13:10 | #11 | ||
Rhaegar Beiträge: 296 |
Ok: So ähnlich (d.h. an euren Dialog angepasst) muss das Skript aussehen, dass im OnUserDefined-Event des Lehrers steht: code\: Aufgerufen wird das Ganze ueber folgendes Skript: code\: Das koennte zum Beispiel im OnEnter-Skript der Area stehen, damit es ausgefuehrt wird, sobald jemand das Klassenzimmer betritt, oder aber auch im OnPerception-Script des Lehrers, je nachdem, bei welcher Gelegenheit ihr es haben wollt. Wichtig: Der Lehrer ist sozusagen die Schaltzentrale fuer die Kinder. Er darf NICHT SITZEN, weil er sonst keine Aktionen abarbeiten kann, da das Sitzen die Aktionsliste blockiert. Falls er unbedingt sitzen soll schreib' Bescheid, dann schreib' ich eine Loesung dafuer(die aber nicht besonders elegant ist...) Edit: *ueberleg* Hm, geht doch auch recht einfach, dass auch der Lehrer sitzen kann: Einfach das Skript in den UserDefined eines der Stuehle, die eh rumstehen und statt dem ActionSpeakString("...") für die Saetze des Lehrers einfach die Saetze des Lehrers auch wie die der Schueler scripten (Also : ActionDoCommand(AssignCommand(oTeacher,SpeakString("...."))) ).Das einzige was man am Auslöserskript aendern muss ist, dass man statt des UD des Lehrers den des Stuhles ausklöst (also statt SignalEvent(oTeacher,....)-> SignalEvent(oStuhl,...) ). Aber eigentlich steht der Lehrer ja ohnehin meisstens vor der Klasse... ___________________________ Verliebt in den UserDefined Event ^^ Überzeugter Episode 2 Hasser[/font] |
||
02.09.2002, 15:25 | #12 | ||
Anandra Beiträge: 14 |
Hab tausend Dank! :) Das ging ja richtig schnell und vor allem gleich ein vollständiges Script, ich schätze, ich bin dir was schuldig :) Ich weiß nicht, wie ich dir danken kann Anandra |
||
02.09.2002, 15:46 | #13 | ||
Rhaegar Beiträge: 296 |
Ist schon ok :) ! Ist ja nicht so, das ich ungern skripte, im Gegenteil, die Sache macht mir Spass (sonst wuerde ich auch nicht Info studieren ;) ). Falls ihr weitere Probleme habt, du weisst ja wo du mich findest :)... |
||
|