PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Script Problem



East_guy35
22.03.2008, 15:11
Guten Tag Leute

Habe ein Problem mit einer Quest hoffe einer von euch kann mir helfen :)

Also das Problem ist folgendermassen. Es geht um eine Art "Attentat". Mann spricht mit Borit das Result Script des Gesprächs wechselt den Queststatus auf 20 danach wird der Dialog beendet. Darauf sollte der Attentäter mittels Script Borit angreifen. Leider passiert bis jetzt gar nichts. Ich habe alles mehrfach durchgeschaut und finde den Fehler einfach nicht :(

Need help^^

Folgende Script:




ScriptName Boritdie

begin GameMode

if GetStage MYklingenstartq1==20

Moerderborit.StartCombat Borit1

endif

end


Moerderborit= Reference Editor ID von meinem Attentäter
Borit1= Reference Editor ID vom Opfer des Angriffs
MYklingenstartq1= Quest

Muecke49
22.03.2008, 16:30
Hast Du das Script auf Borit liegen? Oder worauf liegt das Script........

Und warum hast Du den Angriffsbefehl nicht einfach ins Resultscript mit aufgenommen?

Das funktioniert bei mir immer reibungslos. Dann kannst Du Dir das extra Skript nämlich sparen.;)
Zumal ein GameMod Skript während des gesamten Spiels weiterläuft (kostet Performance) und man diese immer vermeiden solllte, wenn es auch auf anderem Wege geht.:)

Katan
22.03.2008, 17:01
Zumal ein GameMod Skript während des gesamten Spiels weiterläuftDas stimmt in der Form nicht. Hängt ein GameMode-Script an einem in einer Zelle abgestellten Objekt, so wird das Script immer wieder durchgearbeitet, wenn der Spieler sich in derselben Zelle befindet, das Objekt also ingame gerendered wird (und selbst dann kann man einem größeren Performance-Verlust durch den return-Befehl vorbeugen; so ein kleines Script wie das von East_guy35 würde allerdings so oder so nicht auffallen). Ist das genannte Script dagegen ein Quest-Script, wird es zwar jederzeit vom Beginn bis zum Abschluss der Quest durchgearbeitet, danach aber nicht mehr.

Ich stimme aber zu, dass in diesem Fall eine Aufnahme der Zeile in das Result Script sinnvoller ist.

Muecke49
22.03.2008, 18:15
Danke für die Erklärung Katan. :) Wieder was gelernt. ^_^

East_guy35
22.03.2008, 19:04
Ok gute Idee mach ich mal aber den Fehler versteh ich noch immer nciht :(

Edit:
Ah noch eine Frage.
Kann man per Script abfragen ob ein bestimmter NPC tot ist?

quasi:

if npcid=tot

endif

Indy
22.03.2008, 21:05
if NPCReferenz.GetIsDead == 1

East_guy35
22.03.2008, 21:29
HAbe ich gerade eben probiert geht aber leider nicht :(

danke trotzdem

Katan
22.03.2008, 23:59
Erklär' doch mal, was genau du machst, u.a. woran deine Scripte hängen, und hier kann dir vielleicht jemand erklären, warum es nicht funktioniert. Aufgeben bringt nichts.

East_guy35
23.03.2008, 19:40
Hab nicht aufgegeben und das Problem auch mittlerweile gefunden.

der Befehl zum überprüfen ist GetDead nicht GetIsDead ^^

und das Script hatte ich auf niemandem drauf gepackt :)

MfG Eastguy

PS: Danke euch nochma für die Hilfe

Low Post
24.03.2008, 15:32
Das stimmt in der Form nicht. Hängt ein GameMode-Script an einem in einer Zelle abgestellten Objekt, so wird das Script immer wieder durchgearbeitet, wenn der Spieler sich in derselben Zelle befindet, das Objekt also ingame gerendered wird (und selbst dann kann man einem größeren Performance-Verlust durch den return-Befehl vorbeugen; so ein kleines Script wie das von East_guy35 würde allerdings so oder so nicht auffallen). Ist das genannte Script dagegen ein Quest-Script, wird es zwar jederzeit vom Beginn bis zum Abschluss der Quest durchgearbeitet, danach aber nicht mehr.

Ich stimme aber zu, dass in diesem Fall eine Aufnahme der Zeile in das Result Script sinnvoller ist.


Kleine Ergänzung meinerseitzt:

Wenn das Gamemode-Script auf einem als QuestObject markiertem Object sitzt läuft das Script immer (jeden Frame), egal ob das Object gerendert wurde oder nicht (meistens nicht zu empfehlen).


Wenn das Script auf einer Quest sitzt läuft der Gamemode-Block immer in best. Zeitabständen (Standart: 5 Sekunden; Oblivion.ini --> [General] -> fQuestScriptDelayTime), der sich über die Variable fQuestDelayTime (http://cs.elderscrolls.com/constwiki/index.php/FQuestDelayTime) verändern lässt.
Wenn fQuestDelayTime auf einen sehr kleinen Wert gesetzt wird (z.B. 0.0001) hat das praktisch auch die Auswirkung, dass das Script jeden Frame abläuft.