Construction Set Skriptthread zum Construction Set

Ich habe mal eine Frage. Ich wollte einen Zauber machen, wenn man den zaubert soll der Spieler fliegen können, so wie Levitation. Wie müsste das Skript dazu aussehen?
 
Funktion GetCurrentHealth

Hallo, vielleicht kann mir jemand weiter helfen. Ich habe im Forum nichts dazu gefunden:
Und zwar möchte ich die Function GetCurrentHealth verwenden umd den Zustand von Waffen und Rüstungen abzufragen. Auf der CS-WIKI Seite steht die Funktion auch erklärt. Aber sobald ich die Funktion aufrufe, wird das Skript irgendwie sofort beendet und ich sehe noch nicht einmal die Ausgabe, die 2 Zeilen später kommen soll. Wenn ich es auskommentiere und die Ausgabe nur mit einen Parameter mache, kann ich mir den Maximalwert (100%) für den Zustand anzeigen lassen. Hier mein Code:

Code:
	set invPos to pCont.GetNumItems
Label 1
	if invPos
		set invPos to (invPos - 1)
		set pInvObj to (pCont.GetInventoryObject invPos)
		if ( (IsArmor pInvObj) == 1 || (IsWeapon pInvObj == 1) ) 
			set currHealth to (GetCurrentHealth pInvObj)
			set maxHealth to (GetObjectHealth pInvObj)
			PrintToConsole "Item: %n (%.0f / %.0f)" pInvObj currHealth maxHealth 
		endif
		Goto 1
	endif

Wie kann ich den aktuellen Zustand anzeigen lassen? Ich weiß, es gibt noch die Funktion GetEquippedCurrentHealth, aber die funktioniert nur für angelegte Sachen, was ich nicht möchte. Ich möchte eigentlich das Gegenstückt zu GetObjectHealth haben....

Wäre nett, wenn mir jemand helfen könnte. :D
 
Stratup-Skript funktioniert nicht!

Guten Abend,
ich habe ein Problem mit einem Startup-Skript.
ICh habe eine neue Quest erstellt, Priority steht auf 5 und sie ist "Start Game Enabled". Als Skript hat sie dieses Questskript:
Code:
Scn DWThiefStartup

short doOnce

Begin GameMode
    If ( doOnce == 0 )
        MessageBox "Test"
        Player.RemoveItem "LowerPants05" 1
        Player.RemoveItem "LowerShirt05" 1
        Player.RemoveItem "LowerShoes05" 1
        Player.RemoveItem "WristIrons" 1
        Player.AddItem "DBLeatherCuirass" 1
        Player.AddItem "DBLeatherHelmet" 1
        Player.EquipItem "DBLeatherCuirass"
        Player.EquipItem "DBLeatherHelmet"
        Set doOnce To 1
    EndIf

End
Es tut nur nicht. Die Message erscheint nicht und ich erhalte keine neuen Klamotten.
Versteht jemand, warum? Kann mir jemand helfen?
 
Das liegt ganz einfach daran weil das Skript gar nicht weiß wann es diese ganzen Befehle ausführen soll. Wieso Tust du die ganzen Sachen nicht in einer Kiste?
 
@Milchmann:
Danke.:roll:
Es weiß sehr wohl, wann es die Befehle ausführen soll. Nämlich, wenn das Spiel im GameMode ist und doOnce nicht 1 ist.
Das ist genau einmal der Fall, nämlich bei Spielstart.
Folglich sollte das ganze bei Spielstart auch funktionieren.

@Gildur: Was soll das bringen? hat übrigens auch nichts gebracht.

Nachdem ich KotN und SI installiert habe funktioniert es plötzlich. Das muss ich nicht verstehen, oder?
 
ich habe zwar bereits je ein thread dafür gepostet, aber vielleicht findet meine frage hier mehr gehör. :)

1. suche ich einen script, mit dem man durch drücken eines schalters den wasserspiegel im interior mod 30m senken oder gleich ausschalten könnte. und natürlich wieder zurücksetzen bei nochmal drücken.

weil ich finds etwas witzlos den spieler von nem überflutenen raum in nen getrockneten raum zu teleportieren, welche beide gleich aussehn.


2. suche ich einen script, womit man das portal welches martin im wolkenherrschertempel schuf, ganz einfach mit nem hebel erzeugen könnte. und das immer wieder. also am liebsten erschaffen und wieder zerstören, und wieder von vorn.

da es eine besonders schöne szene ist, möcht ich das gerne einbauen, und als spieler einfach zu handhaben sein.
ob man immer nen wekyndstein und nen sigilstein dabei braucht lass ich erstmal nebensache.



ps: werd den helfenden auch in meiner mod erwähnen, dass es durch dessen hilfe enstanden sei.
 
Ich brauch ein klein wenig Hilfe bei einem Skript. Es ist ein Spell. Ich möchte, dass der Spell nicht mehr ausführbar ist, wenn der Spieler weniger als 30 Punkte Ausdauer besitzt. Wie man den Spelleffekt deaktiviert, weiß ich schon, bloss macht der Spieler immernoch die Animation für den Spell. Kann man das auch irgendwie deaktivieren?
Wenn der Spieler zum Beispiel zu wenig Mana hat, dann kann man auch nicht mehr casten. Kann man den Effekt auch per Script aufrufen?

"skipanim" ist leider keine Lösung. Das lähmt den Spieler.
 
Hallo, vielleicht kann mir jemand weiter helfen. Ich habe im Forum nichts dazu gefunden:
Und zwar möchte ich die Function GetCurrentHealth verwenden umd den Zustand von Waffen und Rüstungen abzufragen. Auf der CS-WIKI Seite steht die Funktion auch erklärt. Aber sobald ich die Funktion aufrufe, wird das Skript irgendwie sofort beendet und ich sehe noch nicht einmal die Ausgabe, die 2 Zeilen später kommen soll. Wenn ich es auskommentiere und die Ausgabe nur mit einen Parameter mache, kann ich mir den Maximalwert (100%) für den Zustand anzeigen lassen. Hier mein Code:

Code:
	set invPos to pCont.GetNumItems
Label 1
	if invPos
		set invPos to (invPos - 1)
		set pInvObj to (pCont.GetInventoryObject invPos)
		if ( (IsArmor pInvObj) == 1 || (IsWeapon pInvObj == 1) ) 
			set currHealth to (GetCurrentHealth pInvObj)
			set maxHealth to (GetObjectHealth pInvObj)
			PrintToConsole "Item: %n (%.0f / %.0f)" pInvObj currHealth maxHealth 
		endif
		Goto 1
	endif

Wie kann ich den aktuellen Zustand anzeigen lassen? Ich weiß, es gibt noch die Funktion GetEquippedCurrentHealth, aber die funktioniert nur für angelegte Sachen, was ich nicht möchte. Ich möchte eigentlich das Gegenstückt zu GetObjectHealth haben....

Wäre nett, wenn mir jemand helfen könnte. :D

Ich weiß nicht. Das sieht Syntax mäßig total komisch aus, was aber nicht unbedingt heißt, dass es falsch ist.

Code:
	set invPos to pCont.GetNumItems
Label 1
	if invPos ;fehlt hier net nen vergleich? oder meinst du hier "if invPos==1"?
		set invPos to (invPos - 1)
		set pInvObj to (pCont.GetInventoryObject invPos)
		if ( [COLOR="Red"](pInvObj.IsArmor == 1 ) || (pInvObj.IsWeapon == 1)[/COLOR] ) 
			set currHealth to ([COLOR="Red"]pInvObj.GetCurrentHealth[/COLOR])
			set maxHealth to ([COLOR="Red"]pInvObj.GetObjectHealth[/COLOR]) ; so muss das ganze aussehen vom syntax würd ich meinen
			PrintToConsole "Item: %n (%.0f / %.0f)"[COLOR="Red"],[/COLOR] pInvObj[COLOR="Red"],[/COLOR] currHealth[COLOR="Red"],[/COLOR] maxHealth  ;die kommas könnten wichtig sein
		endif
		Goto 1
	endif
 
Ich weiß nicht. Das sieht Syntax mäßig total komisch aus, was aber nicht unbedingt heißt, dass es falsch ist.

Code:
	set invPos to pCont.GetNumItems
Label 1
	if invPos ;fehlt hier net nen vergleich? oder meinst du hier "if invPos==1"?
		set invPos to (invPos - 1)
		set pInvObj to (pCont.GetInventoryObject invPos)
		if ( [COLOR="Red"](pInvObj.IsArmor == 1 ) || (pInvObj.IsWeapon == 1)[/COLOR] ) 
			set currHealth to ([COLOR="Red"]pInvObj.GetCurrentHealth[/COLOR])
			set maxHealth to ([COLOR="Red"]pInvObj.GetObjectHealth[/COLOR]) ; so muss das ganze aussehen vom syntax würd ich meinen
			PrintToConsole "Item: %n (%.0f / %.0f)"[COLOR="Red"],[/COLOR] pInvObj[COLOR="Red"],[/COLOR] currHealth[COLOR="Red"],[/COLOR] maxHealth  ;die kommas könnten wichtig sein
		endif
		Goto 1
	endif

Das CS hatte bei mir aber keinen Fehler angezeigt und Teile gingen ja auch. Aber trotzdem habe ich mal Deine Variante verwendet. Es geht auch nicht.

Das Problem ist, dass ich in der Konsole einfach gar nichts sehe, keine Ausgabe. Anscheinend wird das Skript bei der Zeile set currHealth to (pInvObj.GetCurrentHealth) sofort beendet. Aber ich sehe keine Fehlermeldung, kein Absturz nichts. Kommentiere ich die Zeile aus, und mache ich nur eine Ausgabe bei PrintToConsole geht es.

Kann es sein, dass die Funktion GetCurrentHealth in OBSE nicht richtig implementiert ist? :huh: