Ich habe gerade ein sehr seltsames Problem...der Spieler aktiviert einen Activator und wird in einen Raum zu einen NPC teleportiert.
Der NPC hat einen simplen Script, der mit onDeath ausgelöst wird und erst eine globale Variable auf 1 setzt, einen Activator enabled und außerdem den Spieler zurückteleportiert.
Soweit, so gut, das funktioniert alles.
Aber sobald man zurück ist, wird man alle paar Sekunden abermals zu diesen Marker teleportiert, als wäre der NPC ein zweites mal gestorben...![]()
Ich habe schon alles mögliche versucht, auch per Variable festgelegt dass der Spieler eigentlich nur ein einziges mal teleportiert werden kann, ich habe sogar in den Script geschrieben dass der NPC nach seinem Ableben zusätzlich noch deaktiviert werden soll, aber das hilft alles nichts.
edit: Problem scheint fürs erste dank weiterer Variablen-Verschachtelung gelöst.
Geändert von Lazarus (23.06.2007 um 23:56 Uhr)
Der Teleport-Code Player.MoveToMarker steht im OnDeath-Block? Dann sollte er eigentlich auch nur einmal ausgeführt werden... Versuch doch mal alternativ die Zeile in den GameMode-Block der zu tötenden Kreatur zu schreiben: If dead == 1 && doonce != 1, dann Teleport und set doonce to 1. Damit läuft das definitiv nur einmal. Wenn das Phänomen dann immer noch auftritt, muss es an der Funktion von MoveToMarker liegen. Dann könntest du es mal mit MoveTo oder PositionCell versuchen. Einfach mal rumprobieren... Mehr fällt mir zu diesem seltsamen Problem gerade nicht ein.
Schönen Gruß, Haldor.
MoveToMarker? Kannte ich bisher gar nicht, habe schon immer MoveTo genommen. Gibt es da einen Unterschied?
Naja, jetzt funktioniert's ja...trotzdem seltsam.
MoveToMarker MarkerID bewegt den Actor halt zu dem genannten Marker, wobei man die ReferenzID angeben muss und nicht die BasisID. Wenn man einen XMarkerHeading nimmt, wird auch gleich die Blickrichtung übernommen. Bei MoveTo muss man Koordinaten und Blickwinkel angeben. PositionCell ist wie MoveTo, nur für den Transfer zwischen Zellen, was bei MoveTo wohl nicht immer richtig klappt. Will man übrigens andere Objekte als Actors bewegen, so muss man etwas umständlicher Skripten. Das gilt z.B. für Container, Activators oder Lights:
Quelle: CS-Wiki. Selbst getestet und funktionstüchtig.
Was hast du nun eigentlich geändert, damit es klappt? Oder hat sich das Problem von selbst gelöst?
Schönen Gruß, Haldor.
Nein, und was glaubst du warum ich hier mache was ich mache. Ein Gewisser Stand an Wissen wird auch von mir verlangt.
Erklär mir doch bitte die Vorteile die Moveto zur "besseren Lösung" machen. Überhaupt scheint aus deiner Beschreibung in deinem vorherigen Post, Moveto nicht als die bessere Lösung hervorzugehen.
Nun streitet euch mal nicht.
Zum MoveTo-Befehl:
das könnte vielleicht sogar den Fehler ausgelöst haben.Zitat von CSWiki
Angaben wie Koordinaten/Blickrichtung ist bei MoveTo übrigens optional.
Hallo,
also zum MoveTo/MoveToMarker-Problem:
Meiner Meinung nach gibt es zwischen den beiden Funktionen keinen großen Unterschied.
MoveToMarker ist spezieller, Objekte werden zu einem Marker bewegt.
Mit MoveTo kann das Objekt auch zu anderen Objekten bzw. Koordinaten bewegt werden. Die Angabe der Koordinaten ist jedoch optional, d.h. die müssen nicht unbedingt angegeben werden.
Weiterhin müsste man testen, ob es noch weitere Unterschiede gibt. Z.B. entspricht ein MoveTo, sollte es auf den Player angewandt werden, einem Return. Ob das beim MoveToMarker genauso ist, kann ich, wie gesagt, nicht bestätigen. Das muss man ausprobieren.
Was jetzt aber der große Unterschied an diesen beiden Funktionen ist, kann ich nicht genau sagen, denn MoveTo kann alles, was auch MoveToMarker kann.
Edit: Äh ... ja, wie Lazarus sagt, nur umständlich ausgedrückt.![]()
Geändert von Rung (24.06.2007 um 16:54 Uhr)
Erstens habe ich dir keinerlei Kompetenzen abgesprochen, zweitens habe ich nicht gesagt, dass MoveTo "besser" sei als MoveToMarker. Ich persönlich favorisiere lediglich MoveToMarker. Es sollte ja jedem Modder erlaubt sein, seinen persönlichen Skript-Stil zu entwickeln. Aber wie Meister Rung schon sagte, sind die Unterschiede da wohl recht diffus. Hauptsache ist aber doch, dass die Skripte im Endeffekt so funktionieren, wie man es haben will. Und das Ziel wurde in diesem konkreten Fall erreicht. Also freuen wir uns doch einfach und warten auf das nächste Problem, das es zu lösen gilt!
Schönen Gruß, Haldor.
Ein Activator verschießt durch einen Script einen Feuerball mit Flächenwirkung. Kann ich irgendwie dafür sorgen, dass der Spieler von der Schadenswirkung verschont bleibt?
Wenn der Activator durch den Spieler direkt aktiviert wird, würde ich empfehlen, den Spieler den Fläschenzauber wirken zu lassen. Ansonsten mit einer zeitweiligen 100%igen Magie-/Feuerresistenz?![]()
Wenn ich den Player per Script einen Spruch casten lassen will, funktioniert das nie - es tut sich einfach nichts.
Das liegt wohl daran, dass es ein Range-Spruch ist.
Aus dem Wiki unter dem Eintrag zu Cast:Edit:Zitat
Wenn Du den Spruch von einem Activator castest, weißt Du dann wen es alles treffen kann? D.h. sind Dir jene, die Du damit verletzen willst, bekannt?