Währe halt mal was neues, schönes.
Wie währe es wenn du eine kleine Animation schreibst für ein Fischerbot das rausfährt, dort ein bischen bleibt und dann wiederkommt.
Druckbare Version
Währe halt mal was neues, schönes.
Wie währe es wenn du eine kleine Animation schreibst für ein Fischerbot das rausfährt, dort ein bischen bleibt und dann wiederkommt.
Ich kann doch keine Animation schreiben xD Eine machen^^
Aber es wird so schwer funktionieren, da ich es irgendwie nicht Exportieren kann. Und wie man die Animationen richtig einfügt weiß ich uch net.
Wenn keiner mehr weiter weiß dann Low Post fragen:D
Low Post ist Gut im Scripten aber nicht im Animieren xD
Die Animationkommt ja von dir;), des mit dem einfügen währe ja dann ein Script:p
Wieso bin eigentlich immer ich der Depp, der euch bei Problemen aus der Patsche helfen soll? http://www.multimediaxis.de/images/s.../1/gruebel.gif
Ich würde das mit der SetPos-Lösung probieren. Wenn die Schritte klein genug sind sieht das auch nicht abgehackt aus. Wenn es lange Strecken wären könnte es da Probleme mit der maximalen Scriptlänge geben, aber da gibt es ja zum Glück Mittel und Wege (Activate 1/SetStage) das zu umgehen.
Ein anderes Problem ist, dass bei SetPos meines Wissens nach die Kollision des Objekts nicht mitverschoben wird. Dazu ist ein Disable gefolgt von einem Enable (frühestens im nächsten Frame) nötig.
Ab einer gewissen Framerate (keine Ahnung was, ich würde mal auf etwas in der Gegend zwischen 15 und 25 tippen) fällt das aber auch nicht mehr auf. :)
Wichtig sollte hierbei aber sein, dass es bei mehr Frames sichtbar (=enabled) ist, als unsichtbar (=disabled). Ob das wirklich eine Rolle spielt und wie sich das sonst auswirkt kann ich zwar nicht mit Sicherheit sagen (sollte man evtl. testen), aber wenn man zu faul zum testen ist (^.^) sollte man lieber auf Nummer sicher gehen. :p
Ansonsten würde ich mal diese Mod hier begutachten:
Ruderboote
Da müsste man das ganze nur noch automatisieren und unabhängig von Spielerentscheidungen machen.
Script:
Wie LP bereits schreibt. Es sieht nicht abgehakt aus. Das von Dir aufgeführte Boot in Adash wird genau auf diese Art und Weise bewegt. ;) Und auch in meiner Mod gibt es bereits mehrere dieser Scripte.
Allerdings birgt diese Methode eben das Problem der Collision. Diese wird nicht mitbewegt und somit ist das Boot dann Collisionslos und der Spieler könnte auf dem Wasser einfach durch das Schiff oder Boot hindurch laufen. Die grösseren Schiffe bestehen zudem aus mehren Teilen und es wäre zwar möglich, doch ziemlich aufwendig jedes Teil per Script zu verschieben. Wegen der Scriptlängenbegrenzung (1000 Zeilen) müsste man dann wohl das ganze auf mehrere Scripte aufteilen und dies ist nicht mal so schnell gemacht.
Machbar......ohne Frage. Doch sehr aufwendig da Du tricksen musst. Die Frage mit der Collision wäre dann noch nicht geklärt, da die Boote ja jederzeit fahren sollen und es so nicht reicht am Endpunkt ein Boot mit Collision zu enablen und das fahrende Boot welches ohne Collision ankommt zu disablen. Genau wegen diesem Collisionsproblem wird diese Technik selten eingesetzt, oder eben nur auf ganz genau festgelegten Strecken, welche nur einmal genutzt werden und bei denen der Spieler keine Möglichkeit hat herumzulaufen und festzustellen das da eine Collision verloren ging.
Animationen: Noch schwieriger. Erstes gibt es nur wenig Leute die eine solche Animation wie sie Dir vorschwebt erstellen können. Und die meistens davon sind mit eigenen Projekten beschäftigt. Zweitens:
Wenn Du nun als einfachste Lösung ein Fischerboot nimmst und dort die Animation drauf legst, dann hast Du ein leeres Fischerboot welches seine Runden dreht. Doch was machst Du mit dem Fischer und dem Hocker (eventuell) auf dem er sitzen soll???
Wenn Du einen Hocker in dem Boot haben willst auf dem ein NPC per Package sitzen kann, dann musst Du ein Furniture wählen. Auf ein Furniture kannst Du allerdings keine Animation legen, denn für Animationen brauchst Du einen Aktivator. Ganz zu schweigen von dem Fischer.................Wenn Du also nicht nur leere Boote rumfahren lassen willst, dann musst Du zwangsläufig mit Scripts arbeiten. Es gibt im Moment keine andere Lösung.
Über dieses Problem habe ich schon ganze Nächte mit einem Animationsexperten gesessen und rumprobiert. Wir haben auch keine Lösung gefunden, außer dem Schritt zurück zu den Scripten.
Edit: Die von LP verlinkten Ruderboote arbeiten übrigens auch mit Script.
Ja, ich meinte das es abgehackt aussieht wenn er es jetzt auf die schnelle machen will, wenn man jetz schritte von 0,5 nimmt... wird das Script allein schon ewig lang, vorallem bei großen strecken...
Ich hab ja ein Script reingeschrieben wie es funktionieren sollte.
Edit @ Low Post
Wieso immer du^^
Ich hab doch gesagt das du keine Animationen machen kannst und ich hab gesagt des es per Script bewegt werden kann.^^
Also zwecks Scriptlänge:
Ich würde da einfach für alle möglichen Bewegungen (vorwärst/rückwärts/links drehen/etc.) Eigene Aktivatoren machen, die das für eine/mehrere variable Referenz ausführen. Im Hauptscript werden erst die zu bewegenden Referenzen bestimmt und dann mit z.B. einem Counter immer die jeweilige Aktion aufgerufen.
Wichtig dabei ist, dass man nicht mehr als 5/6 Aktionen im gleichen Frame aufruft, da sonst der Activate-Befehl einfach nicht ausgeführt wird.
Hier mal ein Beispielscript für Vorwärtsfahren:
Ich hab OBSE-Befehle verwendet, da mir die Ersatzreihen für Sinus/Cosinus nicht geläufig sind. Die lassen sich aber im CS-Wiki finden.Code:scn ActivateorShipMoveForwardScript
long Index
float PosX
float PosY
float TrigAngleZ
ref rMove
ref Ref1
ref Ref2
;etc.
Begin OnActivate
SaveIP
set rMove to Player
if ( Index == 0 )
set rMove to Ref1
elseif ( Index == 1 )
set rMove to Ref2
;etc.
else
ResetAllVariables
Return
endif
rMove.Disable ;Kollision muss mit bewegt werden. Erforder ein Enable im Hauptscript!
if ( ( rMove.GetAngle z ) < 90 )
set TrigAngleZ to ( 90 - ( rMove.GetAngle z ) )
else
set TrigAngleZ to ( 450 - ( rMove.GetAngle z ) )
endif
set PosX to ( ( rMove.GetPos x ) + ( cos TrigAngleZ ) )
set PosY to ( ( rMove.GetPos y ) + ( sin TrigAngleZ ) )
;Um die Geschwindigkeit zu erhöhen muss man einen Faktor vor den Sinus/Cosinus setzen.
rMove.SetPos x, PosX
rMove.SetPos y, PosY
set Index to ( Index + 1 )
RestoreIP
End
Und der Loop lässt sich auch ohne größere Probleme aufspalten (dann braucht man auch rMove & Index nicht mehr); gleiches gilt natürlich für das ResetAllVariables.
Und hier noch ein Beispiel für ein Hauptscript mit einer Ref, die sich 15 Einheiten nach vorne bewegt:
Das hier benötigt keine OBSE-Befehle, wenn man die also aus den Bewegungsscripten "eliminiert" (was durchaus möglich ist) wird das auch nicht benötigt.Code:scn BoatMainScript
int bDisabled ;sicherstellen, dass das Boot 2 Frames sichtbar und nur einen unsichtbar ist
short Stage
long Count
Begin Gamemode
if ( bDisabled )
if ( BoatRef.GetDisalbed )
BoatRef.Enable
else
set bDisabled to 0
endif
Return
endif
set bDisabled to 1
if ( Stage == 0 )
if ( Count < 15 )
set ActivateorShipMoveForwardRef.Ref1 to BoatRef
ActivateorShipMoveForwardRef.Activate Player, 1
Return
endif
elseif ( Stage == 1 )
;hier kommt der Code fürs zurückfahren hin.
;etc.
else
set Stage to 0
endif
set Stage to ( Stage + 1 )
End
Ist das jetzt die Animierte Technik oder die "Ruckelnde"?
Die Ruckelnde. ;)
o_O
Ist doch ganz einfach.
Modder-Arbeitsamt:
Ich muss noch warten was GlasMond dazu sagt. Da er momentan aber nicht so viel Zeit hat dauert das leider etwas.
Bis dahin bleibt das vorläufig ungestickt (^.^) offen.
Meint ihr es wird noch betrachtet wenn ihrs als Sticky macht? :D
Ich les das immer wieder und weiß nie was das sein soll!
Sticky?
Das sind die Themen oben im Forum mit dem Wichtig: davor. ;)
Kommt vermutlich vom englischen to stick, auf deutsch anheften.
Und ob das dann noch gesehen wird:
Vermutlich eher selten, aber immer noch öfters, als wenn das irgendwo auf Seite 500 im Forum rumschwirrt. Stickys werden nämlich auch von der SuFu berücksichtigt. ;)
Jetzt aber genug OT hier, zurück zum Thema.
Die "Anmimation" von den Booten ist recht gut. Ich weiß nur nicht, wie ich sie genau umschreiben soll, denn ich brauche ja dafür sozusagen eine Tagespan für das Schiff.
habe gerade mal den thread durchgesehen: wenn man das schiff als tier betrachtete und somit eine flüssige animation hinbekäme, ginge es vllt dann nicht unter, wenn man dem tier ein "überwasserlaufen"-amulett ins inventar packt, oder? das wäre doch möglich?
Meinst du das auch Tiere magische Eigenschaften haben können? (Im sinne von Unterwasserlaufen wies ja in Oblivion heißt)
Ich bin mir da nicht so sicher :o
Klar geht das. Wieso sollte es nicht gehen? ^^