Construction Set Skriptthread zum Construction Set

Im CS-Wiki stehen ja ein paar Punkte, die man beachten sollte. Unter anderem kommt es wohl auch drauf an, in was für einer Art Zelle man sich aufhält, in Default-Zellen wird beim Aufruf von StreamMusic nur die bereits laufende Musik neu gestartet. Dort soll man dann erstmal "StreamMusic random" ausführen, und dann 1 Frame später erst die eigentliche Musik starten.
Außerdem können wohl diverse OBSE-Musik-Plugins das ganze kräftig durcheinander bringen.
 
@Arielle1000:
Habe deinen Skript mal wie in ICQ erwähnt umgeschrieben.

PHP:
scn 

Begin onLoad
AWDDaemonRef.SetGhost 1
AWDMaverickRef.SetGhost 1
End

Begin OnDeath 
If getstage "00AriellesWeyeDorfVergessenerSchrein" == 235
	SetStage "00AriellesWeyeDorfVergessenerSchrein" 240
Endif
End 

Begin GameMode

;################
;# Das Gespräch #
;################

If ( AWDDerTodDesDaemons.DoOnceGespraech == 0 )
	If ( GetInSameCell Player == 1 )
		If ( GetDistance Player <= WERT )
			DisablePlayerControls
			StartConversation Player
		Endif
	Endif
Elseif ( AWDDerTodDesDaemons.DoOnceGespraech == 1 )
	;######################
	;# Der Hund greift an #
	;######################
	If ( AWDDerTodDesDaemons.DoOnceHund == 0 )
		AWDMaverickRef.SetGhost 0
		AWDMaverickRef.SetActorValue Aggression 100
		AWDMaverickRef.StartCombat Player
		Set AWDDerTodDesDaemons.DoOnceHund To 1

		AWDDaemonRef.SetRestrained To 1
	Elseif ( AWDDerTodDesDaemons.DoOnceHund == 1 )
		If ( AWDMaverickRef.GetDead == 1 )
			Set AWDDerTodDesDaemons.DoOnceHund To 2
		Endif
	Elseif ( AWDDerTodDesDaemons.DoOnceHund == 2 )
		;#####################
		;# Der NPC greift an #
		;#####################
		If ( AWDDerTodDesDaemons.DoOnceNPC == 0 )
			AWDDaemonRef.SetRestrained 0
			AWDDaemonRef.SetGhost 0
			AWDDaemonRef.SetActorValue Aggression 100
			AWDDaemonRef.StartCombat Player
		Endif
	Endif
Endif
End
 
  • Like
Reaktionen: Arielle 1000
Kann mir jemand einen Skript schreiben, der den Spieler zum Parent einer TrigZone teleportiert (falls das geht)? Wäre nämlich um einiges einfacher als die Variante mit den REFs...
 
Okay, habe wieder ne Skriptfrage... :oops:

Und zwar geht es um eine Tür, die verschlossen ist und nur geöffnet werden kann, nachdem der Spieler 4 bestimmte Zauber auf 4 bestimmte Meshes geschleudert hat. Jeder Zauber muss eine bestimmte Stelle treffen, damit er eine Wirkung erzielt.

Das soll dann ungefähr so funktionieren:

Wenn Zauber 1 Stelle 1 trifft, dann wird Variable (i) hochgesetzt.
Wenn Zauber 2 Stelle 2 trifft, dann wird Variable (j) hochgesetzt.
Wenn Zauber 3 Stelle 3 trifft, dann wird Variable (k) hochgesetzt.
Wenn Zauber 4 Stelle 4 trifft, dann wird Variable (l) hochgesetzt.

- Wird eine falsche Stelle getroffen, soll nichts passieren.
- Sobald alle vier Variablen den Wert 1 haben, kann man die Tür öffnen.

Hoffe, das ist soweit verständlich. :) Achja, OBSE-Varianten sind auch willkommen.

LG, peecee
 
Code:
scn Platz1

Begin OnMagicEffectHit ZauberID1
If ( i = 0 )
 Set i To 1
Endif
End

Code:
scn Platz2

Begin OnMagicEffectHit ZauberID2
If ( j = 0 )
 Set j To 1
Endif
End

Code:
scn Platz3

Begin OnMagicEffectHit ZauberID3
If ( k = 0 )
 Set k To 1
Endif
End

Code:
scn Platz4

Begin OnMagicEffectHit ZauberID4
If ( l = 0 )
 Set l To 1
Endif
End

Und auf die Tür:
Code:
scn ...

Begin onActivate
If ( i == 1 ) && ( j == 1 ) && ( k == 1 ) && ( l == 1 )
 Activate Player
Else
 Message "Die Tür ist zu!"
Endif
End
 
  • Like
Reaktionen: peecee
Du musst vor den Meshes TrigZonen legen, die dann die Zauber erkennen. Das Skript lautet so:

Code:
SCN ...

Ref TrigRef
Ref temp

Int i

Begin OnTriggerMob

if(i == 0)
  let trigref := getactionref
  if(trigref.getprojectiletype == 1)
   let temp := trigref.getprojectilesource
   if(temp == player)
     let temp := trigref.getmpspell
    if(temp == <ZauberID>)       ; Hier die entsprechenden ZauberID's einfügen
      let i := 1
      let <RefDerTür>.i += 1
    endif
  endif
 endif
endif

End
Auf die Tür:

Code:
SCN ...

Int i

Begin OnActivate

if(i == 4)
 unlock ; evtl.
 activate
endif

End
Benötigt natürlich OBSE.

EDIT: @DarkRuler: Das funktioniert insofern nicht, da "OnMagicEffectHit" nur die Art des Zauber-Schadens erkennt, wie z.B. Feuer-Schaden (= FIDG).
 
  • Like
Reaktionen: peecee
scn 00ScriptStartQuest

short enemycount
short enemycountt


short doonce

Begin GameMode

if( GetStage MQ02 >= 25 ) && ( doonce == 0 )




set doonce to 1
setstage 00Quest1 10
endif
endif

Ich bin aus der Kanalisation raus, aber ich bekomm die Meldung nicht. Welche Stage brauch ich denn ?
 
Entweder behilfst du dich dann eines Triggers beim Kanalausgang oder du nimmst eine frühere Abfrage (z.B. 20)

Negativ bei a) wäre dann, dass Startänderungsmods wie Alternative Beginnings dann deine Quest nicht exakt auslösen.

Negativ bei b) wäre, dass die Quest vielleicht noch im Charaktergenerierungstutorial startet.