PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Timer Reset



Carnatics
15.11.2011, 07:17
Habe da ein kleines problem undzwar will ich das mein timer in ner endlos schleife läuft um drei lampen zu steuern und der spass soll ohne manuele aktivierung starten


Scn 01VtHeliPadLightScript

Float Timer

Begin GameMode

Set Timer to Timer + GetSecondsPassed
HeliPadLight1Ref.Enable

elseif ( Timer >= 3 )
HeliPadLight1Ref.Disable
HeliPadLight2Ref.Enable

elseif ( Timer >= 6 )
HeliPadLight2Ref.Disable
HeliPadLight3Ref.Enable

elseif ( Timer >= 9 )
HeliPadLight3Ref.Disable
Set Timer to 0

endif
endif
endif
end

so sieht das jetzt aus
hatte auch schon variablen versucht ändert aber nix
also sprich

short Next

if Next == 1 und so weiter aber das ding will net...was ist falsch

Boïndil
15.11.2011, 07:54
Es gibt einen Grund:
Das Script bleibt immer in der ersten Schleife stehen, da >= 3 immer wahr ist.

Du solltest dir angewöhnen, immer das komplette und sauber eingerückte Script reinzukopieren und genau zu notieren, wie sich das aktuell auswirkt, "geht nicht" ist zuwenig. Ausserdem wäre auch Infos zützlich, wo das Script ausgeführt wird, in einer Quest, auf einem Objekt, usw.
Du wirst wahrscheinlich nicht um einen zusätzliche Variable rumkommen, auf welchem Status du bist, z.B. 2 = Light 2.

Es wäre denkbar, das Script in eine Quest mit Intervall von 3 Sekunden zu nehmen, dann musst du nur noch einen Status-Zähler auswerten.

Carnatics
15.11.2011, 09:33
okay das script soll die leuchten auf einem helipad steuern undzwar so das immer nur eine referenz an ist sprich ein durchblinken

hatte folgendes versucht


Scn 01VtHeliPadLightScript
short Next
Float Timer

Begin GameMode
HeliPadLight1Ref.Enable
Set Timer to Timer + GetSecondsPassed

if ( Next == 0 ) && ( Timer >= 0.5 )
HeliPadLight1Ref.Disable
HeliPadLight2Ref.Enable
Set Next to 1
elseif ( Next == 1 ) && ( Timer >= 1 )
HeliPadLight2Ref.Disable
HeliPadLight3Ref.Enable
Set Next to 2
elseif Next == 2 ) && ( Timer >= 1.5 )
HeliPadLight3Ref.Disable
Set Next to 0
Set Timer to 0

endif
endif
endif
end

ergebnis keine reaktion im spiel

variante 2 wahr das
set next to 0 an den anfang zu setzen selbes ergebniss...

und mit dem script im ersten post
verhält sich das script so das es lediglich das erste licht triggert (ausschaltet) und dann auch nur das erste licht mit gefühlten 60Hz pulst (vermutlich die script geschwindigkeit...)

Boïndil
15.11.2011, 09:42
Du hast zwei EndIfs zuviel. Genau deswegen rückt man ein, damit man Übersicht kriegt. Das ist ein sehr grober Fehler und du kannst so für nichts garantieren.

Carnatics
15.11.2011, 10:02
und sonst stimmt das mit dem timer an sich ?! gleich mal testen


tatsache die endifs...

zur entschulodigung muss ich sagen das ich dachte das für jedes if ein endif da sein muss (is ja soweit richtig )
aber wie wir heute gelernt haben nicht für elseif's

danke für die super schnelle hilfe

Boïndil
15.11.2011, 11:35
Es sind immer Blöcke, die mit If beginnen und mit EndIf abgesclossen werden. Die ElseIfs dazwischen sind optionale Zweige des Blocks.
Okay, ich arbeite auch sonst mit solchen Konstrukten und von daher war der Einsteig einfacher.