Registrierung Häufig gestellte Fragen Suche Mitgliederliste Portal - Planet Skyrim.de Kalender Moderatoren und Administratoren Startseite
Morrowind&OblivionForum.de - PMM-Projects Network » The Elder Scrolls III: Morrowind » Morrowind Editor Help » Geheimtüren erstellen » Hallo Gast [registrieren|anmelden]
« Vorheriges Thema Nächstes Thema » Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Autor
Beitrag
Hephaistos
Verschollen




Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102

Hephaistos ist offline
  Geheimtüren erstellenAntwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Erstmal Hallo an alle

Ich versuche gerade eine Geheimtür in meine mod einzubauen, die durch einen Gegnstand, z.B. Fackelhalter (ich weiß, ist ein altes Klische), geöffnet wird.
Ich will, daß nach aktivieren des Gegenstandes A der Gegenstand B (z.B. eine Wand) zur Position x,y,z gleitet und nach einer bestimmten Zeit T wieder in die Ausgangsposition zurück kehrt.
In der Inferno-Mod ist das toll gelöst; in der Schatzkammer. Ich hab mir die Scripts auch angesehen verstehe aber nur Bahnhof, was wahrscheinlich daran liegt, daß ich vom scripten keinen blassen Dunst habe. Aber soviel ich verstanden habe fragt das Script auch mehr als einen Activator ab.
Kann mir bitte jemand in einfachen Worten erklären wie so ein Script aussehen muß und welche Befehle ich dafür benötige?


__________________


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

25.02.2003, 11:19 Profil von Füge  deiner Freunde-Liste hinzu Email an Hephaistos senden
kahuna
Bard




Dabei seit: November 2002
Geschlecht:
Herkunft: Schweiz
Beiträge: 36

kahuna ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

also ein kleiner Tipp für das ganze:

du könntest den fackelhalter mit einem script versehen, der mit onActivate die türe enabled. für die sache mit der zeit hab ich keine Lösung parat..... einfach mal abwarten heisst die Devise!

25.02.2003, 12:31 Profil von Füge  deiner Freunde-Liste hinzu Email an kahuna senden Füge kahuna in deine Contact-Liste ein
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9269

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Timer sind kein Problem! GetSecondsPassed liefert immer die Zeit in sekunden seit dem letzten Bildaufbau, eine Zeitspanne misst man also per

float timer

set timer to timer + GetSecondspassed

,wodurch die variable timer die Zeitspanne seit initialisierung des Timers in Sekunden angibt. Achtung: vor der timererhöhung eventuell den menumode testen, da ja keine Zeit vergehen soll, Während der Spieler sein Inventory aufräumt.
An Activators braucht man den Schalter und die Geheimtür, letztere sollte keinen Screennamen erhalten, damit sie sich als Static tarnt. Eine Onactivate-Abfrage auf dem Schalter, auf dem das Script laufen sollte, reagiert auf anklicken durch den Spieler, initialisiert den Timer und setzt die Tür in bewegung (move oder rotate-befehle, bis die gewünschte position oder drehung erreicht ist (vorsicht: keine == Bedingungen bei Floats, die werden nie genau übereinstimmen! >= und <= sind unvermeidlich!) und dreht nach ablauf des Timers zurück - kein Hexenwerk!
Noch ein Hinweis: Unbedingt nur eine Instanz der Schalters und der Tür (und damit auch des Scriptes, da es ja die Tür direkt adressieren muss) verwenden, fÜr weitere Geheimtüren unbedingt Kopien (also andere ID's) erstellen, sonst wird immer nur die erste Instanz vom Script angesprochen!


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

25.02.2003, 15:49 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Hephaistos
Verschollen




Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102

Hephaistos ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Wow. Klingt ja furchtbar kompliziert, aber ich werd's gleich heute Abend ausprobieren.

Vielen Dank


__________________


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

25.02.2003, 16:38 Profil von Füge  deiner Freunde-Liste hinzu Email an Hephaistos senden
Hephaistos
Verschollen




Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102

Hephaistos ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

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.

27.02.2003, 00:04 Profil von Füge  deiner Freunde-Liste hinzu Email an Hephaistos senden
Garak
Admin




Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9269

Garak ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Sorry, konnte nicht schneller antworten... freut mich, dass es jetzt funktioniert... den Fehler in dieser version hier hab ich aber auch gefunden: wenn der Wandstatus 50 lautet brichst Du die weitere Ausführung mit RETURN ab. Desshalb kann der Schalter nicht mehr rauskommen (wird ja weiter unten behandelt) Das mit dem auf und zugehen der Tür liegt dann daran, dass der schalter immernoch als gedrückt gillt, wenn die Tür auf und wieder zu gegangen ist und damit ein neues öffnen auslöst!


__________________
drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen

28.02.2003, 10:39 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Hephaistos
Verschollen




Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102

Hephaistos ist offline
  Antwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Super. Besten Dank.
Ich werd gleich ausprobieren, ob ich diese Version doch noch zum laufen bring'. Die Schalter-Bewegung hab ich bis jetzt nämlich noch nicht eingebaut. Nochmals Danke.


__________________


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

28.02.2003, 11:11 Profil von Füge  deiner Freunde-Liste hinzu Email an Hephaistos senden
  « Vorheriges Thema Nächstes Thema »
Neues Thema erstellen Antwort erstellen
Gehe zu:

Design by: Garak - Powered by: Burning Board 1.1.1 © 2001 WoltLab GbR