Construction Set Skriptthread zum Construction Set

bei .enable kommt immer Folgendes:
---------------------------
Script Error
---------------------------
Script 'FnDestinationEX', line 21:
Non-persistent reference 'FNDestenationEX14' cannot be used in a script.
---------------------------
OK
---------------------------
Hier einmal das Script: (bis jetz nua mit den Enable)
Code:
scn FnDestinationEX

short doonce

begin OnTrigger Player 

if doonce == 0

FNDestenationEX01.enable
FNDestenationEX02.enable
FNDestenationEX03.enable
...

set doonce to 1

endif
end

Einen Tip noch. Um nicht allen 71 Objekten eine RefEditorID zu vergeben und im Script nicht alle einzeln zu enablen, kannst Du eines davon als "Parent" setzen und die restlichen Objekte darauf beziehen.

So nennt Du eines z.B. "ParentFNDestenationEX01" Häkchen an Initially Disabled und Persistent Reference. Das ist Dein Parent.

Bei dem Rest brauchst Du nur noch unter Enable Parent das Objekt auswählen und Häkchen an Initially Disabled. Fertig.

Im Script muss es dann logischerweise heißen ParentFNDestenationEX01.enable. Wenn der Script läuft werden dann alle enabled.
 
Danke doch das Script ist jetz schon Fertig mit insgesammt mit über 190 Linien:-D
Aber ich wollte noch etwas einfügen...Und zwar wenn man duch die Triggerbox Läuft das sich das Wetter verändert in ausgewählten Cellen.
Hier einmal das Script:
Code:
scn FnDestinationEX

scn FnDestinationEX

short doonce

begin OnTrigger Player 

if doonce == 0

FNDestenationEX01.enable
FNDestenationEX02.enable
FNDestenationEX03.enable
FNDestenationEX04.enable
FNDestenationEX05.enable
FNDestenationEX06.enable
FNDestenationEX07.enable
FNDestenationEX08.enable
FNDestenationEX09.enable
FNDestenationEX10.enable
FNDestenationEX11.enable
FNDestenationEX12.enable
FNDestenationEX13.enable
FNDestenationEX14.enable
FNDestenationEX15.enable
FNDestenationEX16.enable
FNDestenationEX17.enable
FNDestenationEX18.enable
FNDestenationEX19.enable
FNDestenationEX20.enable
FNDestenationEX21.enable
FNDestenationEX22.enable
FNDestenationEX23.enable
FNDestenationEX24.enable
FNDestenationEX25.enable
FNDestenationEX26.enable
FNDestenationEX27.enable
FNDestenationEX28.enable
FNDestenationEX29.enable
FNDestenationEX30.enable
FNDestenationEX31.enable
FNDestenationEX32.enable
FNDestenationEX33.enable
FNDestenationEX34.enable
FNDestenationEX35.enable
FNDestenationEX35.enable
FNDestenationEX36.enable
FNDestenationEX37.enable
FNDestenationEX38.enable
FNDestenationEX39.enable
FNDestenationEX40.enable
FNDestenationEX41.enable
FNDestenationEX42.enable
FNDestenationEX43.enable
FNDestenationEX44.enable
FNDestenationEX45.enable
FNDestenationEX46.enable
FNDestenationEX47.enable
FNDestenationEX48.enable
FNDestenationEX49.enable
FNDestenationEX50.enable
FNDestenationEX51.enable
FNDestenationEX52.enable
FNDestenationEX53.enable
FNDestenationEX54.enable
FNDestenationEX55.enable
FNDestenationEX56.enable
FNDestenationEX57.enable
FNDestenationEX58.enable
FNDestenationEX59.enable
FNDestenationEX60.enable
FNDestenationEX61.enable
FNDestenationEX62.enable
FNDestenationEX63.enable
FNDestenationEX64.enable
FNDestenationEX65.enable
FNDestenationEX66.enable
FNDestenationEX67.enable
FNDestenationEX68.enable
FNDestenationEX69.enable
FNDestenationEX70.enable
FNDestenationEX71.enable
FNDestenationEX72.enable
FNDestenationEX73.enable
FNDestenationEX74.enable
FNDestenationEX75.enable
FNDestenationEX76.enable
FNDestenationEX77.enable
FNDestenationEX78.enable
FNDestenationEX79.enable
FNDestenationEX80.enable
FNDestenationEX81.enable
FNDestenationEX82.enable
FNDestenationEX83.enable
FNDestenationEX84.enable
FNDestenationEX85.enable
FNDestenationEX86.enable
FNDestenationEX87.enable
FNDestenationEX88.enable
FNDestenationEX89.enable
FNDestenationEX90.enable
FNDestenationEX91.enable
FNDestenationEX92.enable
FNDestenationEX93.enable
FNDestenationEX94.enable
FNDestenationEX95.enable
FNDestenationEX96.enable


FNDestenationDisableEX01.disable
FNDestenationDisableEX02.disable
FNDestenationDisableEX03.disable
FNDestenationDisableEX04.disable
FNDestenationDisableEX05.disable
FNDestenationDisableEX06.disable
FNDestenationDisableEX07.disable
FNDestenationDisableEX08.disable
FNDestenationDisableEX09.disable
FNDestenationDisableEX10.disable
FNDestenationDisableEX11.disable
FNDestenationDisableEX12.disable
FNDestenationDisableEX13.disable
FNDestenationDisableEX14.disable
FNDestenationDisableEX15.disable
FNDestenationDisableEX16.disable
FNDestenationDisableEX17.disable
FNDestenationDisableEX18.disable
FNDestenationDisableEX19.disable
FNDestenationDisableEX20.disable
FNDestenationDisableEX21.disable
FNDestenationDisableEX22.disable
FNDestenationDisableEX23.disable
FNDestenationDisableEX24.disable
FNDestenationDisableEX25.disable
FNDestenationDisableEX26.disable
FNDestenationDisableEX27.disable
FNDestenationDisableEX28.disable
FNDestenationDisableEX29.disable
FNDestenationDisableEX30.disable
FNDestenationDisableEX31.disable
FNDestenationDisableEX32.disable
FNDestenationDisableEX33.disable
FNDestenationDisableEX34.disable
FNDestenationDisableEX35.disable
FNDestenationDisableEX36.disable
FNDestenationDisableEX37.disable
FNDestenationDisableEX38.disable
FNDestenationDisableEX39.disable
FNDestenationDisableEX40.disable
FNDestenationDisableEX41.disable
FNDestenationDisableEX42.disable
FNDestenationDisableEX43.disable
FNDestenationDisableEX44.disable
FNDestenationDisableEX45.disable
FNDestenationDisableEX46.disable
FNDestenationDisableEX47.disable
FNDestenationDisableEX48.disable
FNDestenationDisableEX49.disable
FNDestenationDisableEX50.disable
FNDestenationDisableEX51.disable
FNDestenationDisableEX52.Disable
FNDestenationDisableEX53.Disable
FNDestenationDisableEX54.Disable
FNDestenationDisableEX55.disable
FNDestenationDisableEX56.disable
FNDestenationDisableEX57.disable
FNDestenationDisableEX58.disable
FNDestenationDisableEX59.disable
FNDestenationDisableEX60.disable
FNDestenationDisableEX61.disable
FNDestenationDisableEX62.disable
FNDestenationDisableEX63.disable
FNDestenationDisableEX64.disable
FNDestenationDisableEX65.disable
FNDestenationDisableEX66.disable
FNDestenationDisableEX67.disable
FNDestenationDisableEX68.disable
FNDestenationDisableEX69.disable
FNDestenationDisableEX70.disable
FNDestenationDisableEX71.disable
FNDestenationDisableEX72.disable
FNDestenationDisableEX73.disable
FNDestenationDisableEX74.disable
FNDestenationDisableEX75.disable
FNDestenationDisableEX76.disable
FNDestenationDisableEX77.disable
FNDestenationDisableEX78.disable
FNDestenationDisableEX79.disable
FNDestenationDisableEX80.disable
FNDestenationDisableEX81.disable
FNDestenationDisableEX82.disable
FNDestenationDisableEX83.disable
FNDestenationDisableEX84.disable
FNDestenationDisableEX85.disable
FNDestenationDisableEX86.disable

set doonce to 1

endif
end
 
Zuletzt bearbeitet:
Zeile teilen

Hi!

Wie kann ich aus folgender Script-Zeile zwei Zeilen machen?:
Code:
If ( DistanzAnvil <= DistanzBravil ) && ( DistanzAnvil <= DistanzBruma ) && ( DistanzAnvil <= DistanzCheydinhal ) && ( DistanzAnvil <= DistanzChorrol ) && ( DistanzAnvil <= DistanzKvatch ) && ( DistanzAnvil <= DistanzKaiserstadt ) && ( DistanzAnvil <= DistanzLeyawiin ) && ( DistanzAnvil <= DistanzSkingrad ) && ( DistanzAnvil <= DistanzAld'Ruhn ) && ( DistanzAnvil <= DistanzBalmora ) && ( DistanzAnvil <= DistanzGnisis ) && ( DistanzAnvil <= DistanzVivec )
 
Ich würde die Zeile dann aufsplitten, sondern die einzelnen Bedingungen in Variablen speichern. Short musst du da im TES-Script glaub ich nehmen, da es keine Bool-Variablen gibt.

Code:
short distanz1 = 0
set distanz1 to DistanzAnvil <= DistanzBravil
.
.
.
if(distanz1 && distanz2 && ...)
So wird die Zeile schonmal kürzer.
Wenn es nicht klappt musst du folgendes Konstrukt verwenden:

Code:
short distanz1 = 0
if(DistanzAnvil <= DistanzBravil)
     set distanz1 to 1
endif
.
.
.
if(distanz1 && distanz2 && ...)
Es sollte aber mit der ersten Methode schon funktionieren.
 
  • Like
Reaktionen: bjoernret
Erstmal danke für die schnelle Antwort, aber irgendwie kapier ich nicht so richtig, was ich machen soll. Der Spieler soll zur nächsten Stadt teleportiert werden, könntest du das bitte nochmal für Dumme erklären?
 
Er speichert die verschiedenen Distanzen in Variablen die er dann in der if-Struktur verwendet um die Zeil zu kürzen und übersichtlicher zu machen.
 
  • Like
Reaktionen: bjoernret
Hi!

Wie kann ich aus folgender Script-Zeile zwei Zeilen machen?:
Code:
If ( DistanzAnvil <= DistanzBravil ) && ( DistanzAnvil <= DistanzBruma ) && ( DistanzAnvil <= DistanzCheydinhal ) && ( DistanzAnvil <= DistanzChorrol ) && ( DistanzAnvil <= DistanzKvatch ) && ( DistanzAnvil <= DistanzKaiserstadt ) && ( DistanzAnvil <= DistanzLeyawiin ) && ( DistanzAnvil <= DistanzSkingrad ) && ( DistanzAnvil <= DistanzAld'Ruhn ) && ( DistanzAnvil <= DistanzBalmora ) && ( DistanzAnvil <= DistanzGnisis ) && ( DistanzAnvil <= DistanzVivec )

Oder um direkt auf deine Frage zu antworten: mit Enter.
Code:
If ( DistanzAnvil <= DistanzBravil ) && ( DistanzAnvil <= DistanzBruma ) && ( DistanzAnvil <= DistanzCheydinhal ) && ( DistanzAnvil <= DistanzChorrol ) && ( DistanzAnvil <= DistanzKvatch ) && ( DistanzAnvil <= DistanzKaiserstadt )
  If( DistanzAnvil <= DistanzLeyawiin ) && ( DistanzAnvil <= DistanzSkingrad ) && ( DistanzAnvil <= DistanzAld'Ruhn ) && ( DistanzAnvil <= DistanzBalmora ) && ( DistanzAnvil <= DistanzGnisis ) && ( DistanzAnvil <= DistanzVivec )
    ;Tue irgendwas
  Endif
Endif
 
  • Like
Reaktionen: bjoernret
Ah, danke für die Erklärung, EraZeR. Jetzt versteh ichs auch :-D

@Gildur: Danke, warum komme ich auf solche einfachen Ideen nie selber :roll:
 
Da ich denke das man mich übersprungejn hat :p
Also ich wollte in mein Script (siehe unten) noch einbauen das wenn man duch die Trigerbox läuft das wetter sich verändert für ausgewählte Cellen:

Script:
Code:
scn FnDestinationEX

short doonce

begin OnTrigger Player 

if doonce == 0

FNDestenationEX01.enable
FNDestenationEX02.enable
FNDestenationEX03.enable
FNDestenationEX04.enable
FNDestenationEX05.enable
FNDestenationEX06.enable
FNDestenationEX07.enable
FNDestenationEX08.enable
FNDestenationEX09.enable
FNDestenationEX10.enable
FNDestenationEX11.enable
FNDestenationEX12.enable
FNDestenationEX13.enable
FNDestenationEX14.enable
FNDestenationEX15.enable
FNDestenationEX16.enable
FNDestenationEX17.enable
FNDestenationEX18.enable
FNDestenationEX19.enable
FNDestenationEX20.enable
FNDestenationEX21.enable
FNDestenationEX22.enable
FNDestenationEX23.enable
FNDestenationEX24.enable
FNDestenationEX25.enable
FNDestenationEX26.enable
FNDestenationEX27.enable
FNDestenationEX28.enable
FNDestenationEX29.enable
FNDestenationEX30.enable
FNDestenationEX31.enable
FNDestenationEX32.enable
FNDestenationEX33.enable
FNDestenationEX34.enable
FNDestenationEX35.enable
FNDestenationEX35.enable
FNDestenationEX36.enable
FNDestenationEX37.enable
FNDestenationEX38.enable
FNDestenationEX39.enable
FNDestenationEX40.enable
FNDestenationEX41.enable
FNDestenationEX42.enable
FNDestenationEX43.enable
FNDestenationEX44.enable
FNDestenationEX45.enable
FNDestenationEX46.enable
FNDestenationEX47.enable
FNDestenationEX48.enable
FNDestenationEX49.enable
FNDestenationEX50.enable
FNDestenationEX51.enable
FNDestenationEX52.enable
FNDestenationEX53.enable
FNDestenationEX54.enable
FNDestenationEX55.enable
FNDestenationEX56.enable
FNDestenationEX57.enable
FNDestenationEX58.enable
FNDestenationEX59.enable
FNDestenationEX60.enable
FNDestenationEX61.enable
FNDestenationEX62.enable
FNDestenationEX63.enable
FNDestenationEX64.enable
FNDestenationEX65.enable
FNDestenationEX66.enable
FNDestenationEX67.enable
FNDestenationEX68.enable
FNDestenationEX69.enable
FNDestenationEX70.enable
FNDestenationEX71.enable
FNDestenationEX72.enable
FNDestenationEX73.enable
FNDestenationEX74.enable
FNDestenationEX75.enable
FNDestenationEX76.enable
FNDestenationEX77.enable
FNDestenationEX78.enable
FNDestenationEX79.enable
FNDestenationEX80.enable
FNDestenationEX81.enable
FNDestenationEX82.enable
FNDestenationEX83.enable
FNDestenationEX84.enable
FNDestenationEX85.enable
FNDestenationEX86.enable
FNDestenationEX87.enable
FNDestenationEX88.enable
FNDestenationEX89.enable
FNDestenationEX90.enable
FNDestenationEX91.enable
FNDestenationEX92.enable
FNDestenationEX93.enable
FNDestenationEX94.enable
FNDestenationEX95.enable
FNDestenationEX96.enable
FNDestenationEX97.enable
FNDestenationEX98.enable
FNDestenationEX99.enable
FNDestenationEX100.enable
FNDestenationEX101.enable
FNDestenationEX102.enable
FNDestenationEX103.enable
FNDestenationEX104.enable
FNDestenationEX105.enable
FNDestenationEX106.enable
FNDestenationEX107.enable
FNDestenationEX108.enable
FNDestenationEX109.enable
FNDestenationEX110.enable
FNDestenationEX111.enable

FNDestenationDisableEX01.disable
FNDestenationDisableEX02.disable
FNDestenationDisableEX03.disable
FNDestenationDisableEX04.disable
FNDestenationDisableEX05.disable
FNDestenationDisableEX06.disable
FNDestenationDisableEX07.disable
FNDestenationDisableEX08.disable
FNDestenationDisableEX09.disable
FNDestenationDisableEX10.disable
FNDestenationDisableEX11.disable
FNDestenationDisableEX12.disable
FNDestenationDisableEX13.disable
FNDestenationDisableEX14.disable
FNDestenationDisableEX15.disable
FNDestenationDisableEX16.disable
FNDestenationDisableEX17.disable
FNDestenationDisableEX18.disable
FNDestenationDisableEX19.disable
FNDestenationDisableEX20.disable
FNDestenationDisableEX21.disable
FNDestenationDisableEX22.disable
FNDestenationDisableEX23.disable
FNDestenationDisableEX24.disable
FNDestenationDisableEX25.disable
FNDestenationDisableEX26.disable
FNDestenationDisableEX27.disable
FNDestenationDisableEX28.disable
FNDestenationDisableEX29.disable
FNDestenationDisableEX30.disable
FNDestenationDisableEX31.disable
FNDestenationDisableEX32.disable
FNDestenationDisableEX33.disable
FNDestenationDisableEX34.disable
FNDestenationDisableEX35.disable
FNDestenationDisableEX36.disable
FNDestenationDisableEX37.disable
FNDestenationDisableEX38.disable
FNDestenationDisableEX39.disable
FNDestenationDisableEX40.disable
FNDestenationDisableEX41.disable
FNDestenationDisableEX42.disable
FNDestenationDisableEX43.disable
FNDestenationDisableEX44.disable
FNDestenationDisableEX45.disable
FNDestenationDisableEX46.disable
FNDestenationDisableEX47.disable
FNDestenationDisableEX48.disable
FNDestenationDisableEX49.disable
FNDestenationDisableEX50.disable
FNDestenationDisableEX51.disable
FNDestenationDisableEX52.Disable
FNDestenationDisableEX53.Disable
FNDestenationDisableEX54.Disable
FNDestenationDisableEX55.disable
FNDestenationDisableEX56.disable
FNDestenationDisableEX57.disable
FNDestenationDisableEX58.disable
FNDestenationDisableEX59.disable
FNDestenationDisableEX60.disable
FNDestenationDisableEX61.disable
FNDestenationDisableEX62.disable
FNDestenationDisableEX63.disable
FNDestenationDisableEX64.disable
FNDestenationDisableEX65.disable
FNDestenationDisableEX66.disable
FNDestenationDisableEX67.disable
FNDestenationDisableEX68.disable
FNDestenationDisableEX69.disable
FNDestenationDisableEX70.disable
FNDestenationDisableEX71.disable
FNDestenationDisableEX72.disable
FNDestenationDisableEX73.disable
FNDestenationDisableEX74.disable
FNDestenationDisableEX75.disable
FNDestenationDisableEX76.disable
FNDestenationDisableEX77.disable
FNDestenationDisableEX78.disable
FNDestenationDisableEX79.disable
FNDestenationDisableEX80.disable
FNDestenationDisableEX81.disable
FNDestenationDisableEX82.disable
FNDestenationDisableEX83.disable
FNDestenationDisableEX84.disable
FNDestenationDisableEX85.disable
FNDestenationDisableEX86.disable

set doonce to 1

endif
end
 
Also, ich hab gerade im EdZ-Script Wiki gelesen, dass man bei einer MessageBox nur 9 alternativen angeben kann. Jetzt würde ich gern wissen wie ich das Problem am besten umgehen kann?
Außerdem würde ich gern wissen ob es in Oblivion sows wie switch case gibt. Das ganze elseif geht mir nämlich ziemlich auf die Nerven.
EDIT:
Ich glaube das Wetter ändern geht so
Code:
setWeather [WetterDasDuHabenMöchtest]
 
Zuletzt bearbeitet:
Ich meine nicht, dass es eine andere, komfortablere Möglichkeit zu elseif gibt.

Zu den Messageboxen:
Wie Diarrhoe sagt, du brauchst mehrere. Mehr als 10 Wahlmöglichkeiten pro Messagebox sind nicht möglich (0-9).
 
Hiho!

Gibt es irgendwie die Möglichkeit, einen Timer anzuhalten?

Ich möchte, ein Script erstellen, bei dem ein Timer läuft, sobald der Spieler eine bestimmte Entfernung zu einem Marker hat (Script-Objekt). Der Timer soll aber anhalten, wenn die Entfernung wieder größer wird und von dem letzten Wert weiterlaufen, wenn die Entfernung wieder kleiner ist?

Mein Script:
Code:
scn name

short doonce
float timer

Begin GameMode

	if getStage <Quest-ID> == 10

		if player.getDistance <Objekt-Ref> <= 1000

			if doonce == 0
				set timer to 20
				set doonce to 1

			endif

			if timer >= 0
				set timer to timer - getSecondsPassed

			endif

			if timer <= 0
				setStage <Quest-ID> 13

			endif

		endif

	endif

end
 
Quest Starten nach dem Rasten.

Hey^^
Ich bruach ein Script oder eher eine Verbesserung meines Scripts.
Denn momentan startet mein Quest Sekundär nach dem Starten des Spiel-(stand's) wie kann man machen das es erst nach dem rasten erscheint.
Hier einmal mein Script:
Code:
scn FNHQStartRast
 
begin gamemode
 
if FNStartRast < 5
setstage FNStartRast 5
endif

Mfg yves
 
end
 
Versuch es mit MenuMode 1012, das wäre dann SleepWait

Es beginnt also wenn das Sleepmenu erscheint (Oder danach habs nich ausprobiert)

Code:
scn FNHQStartRast

Short DoOnce

begin MenuMode 1012
If DoOnce == 0
if GetStage FNStartRast < 5
setstage FNStartRast 5
Set DoOnce to 1
endif
endif
;Mfg SirTroy =)
 
end
 
ich habe ein Script und wollte es mir bestätigen lassen weil ich momentan nicht an meinem rechner bin um es zu Testen hier einmal das Script:
Code:
ScriptName FNContdoorAnimation

short Trigger
float Timer

begin onTrigger player

     if Trigger == 0
          DisablePlayerControls
          FNDontdoorGate01.playgroup forward 1
          FNContdoorCreaturAnimation01.playgroup forward 1
		set triggered to 1
		set timer to 10

     endif

End

begin GameMode

	if triggered == 0
		return

	endif

	if timer >= 0 && triggered == 1
		set timer to timer - getSecondsPassed

	endif

	if timer <= 0
		FNContdoorGnarlAnimation01.enable
          EnablePlayerControls

	endif

end
 
Was mir sofort aufgefallen ist, ist, dass du eine Variable benutzt, die du nicht deklariert hast (Trigger/triggered). Dann würde ich dir noch empfehlen für die Animationen bei Türen etc. den Flag "0" zu benutzen.
 
Was mir sofort aufgefallen ist, ist, dass du eine Variable benutzt, die du nicht deklariert hast (Trigger/triggered). Dann würde ich dir noch empfehlen für die Animationen bei Türen etc. den Flag "0" zu benutzen.

Danke schonmal!
Aber was meinst du mit der Variable?

EDIT: Und ich habe noch ein anderes Quest wo cih stark von ausgehe das es falsch ist...


Code:
scn FNContDoorGate01

begin onDeath

    	set FNContdoorGnarlAnimation01.dead to 1
	FNContdoorGnarlAnimation01.enable
     
end
Nach dem Tot des Monsters soll eine Tür aktiviert werden.
 
Zuletzt bearbeitet:
das untere script würde die tür sihtbar machen, wenn sie vorher disabled war. wenn du die tür öffnen willst, würde ich
FNContdoorGnarlAnimation01.activate versuchen, weiss aber nicht obs klappt.