Construction Set Skriptthread zum Construction Set

Hiho!
Da es sich vermutlich um eine Quest handelt, solltest du auch mit QuestStages und dazugehörigen Tagebucheinträgen arbeiten, anstatt Messageboxen zu benutzen (was in diesem Zusammenhang sowieso sinnlos wäre). Benutze dafür einfach den "setStage"-Befehl um die Quest voranschreiten zu lassen...
 
  • Like
Reaktionen: Oblivion freak
Hi Diarrhoe danke für deine Hilfe und Hinweise, das mit der Doonce Variable hab ich echt übersehen :oops:! Jedenfalls wie soll ich Punkt 2 verstehen?, Im CS hab ich dann die Ref-Id des npcs dann den Moveto befehl und dann die Referenz des X-Markers, habe ich schonmal mit nem anderen script versucht und das ging natürlich.... :)

Hmm ich habe ka was ich noch machen könnt....
vlt alles Löschen und ne Messagebox inkl. die Conditions überlassen um zu sehen ob da alles passt bei den Conditions

mfg Fluffy :)
 
@Piet:

Ok, ich habe mir das ganze mal angesehen. Leider ist mir das Script etwas zu kompliziert. Ich vermute aber, dass du die Packages nicht benötigst, da diese den Tänzer nur zu einem Punkt laufen lassen. Ich denke, dieser Scriptausschnitt ist wichtig:
Code:
if ( moveVAR == 4 )									;makes dancer dance for 30 seconds
	set timer to ( timer + GetSecondsPassed )
	if ( timer >= 2 ) && ( idleVAR == 0 )
		evp
		pickidle
		set idleVAR to 1
	elseif ( timer >= 34 )
		set timer to 0
		set moveVAR to 5
		set idleVAR to 0
	endif
endif
Laut Beschreibung am Rand, lässt dieses Script den Tänzer für 30 Sekunden tanzen. Ich denke, du müsstest deinen Tänzer mit diesen Script belegen:
Code:
scn Tanzscript
Begin GameMode
evp
pickidle
end
Da ich aber den Befehl pickidle nicht kenne und auch nicht weiß, was er bewirkt, weiß ich leider nicht, ob es funktioniert :(
 
@Piet:

Ok, ich habe mir das ganze mal angesehen. Leider ist mir das Script etwas zu kompliziert. Ich vermute aber, dass du die Packages nicht benötigst, da diese den Tänzer nur zu einem Punkt laufen lassen. Ich denke, dieser Scriptausschnitt ist wichtig:
Code:
if ( moveVAR == 4 )									;makes dancer dance for 30 seconds
	set timer to ( timer + GetSecondsPassed )
	if ( timer >= 2 ) && ( idleVAR == 0 )
		evp
		pickidle
		set idleVAR to 1
	elseif ( timer >= 34 )
		set timer to 0
		set moveVAR to 5
		set idleVAR to 0
	endif
endif
Laut Beschreibung am Rand, lässt dieses Script den Tänzer für 30 Sekunden tanzen. Ich denke, du müsstest deinen Tänzer mit diesen Script belegen:
Code:
scn Tanzscript
Begin GameMode
evp
pickidle
end
Da ich aber den Befehl pickidle nicht kenne und auch nicht weiß, was er bewirkt, weiß ich leider nicht, ob es funktioniert :(
Doch er braucht das Package, weil die Animation damit abgefragt wird, die er neu erstellen muss (also aus der bsa extrahieren).
 
  • Like
Reaktionen: bjoernret
Vielen Dank bjornret und killerkarotte für die Hilfe. Aber was muss ich jetzt genau machen damit es funktioniert. Bitte Schritt für Schritt schreiben.

mfg Piet
 
Bitte schön:
Du musst also so vorgehen: Erstmal solltest du SI zusammen mit deinem PI laden. Ein NPC braucht ein AI-Package mit "Use Item At" (und zwar ganze Zeit über ausführen). Man wählt aber kein Item aus, dass er benutzen soll, als Ziel aber einen Marker, an dem die Person tanzen soll. Jetzt suchst du dir rechts oben die Schaltfläche "Idle Animations". Dann "Unique Idle Anims", "SEAnims", "SE14Anims", "SEDancerA". Dann erstellst du irgendwo ein neues Objekt (Am besten nicht bei den SEAnims!). Dann kopierst du dir die Conditions von den SEAnims einfach zu deinem Objekt rüber. GetIsId muss eben die ID von deinem NPC abfragen, GetQuestVariable musst du löschen und dazu tun musst du aber "GetIsCurrentPackage", dass dein AI-Package abfragen muss. Menumode kannst du so lassen. Jetzt brauchst du nurnoch die Animation einstellen, die musst du wohl aus der bsa entpacken (Benutz z.B. BSA Commander). Dann abspeichern und es sollte funktionieren.
 
hallo ich hab mal wieder ne frage.
Ich habe mir eine quest erstellt in der ich durch 2 notizen zu jemandem gelage.
Ich will das der quest endet wenn ich in dessen nähe komme.
Wie geht das ???
 
hallo ich hab mal wieder ne frage.
Ich habe mir eine quest erstellt in der ich durch 2 notizen zu jemandem gelage.
Ich will das der quest endet wenn ich in dessen nähe komme.
Wie geht das ???

Die Person musst DU als QuestTarget definieren. Mit GetDistance kannst Du die Entfernung zu der Person bestimmen. Als ResultScript musst Du auf eine neue QuestStage setzen, in der Du bei "Complete Quest" ein Hacken dransetzt.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Oblivion freak
unten steht ja Activate aber das kann bleiben weil das zum aktiviern ist oder ( ich wills ja auch lernen ;) )

Code:
scn 00Siedler2Script

short Doonce

begin OnActivate

if ( IsActionRef Player == 1 ) && ( Doonce == 0 )
    Activate
    SetStage 00SiedlerQuest1 10
    set Doonce to 1
endif

end
Den Script musst Du auf die Notiz legen. Damit startet das Quest. Stufe 10 ist z.B. die erste Stufe. Du kannst die Notiz dann aber nicht mitnehmen. Ansonsten müsstest Du "Begin OnEquipPlayer" nehmen, "IsActionRef" und "Activate" raus.

Im QuestLog der Stufe 10 (Tagebucheintrag) steht z.B. drin suche den NPC "Siedler1" blablabla.

Für das Quest musst Du einen zusätzlichen Script anlegen, der muss so aussehen:

Code:
scn 00SiedlerQuestScript

short Doonce

Begin GameMode

if ( Player.GetDistance Siedler1Ref ) && ( Doonce == 0 )
    SetStage 00SiedlerQuest1 20
    Set Doonce to 1
endif

end
Bei QuestTargets musst Du Deinen NPC "Siedler1" hinterlegen, unten mit der Condition "GetStage" "QuestID" Stufe 10. Damit der grüne QuestKompass zu Deinem NPC folgt.

Queststufe 20 wäre in diesem Fall der Tagebucheintrag, wenn man den NPC gefunden hat und die das Quest beendet. Dazu bei Queststufe 20 "Complete Quest" einen Haken dran machen. Fertig.

Habs auch gerade getestet. Funktioniert.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Oblivion freak