Construction Set Skriptthread zum Construction Set

Hab hier wieder ein Problem.
Code:
scn aaDRCyra0AltLeg08SternentorAktivierung

float AktivierTimer
short Anwaehlwahl
short Runde

;Legende für Runde
;0 = Anfangsstadium
;1 = Abfrage auf Aktivierung überprüfen


Begin onActivate

If (Runde == 0)
     let Anwaehlwahl := -1
     let Runde := 1
    MessageBox "Was willst du tun?", "Den Altar berühren", "Nichts"
Endif

End

;######################

Begin GameMode

If (Runde == 0)
    Return

Elseif (Runde == 1)
     let Anwaehlwahl := getButtonPressed
     
    If Anwaehlwahl == -1
          return
     Elseif Anwaehlwahl == 0
          Let Runde := 2
        Let AktivierTimer:= GetSecondsPassed
     Else    ;if Anwaehlwahl == 1
        Return
        Let Runde := 0
    Endif

Elseif (Runde == 2)

    If (GetSecondsPassed - AktivierTimer >= 2)
        DRCyra0AltLeg08FeuerwegA1.enable
        DRCyra0AltLeg08FeuerwegB1.enable

    Elseif (GetSecondsPassed - AktivierTimer >= 4)
        DRCyra0AltLeg08FeuerwegA2.enable
        DRCyra0AltLeg08FeuerwegB2.enable

    Elseif (GetSecondsPassed - AktivierTimer >= 6)
        DRCyra0AltLeg08FeuerwegA3.enable
        DRCyra0AltLeg08FeuerwegB3.enable

    Elseif (GetSecondsPassed - AktivierTimer >= 8)
        DRCyra0AltLeg08FeuerwegA4.enable
        DRCyra0AltLeg08FeuerwegB4.enable

    Elseif (GetSecondsPassed - AktivierTimer >= 10)
        DRCyra0AltLeg08FeuerwegA5.enable
        DRCyra0AltLeg08FeuerwegB5.enable

    Elseif (GetSecondsPassed - AktivierTimer >= 12)
        DRCyra0AltLeg08FeuerwegA6.enable
        DRCyra0AltLeg08FeuerwegB6.enable

    Elseif (GetSecondsPassed - AktivierTimer >= 14)
        DRCyra0AltLeg08FeuerwegA7.enable
        DRCyra0AltLeg08FeuerwegB7.enable

    Elseif (GetSecondsPassed - AktivierTimer >= 16)
        DRCyra0AltLeg08FeuerwegA8.enable
        DRCyra0AltLeg08FeuerwegB8.enable

    Elseif (GetSecondsPassed - AktivierTimer >= 18)
        DRCyra0AltLeg08NebelA.enable
        DRCyra0AltLeg08NebelB.enable        

    Elseif (GetSecondsPassed - AktivierTimer>= 20)
        Let Runde := 3
        Let AktivierTimer := GetSecondsPassed

    Else    ;Timerdifferenz < 2
        Return
    Endif

Elseif (Runde == 3)

    If (GetSecondsPassed - AktivierTimer >= 1)
        DRCyra0AltLeg08Nebelboden01.enable

    Elseif (GetSecondsPassed - AktivierTimer >= 2)
        DRCyra0AltLeg08Nebelboden02.enable

    Elseif (GetSecondsPassed - AktivierTimer >= 3)
        DRCyra0AltLeg08Nebelboden03.enable

    Elseif (GetSecondsPassed - AktivierTimer >= 4)
        DRCyra0AltLeg08Nebelboden04.enable

    Elseif (GetSecondsPassed - AktivierTimer >= 5)
        DRCyra0AltLeg08Nebelboden05.enable

    Elseif (GetSecondsPassed - AktivierTimer >= 6)
        DRCyra0AltLeg08Nebelboden06.enable

    Elseif (GetSecondsPassed - AktivierTimer >= 7)
        DRCyra0AltLeg08Nebelboden07.enable

    Elseif (GetSecondsPassed - AktivierTimer >= 8)
        DRCyra0AltLeg08Nebelboden08.enable

    Elseif (GetSecondsPassed - AktivierTimer >= 9)
        DRCyra0AltLeg08Nebelboden09.enable

    Elseif (GetSecondsPassed - AktivierTimer >= 10)
        DRCyra0AltLeg08Nebelboden10.enable

        Let Runde := 4
        Let AktivierTimer := 0

    Else    ;weniger als 1 Sekunde Timerdifferenz

        Return

    Endif

Elseif (Runde == 4)

;BlaBlaBla

Endif
end
Beschreibung :
Man aktiviert den Schalter und dann soll schrittweise folgendes passieren.

I.
2 Flammenreihen enablen mit je 2 Flammen à 2 Sekunden

II.
Nachdem die Flammen da sind, sollen zwei andere Objekte enabled werden

III.
Und nachdem die da sind, enablen 10 Nebelobjekte.

Leider passiert optisch gar nix.
Jemand ne Idee?

@Diarrhoe:
So hast du das doch mit dem Scriptaufbau gemeint oder?
Zumindest das GetButtonPressed geht doch oder? :?
 
Zuletzt bearbeitet:
Ich hab noch eine Frage: Wenn ich eine einzelne Flamme enabeln will (Feuerstelle anzünden) aber auch wieder disabeln und das immer wieder, kommt da ein Begin GameMode hin oder wie sähe das dann ungefär aus? (per Hebel)
 
Zuletzt bearbeitet:
also das müsstest du mit OnActivate machen.

also z.b.

Code:
snc test
short anaus

begin OnActivate

if anaus == 0
activate
meineid.enable
set anaus to 1

if anaus == 1
activate
meineid.disable
set anaus to 0
 
  • Like
Reaktionen: Käsekuchen
muss ich von beidem die ref oder die ID angeben?
und geht es auch mit einem Stein an dem Seil, ein Hebel sieht da irgendwie komisch aus?

Die ID vom Activator: 01BwFireSwitcher
Die Ref:01bwswitchfire

Feuer ID: 01BwFireCanBeSwitched
Ref: bwfire1

das Feuer ist auch auf Persist Reference, der Hebel auch, das Feuer ist noch auf und Initially Disabled stimmt das?

noch was: wie macht man eine Message Box, die erscheint, wenn man einen bestimmten NPC getötet hat?


EDIT: 400ster!!!:yeah::-D :lol:

g Käse
 
Zuletzt bearbeitet:
so hab jetzt mal den Hebel umbenannt von dem muss ich aber die Id nemen oder?
klappt trotzdem nicht -.-


scn BwFireSwitchSc
short bwfirehebell
begin OnActivate
if bwfirehebell == 0
activate
bwfire.enable
set bwfirehebell to 1
if bwfirehebell == 1
activate
bwfire.disable
set bwfirehebell to 0
end

Hebel ID: bwfirehebell
Feuer Ref: bwfire

Fehler:
Mismatched if/else/endif block starting on line 6
 
Du hast gar keine Endifs.
So müsste das aussehn.

PHP:
scn BwFireSwitchSc

short bwfirehebell

begin OnActivate

If (bwfirehebell == 0)
  activate
  bwfire.enable
  set bwfirehebell to 1

Elseif (bwfirehebell == 1)
  activate
  bwfire.disable
  set bwfirehebell to 0

Endif
End
 
  • Like
Reaktionen: Käsekuchen
Es lag daran, dass ich den Hebel von 1.000 auf 0.300 verkleiner hab, wenn das Script drauf ist und ich ihn dann verkleiner geht es! Ingame auch, vielen Dank!

Eine kleine Frage hab ich noch, dann ist erst mal gut^^:

Wie mache ich eine Message Box, die kommt wenn ich einen bestimmten Char getötet habe? nur Message mit ok schließen?
 
scn 07dwtrig
short DoOnce
begin ondeath bwkillerfred
If (DoOnce == 0)
MessageBox "blablablubb, "Ok"
Set DoOnce to 1
Else ; DoOnce != 0
Return
Endif
End

Invalid object reference for parameter Actor (optional) Compiled Script not saved
Soll ich dann die Ref von dem nemen, weil in Game passiert mit der Ref nix oder was stimmt mit der ID nicht?

EDIT: da war ich wohl zu fleißig^^ das Script ist ja ganz kurz!
 
I.
Hinter Begin onDeath musst du nix tun, wenn du's einfach auf Killerfred legst

II.
Warum das DoOnce?
Wird Killerfred etwa wiederbelebt?

III.
Bitte mach doch mal Einschübe.
Das erleichtert es echt

IV.
So würd ichs machen.

PHP:
scn 07dwtrig

begin ondeath

MessageBox "blablablubb, "Ok" 

End

V.
Eine Anmerkung.
Mit Zahlen zu beginnen ist grundsätzlich nie gut.
Nimm lieber aa anstatt ner 07, denn damit bleibt es oben und Buchstaben sind etwas besser. Zumindest hab ich das gelesen. Ein konkretes Beispiel habe ich auch nicht.
 
Bitte mach doch mal Einschübe.
Das erleichtert es echt
sorry, im Cs hab ich die, aber wenn ich es in den Post kopiere sind sie weg. Ich mach ab jetzt dann wieder welche^^
Ich werde drauf achten!

stimmt es, wenn ich unter die messagebox Zeile aabwnote7.enable schreibe, wenn ich will, dass wenn man vom Mord zurück kommt auf dem Tisch ein Brief liegt und vorher nicht? Oder muss da dann noch mehr dazu?