Construction Set [Skriptfrage] Fels nach Uhrzeit öffnen

Yves

Bürger
Moin🙂

Ich bruache ein Skripr das um z.b:8 Uhr eine Felsmauer runtergehen lässt, und dann um 9 Uhr sich wieder schliesst.
Aber hinter der Steinmauer soll eine tür sein und wenn man die dann passiert und dann von der anderen seite raus will an den Zeiten wo die Fels mauer Oben(geschlossen) ist nicht raus kann.

Danke im Vorraus🙂
 
DieLösung ist etwas unschön und lässt sich noch (viel) weiter ausfeilen.

Code:
scn DeinTürScript

ref TürRef1 ; initially disabled, durch diese Tür kannst du gehen
ref TürRef2 ; durch diese Tür kannst du nicht gehen
ref FelsRef 
float Zeit

begin GameMode ;nicht OnLoad sonst funktionierts nicht in Echtzeit
     set Zeit to GetCurrentTime
     if Zeit >=8.00 && <=9.00
          Tür1Ref.enable
          Tür2Ref.disable
          FelsRaf.disable
     else 
          Tür1Ref.disable
          Tür2Ref.enable
          FelsRef.enable
     endif
end

Müsste eigentlich gehen, wenn ich dich richtig verstanden habe, ich hab allerdings grad kein CS hier.
Du gibst der Tür, durch die du gehen willst die Tür1Ref und der durch die du nicht gehen willst die Tü2Ref, dem Fels die FelsRef.
Es ist halt etwas unschön, wenn der Fels vor deiner Nase verschwindet.
Da lässt sich dann noch etwas dran feilen, ich hab derzeit ein ähniches (optisches)Problem und krieg keine Effekte eigebunden, aber da findet sich noch eine Lösung.

Achja, eig. gehören solche Fragen in den Skript-Thread
 
Zuletzt bearbeitet:
ja aba bruach ich da keine zwei Skripts eins für die Uhrzeit und ein skript für die Tür das man die dann einfach um die Uhrzeit wo der steit oben ist nich passieren kann, und kann man das wenn man die Tür passierne will aber der strein oben ist eine nachricht kommt.

Und sorry wenn ich nochmal ein Problem hab das was mit skripten zutun hat poste ich darein
 
Ups, hab grad ausversehn auf den Danke-Knopf gedrückt,

naja, jetzt zum Skript, nein, du brauchst nur das Skript, das legst du auf einen Activator in der Nähe, kannst dir einfach einen erstellen unddas Skript drauflegen, ich erklärs mal, die erklärung steht hinter dem ";"

Code:
scn DeinTürScript ; der Name des Skripts

ref TürRef1 ; Das ist die Tür, durch die du gehen kannst, normal ist sie weg und wird durch die andere ersetzt, deshalb muss sie auf initally disabled stehen, oder sollte, ich glaub im Skript ist sie eh fast immer disabled, wenn sie nicht gebraucht wird
ref TürRef2 ; das ist die andere Tür, für die brauchst du einfach keinen Telepor-Marker zu setzen, dann kommst du beim aktiviweren auch nirgendwo hin.
ref FelsRef ; das ist der Fels der verschwinden soll
float Zeit ; die Variable Zeit nmmt später den Wert der Zeit im Spiel an

begin GameMode ;nicht OnLoad sonst funktionierts nicht in Echtzeit
     set Zeit to GetCurrentTime ; hier wird der Variable Zeit der Wert der Zeit im Spiel zugewiesen, da wir im GameMode-Block sind wird sie in jedem Frame im Spiel geupdated 
     if Zeit >=8.00 && <=9.00 ; hier wird abgefragt ob die Zeit zwischen 8 und 9 Uhr ist...
          Tür1Ref.enable ;falls das so ist soll die Tür durch die du gehen kannst erscheinen... 
          Tür2Ref.disable ;die andere...
          FelsRaf.disable ; ...und der Fels verschwinden
     else 
          Tür1Ref.disable ;falls es nicht soviel Uhr ist, soll die Tür durch die du gehen kannst verschwinden...
          Tür2Ref.enable ;... die ander Tür...
          FelsRef.enable ;... und der Fels erscheinen
     endif ;die If-Abfrage und die Folgen werden vom Rest abgetrennt
end ;Block und Skript zuende

Ich hoffe das war einigermaßen verständlich, jetzt brauchst du halt noch einen Activator, auf den du das Skript legst und in die Zelle plazierst.
 
Meinst du mit de rFelsmauer zufällig den Felsblock, den man hin un dwieder in Höhlen findet, der sich mit nem Schalter o.Ä. nach unten fahren lässt, um so den Durchgang freizumachen? Falls ja würde ich das ehrlich gesagt etwas nders machen wie dPüm (sieht schöner aus 😉 )
 
So ließe sich das auch machen, bin mir nicht sicher, aber ich glaub man müsste dann einfach anstatt FelsRef.enable/disable einen OnLoad-Block machen und in den dann noch einmal eine Abfrage der Uhrzeit und dann mit FelsRef.activate, oder den Fels mit einer Scnur verbinden und SchnurRef.Activate, bin jetzt nicht sicher, achja, was heißt dPüm?
 
Das lässt sich auch machen, undzwar indem du eine TriggerBox benutzt, die abhängig von der Uhrzeit erscheint, die ist ja unichtbar und dann könntest du einfach FelsRef durh TriggerRef (eben die TriggerBox) ersetzen und die triggerBox mit dem Fels verlinken, wenn du dann eine TriggerBox nimmst, die sich Reseted sollte sich der Fels hinter dir auch wieder schließen.
 
Hää?:roll:
Kann man nicht einfahc ein skript machen das um z.b:8 Uhr die anmation Forward(geöffnet) gemacht wird und dann z.b: um 8:30 die animation backward(geschlossen) gemacht wird.
 
Wenn du die TriggerBox betrittst und diese mit dem Fels verlinked ist sagt die TriggerBox dem Fels er soll diese Animation ausführen machen bzw. sich öffnen.
Die TriggerBox checked ja, ob der Spieler sich in ihr befindet, falls ja sendet sie dass an den Stein und der öffnet sich dann. Schwer zu erklären, aber im Endeffekt sehr simpel.
 
denkt doch nicht so kompliziert, macht einfach 2 skripte.
eins auf die tür
eins auf die mauer

beide mit zeitabfrage
mauer mit playani bzw en/disable...
 
Würde es genauso amchen wie Cadhar, nur dass ich bei der Tür eher lock 100 bzw. unlock verwenden würde, sonst hat man auf einmal ein Loch ins Nichts oder so^^
 
scn openthestoneSCRIPT

short doonce
short time

begin onactivate

set time to gamehour

if ( getactionref player == 0 )

if ( time > 8 ) && ( time < 9 )
if ( doonce == 0 )
set doonce to 1
playgroup forward 1
endif
endif

if ( time > 9 ) && (time < 8 )
if ( doonce == 1 )
set doonce to 0
playgroup backward 1
endif
endif

endif

----

scn openthedoorSCRIPT

short doonce
short time

begin onactivate

set time to gamehour

if ( time > 8 ) && ( time < 9 )
if ( doonce == 0 )
set doonce to 1
unlock
endif
endif

if ( time < 8 ) && ( time > 9 )
if ( doonce == 1 )
set doonce to 0
lock 100
activate rockREF
endif
endif

activate

end

---

rockREF-> Diese Referenz muss der zu schließende/öffnende Stein sein.


Funktionsweise: Der obere Skript muss auf den Stein, der untere auf die Tür gelegt werden.
Vor den Stein muss eine TriggerZone, die auf den Spieler reagiert gelegt werden, damit diese
den Stein aktiviert, wenn der Spieler sich nähert und somit die Uhrzeitsabfrage aktiviert.
Es wäre sehr praktisch, wenn die Tür mit dem Stein in einer Höhle etc gelegen wäre, denn dann
kann man die TriggerZone an einer Stelle platzieren, die der Spieler auf jeden Fall passieren muss.
Dann würde der Stein in die passende Position gesetzt werden, sobald der Spieler z.B. die Höhle betritt
und in der günstig platzierten TriggerZone platziert wird. (vom Teleport-Marker; durch die Höhlentür)
So würde der Spieler nichts von dem Öffnungsvorgang mitkrieger, bzw. er würde nicht um 8:30 ankommen und
die Tür würde sich dann erst öffnen.

Ich bin grad nicht im CS, bzw. schon aber ich brauche in Skeyavil grad keine solche Tür, aber wenn ich nachher mal Zeit
habe, versuche ich die Abfrage in einen "begin GameMode"-Block zu setzen, dann hätte man den schönen
Holomayan-Effekt. (Siehe Morrowind; Kloster Holomayan)

Ich nehme an, du arbeitest mit dem per playgroup forward öffnenden Höhlenstein des Sets "c", oder?

(Wahrscheinlich wird er so noch nicht funktionieren, schau mal ob du ihn selbst ausgebessert kriegst, sonst setze ich mich heute nachmittag nochmal dran)

Gruß
Oblivionator


P.S: Wenn irgendetwas an den Skripts unklar sein sollte, pn me, wenn ich eine Möglichkeit gefunden habe einen Gamemode_Block zu verwenden, werde ich gerne auch noch eine Version mit ;erklärungen schrieben...