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 IV: Oblivion » Oblivion Editor Help » Wie!!!! (Bewegte Transportmittel) » 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
Ivy
a.k.a. Darkrael




Dabei seit: Juli 2010
Geschlecht:
Herkunft: Ozrean
Beiträge: 53

Ivy ist offline
  Wie!!!!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

In Adash gibt es ein sich bewegendes Boot.
In Nehrim mehrere sich bewegende Objektkonstruktionen.
Wie zur Hölle schaffe ich es das sich mein Boot bewegt?
Wer kennt das Geheimnis


__________________

29.01.2011, 20:56 Profil von Füge  deiner Freunde-Liste hinzu Email an Ivy senden
Garak
Admin




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

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

Ganz grundsätzlich. wenn man ein plugin kennt, das es kann, kann mans dort nachforschen... mit ein wenig erfahrung kann man (fast) jedes Script verstehen....

Ich nehme mal an, Dein problem ist, dass die setpos-Befehle die Kollision nicht mitnehmen - dazu braucht man nach einem Setpos die Befehlsfolge


disable
enable


direkt hintereinander, im selben frame. danach weiß Havok wieder, wo's lang geht


__________________
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

29.01.2011, 22:01 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
Ivy
a.k.a. Darkrael




Dabei seit: Juli 2010
Geschlecht:
Herkunft: Ozrean
Beiträge: 53

Ivy 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

Ich hab Hier das adasch script seh aber nich durch...
-----------------------------------------------------------
scn zzzKap01Zwischenwelt04TriggerScript

short triggered
float posX01
float posX02
float posX02a
float posX03
short frame
short sayOnce
float timer

begin OnTriggerActor player

if (triggered == 0)
if (zzzKap01D.walkStage == 11)
zzzKap01FaehrmannRef.addItem "Torch02" 1
zzzKap01FaehrmannRef.equipItem "Torch02"
DisablePlayerControls
set triggered to 1
set zzzKap01D.walkStage to 12
endif
endif

end

begin GameMode
if (zzzKap01D.walkStage == 12)
if (zzzKap01DBoat01Ref.getPos x > 2992)

if (zzzKap01DBoat01Ref.getPos x < 5000 && sayOnce == 0)
zzzKap01FaehrmannRef.sayto player "zzzKap01FaehrmannTalk" 1
set timer to 13
set sayOnce to 1
endif

if (frame == 6)
zzzKap01DBoat01Ref.enable
set frame to 0
endif

set posX01 to zzzKap01DBoat01Ref.getPos x
set posX01 to posX01 - 5
zzzKap01DBoat01Ref.setPos x, posX01
zzzKap01DBoat01RealRef.setPos x, posX01
set frame to frame + 1

set posX02 to zzzKap01DPlayerStuhl0Ref.getPos x
set posX02 to posX02 - 5
zzzKap01DPlayerStuhl0Ref.setPos x, posX02

set posX02a to zzzKap01FaehrmannRef.getPos x
set posX02a to posX02a - 5
zzzKap01FaehrmannRef.setPos x, posX02a

set posX03 to zzzKap01DPlayerStuhlRef.getPos x
set posX03 to posX03 - 5
zzzKap01DPlayerStuhlRef.setPos x, posX03

if (frame == 5)
zzzKap01DBoat01Ref.disable
set frame to 6
endif

else
set zzzKap01D.walkStage to 13
zzzKap01DBoat01Ref.enable
endif
endif

if (sayOnce == 1)
if (timer > 0)
set timer to timer - getSecondsPassed
else
zzzKap01FaehrmannRef.sayto player "zzzKap01FaehrmannTalk" 1
set sayOnce to 2
set timer to 14
endif
endif

if (sayOnce == 3)
zzzKap01DPlayerStuhlRef.enable
set sayOnce to 4
endif

if (sayOnce == 2)
if (timer > 0)
set timer to timer - getSecondsPassed
else
EnablePlayerControls
StreamMusic "Data\Music\adash\02theme_bc.mp3"
player.removeItem "zzzKap01HerzUnschuldigen" 1
zzzKap01DPlayerStuhlRef.disable
set sayOnce to 3
endif
endif
end

--------------------------

scn zzzKap01ZwischenweltPlayerStuhlScript

short doOnce

float posX01
float posX02
float posX02a
float posX03
float posX04
short frame
float timer
float timerTalk

begin OnActivate

if (doOnce == 0)
DisablePlayerControls
set timer to 5
Activate
set doOnce to 1
endif

end

begin GameMode
if (doOnce == 1 && timer > 0)
set timer to timer - getSecondsPassed
endif

if (zzzKap01D.fmTalk < 13 && doOnce == 1)
if (timerTalk > 0)
set timerTalk to timerTalk - getSecondsPassed
else
if (zzzKap01D.fmTalk == 2)
set timerTalk to 7
elseif (zzzKap01D.fmTalk == 3)
set timerTalk to 15
elseif (zzzKap01D.fmTalk == 4)
set timerTalk to 15
elseif (zzzKap01D.fmTalk == 5)
set timerTalk to 10
elseif (zzzKap01D.fmTalk == 6)
set timerTalk to 12
elseif (zzzKap01D.fmTalk == 7)
set timerTalk to 14
elseif (zzzKap01D.fmTalk ==
set timerTalk to 16
elseif (zzzKap01D.fmTalk == 9)
set timerTalk to 13
elseif (zzzKap01D.fmTalk == 10)
set timerTalk to 7
elseif (zzzKap01D.fmTalk == 11)
set timerTalk to 14
elseif (zzzKap01D.fmTalk == 12)
set timerTalk to 17
endif
zzzKap01FaehrmannRef.sayto player "zzzKap01FaehrmannTalk" 1
endif
endif

if (doOnce == 1 && timer <= 0)
if (zzzKap01DBoat01Ref.getPos x > -18000)

if (frame == 6)
zzzKap01DBoat01Ref.enable
set frame to 0
endif

set posX01 to zzzKap01DBoat01Ref.getPos x
set posX01 to posX01 - 3
zzzKap01DBoat01Ref.setPos x, posX01
zzzKap01DBoat01RealRef.setPos x, posX01
set frame to frame + 1

set posX02 to zzzKap01DPlayerStuhl0Ref.getPos x
set posX02 to posX02 - 3
zzzKap01DPlayerStuhl0Ref.setPos x, posX02

set posX02a to zzzKap01FaehrmannRef.getPos x
set posX02a to posX02a - 3
zzzKap01FaehrmannRef.setPos x, posX02a

set posX03 to zzzKap01DPlayerStuhlRef.getPos x
set posX03 to posX03 - 3
zzzKap01DPlayerStuhlRef.setPos x, posX03

set posX04 to player.getPos x
set posX04 to posX04 - 3
player.setPos x, posX04

if (frame == 5)
zzzKap01DBoat01Ref.disable
set frame to 6
endif

else
activate player
set doOnce to 2
zzzKap01DBoat01Ref.enable
endif
endif
end

--------------------------------------------------------------
Ich befürchte ihr seht auch ich durch ODA oda....
Brauche hilfe


__________________

09.02.2011, 10:47 Profil von Füge  deiner Freunde-Liste hinzu Email an Ivy senden
Garak
Admin




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

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

langsam! wenn Du wirklich von fast 0 kommst musst Du das ganze erst mal aufsplitten in schmückendes beiwerk und wirklich wichtiges. Zunächst musst Du die einzelnen Funktionsblöcke isolieren - also immer die Bereiche zwischen BEGIN und END. im ersten reinkopierten Script hat Du zunächst einen Block mit

Begin OnTriggerActor player

der läuft genau dann, wenn der Spieler die passende Havokzone berührt (trigger sind eine eigene art von Havokkollisionen) (onTrigger Actor: wenn ein Actor (= NPC oder creature) die Triggerzohne berührt, "player" schränkt es auf eben diesen ein.) Der block legt den Spieler lahm, gibt dem Fährmann ne fackel und bezieht sich auf eine Variable auf einem anderen Objekt.

Begin Gamemode

läuft immer, wenn das spiel läuft und kein Menü angezeigt wird. der block läßt den Fährmann was sagen, bewegt insgesamt 4 referenzen in x-richtung, alle 6 frames zieht er die kollisionsrefrenz nach (disable in frame 5, enable in frame 6). Ich find es bizarr, dass die distanz nicht zeitabhängig berechnet wird - dieses boot fährt auf guten rechnern deutlich schneller Den Timer nutzt es aber, um den spruch vom Fährmann zu koordinieren und am ende die Spielerkontrollen wieder freizugeben. Falle für unerfhrene: GetSecondsPassed liefert nur ein mal pro scriptframe einen Sinvoolen wert - wenn man jetzt das tempo damit skalieren wolte UND den Sprechtimer machen will, muss man GetSecondsPassed 1x aufrufen und das ergebnis zwischenspiechern.


das 2.Script ist ähnlich, zählt aber noch eine Variable auf einem anderen Objekt hoch.


__________________
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

09.02.2011, 21:36 Profil von Füge  deiner Freunde-Liste hinzu Email an Garak senden Homepage von Garak Füge Garak in deine Contact-Liste ein
  « 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