Allgemein
News
News-Archiv
Partner
Netzwerk
Banner
Header
Media
Downloads
Impressum

The Elder Scrolls
Arena
Daggerfall
Spin-offs
Romane
Jubiläum
Reviews
Welt von TES
Lore-Bibliothek
Namens-
generator

FRPGs

Elder Scrolls Online
Allgemein
Fraktionen
Charakter
Kargstein
Technik
Tamriel-
Manuskript

Media

Skyrim
Allgemein
Lösungen
Tipps & Tricks
Steam-Kniffe
Review
Media
Plugins & Mods

Oblivion
Allgemein
Lösungen
Tipps & Tricks
Technik
Charakter
Media
Plugins & Mods
Kompendium

Morrowind
Allgemein
Lösungen
Tipps & Tricks
Media
Plugins & Mods

Foren
The Elder Scrolls Online
Hilfe & Diskussion

Skyrim
Hilfe & Diskussion
Plugins & Mods

Ältere TES-Spiele
TES-Diskussion
Oblivion-Plugins
Morrowind-Plugins

Community
Taverne zum Shalk
Adventures of Vvardenfell
Tales of Tamriel
Ergebnis 1 bis 20 von 42

Thema: fahrende Schiffe

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    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:
    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
    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.
    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:
    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
    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.

  2. #2
    Ist das jetzt die Animierte Technik oder die "Ruckelnde"?

  3. #3
    Die Ruckelnde.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •