Construction Set Skriptthread zum Construction Set

Code:
scn ...

Short Runde
Short Auswahl

Begin GameMode

If (Runde == 0)
PlaySound SoundID
Set Runde to 1
Elseif (Runde == 1)
;Hier müsste man irgendwie rausfinden, wann das Musikstück rum ist
Set Runde to 2
Elseif (Runde == 2)
MessageBox "Frage" "Ja" "Nein"
Set Auswahl to GetButtonPressed
Set Runde to 3
Elseif (Runde == 3)
 If (Auswahl == 0)
  ObjektRef.MoveTo Player
  Set Runde to 4
 Else ;Auswahl != "Ja"
  Set Runde to 4
 Endif
Endif
End

Ich ging jetzt davon aus, dass es von irgendwoher geported wurde. Oder meintest du einfach nur Enablen?

Übrigens .... du hast ja jetzt nicht gesagt, unter welchen Bedingungen das kommen soll.
Dieser Script würde den ganzen Krimskrams beim Eintritt in die Zelle machen.
 
Nein, das darf nicht bei Eintritt in die Zelle passieren.
Die Situation ist folgende:
ich betrete einen Raum, klicke einen Altar an, worauf der Altar anfängt zu sprechen. Das Soundfile ist selber aufgenommen. Nachdem der Altar zu Ende gesprochen hat, soll die Messagebox erscheinen, in der eine Frage gestellt wird, die der Player mit ja oder nein beantworten soll. Beantwortet er sie mit ja, soll ein item vor ihm erscheinen, das ich noch erstellen werde, z.B. eine Schriftrolle. Es reicht also, wenn sie enabled wird.
 
Ich habe ein Problem mit einem Skript.

Code:
scn AAskript2einzahlen

short button
short state

Begin onActivate

if state
 return
endif
if isActionRef player
 messagebox "Wie viel Geld wollt Ihr abgeben?" "1" "2" "5" "10" "20" "50" "100" "500" "1000" "Nichts"
endif

end


Begin GameMode

if state
 set button to getButtonPressed
 if button == -1
  return
 elseif button == 0
  AAfach.addItem Gold001 1
  player.removeItem Gold001 1
 elseif button == 1
   AAfach.addItem Gold001 2
   player.removeItem Gold001 2
 elseif button == 2
   AAfach.addItem Gold001 5
   player.removeItem Gold001 5
 elseif button == 3
   AAfach.addItem Gold001 10
   player.removeItem Gold001 10
 elseif button == 4
   AAfach.addItem Gold001 20
   player.removeItem Gold001 20
 elseif button == 5
   AAfach.addItem Gold001 50
   player.removeItem Gold001 50
 elseif button == 6
   AAfach.addItem Gold001 100
   player.removeItem Gold001 100
 elseif button == 7
   AAfach.addItem Gold001 500
   player.removeItem Gold001 500
 elseif button == 8
   AAbankfach.addItem Gold001 1000
   player.removeItem Gold001 1000
 elseif button == 9

 endif
 set state to 0
endif

end

Im Spiel öffnet sich beim aktivieren die Messagebos aber wenn ich etwas auswähle passiert nichts
Weiß jemand woran das liegt?
 
@Arielle:
Dann solte es so klappen:
Code:
scn name

short state
short finished
short button
float timer

Begin onActivate

if finished
 return
endif

if state == 0
 set state to 1
 playSound <Sound-ID>    ;du könntest auch "playSound3D" benutzen
 set timer to <Länge-der-Sound-Datei>
endif

end


Begin GameMode

if finished
 return
endif

if state == 1
 set timer to (timer - getSecondsPassed)
 if timer <= 0
  set state to 2
  messagebox "Blabla" "Ja!" "Nein!"
 endif
elseif state == 2
 set button to getButtonPressed
 if button == -1
  return
 elseif button == 0
  <Ref>.enable
  set finished to 1
  return
 else
  set state to 0      ;dann kann der Spieler die Prozedur wiederholen, wenn das nicht der Fall sein soll, einfach die variable "finished" auf 1 setzen
 endif
endif

end

@ichich:
Du musst im "onActivate"-Block auch "state" auf 1 setzen. Du kannst also einfach "set state to 1" direkt unter dem "messagebox"-Befehl einfügen.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: ichich
OK, das Skript funktioniert zwar, die Dialogbox erscheint auch, aber nicht so, wie vorgesehen. Das Soundfile wird nicht vorher abgespielt.
Die Dialogbox soll also erst erscheinen, nachdem das Soundfile abgespielt wurde.


edit
hier mal das Script, wie es jetzt aussieht.
Das blaue Skript lag schon auf dem Altar und der Sound wird sauber abgespielt. Setze ich dein Skript hintendran, geht gar nichts mehr. Wie müsste das Skript richtig heißen, damit die Dialogbox erscheint?


scn ForgottenAltarScript

begin onActivate

playgroup Forward 1

playsound AWDDaedra

playgroup Backward 1


endif

end



short state
short finished
short button
float timer

Begin onActivate

if finished
return
endif

if state == 0
set state to 1
playSound AWDDaedra ;du könntest auch "playSound3D" benutzen
set timer to 1
endif

end


Begin GameMode

if finished
return
endif

if state == 1
set timer to (timer - getSecondsPassed)
if timer <= 0
set state to 2
messagebox "Wollt Ihr euch dem Willen dieses Wesens unterwerfen?" "Ja!" "Nein!"
endif
elseif state == 2
set button to getButtonPressed
if button == -1
return
elseif button == 0
AWDKartedesVergessenenSchreinsref.enable
set finished to 1
return
else
set state to 0 ;dann kann der Spieler die Prozedur wiederholen, wenn das nicht der Fall sein soll, einfach die variable "finished" auf 1 setzen
endif
endif

end
 
Zuletzt bearbeitet:
Und der Sound ist eine Sekunde lang?
Du könntest den Timer ansonsten mal höher setzen.
Und "playgroup forward 1" bringt nichts, wenn gleich darauf "playgroup backward 1" ausgeführt wird.
 
  • Like
Reaktionen: Arielle 1000
Ich habe noch ein Problem
Code:
scn AAskript3auszahlen
short choose
short button

begin onactivate
messagebox"Wie viel wollt ihr haben?" "1" "2" "5" "10" "20" "50" "100" "500" "1000" "Nichts"
set choose to 1
end

begin gamemode
if choose==1
set button to getbuttonpressed
if button==0
  if AAbankfach.getitemcount Gold001 >=1"
  player.additem Gold001 1
  else
  message"Zu wenig Geld im Bankfach"
  endif
elseif button==1
  if AAbankfach.getitemcount Gold001 >=2"
  player.additem Gold001 2
  else
  message"Zu wenig Geld im Bankfach"
  endif
elseif button==2
  if AAbankfach.getitemcount Gold001 >=5"
  player.additem Gold001 5
  else
  message"Zu wenig Geld im Bankfach"
  endif
elseif button==3
  if AAbankfach.getitemcount Gold001 >=10"
  player.additem Gold001 10
  else
  message"Zu wenig Geld im Bankfach"
  endif
elseif button==4
  if AAbankfach.getitemcount Gold001 >=20"
  player.additem Gold001 20
  else
  message"Zu wenig Geld im Bankfach"
  endif
elseif button==5
  if AAbankfach.getitemcount Gold001 >=50"
  player.additem Gold001 50
  else
  message"Zu wenig Geld im Bankfach"
  endif
elseif button==6
  if AAbankfach.getitemcount Gold001 >=100"
  player.additem Gold001 100
  else
  message"Zu wenig Geld im Bankfach"
  endif
elseif button==7
  if AAbankfach.getitemcount Gold001 >=500"
  player.additem Gold001 500
  else
  message"Zu wenig Geld im Bankfach"
  endif
elseif button==8
  if AAbankfach.getitemcount Gold001 >=1000"
  player.additem Gold001 1000
  else
  message"Zu wenig Geld im Bankfach"
  endif
elseif button==9
  
set choose to 0
set button to 2
elseif button==1
;nichts
set button to 2
set choose to 0
endif
end

Ich bekomme die Fehlermeldungen :
Mismatched if/else/endif block starting on line 11
und
line 11
Mismatched if/then/else block
 
Für die Abfrage If choose == 1 dürfte noch ein endif fehlen.

Probiere es also mal so:
Code:
scn AAskript3auszahlen
short choose
short button

begin onactivate
messagebox"Wie viel wollt ihr haben?" "1" "2" "5" "10" "20" "50" "100" "500" "1000" "Nichts"
set choose to 1
end

begin gamemode
if choose==1
set button to getbuttonpressed
if button==0
  if AAbankfach.getitemcount Gold001 >=1"
  player.additem Gold001 1
  else
  message"Zu wenig Geld im Bankfach"
  endif
elseif button==1
  if AAbankfach.getitemcount Gold001 >=2"
  player.additem Gold001 2
  else
  message"Zu wenig Geld im Bankfach"
  endif
elseif button==2
  if AAbankfach.getitemcount Gold001 >=5"
  player.additem Gold001 5
  else
  message"Zu wenig Geld im Bankfach"
  endif
elseif button==3
  if AAbankfach.getitemcount Gold001 >=10"
  player.additem Gold001 10
  else
  message"Zu wenig Geld im Bankfach"
  endif
elseif button==4
  if AAbankfach.getitemcount Gold001 >=20"
  player.additem Gold001 20
  else
  message"Zu wenig Geld im Bankfach"
  endif
elseif button==5
  if AAbankfach.getitemcount Gold001 >=50"
  player.additem Gold001 50
  else
  message"Zu wenig Geld im Bankfach"
  endif
elseif button==6
  if AAbankfach.getitemcount Gold001 >=100"
  player.additem Gold001 100
  else
  message"Zu wenig Geld im Bankfach"
  endif
elseif button==7
  if AAbankfach.getitemcount Gold001 >=500"
  player.additem Gold001 500
  else
  message"Zu wenig Geld im Bankfach"
  endif
elseif button==8
  if AAbankfach.getitemcount Gold001 >=1000"
  player.additem Gold001 1000
  else
  message"Zu wenig Geld im Bankfach"
  endif
elseif button==9
  
set choose to 0
set button to 2
elseif button==1
;nichts
set button to 2
set choose to 0
endif
endif
end

Edit: Zu langsam. :(

MfG Master of Worlds
 
  • Like
Reaktionen: ichich
Liebe Mods, sorry für den Doppelpost, aber wenn ich meinen letzten Post editiere wird meine neue Frage nicht gesehen.

Ich würde gerne das Skript erweitern.
Es sieht jetzt so aus und funktioniert einwandfrei:
scn ForgottenAltarScript
short state
short finished
short button
float timer
Begin onActivate
if finished
return
endif
if state == 0
set state to 1
playSound AWDDaedra
set timer to 20
endif
end

Begin GameMode
if finished
return
endif
if state == 1
set timer to (timer - getSecondsPassed)
if timer <= 0
set state to 2
messagebox "Wollt Ihr euch dem Willen dieses Wesens unterwerfen?" "Ja!" "Nein!"
endif
elseif state == 2
set button to getButtonPressed
if button == -1
return
elseif button == 0
AWDQuestVSchreinKarte01ref.enable
set finished to 1
return
else
set state to 0
endif
endif
end

1. Die Karte, die dort enabled wird, möchte ich gerne effektvoll erscheinen lassen. Sie soll bei Erscheinen, in der Luft sich langsam drehend, mit einem kleinen Lichteffekt versehen sein. Ist das möglich?
2. Wenn der Player den Nein-Button drückt, sollen vom Altar tödliche Blitze herauskommen und ihn, ähm....töten eben.....Ist das auch möglich?
Schon mal danke für eure Antworten.

LG
Arielle
 
Hey ich stell hier mal meine Frage aus'm CS Thread.

Ich bräuchte einen Skript den ich auf Leichen/NPC's legen kann, der verhindert das sie beim Sterben eine bestimmte größe einnehmen, da sie in lebendiger Form viel kleiner sind und das sehr komisch wirkt^^.
Da ich für Oblivion noch nie gescriptet habe, würde ich mich freun wenn mir den jemand schnell schreiben könnte :)
 
@Shadows :
Mal hypothetisch: Deine Einheit hätte die Scale 0.5

Code:
scn ...
Ref MySelf

Begin onDeath

Set MySelf to GetSelf
MySelf.SetScale 0.5

End
 
  • Like
Reaktionen: r4yn