Construction Set Operation "Plattform"

Hattu

Bürger
ich möcht bei einem mod, plattformen installieren, welche den spieler über einen lavasee tragen.

der spieler ist z.B. bei insel A und möchte zu Insel C. Die Plattform kommt von Insel D und macht eine pause bei insel A. der spieler steigt auf. die plattform kommt zu insel B. dort macht sie auch eine pause, damit der spieler evt. aussteigen kan. der wartet aber, bis die plattform zu insel C kommt. da macht sie eine pause, der spieler steigt aus. die plattform fliegt weiter zu insel D.
abgesehen davon das ich nicht weis wie ich die plattform zu einem solchen kreislauf mit pausen bewege, soll die plattform auch nur ein paar stunden am tag, vorhanden sein - was ich auch nicht einstellen kann. daher ersuche ich um rat.
 
Eigentlich gar nicht so schwer. Du musst nur alle Schritte einen nach dem anderen machen.

Code:
begin my_plattform_script

short doOnce
short bewegung
short state
float timer

;verhindert, dass sich die Plattform weiterbewegt, während das Inventar geöffnet ist
if ( MenuMode == 1 ) 
return
endif

;steuert das Bewegen zu bestimmten Uhrzeiten
if ( doOnce == 0 )
if ( GameHour >= 8 )
if ( GameHour < 20 )
set bewegung to 1
set doOnce to 1
endif
endif
else
if ( GameHour < 8 )
set bewegung to 1
set doOnce to 1
elseif ( GameHour >= 20 )
set bewegung to 0
set doOnce to 0
endif
endif

;verhindert Ausführung im inaktiven Zustand
if ( bewegung == 0 )
return
endif

if ( state == 0 )
set timer to timer + GetSecondsPassed
if ( timer >= 5 )
set timer to 0
set state to 1
endif
endif

if ( state == 1 )
set timer to timer + GetSecondsPassed
MoveWorld X 100
if ( timer >= 10 )
set timer to 0
set state to 2
endif
endif

if ( state == 2 )
set timer to timer + GetSecondsPassed
if ( timer >= 5 )
set timer to 0
set state to 3
endif
endif

if ( state == 3 )
set timer to timer + GetSecondsPassed
MoveWorld Y 100
if ( timer >= 10 )
set timer to 0
set state to 4
endif
endif

if ( state == 4 )
set timer to timer + GetSecondsPassed
if ( timer >= 5 )
set timer to 0
set state to 5
endif
endif

if ( state == 5 )
set timer to timer + GetSecondsPassed
MoveWorld X -100
if ( timer >= 10 )
set timer to 0
set state to 6
endif
endif

if ( state == 6 )
set timer to timer + GetSecondsPassed
if ( timer >= 5 )
set timer to 0
set state to 7
endif
endif

if ( state == 7 )
set timer to timer + GetSecondsPassed
MoveWorld Y -100
if ( timer >= 10 )
set timer to 0
set state to 0
endif
endif

end

Dieses Script bewegt nun eine Plattform zwischen 8 und 20 Uhr zwischen 4 in einem Quadrat angeordneten Positionen. An jeder dieser Positionen hält die Plattform 5 Sekunden. Natürlich kannst du dieses Script ohne weiteres an andere Geometrien anpassen.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Hattu
Dann fügst du noch entsprechende Enable/Disable-Befehle ein.

Überall wo ein set bewegung to 1 steht schiebst du noch eine Zeile mit Enable und bei set bewegung to 0 eine mit Disable ein.
 
:Killfetzer-ins-Ohr-flüster-Smilie:
aua- der hat mich ins Auge gebissen
mach mal dein Tippfehler "Gemehour" weg im script oben
- und meinen post hier
 
  • Like
Reaktionen: Killfetzer
Dann fügst du noch entsprechende Enable/Disable-Befehle ein.

Überall wo ein set bewegung to 1 steht schiebst du noch eine Zeile mit Enable und bei set bewegung to 0 eine mit Disable ein.
*IRKS* ... das ist aber 'ne eklige Methode, sowas zu lösen. Wie sieht das denn aus, wenn der Spieler zufällig genau dann da steht und zuguckt? Plopp - und die Plattform ist einfach weg? Ich würde das ganze eventuell mit einem kleinen Scriptabschnitt lösen, der die besagte Plattform in die bzw. aus der Lavakuhle fährt, wenn der Spieler sich zu der Zeit in der Zelle aufhält...
 
*IRKS* ... das ist aber 'ne eklige Methode, sowas zu lösen. Wie sieht das denn aus, wenn der Spieler zufällig genau dann da steht und zuguckt? Plopp - und die Plattform ist einfach weg? Ich würde das ganze eventuell mit einem kleinen Scriptabschnitt lösen, der die besagte Plattform in die bzw. aus der Lavakuhle fährt, wenn der Spieler sich zu der Zeit in der Zelle aufhält...

Ich finde die Methode ja auch nciht so hübsch, deswegen hatte ich ja auch ein Script geschrieben, dass die Plattform einfach anhalten lässt. Aber das muss jeder Modder selbst wissen. ;)