Autor |
|
nexiss
Healer
Dabei seit: Juli 2004
Geschlecht: keine Angabe
Herkunft:
Beiträge: 52
|
|
|
14.12.2004, 13:26 |
|
F.I.M.
Acid Monk
Dabei seit: März 2004
Geschlecht:
Herkunft: 127.0.0.1
Beiträge: 2058
|
|
kannst die ja mal das hier ansschauen
__________________
|
|
14.12.2004, 15:05 |
|
Garak
Admin
Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9256
|
|
OK, gehen wir systematisch vor - das Originalspiel ist äuserst geizig mit türscripten, aber eines gibt es doch: das von der Tür zur Cavern of the incarnate (Hl. des Fleischwasauchimmer):
code:
Begin CavernIncarnateDoor
float timer
short state
short talking
;run the timer, can only talk after 6 seconds
if ( talking == 1 )
set timer to timer + GetSecondsPassed
if ( timer > 6 )
set talking to 0
set timer to 0
endif
endif
if ( OnActivate == 1 )
if ( GameHour > 6 )
if ( GameHour < 8 ) ;hour is 6 to 8 AM
Say "vomiscA2-6_cave_open.mp3" , "In the dawn hour under Azura's Star, the door is opened."
set state to 10
endif
endif
if ( GameHour > 18 )
if ( GameHour < 20 ) ; hour is 6 to 8 PM
Say "vomiscA2-6_cave_open.mp3" , "In the dawn hour under Azura's Star, the door is opened."
set state to 10
endif
endif
;gets here if the hour is wrong
if ( state != 10 )
if ( talking = 0 )
Say "vomiscA2-6_cave_closed.mp3", "The door is locked, and will not open. The star is the key."
set talking to 1
endif
endif
endif
if ( state == 10 )
;need to make them wait if the door needs to open so they hear the voice
Disableplayercontrols
set timer to timer + getsecondspassed
if ( timer > 5 )
set state to 0
set timer to 0
enableplayercontrols
Activate
endif
endif
End
unglücklicher weise ist das eines der wenigen überladenen originale - Du erlaubst, dass ich die Sprachausgabeteile entferne, nur zur Übersicht, und ein wenig farbe ins spiel bringe?
code:
Begin CavernIncarnateDoor
short state
if ( OnActivate == 1 )
if ( GameHour > 6 )
if ( GameHour < 8 ) ;hour is 6 to 8 AM
set state to 10
endif
endif
if ( GameHour > 18 )
if ( GameHour < 20 ) ; hour is 6 to 8 PM
set state to 10
endif
endif
endif
if ( state == 10 )
set state to 0
Activate
endif
End
Also, die interessanten Stellen sind die folgenden:
In grün, eine Abfrage auf Onactivate == 1. OnActivate nimmt immer für genau einen scriptdurchlauf den wert 1 an, wenn der entsprechende Gegenstand aktiviert wird, hier hat also jemand versucht, die Tür zu öffnen.
Bei gelb sind einige Bedingungen für eine änderung der Variable "state" innerhalb dieser klammerörmigen If-Anwesungen. Hier sind das abfragen auf die uhrzeit (die cavern öffnet sich ja nur zwischen 6 und 8 jeweils morgens und abends), die musst Du durch Deine Bedingungen ersetzen.
Wenn jedenfalls diese Bedingungen erfüllt sind, wird eine Statusvariable auf 10 gesetzt, die im weiteren verlauf noch mal abgefragt wird. Sollte sie auf 10 gesetzt worden sein, wird unten der rote befehl Activate ausgeführt - dieser bewirkt, dass die vorher mit OnActivate abgefangene Öffnung der tür nun doch ausgeführt wir; die tür geht auf (falls sie nicht abgeschlossen ist).
im Prinzip musst Du jetz nur noch die Bedingungen durch Deine Bedingungen ersetzen - ist zwar dann noch nicht sonderlich elegant, aber es funktioniert.
die Bedingungen.. nun, die stufe ermittelst Du mit
Player -> getlevel
und den nevrevarine-Status ermittelt man - wie etwas recherche im Editor zu tage fördert über den Journaleintrag B8_MeetVivec 50, die passende Abfrage dazu lautet
getjournalindex B8_MeetVivec >= 50
damit solltest du das script für deine Tür zusammenbasteln können. Wenn das klappt, reden wir darüber, wie man dem spieler sagt, warum er nicht rein darf...
__________________ 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
|
|
14.12.2004, 15:06 |
|
ReneMiner
Crusader
Dabei seit: Januar 2004
Geschlecht: keine Angabe
Herkunft:
Beiträge: 260
|
|
Das original-Game ist nicht ohne Grund so "geizig" mit Scripts an Türen. Denn wenn eine Tür auf OnActivate reagiert
und dabei Activate macht wird Cellchanged == 1 abgefangen!!!
Alle Scripts entweder die sich an Objekten in der Zelle die man verlässt und in der Zelle die man betritt befinden oder auch global laufende Scripte welche auf ein Cellchanged == 1 irgendwas ausführen sollen werden das nicht tun!
Im günstigsten Fall hat das nur ein paar Sklaven zur Folge die sich nach dem befreien nicht disablen.
Ich hoffe Ihr wisst alle was ich meine und denkt daran wenn Ihr moddelt .
OnActivate + Activate an Türen == Null Zellwechsel!
__________________ Mess them Meshes up
|
|
28.12.2004, 06:42 |
|
Hephaistos
Verschollen
Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102
|
|
Zitat: Original von ReneMiner
Das original-Game ist nicht ohne Grund so "geizig" mit Scripts an Türen. Denn wenn eine Tür auf OnActivate reagiert
und dabei Activate macht wird Cellchanged == 1 abgefangen!!!
Alle Scripts entweder die sich an Objekten in der Zelle die man verlässt und in der Zelle die man betritt befinden oder auch global laufende Scripte welche auf ein Cellchanged == 1 irgendwas ausführen sollen werden das nicht tun!
Im günstigsten Fall hat das nur ein paar Sklaven zur Folge die sich nach dem befreien nicht disablen.
Ich hoffe Ihr wisst alle was ich meine und denkt daran wenn Ihr moddelt .
OnActivate + Activate an Türen == Null Zellwechsel!
Ganz sicher?
Ich verwende relativ oft Scripte mit Chellchange-Abfragen und auch Scripte auf Türen, aber ich hatte noch nie Probleme damit.
Aber das Problem könnte man ja leicht umgehen indem man die entsprechende Türe als Static definiert und den PC manuell "teleportiert".
__________________
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.12.2004, 07:56 |
|
Garak
Admin
Dabei seit: Juli 2002
Geschlecht:
Herkunft: Cardassia Prime
Beiträge: 9256
|
|
doch, ich kann das bestätigen - sollte aber bei einem "Scriptnewbie " zu keinen wirklichen Problemen führen. Trotzdem danke für die erinnerung, Rene.
__________________ 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.12.2004, 12:53 |
|
ReneMiner
Crusader
Dabei seit: Januar 2004
Geschlecht: keine Angabe
Herkunft:
Beiträge: 260
|
|
Zitat: Aber das Problem könnte man ja leicht umgehen indem man die entsprechende Türe als Static definiert und den PC manuell "teleportiert".
Und was machst Du mit den Begleitern des Spielers?
__________________ Mess them Meshes up
|
|
29.12.2004, 04:47 |
|
Hephaistos
Verschollen
Dabei seit: Februar 2003
Geschlecht:
Herkunft: Wien
Beiträge: 2102
|
|
Zitat: Original von ReneMiner
Zitat: Aber das Problem könnte man ja leicht umgehen indem man die entsprechende Türe als Static definiert und den PC manuell "teleportiert".
Und was machst Du mit den Begleitern des Spielers?
Welche Begleiter?
Im Normalfall ist es eher die Ausnahme das der PC nicht alleine unterwegs ist (sieht man von diversen Söldner-Mods ab). Und eine Türe die Level 40 benötigt, damit man mit dem, was dahinter lauert fertig wird, dürfte dem 08/15-NPC schwer überfordern.
Aber bitte, wenn es dich so stört, dann führe die Tür als Schleuse aus: Auf der äußeren liegt das Script, die innere führt den Cellenwechsel durch.
__________________
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
|
|
29.12.2004, 08:12 |
|
ReneMiner
Crusader
Dabei seit: Januar 2004
Geschlecht: keine Angabe
Herkunft:
Beiträge: 260
|
|
|
30.12.2004, 08:29 |
|
|