Construction Set Skriptthread zum Construction Set

Ich hab auch mal eine Frage:

Ich habe eine Quest erstellt, bei der ein Script angehängt ist das folgendermaßen aussieht:

Code:
scn ScriptID

short banditgoblincombat
short banditangry

Begin Gamemode 

     if player.getincell GoblinCave == 1 && getstage QuestID == 10
          setstage QuestID 20
     endif

end
Also soll eine Questmitteilung kommen,sobald man eine Höhle betreten und schon einen Teil der Quest erledigt hat.
Ingame erscheint der Tagebucheintrag aber schon in der Exterior Zelle, in der sich die Höhle befindet, bevor man auch nur einen Fuß in die Höhle gesetzt hat!

Ich halte es zwar für unwahrscheinlich, aber könnte es daran liegen, dass ich die Exterior Zelle "GoblinCaveExt" genannt habe und das nicht richtig erkannt wird?

(Die shorts werden anderweitig in der Quest benötigt, haben auf dieses Script also, hoffe ich, keinen Einfluss.)
 
"GoblinCaveExt" ist für Oblivion nur eine Erweiterung von "GoblinCave". Wenn du abfragst, ob sich der Spieler in einer Zelle mit dem Namen "GoblinCave" befindet, dann zieht Oblivion auch alle anderen Zellen in Betracht, die mit "GoblinCave" beginnen, also auch "GoblinCaveExt".
 
  • Like
Reaktionen: Nathaniel
Ich hätte da auch ein Skript-Problem. Ich will eine Stadt bauen und die Stadttore sollen am Abend sich schliessen und am Morgen wieder öffnen. Nach anfänglichen Problemen hab ich mich zu der Notlösung entschieden, das Ganze mit Enable und Disable - Befehlen zu machen:

Begin GameMode

If ( GameHour == 22)

AAStadttor01Open.disable
AAStadttor02Close.enable
AASpikedWallNight01.enable
AASpikedWallNight02.enable

endif

end


Begin Gamemode

If ( GameHour == 6 )

AAStadttor01Open.enable
AAStadttor02Close.disable
AASpikedWallNight01.disable
AASpikedWallNight02.disable

endif

end

Nur leider passiert rein gar nichts, wenn man das Ganze Ingame betrachtet :(

Hab alles nach meinen Kenntnissen mögliche probiert, aber es funktioniert nicht. Wüsste vielleicht jemand eine Lösung für das Problem?

MfG Basch III
 
Du machst den Quest Type als Questscript, machst eine Quest und machst dort als Questscript dein jetziges Script. Und einen haken bei Start Game enabled (und setzt vllt die Priority auf 100 oder 90 oda so) und dann sollte es funktionieren.
 
Du machst den Quest Type als Questscript, machst eine Quest und machst dort als Questscript dein jetziges Script. Und einen haken bei Start Game enabled (und setzt vllt die Priority auf 100 oder 90 oda so) und dann sollte es funktionieren.

Geht leider nicht. Es hat sich nichts geändert :(

Könnte es auch daran liegen, dass ich "einfach" eine Variable / einen Befehl im Script vergessen habe?
 
ich würde es so machen, wie du es getan hast, Basch III.
Den Script auf einem Schalter oder dem Tor selbst. Dann änderst du den Script so:
Code:
scn Scriptname

Begin GameMode

If ( GameHour >= 22) && ( Gamehour < 6 )

AAStadttor01Open.disable
AAStadttor02Close.enable
AASpikedWallNight01.enable
AASpikedWallNight02.enable

Elseif ( GameHour >= 6 ) && ( Gamehour < 22 )

AAStadttor01Open.enable
AAStadttor02Close.disable
AASpikedWallNight01.disable
AASpikedWallNight02.disable

endif

end
 
Sorry für den doppelpost.
Ich brauch mal Scripthilfe :roll:
Ich muss herausfinden wie ich über einen If/Elseif Block den momentanen Worldspace herausbekomme, in dem der Player sich befindet.
Es wäre wichtig. Ich stell nochmal das Script rein falls ihr euch dadurch einen besseren überblick verschaffen könnt.
Code:
int Init
int Hidden
short InInterior
long ArrayCell
long ArrayInterior
long ArrayMarker
long ArrayRotation
long ArrayX
long ArrayY
long ArrayZ
long Count
long Index
float Rotation
float PositionX
float PositionY
float PositionZ
ref Cell
ref Marker

Begin Gamemode
	if ( Init )
		if ;;(GetItemCountblock)
			if ( Hidden )
				set Index to 0
				SaveIP
				if ( Index < ArraySize ArrayMarker )
					set Cell to GetInArray ArrayCell Index
					set InInterior to GetInArray ArrayInterior Index
					set Marker to GetInArray ArrayMarker Index
					set Rotation to GetInArray ArrayRotation Index
					set PositionX to GetInArray ArrayX Index
					set PositionY to GetInArray ArrayY Index
					set PositionZ to GetInArray ArrayZ Index
					if ( InInterior )
						Marker.PositionCell PositionX, PositionY, PositionZ, Rotation, Cell
					else
						Marker.PositionWorld PositionX, PositionY, PositionZ, Rotation, Cell
					endif
					set Index to ( Index + 1 )
					RestoreIP
				endif
				set Hidden to 0
			endif
		else
			set Hidden to 1
			set Count to 0
			SaveIP
			set rTemp to Player
			if ( Count < GetNumRefs 28 2 )
				if ( Count )
					set Marker to GetNextRef
				else
					set Marker to GetFirstRef 28 2
				endif
				if ( Marker.GetIsID MapMarker )
					if ( FindRefInArray ArrayMarker Marker )	
						if ( Marker.IsInInterior )
							set Cell to Marker.GetParentCell
							SetRefInArray ArrayCell 0 Cell 1 0 1
							SetInArray ArrayInterior 0 1 1 0 1
						else
							set Cell to [B][I][CurrentWorldspace][/I][/B]		
							SetRefInArray ArrayCell 0 Cell 1 0 1
							SetInArray ArrayInterior 0 0 1 0 1
						endif
						SetRefInArray ArrayMarker 0 Marker 1 0 1
						set Rotation to Marker.GetAngle z
						SetFloatInArray ArrayRotation 0 Rotation 1 0 1
						set PositionX to Marker.GetPos x
						SetFloatInArray ArrayX 0 PositionX 1 0 1
						set PositionY to Marker.GetPos y
						SetFloatInArray ArrayY 0 PositionY 1 0 1
						set PositionZ to Marker.GetPos z
						SetFloatInArray ArrayZ 0 PositionZ 1 0 1
					endif
					Marker.PositionCell 0, 0, 0, 0, DummyCell
				endif
				set Count to ( Count + 1 )
				RestoreIP
			endif
		endif
	else
		set Init to 1
		set ArrayCell to CreateArray -1 0 1 1
		set ArrayInterior to CreateArray -1 0 1 1
		set ArrayMarker to CreateArray -1 0 1 1
		set ArrayRotation to CreateArray -1 0 1 1
		set ArrayX to CreateArray -1 0 1 1
		set ArrayY to CreateArray -1 0 1 1
		set ArrayZ to CreateArray -1 0 1 1
	endif
End

So stelle markiert wo der Worldspace hinsoll.
Hoffe ihr könnt mir helfen :-D
 
Ja du müsstest eine Abfrage machen, welcher Knopf denn der Ansicht Wechseln knopf ist und würdest den mittels TapKey zu drücken erzwingen.
 
  • Like
Reaktionen: Darkfire
Gibt es einen Scriptbefehl, der Topics entfern? Ich hatte eigentlich "removetopic" vermutet, doch diesen Befehl nimmt das CS nicht an.