Jetzt bin ich fertig; mit den Nerven! Ich hab die letzten zwei Tage damit verbracht an einen Script zu basteln, daß ein Stück Wand von zwei Schaltern (mit gleicher Funktion) gesteuert noch oben gleiten läßt. Heraus gekommen ist folgendes:
Begin br_secret_door_1
Short br_schalterstatus_1
Short br_schalterstatus_2
Short br_wandstatus
Float br_schaltertimer_1
Float br_schaltertimer_2
Float br_wandtimer
Short br_schaltercounter_1
Short br_schaltercounter_2
if ( cellchanged == 1 )
set br_schalterstatus_1 to 0
set br_schalterstatus_2 to 0
set br_wandstatus to 0
set br_schaltertimer_1 to 0.0
set br_schaltertimer_2 to 0.0
set br_wandtimer to 0.0
set br_schaltercounter_1 to 0
set br_schaltercounter_2 to 0
;"br_schalter_1"->positioncell, 0, 0, 0, 0, "Balmora, Residenz"
;"br_schalter_1"->setangle z, 270
;"br_schalter_2"->positioncell, 0, 0, 0, 0, "Balmora, Residenz"
;"br_schalter_2"->setangle z, 270
;"br_falsche_wand_1"->positioncell, 0, 0, 0, 0, "Balmora, Residenz"
;"br_falsche_wand_1"->setangle z, 270
return
endif
if ( br_wandstatus == 49 )
"br_falsche_Wand_1"->PlaySound3DVP "Dwemer Door Open" 1.0 1.0
set br_wandstatus to 50
endif
if ( br_wandstatus == 149 )
"br_falsche_Wand_1"->PlaySound3DVP "Dwemer Door Open" 1.0 1.0
set br_wandstatus to 150
endif
if ( br_wandstatus == 50 )
"br_falsche_wand_1"->move z, 200
set br_wandtimer to ( br_wandtimer + GetSecondsPassed )
if ( br_wandtimer >= 3.0 )
set br_wandstatus to 100
set br_wandtimer to 0.0
endif
return
endif
if ( br_wandstatus == 150 )
"br_falsche_wand_1"->move z, -200
set br_wandtimer to ( br_wandtimer + GetSecondsPassed )
if ( br_wandtimer >= 3.0 )
set br_wandstatus to 0
set br_wandtimer to 0.0
endif
return
endif
if ( "br_schalter_1"->onactivate == 1 )
if ( br_schalterstatus_1 == 0 )
set br_schalterstatus_1 to 50
"br_schalter_1"->playsound3DVP "open lock", 1.0, 1.0
endif
endif
if ( "br_schalter_2"->onactivate == 1 )
if ( br_schalterstatus_2 == 0 )
set br_schalterstatus_2 to 50
"br_schalter_2"->playsound3DVP "open lock", 1.0, 1.0
endif
endif
if ( br_schalterstatus_1 == 100 )
if ( br_schalterstatus_2 == 0 )
if ( br_wandstatus == 0 )
set br_wandstatus to 49
endif
endif
endif
if ( br_schalterstatus_2 == 100 )
if ( br_schalterstatus_1 == 0 )
if ( br_wandstatus == 0 )
set br_wandstatus to 49
endif
endif
endif
if ( br_schalterstatus_1 == 0 )
if ( br_wandstatus == 100 )
set br_wandstatus to 149
endif
endif
if ( br_schalterstatus_2 == 0 )
if ( br_wandstatus == 100 )
set br_wandstatus to 149
endif
endif
if ( br_schalterstatus_1 == 50 )
"br_schalter_1"->move y, 3
set br_schaltertimer_1 to ( br_schaltertimer_1 + GetSecondsPassed )
if ( br_schaltertimer_1 >= 2.0 )
set br_schalterstatus_1 to 100
set br_schaltertimer_1 to 0.0
"br_schalter_1"->playLoopSound3DVP "open Lock", 0.1, 0.5
endif
endif
if ( br_schalterstatus_1 == 100 )
set br_schaltertimer_1 to ( br_schaltertimer_1 + GetSecondsPassed )
"br_schalter_1"->move y, -1
if ( br_schaltertimer_1 >= 1.0 )
set br_schaltertimer_1 to 0.0
set br_schaltercounter_1 to ( br_schaltercounter_1 + 1 )
endif
if ( br_schaltercounter_1 >= 6 )
set br_schalterstatus_1 to 0
set br_schaltercounter_1 to 0
"br_schalter_1"->StopSound, "open lock"
endif
endif
if ( br_schalterstatus_2 == 50 )
"br_schalter_2"->move y, 3
set br_schaltertimer_2 to ( br_schaltertimer_2 + GetSecondsPassed )
if ( br_schaltertimer_2 >= 2.0 )
set br_schalterstatus_2 to 100
set br_schaltertimer_2 to 0.0
"br_schalter_2"->playLoopSound3DVP "open Lock", 0.1, 0.5
endif
endif
if ( br_schalterstatus_2 == 100 )
set br_schaltertimer_2 to ( br_schaltertimer_2 + GetSecondsPassed )
"br_schalter_2"->move y, -1
if ( br_schaltertimer_2 >= 1.0 )
set br_schaltertimer_2 to 0.0
set br_schaltercounter_2 to ( br_schaltercounter_2 + 1 )
endif
if ( br_schaltercounter_2 >= 6 )
set br_schalterstatus_2 to 0
set br_schaltercounter_2 to 0
"br_schalter_2"->StopSound, "open lock"
endif
endif
end
Eigentlich sollte es wie folgt funktionieren: Schalter betätigen (welchen der beiden ist egal) => Schalter bewegt sich ein stück nach hinten => Wand fährt nach oben => Schalter kommt wieder heraus => Wand fährt nach unten => Anfangszustand
Was das Script jedoch macht ist folgendes: Schalter betätigen (welchen der beiden ist egal) => Schalter bewegt sich ein stück nach hinten => Wand fährt nach oben ... soweit so gut, allerdings kommt der Schalter nicht mehr heraus und die Wand beginnt ohne Ende auf und nieder zu fahren. Betätigt man jetzt den zweiten Schalter so bleibt die Wand kurz in der oberen Position stehen, während beide Schalter wieder in Ausgangsposition zurück fahren, danach setzt die Wand ihr endloses auf und nieder fort.
Kann mir bitte irgend jemand sagen wo ich Mist gebaut habe. Mitlerweile bin ich echt verzweifelt.
Nachtrag:
Ich hab's jetzt noch mal probiert und ein neues Script geschrieben, das seltsamerweise funktioniert. Hab' zwar noch immer keine Ahnung warum das obrige Script nicht funktuioniert, aber egal. Jetzt geht's. Hurra!!!
__________________
Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein
Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach
Dieser Beitrag wurde von Hephaistos am 28.02.2003, 07:53 Uhr editiert.
|