Archiv verlassen und diese Seite im Standarddesign anzeigen : Ruinen wieder aufbauen
Thorondor
16.01.2008, 18:49
Moin zusammen
Ich möchte mir eine eigene Behausung schaffen. Da es aber recht langweilig ist einfach nur ein Haus zu bauen, möchte ich aus einer Ruine wieder ein schönes Heim machen. Es gibt ja diverse Gebäude etc. die als Ruinen existiern und ein richtiges Pendant haben. Verbunden mit einem Quest (Ruine kaufen, Geister vertreiben, "Handwerker" finden usw.) stelle ich mir das ganz nett vor.
Nur weiß ich nicht genau wie ich das mit dem Ersetzem der Ruine durch das richtige Haus anstellen soll. Inspiriert hat mich der Ausbau der zu kaufenden Häuser, insbesondere das Benirus Anwesen in Anvil. Ich habe mir die Sache auch ziemlichgenau im CS angesehn, bin aber leider nicht so recht schlau draus geworden.:confused:
Danke schon mal für hilfreiche Antworten.
Grüße
Thorondor
Du musst alles im fertigen Zustand bauen. Und dann stellst du Sachen die später dazukommen sollen auf initially disabled. Dann lässt du sie durch Scripte (am ende von Quests auf Schriftrollen usw) wieder einschalten (enable ...)
Thorondor
18.01.2008, 11:21
Danke. Das funktioniert schon mal prächtig. :) Allerdings haben sich während der Arbeit weitere Fragen ergeben.
1. Wie kann ich erreichen, dass der Quest zur nächsten Stage springt, wenn ich einen bestimmten Ort erreiche? Ich habe es bereits mit der Bedingung "GetDistance" und einem Script mit "player.getdistance xxx < Zahl" versucht. Funktioniert hat es nicht.
2. Ich möchte, dass nach Ablauf einer gewissen Zeitspanne (wenn die Bauarbeiten beendet sind) die/der nächste Queststage startet. Ich habe es über ein Script mit "gamedayspassed" und dann "setstage" versucht. Hat leider auch nicht geklappt.
Grüße
Thorondor
zu 1 war schon fast richtig, aber das player davor muss weg also
if ( getdistance (http://cs.elderscrolls.com/constwiki/index.php/GetDistance) player <= xxx )
set...
Thorondor
22.01.2008, 11:21
moin moin
zu 1.
Danke dir Pcuser. Das Problem mit der Entfernung ist erst einmal gelöst. Allerdings bin ich mit meiner Lösung nicht zufrieden. Ich habe die Abfrage ob sich der Spieler an Ort und Stelle befindet über einer Objektscript geregelt (an einem Gegenstand der eh schon da war). Allerdings gefällt mir das nicht. Gibt es eine Möglichkeit, dass Script an einen Marker zu hängen oder vielleicht als Bedingung unter Queststage?
zu 2.
Das konnte Problem konnte ich mit Hilfe der Suchfunktion (dafür brauch man aber wirklich viel Zeit, und muss wortgenau wissen wonach man sucht) inzwischen lösen. Ich habe ein Script geschrieben und es unter Questdata direkt dem Quest zugewiesen. Ist das die einzige Möglichkeit?
Grüße
Thorondor
Hm bin mir jetzt nicht ganz sicher aber du könntest mal folgendes machen.
Du machst nen Marker und nennst den zb DistanceRef
dann das Script (wo man das hinmacht weis ich allerdings nicht du könntest es an den Quest hängen)
if ( player.getDistance DistanceRef <= XXX )
Zur erklärung: das player davor müsste bewirken, dass die Entfernung vom player aus und nicht vom scriptausführenden Objekt aus gemessen wird.
Alternativ könnte man es warscheinlich auch umdrehen, was vielleicht sogar besser is, da sich der marker nich bewegt.
if ( DistanceRef.getDistance player <= XXX )
Zu 2
Ich würde es result script anhängen. Hab aber noch nie selbst quests gemacht.
Also an die stufe mit der nachricht ich muss warten dann dein script in das resultscriptfeld. Ich weiß aber nicht ob das dann nur einmal aufgerufen wird oder so. D.h ob man da zeitmessungsscripte reibekommt, was assiert wenn man zwischendrin speichert und läd usw. müsste man mal in der cs wiki nachschaun
EDIT: Hm scheint ungeeignet, da stehen nur so sachen drin wie additem usw.
dann lieber als bedingung an den quest mit if getstage...
EDIT2 zu1: Also der player... weg scheint der richtige zu sein. hier mal ein script aus oblivion, das sowas ähnliches macht.
if player.getdistance DiveRockMarker <= 100
MessageBox "Euer Aussichtspunkt oben auf dem Taucherfelsen bietet einen ausgezeichneten Überblick der Kaiserlichen Provinz. Ihr bemerkt einige Kerker und tragt deren Lage in Eure Karte ein."
ShowMap KingscrestCavernMapMarker
ShowMap FanacasMapMarker
ShowMap QuickwaterCaveMapMarker
Thorondor
22.01.2008, 17:15
zu 1.:
Hmm. Genau auf die von dir beschriebene Art und Weise habe ich es von Anfang an versucht, und auch jetzt nochmal probiert. Ich habe neue Marker eingefügt, neue Scripte geschrieben, es an einem anderen Ort probiert. Es funktioniert alles nicht. :confused:
Obwohl das Beispiel mit dem DiveRockMarker und dem dazugehörigen Script nahelegt, dass diese Vorgang ganz einfach ist. Aber auch eine fast wortgenaue Kopie dieses Scripts hat nicht zum Erfolg geführt.
Ich war sogar "persönlich" an dem Felsen, um zu sehen ob es überhaupt funktioniert. Nach einer längeren Bergtour konnte ich nur feststellen, dass dort alles bestens klappt. Es ist zum Verzweifeln. >_<
Hier nochmal kurz mein letzter Test:
Scriptname zztestmarker
short message
Begin GameMode
if message == 0
if player.getdistance zzTester <= 100
MessageBox "Das ist ein Test."
set message to 1
endif
endif
End
zu 2.:
Nein, bei Resultscript passt das nicht. Geht nur über ein extra Script. Es funktioniert jedenfalls. Ich wollte nur wissen, ob das auch irgendwie geht, ohne dieses Script bei Questdata einzutragen.
Grüße
Thorondor
Versuch doch mal
if message < 1 vielleicht is der ja nicht 0^^
und um die 2 if blöcke wegzubekommen würde ich schreiben
if ( message < 1 && player.getdistance zzTester <= 100) oder sowas (bin mir bei den klammern net sicher)
Thorondor
23.01.2008, 17:27
moin moin
also nochmal zu 1.:
Ich habe im Script alle Modifikationen, die du geschrieben hast und die mir einfielen, ausprobiert. Ich bin mir ziemlich sicher, dass der Fehler nicht im Script zu finden ist. Irgendein grundlegenden Fehler muss ich übersehen. Das Script ist zu "einfach" um falsch zu sein. Es muss irgendein grundlegendes Problem sein.
Drei entscheidende Möglichkeiten habe ich ausprobiert:
a) Einen XMarker und dazu das Script,
b) ein beliebiges Objekt mit einer ReferenzID und dazu das Script und
c) ein neues Objekt (eigene ID) und das Script direkt mit diesem Objekt verlinkt.
Funktionieren tut nur letzteres. Vielleicht könntest du das mal ausprobieren Pcuser (oder gerne auch jemand anderes). Vielleicht läuft die Sache nur bei mir nicht?!?
Hier ist dann nochmal das Script aus meiner letzten Testreihe. Als Vergleich bietet sich das "DiveRockScript" an. Den Marker dazu findet man in der Zelle DiveRockExterior, wenn ich mich recht entsinne.
scn test1
short testvari1
begin gamemode
if testvari1 ==0
if player.getdistance zzbesen <= 250
messagebox "Test1 funktioniert."
set testvari1 to 1
endif
endif
end
Wäre super wenn sich jemand die Mühe machen könnte. Danke im voraus.
Grüße
Thorondor
Also es geht bei mir, ABER es scheint als würden questscriptenicht oft abgefragt oder so^^.
Wenn ich so 5sec da stehenbleibe wo der marker ist, dann kommt die Box.
AHA hier is was interresantes dazu^^ war meine 5 sek schätzung ja ganz gut
How to change how often a quest script is processed:
* Declare the "magic variable" float fQuestDelayTime in your quest script.
* Set fQuestDelayTime to how often you want the quest script to process, in seconds. If you set it to something very small (.01), it will effectively process every frame. If you set it to 0, the quest script will revert to the default processing time (every 5 seconds). Use this feature with caution -- in general, fQuestDelayTime should only be set less than 5 under very controlled and limited circumstances.
* fQuestDelayTime may be set from another script by addressing the quest, e.g. set MyQuest.fQuestDelayTime to 0.01.
* Quest scripts are the only ones that actually process a MenuMode block while you are resting or using fast travel.
* Because Quest scripts are run always based on time intervals they will not necessary frame sync, even with fQuestDelayTime set to a very low value. For some effects (e.g. those using SetPos) this can have undesired effects. In these cases Object and Magic scripts may be more appropriate to achieve an effect smoothly.
Thorondor
24.01.2008, 09:50
Moin moin
Nachdem ich gestern Abend noch etwas rumprobiert habe, habe ich endlich eine Lösung für mein Problem gefunden!!! :D Da ich für den Quest ja eh schon ein Script geschrieben hatte (also ein direkt unter Questdata verlinktes), welches die nächste Stage nach Ablauf einer gewissen Zeitspanne startet, habe ich das mit der Entfernung einfach dort mit reingeschrieben. Und siehe da, es funktioniert.
Das führt mich zu der Vermutung, dass bei meinem anderen Versuch, mit dem XMarker und dem Script, dieses Script einfach nicht aufgerufen wurde bzw. die Zuordnung nicht funktionierte, obschon ich den gleichen Scriptext verwendet habe.
Was die ganze Sache noch merkwürdiger macht, ist die Tatsache, dass es bei dir funktioniert. :confused: Das mit der "fQuestDelayTime" brachte auch keinen Erfolg. Könntest du bitte noch mal kurz beschreiben, was du genau gemacht hast? Vielleicht gibt es ja doch einen kleinen aber entscheidenden Unterschied zwischen unseren Vorgehensweisen.
Na jedenfalls kann ich jetzt, da alle grundlegenden Probleme gelöst scheinen, mit dem eigentlichen "Bau" meiner Ruine beginnen. Zumindest bis wieder irgendetwas ist, weil irgendwas ist ja immer. ;)
Grüße
Thorondor
Ja natürlich auf questdata verlinkt, wo hattest du es denn vorher^^
Hier hab ich mal die esp angehängt. Das Ziel ist die kreuzung im makt bezirk. Es geht aber nur wenn man eben ca 5sec dort stehen bleibt.
Deswegen solltest du mal versuchen am anfang vom script zu schreiben (also bei den variablen)
float fQuestDelayTime
und dann nach beginn etwas wie
if getstage xxx
set QuestDelayTime 0.01
else
set QuestDelayTime 5
endif
Thorondor
25.01.2008, 09:42
Hmm. Jetzt komm ich mir ja etwas blöd vor, dass ich das nicht vorher schon mal probiert habe. Und dabei war ich sooo stolz auf mich, dass ich eine Lösung gefunden hatte. Dabei hattest du das schon längst vorgeschlagen. Habe ich wohl überlesen, hätte ne Menge Zeit gespart.
Du machst nen Marker und nennst den zb DistanceRef
dann das Script (wo man das hinmacht weis ich allerdings nicht du könntest es an den Quest hängen)
Dennoch bleibt die Frage wie das mit dem DiveRockMarker funktioniert. An dem Beispiel habe ich mich festgebissen. Gibt es dazu ein Quest? Ich habe jedenfalls keins gefunden. Man geht einfach dorthin, stellt sich an den Abgrund und bekommt sofort die Meldung über die tolle Aussicht.
Na das ist jedenfalls nicht mehr ganz so wichtig. Wenn ich mit meiner Ruine fertig bin und mal wieder Langeweile habe, werde ich mich damit nochmal auseinandersetzen. Danke jedenfalls für deine Hilfe.
Grüße
Thorondor
Das Script von Beth ist an ein Buch gehängt das in der Gegend rumliegt.
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.