Construction Set Skriptthread zum Construction Set

Ich bräuchte mal Hilfe bei einem Skript, ich möchte, dass sich ein Objekt einmalig auf der y-achse um XXX units verschiebt, quasi wie eine tür. Kann ich das Skript als Grundlage nehmen, was muss verändert werden?

Code:
scn Wiegehtsdennso

short UpDown
float Speed
float Position

Begin GameMode
set Speed to 2 ;wenn du die Zahl hier veränderst, kannst du die Geschwindigkeit ändern
if (UpDown == 0)
     set Position to ( GetPos z + Speed )
elseif (UpDown == 1)
     set Position to ( GetPos z - Speed )
endif
RefdesObjekts.setpos Z Position

if (UpDown == 0) && (RefdesObjekts.getpos Z >= 1000);hier die maximale Höhe eingeben
     set UpDown to 1
elseif (UpDown == 1) && (RefdesObjekts.getpos Z <= 500);hier die minimale Höhe eingeben
     set UpDown to 0
endif
end
 
Ich bräuchte mal Hilfe bei einem Skript, ich möchte, dass sich ein Objekt einmalig auf der y-achse um XXX units verschiebt, quasi wie eine tür. Kann ich das Skript als Grundlage nehmen, was muss verändert werden?

Code:
scn Wiegehtsdennso

short UpDown
float Speed
float Position
short once 

Begin GameMode
set Speed to 2 ;wenn du die Zahl hier veränderst, kannst du die Geschwindigkeit ändern
if (UpDown == 0) && ( once == 0 )
     set Position to ( GetPos z + Speed )
endif
RefdesObjekts.setpos Z Position

if (UpDown == 0) && (RefdesObjekts.getpos Z >= 1000);hier die maximale Höhe eingeben
     set UpDown to 1
     set once to 1
endif
end

So hast du sogar eine doppelte Sicherheit, das sich nur hoch bewegt.
Bzw. bei ändern des Zeichens runter.

mfg
 
  • Like
Reaktionen: elveon
So bewegt sich der Gegenstand aber halt auf der z-Achse. Du müsstest also z durch y ersetzen. Die Position, wo sich das hinbewegen soll, musst du somit wohl auch ändern.
 
Hallo alle zusammen

Ich bräuchte Hilfe bei meinem Kochscript:

ScriptName Kochscript

short stage
short choice
short DayofLastUse

Begin OnActivate
set stage to 1

if(stage==1)
MessageBox "Was möchtet ihr tun?", "Auflauf zubereiten.", "Kuchen backen.", "Nichts.",
return
set stage to 2
elseif(stage==2)
set choice to GetButtonPressed

if(choice==0)

MessageBox "Ihr müsst auf die nächste Mahlzeit warten."
else
MessageBox "Ihr gebt einige frische Zutaten in den Topf und rührt es gut um. Anschliessend lasst ihr es noch ein bisschen köcheln, bevor ihr es serviert."
Set DayofLastUse to GetDayofWeek

XMarker1. PlaceAtMe HouseServantPie 1, 0, 0
XMarker2. PlaceAtMe HouseServantPie 1, 0, 0
XMarker3. PlaceAtMe HouseServantPie 1, 0, 0
XMarker4. PlaceAtMe HouseServantPie 1, 0, 0
XMarker5. PlaceAtMe HouseServantPie 1, 0, 0
XMarker6. PlaceAtMe HouseServantPie 1, 0, 0
XMarker7. PlaceAtMe HouseServantPie 1, 0, 0
XMarker8. PlaceAtMe HouseServantPie 1, 0, 0

elseif(choice==2)
MessageBox "Ihr rührt den Teig an und giesst ihn in eine Backform. Nach gut einer halben Stunde, holt ihr einen wunderbar duftenden Kuchen aus dem Ofen heraus."
Player. AddItem Sweetcake 1
if GetDayofWeek == DayofLastUse


endif
end

Wenn ich das jetzt versuche zu speichern, heisst es bei Linie 14 und Linie 33, dass mismatched if/else/endif starting block wäre.

Was heisst das und was kann ich dagegen machen?

Danke schonmal im Vorraus.
 
Es heißt, dass Du ein paar if-Blöcke ohne End hast. Das muss aber sein.
Hier das überarbeitete:
Code:
ScriptName Kochscript

short stage
short choice
short DayofLastUse

Begin OnActivate
set stage to 1

if(stage==1)
MessageBox "Was möchtet ihr tun?", "Auflauf zubereiten.", "Kuchen backen.", "Nichts.",
return
set stage to 2
elseif(stage==2)
set choice to GetButtonPressed
[B][I][COLOR="Red"]endif[/COLOR][/I][/B]

if(choice==0)

MessageBox "Ihr müsst auf die nächste Mahlzeit warten."
else
MessageBox "Ihr gebt einige frische Zutaten in den Topf und rührt es gut um. Anschliessend lasst ihr es noch ein bisschen köcheln, bevor ihr es serviert."
Set DayofLastUse to GetDayofWeek

XMarker1. PlaceAtMe HouseServantPie 1, 0, 0
XMarker2. PlaceAtMe HouseServantPie 1, 0, 0
XMarker3. PlaceAtMe HouseServantPie 1, 0, 0
XMarker4. PlaceAtMe HouseServantPie 1, 0, 0
XMarker5. PlaceAtMe HouseServantPie 1, 0, 0
XMarker6. PlaceAtMe HouseServantPie 1, 0, 0
XMarker7. PlaceAtMe HouseServantPie 1, 0, 0
XMarker8. PlaceAtMe HouseServantPie 1, 0, 0

elseif(choice==2)
MessageBox "Ihr rührt den Teig an und giesst ihn in eine Backform. Nach gut einer halben Stunde, holt ihr einen wunderbar duftenden Kuchen aus dem Ofen heraus."
Player. AddItem Sweetcake 1
[B][I][COLOR="Red"]endif[/COLOR][/I][/B]
if GetDayofWeek == DayofLastUse


endif
end
 
So ich hab auch ein Problem bei dem Script:

Code:
scn AjColdFire

short donelight
short choice
float timer

Begin OnTrigger Player

if donelight == 0

MessageBox "Wollt ihr euer Licht spenden?", "Ja", "Nein"

set donelight to 1

endif
end

Begin GameMode

if donelight == 1 
Set choice to GetButtonPressed
Set donelight to 10
endif

if ( choice == 0 ) && ( Player.GetItemCount Torch02 >= 1 ) && ( donelight == 10 )
Player.RemoveItem Torch02, 1
ColdFire1.enable
ColdTrig03.enable
ColdSecretWall2.enable
Set choice to -1

elseif ( choice == 0 ) && ( Player.GetItemCount Torch02 < 1 ) && ( donelight == 10 )
Message "Ihr habt kein Licht, das ihr spenden könnt"
Set choice to 1

elseif ( choice == 1 ) && ( donelight == 10 )
set timer to 10
endif

If timer >= 10 && donelight == 10
Set timer to timer - GetSecondsPassed

elseif ( timer <= 0 ) && ( donelight == 10 )
Set donelight to 0
set choice to -1
endif
end

Wenn ich nun allerdings den Trigger betrete, kommt die MessageBox ununterbrochen und es passiert gar nichts. Wo liegt da der Fehler?

mfg
 
@ Vampire Lord: Vielen Dank für die Hilfe :)

Aber ich habe jetzt das Problem, dass wenn ich ingame das gescriptete Objekt aktivieren will, nichts passiert. Die nächste MessageBox, die erscheinen sollte, bleibt aus :cry:
An was kann das liegen?

Hier nochmal das Script:

ScriptName Kochscript

short stage
short choice
short DayofLastUse

Begin OnActivate
set stage to 1

if(stage==1)
MessageBox "Was möchtet ihr tun?", "Auflauf zubereiten.", "Kuchen backen.", "Nichts.",
return
set stage to 2
elseif(stage==2)
set choice to GetButtonPressed

if(choice==0)

MessageBox "Ihr müsst auf die nächste Mahlzeit warten."
else
MessageBox "Ihr gebt einige frische Zutaten in den Topf und rührt es gut um. Anschliessend lasst ihr es noch ein bisschen köcheln, bevor ihr es serviert."
Set DayofLastUse to GetDayofWeek

XMarker1. PlaceAtMe HouseServantPie 1, 0, 0
XMarker2. PlaceAtMe HouseServantPie 1, 0, 0
XMarker3. PlaceAtMe HouseServantPie 1, 0, 0
XMarker4. PlaceAtMe HouseServantPie 1, 0, 0
XMarker5. PlaceAtMe HouseServantPie 1, 0, 0
XMarker6. PlaceAtMe HouseServantPie 1, 0, 0
XMarker7. PlaceAtMe HouseServantPie 1, 0, 0
XMarker8. PlaceAtMe HouseServantPie 1, 0, 0

elseif(choice==2)
MessageBox "Ihr rührt den Teig an und giesst ihn in eine Backform. Nach gut einer halben Stunde, holt ihr einen wunderbar duftenden Kuchen aus dem Ofen heraus."
Player. AddItem Sweetcake 1
if GetDayofWeek == DayofLastUse


endif
end
 
Wegen dem return Befehl, das CS wird jedesmal von vorne Anfangen bis zu dem Return Befehl und fängt dann wieder von vorne an, mach ihn raus, dann sollte es gehen.
 
hallöle

Ich suche einen Script der wen der zustand einer rüstung unter einen bestimmten wert liegt die Rüstung mit einer anderen austauscht

ich hatte das so versucht

PHP:
scn name
ref Status
begin ScripteffectStart
    set Status to aaTestarmor.GetObjectHealth
    if Status <=50
                Player.UnEquipItem aaTestarmor
                Player.removeitem aaTestarmor 1
                Player.AddItem aaTestarmorb 1
                Player.EquipItem aaTestarmorb
    endif
end
klapt leider nicht

wäre für hilfe Dankbar
 
Probiers mal mit short Status anstatt ref Status.
Am Skript selber merk ich sonst nix.
 
Code:
scn name
[COLOR="Red"]long[/COLOR] Status
begin ScripteffectStart
    set Status to [COLOR="Red"]Player.GetObjectHealth [ObjektRef][/COLOR]
    if Status <= 50
                Player.UnEquipItem aaTestarmor
                Player.removeitem aaTestarmor 1
                Player.AddItem aaTestarmorb 1
                Player.EquipItem aaTestarmorb
    endif
end

Außerdem muss halt OBSE laufen.
 
Zuletzt bearbeitet:
Weiss vielleicht noch jemand eine Lösung für mein Problem?
Wenn der Return-Befehl weg ist kommt die ganze Zeit nur die MessageBox mit dem Hackauflauf zubereiten :cry:

Hat keiner eine Idee?

ScriptName Kochscript

short stage
short choice
short DayofLastUse

Begin OnActivate
set stage to 1

if(stage==1)
MessageBox "Was möchtet ihr tun?", "Auflauf zubereiten.", "Kuchen backen.", "Nichts.",
return
set stage to 2
elseif(stage==2)
set choice to GetButtonPressed

if(choice==0)

MessageBox "Ihr müsst auf die nächste Mahlzeit warten."
else
MessageBox "Ihr gebt einige frische Zutaten in den Topf und rührt es gut um. Anschliessend lasst ihr es noch ein bisschen köcheln, bevor ihr es serviert."
Set DayofLastUse to GetDayofWeek

XMarker1. PlaceAtMe HouseServantPie 1, 0, 0
XMarker2. PlaceAtMe HouseServantPie 1, 0, 0
XMarker3. PlaceAtMe HouseServantPie 1, 0, 0
XMarker4. PlaceAtMe HouseServantPie 1, 0, 0
XMarker5. PlaceAtMe HouseServantPie 1, 0, 0
XMarker6. PlaceAtMe HouseServantPie 1, 0, 0
XMarker7. PlaceAtMe HouseServantPie 1, 0, 0
XMarker8. PlaceAtMe HouseServantPie 1, 0, 0

elseif(choice==2)
MessageBox "Ihr rührt den Teig an und giesst ihn in eine Backform. Nach gut einer halben Stunde, holt ihr einen wunderbar duftenden Kuchen aus dem Ofen heraus."
Player. AddItem Sweetcake 1
if GetDayofWeek == DayofLastUse


endif
end
 
Kommt dann von Anfang an nur die MessageBox für den Braten oder kann man erst noch auswählen und dann nicht mehr?
 
Es kommt von Anfang an nur die MessageBox für den Braten.
Man kann gar nichts anderes auswählen. Und auch die Einschränkung einmal täglich, funktioniert nicht :?
 
@AjAeXx was ist den die Objektref meinst du die ID

Habs so erst ma ausprobiert geht leider immer noch nicht
Cs und oblivion habe ich jedenfalls mit Obse geladen
 
Weiss vielleicht noch jemand eine Lösung für mein Problem?
Wenn der Return-Befehl weg ist kommt die ganze Zeit nur die MessageBox mit dem Hackauflauf zubereiten :cry:

Hat keiner eine Idee?

GetButtonPressed muss in einem Gamemode/Menumode-Block laufen.
Ergo: du musst dein Script großteils aus dem OnActivate-Block herauslösen, in einen Gamemode/Menumode-Block schieben & dort noch eine Variable einbauen, damit die anderen MessageBoxen/Reaktionen darauf auch nur kommen, wenn das Objekt auch aktiviert wurde.