Construction Set Skriptthread zum Construction Set

Ich brauche ein Script, mit dem man die Rasse, das Sternzeichen und die Klasse ändern kann. Wenn man auf "fertig" klickt, wird etwas in das Inventar hinzugefügt. Wenn man eine Sache verändert hat, soll das Auswahlmenü wiederkommen. Ich hatte folgendes probiert:
Code:
scn bVerändern

short doOnce
short Korrigieren

Begin OnActivate
If doOnce == 0
chargendoorhall.unlock
MessageBox "Was wollt Ihr verändern?", "Rasse", "Klasse", "Sternzeichen", "fertig"
set Korrigieren to GetButtonPressed

If Korrigieren == 0
showracemenu
Veränderungsstein.activate
elseif Korrigieren == 1
showclassmenu
Veränderungsstein.activate
elseif korrigieren == 2
showbirthsignmenu
Veränderungsstein.activate
elseif korrigieren == 3
Veränderungsstein.disable
player.additem bVeränderungsstein 1
set doOnce to 1
endif
endif
end

Leider funktioniert keiner der Button.
 
Du solltest eine Messagebox auswertung am besten immer in einen gameMode Block packen. Das funktioniert einfach besser da.
Code:
scriptname bVerändern

short doOnce
Short Exit
short Korrigieren

Begin OnActivate
If doOnce == 0
Set Exit to 1
chargendoorhall.unlock
MessageBox "Was wollt Ihr verändern?", "Rasse", "Klasse", "Sternzeichen", "fertig"
Endif
End


Begin GameMode
If ( Exit )
	set Korrigieren to GetButtonPressed
	If Korrigieren == 0
		showracemenu
		Veränderungsstein.activate
	elseif Korrigieren == 1
		showclassmenu
		Veränderungsstein.activate
	elseif korrigieren == 2
		showbirthsignmenu
		Veränderungsstein.activate
	elseif korrigieren == 3
		Veränderungsstein.disable
		player.additem bVeränderungsstein 1
		set doOnce to 1
		Set Exit to 0
	endif
end

Mal ne frage:
Worauf liegt das Script? Sollte es auf dem Stein liegen dann kannst du das Veränderungsstein bei Veränderungsstein.Activate weglassen, da das Script automatich das Objekt nutzt auf dem es liegt sollte keins angegeben werden.

Ne andere Frage ist: Wie kann deine Ref Veränderungsstein heißen wenn man im CS kein ä,ö und ü verwenden kann?
 
  • Like
Reaktionen: bjoernret
Ja, das Script liegt auf dem Stein. Danke, ich werde es mal versuchen.

Wegen dem ä, ö und ü: Das liegt daran, dass ich das Script aus dem Kopf aufgeschrieben habe, da ich gerade an einem anderen Computer bin. Im Originalscript sind die Umlaute richtig ersetzt ;)

Das mit den "exit" musst du mir aber nochmal erklären :?
 
Die Variable wird beim Aktivieren auf 1 gesetzt. Im GameMode block wird nun abgefragt ob Exit 1 ist und dann kann man die ganzen Buttons auswählen etc. Beim druck auf Fertig wird die variable auf 0 gesetzt und somit geht die MessageBox dann weg. Ich bau das immer ein als Sicherheit das die MessageBox auch wirklich weg geht.
 
  • Like
Reaktionen: bjoernret
Und jetzt habe ich gleich noch eine Frage: Gibt es einen Befehl, der überprüft, ob das Ziel von einem Zauber ein Bett ist? Kann gerne auch mit OBSE sein :)
 
Der Befehl überprüft ob das Objekt zum Typ "Möbel" gehört; also quasi, ob es im CS unter WorldObjects --> Furniture zu finden ist...
"OBSE" hab ich im vorherigen Beitrag editiert...
 
  • Like
Reaktionen: bjoernret
Hallo Leute,
ich stecke gerade mitten in einem Mod,
und komme nicht weiter.

Ein von mir erstellter Teleport ball, (Objectgroup=door),
soll durch folgenden Script ermöglichen,
dass man bei annäherung an diesen "ball" an einen Anderen Ort teleportiert wird.
Dazu habe ich MoveTo und XMarkerHeading als Referenz Spender benutzt.

Script:
scn TeleportHerzvonCyrodiil

short Distance

Begin GameMode

if ( Distance == 0 )
if Getdistance Player < 10
MoveTo HerzvonCyrodiilMarker
set Distance to 1

elseif Getdistance Player > 60
return

endif

elseif ( Distance == 1 )

if Getdistance Player > 60
set Distance to 0

elseif Getdistance Player < 60
return

endif

endif

end

Wenn ich nun in die nähe komme - besser gesagt auch genau drin stehe,
passiert garnichts.

Könnte das vlt. daran liegen, dass der Teleportball eine "Tür" ist?
wenn ja, welche Gruppe sollte ich benutzen?

Vielen dank schonmal,
MFG Che
 
Da man das Ding nicht aktivieren muss, kann es auch ein Activator sein.

Das ist aber eher nebensächlich. Die Ursache, warum der Spieler nicht teleportiert wird, liegt in dieser Zeile:
Code:
MoveTo HerzvonCyrodiilMarker

So würde die Zeile nicht auf den Spieler, sondern auf die Tür wirken bzw es versuchen.
Die Zeile müsste so heißen:
Code:
player.moveto HerzVonCyrodiilMarker

Das "set Distance to 1" muss dann davor stehen, denn der moveto-Befehl auf den Spieler wirkt wie return. Das was danach steht, wird also nicht mehr ausgeführt.

Probier mal folgendes Script:
Code:
scn TeleportHerzvonCyrodiil

Begin GameMode

if (player.Getdistance [Ref-ID ball] < 70)
   MoveTo HerzvonCyrodiilMarker
endif

end

Das sollte eigentlich schon reichen. Der Rest, den du noch drin hast, ist überflüssig, zumal ich nun abfrage, ob der Spieler dicht an dem ball ist, nicht, ob der ball dicht am Spieler ist.
Dafür musst du dem ball noch eine Reference ID geben (wie dem Marker) und die dann für [Ref-ID ball] einsetzen. (Die [] weglassen.)

Die Entfernung habe ich auch etwas geändert. Oblivion arbeitet mit units. Ein Meter entspricht etwa 70 units. Das Script wirkt also, wenn der Spieler dichter als 1 Meter an dem ball dran ist.
Bei dir wärens mit 10 etwa 15 Zentimeter gewesen.
 
  • Like
Reaktionen: CheGuerillia
OK, vielen Dank.
werde es gleich mal ausprobieren.

Also.
Ich habe es mal so probiert ^^
Es geht nicht. Vlt. liegts aber auch nur an mir ;)

Edit:
So, es geht nicht.
Liegt vermutlich an Folgendem:
Ich möchte das der PLayer in der Flamme von Agnong gespawnt wird (kopie, in meiner Mod Cell Herz von Cyrodiil)
Und beim Betreten, wieder in die andere Flamme (kopie, Choroll Wildnis) wo er herkam zurück geportet wird.
Also so Flopulver mäßig, für alle die Harry-Potter kennen ^^

Dabei kommt es zustande, dass man an dem Punkt wo man gespawnt wird, schon wieder im Einzugsbereich des Rückteleportballs landet.


Ich gebe auf ! :D

Habe aber noch ein paar andere Ideen, wie sich das ganze umsetzen lässt.

MFG Che
 
Zuletzt bearbeitet:
Schaffe es nicht die Flamme der Fackel in der Farbe im CS zu verändern. Habe schon alle Torches durch. Das Einzige was sich ändert, ist das Licht dass von der Fackel ausgeht nicht das Feuer das die Fackel erzeugt. wird das irgendwie gescripttet? Irgendwo muss die Farbe doch herkommen. Mir ist das Feuer einfach zu gelb würde da gerne mehr weiss drinhaben.
 
Dazu musst du die außerhalb des CS bearbeiten.
Flammen habe ich mir bisher nicht angeschaut, deswegen weiß ich nicht, ob umtexturieren reicht oder ob du noch was an Partikeleffekten ändern musst.
 
Also selbst das umtexturieren gestaltet sich vermutlich durchaus schwierig.
Im CS ist es unmöglch die Frabe zu verändern,
für den Normalbenutzer und nicht-3ds-Meister, wird es wohl auch außerhalb unmöglich bleiben.

Schade aber wahr. Habe heute selber daran gedacht sowas zu machen.
Schau dir einfach mal mit Nifskope son Flammen Mesh an, dann weissde bescheid.

MFG Che
 
Ich habe eine Skriptfrage. Ich möchte einen Zauber haben, der, wenn ich einen NPC damit treffe, alles macht was ich sage. (Eigentlich genauso wie die Fähigkeit "Tierherrschaft" der Waldelefen, nur von unbegrenzter dauer und dass es an NPC's wirkt), und einen Zauber, der das wieder Rückgängig macht. (Beides soll nicht als Verbrechen angesehen werden!)

Danke im Voraus für Hilfe.
 
Suche skirpt zum öffnen und schließen vom zuchtkäfig.
Mein Script sieht bereits so aus
Code:
scn Zuchtkaefig    

scn Zuchtkaefig    

begin onActivate
;if Opened == 0
 ;set Opened to 2
;if Opened == 2
; set Opened == 0
end

scn CTortureCage01SCRIPT

; on activation, lowers and raises self (anim groups "Forward" & "Backward")
; to open and close the two doors, use the following animation groups
; Door01 open = "FastForward"
; Door01 close = "FastBackward"
; Door02 open = "Left"
; Door02 close = "Right"

; automatically activates parents, so if you want an automatic counterweight effect, link this to a CTortureCageLowered01 object

short lowered
short busy
short initialized
ref mySelf
ref myParent
float timer
short door1open        ; set to 1 when door01 is open
short door2open        ; set to 1 when door02 is open

begin onActivate

    ; run once, sets-up ref vars
    if initialized == 0
        set mySelf to getSelf
        set myParent to getParentRef
        set initialized to 1
    endif

    if isActionRef player == 0 && isActionRef mySelf == 0 && busy == 0    
        if door1open == 1
            playgroup FastBackward 0
            set busy to 2
            set door1open to 0
            set timer to 1
        elseif door2open == 1
            playgroup Right 0
            set busy to 2
            set door2open to 0
            set timer to 1
        elseif lowered == 0
            playgroup forward 0
            set busy to 2
            set lowered to 1
            set timer to 1
        else
            playgroup backward 0
            set busy to 2
            set lowered to 0
            set timer to 1
        endif
    
endif

end




end
Ewie muss ich den Script verändern das ich nur acitvieren muss und die tür geht auf? Ich weiß das es mit dem script

if opened == 0
set Opened to 2

endif
if opened == 2
set opened to 0

Aber wo muss das hin?
 
Zuletzt bearbeitet:
Wie kann ich ein Light per Script abfragen. Und zwar so, dass wenn der Player den Raum betritt, dieses Light nach einem Timerablauf ausgeht?

Wie könnte das Script dazu aussehen?