Autor |
|
Ivy
a.k.a. Darkrael
![](images/star.gif) ![](images/star.gif) ![](images/star.gif) ![](images/star.gif)
![](images/avatars/avatar-3308.gif)
Dabei seit: Juli 2010
Geschlecht: ![](images/male.gif)
Herkunft: Ozrean
Beiträge: 53
![Ivy ist offline](images/offline.gif) |
|
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 ![](images/smilies/redface.gif)
__________________
|
|
29.01.2011, 20:56 |
|
Garak
Admin
![](images/star3.gif) ![](images/star3.gif) ![](images/star3.gif) ![](images/star3.gif) ![](images/star3.gif) ![](images/star3.gif)
![](images/avatars/avatar-4764.png)
Dabei seit: Juli 2002
Geschlecht: ![](images/male.gif)
Herkunft: Cardassia Prime
Beiträge: 9257
![Garak ist offline](images/offline.gif) |
|
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 ![](images/smilies/rolleyes.gif)
|
|
29.01.2011, 22:01 |
|
Ivy
a.k.a. Darkrael
![](images/star.gif) ![](images/star.gif) ![](images/star.gif) ![](images/star.gif)
![](images/avatars/avatar-3308.gif)
Dabei seit: Juli 2010
Geschlecht: ![](images/male.gif)
Herkunft: Ozrean
Beiträge: 53
![Ivy ist offline](images/offline.gif) |
|
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 == ![](images/smilies/Dieb.gif)
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.... ![](images/smilies/redface.gif)
Brauche hilfe
__________________
|
|
09.02.2011, 10:47 |
|
Garak
Admin
![](images/star3.gif) ![](images/star3.gif) ![](images/star3.gif) ![](images/star3.gif) ![](images/star3.gif) ![](images/star3.gif)
![](images/avatars/avatar-4764.png)
Dabei seit: Juli 2002
Geschlecht: ![](images/male.gif)
Herkunft: Cardassia Prime
Beiträge: 9257
![Garak ist offline](images/offline.gif) |
|
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 ![](images/smilies/rolleyes.gif)
|
|
09.02.2011, 21:36 |
|
|