Projekt Geheimnisse der Magie - Teleportzauber - Alpha 1

Dieses Thema im Forum "[MW] Plugins und Mods" wurde erstellt von Darkrai1991, 17. August 2013.

  1. Darkrai1991

    Darkrai1991 Neuankömmling

    Hallo Leute!

    Ich bin gerade dabei für Morrowind eine Art Teleportplugin zu erstellen. Aber nicht einfach nur die Zauber sondern auch quests und neue Sternzeichen usw.

    Momentan steht eine Alpha zur Verfügung.

    Bisherige Features:
    4 Neue Quests deren Start in der Balmora Magiergilde ist. (Mitgliedschaft in der Magiergilde ist nicht vonnöten) Sie werden immer schwerer. Man kann sie also nicht an einem durchmachen.
    3 Neue Sternzeichen (ersteller der Bilder ist Ortega1302 aus dem Worldofplayers-Forum)
    1 Neue Waffe und 1 neuer Ring - aus bestehenden Dateien
    2 Neue Kampfzauber
    2 Neue Fähigkeite
    2 Neue Heilzauber

    Bei Bugs und Problemen bei mir melden.

    Bisher bekannte Bugs:
    Keine bekannt.


    Download

    Ich würde mich um weitere Anregungen sowie Kritik, Lob und Vrebesserungsvorschläge freuen - Ich brauche sie um eventuelle Verbesserungen vornehmen zu können xd

    Wenn neue Alphas verfügbar sind werde ich diesen Post hier immer nur aktualliesiern. Ich werde dann kein neues Thema machen.


    Soweit erst ma zu meiner Alpha. Jetzt zu meinem kleinen Problem. Ich habe zwar schon ne Idee für ne 5. Quest aber für danach fehlen mir im Moment einfach die Ideen. Solltet ihr irgendwelche Ideen haben dann schreibt sie mir hier doch bitte rein. Sollten sie sich gut umsetzten lassen (am besten ohne scripts) werde ich eure Namen in der Letztendlichen Readme nennen (wolt ihr dies nicht so sagt mir dies bitte xd ).

    Ich danke schonmal im Vorraus
     
    Zuletzt bearbeitet: 23. August 2013
  2. Werbung (Nur für Gäste)
  3. Killfetzer

    Killfetzer Super-Moderator Mitarbeiter

    Ich habe das Thema mal in das richtige Forum verschoben.
     
  4. Darkrai1991

    Darkrai1991 Neuankömmling

    oh war ich falsch? ok dann danke ich ma ich dachte ich wäre richtig wegen cs xd
     
  5. Killfetzer

    Killfetzer Super-Moderator Mitarbeiter

    Das Construction Set Forum ist für Fragen zum Construction Set. Mods vorstellen oder veröffentlichenmkannst du im Modifikations-Forum.
     
  6. ReneMiner

    ReneMiner Bürger

    Neugierig: Wie funktionieren denn die Teleport-Zauber die immer abstürzen? Per script von einem Gegenstand aus dem Inventar heraus (bescriptete Schriftrollen/Tränke) ???
     
  7. Darkrai1991

    Darkrai1991 Neuankömmling

    isn normaler schild zauber der mit nem script belegt wird xd
    lad dir das plugin doch mal runter und teste es mal xd
     
  8. ReneMiner

    ReneMiner Bürger

    Also wird der Zauber nicht von einem 3d-Objekt in der Spielwelt gewirkt (Rüstung, "unsichtbarer" per PlaceAt eingefügter Gegenstand/Felsen/Npc o.ä.) sondern über ein globales Script ausgelöst wenn der xy-Zauber auf den Spieler wirkt?
    Ich weiss das es aus dem Inventar heraus nicht möglich ist den Spieler per Script zu teleportieren und MW dabei immer abstürzt. Ausnahme sind nur "angelegte" Gegenstände die ja gleichzeitig in der Welt erscheinen...

    Versuch mal einen Test: anstatt den Teleport-Zauber sofort vom globalen sript auszulösen wenn der Zauber registriert wurde, setze stattdessen per PlaceAtPC ein Objekt in die Nähe des Spielers. Nimm irgendeinen einen simplen Activator, eine Kiste, einen Ring oder eine Tür mit niedrigen grafischen Anforderungen. Das Objekt muss das letztendliche Teleportscript tragen.
    Das Script am Objekt löst sofort den Zauber aus und das Objekt vernichtet sich danach selbst. (Geht nur wenn Du Tribunal hast)
    Etwa so:
    Code:
    begin das_script
    
    DontSaveObject
    
    setscale 0.000001 ; so siehts keiner
    
    if ( GetDisabled == 0 )
      Disable
      Player->Position[Cell]...dein teleport hier
    else
      setDelete 1
    endif
    
    end
    
     
  9. Darkrai1991

    Darkrai1991 Neuankömmling

    ähm es sollen ja zauber sein xd und der bug ist nicht immer nur manchmal xd bei mir is es eigentlich meistens nur das erste mal nach einem neuen spiel wenn ich davor abspeichere nach dem absturz wieder lade und den zauber erneut wirke gehts xd
     
  10. ReneMiner

    ReneMiner Bürger

    Es wäre ja auch weiterhin ein Zauber- aber statt den Teleport-Effekt vom globalen Script zu starten glaube ich wäre es besser einen Gegenstand in die Welt zu setzen der den eigentlichen Teleport dann ausführt. Irgendwas war da mit globalen scripts und Player->Position[Cell] -

    Ja ich hab's- mir ist es wieder eingefallen: Das globale Script wird beim Erreichen des Position[Cell]-Befehls unterbrochen und nicht zu Ende ausgeführt- stattdessen beginnt es wieder von oben....Das gilt aber nicht nur für globale sondern für alle Arten scripts. Entweder musst Du den Teleport ans Ende setzen oder auslagern
     
  11. Darkrai1991

    Darkrai1991 Neuankömmling

    wie würde das script denn aussehen wenn ich das position cel ans ende setze? ich kenne mich damit leider nicht so gut aus xd

    Und: Ich möchte Zauber aus dem grund weil man sich von jedem x-Belibiegen ort an seinen Wunschort teleportieren können soll xd
     
  12. ReneMiner

    ReneMiner Bürger

    Du musst halt darauf achten das nach dem Teleport nichts mehr stattfindet. Beispielsweise setze eine Variable ein, "short TeleJetzt". Direkt vor dem Teleport-Befehl setzt Du sie auf 1 - so weiss das Script das es einen "Leerlauf" machen muss. Etwa so
    Code:
    Begin xx_script
    
    short TeleJetzt
    
    ; ganz oben wird's abgefangen
    
    If ( TeleJetzt ) 
      ; dann kommen wir grade vom Teleport hier oben an:
      If ( CellChanged == 0 )
        ; kein Zellwechsel (mehr) im Gang
        set TeleJetzt to 0
        ; nur auf 0 setzen und "leer" durchlaufen lassen
      EndIf 
      ; P.S.: Return + While sind in globalen Scripts nicht erlaubt
    
    Else
    ; ....alles andere was vorher schon script war...
    
    
      if ( Bedingung )  
      ; irgendwas ist passiert - der Zauber wirkt- jetzt wird teleportiert...
        set TeleJetzt to 1
        Player->Position[Cell]....
      EndIf
    
    EndIf
    
    End
    
     
  13. Darkrai1991

    Darkrai1991 Neuankömmling

    Geht das nicht irgendwie kürzer? xd weil das hier ist momentan das script wie ich es benutze xd

    Code:
    begin teleport_balmora
    
    if ( Player -> GetSpellEffects, "GdM_teleportbalmora" == 1 )
        Player -> PositionCell -754.663, -1006.161, -640.235, 45.0 "Balmora, Magiergilde"
    endif
    end
    
     
  14. ReneMiner

    ReneMiner Bürger

    Dieses Script ist aber nicht das Hauptscript zur Teleportgeschichte? Oder hast Du 20 solcher Scripte gleichzeitig laufen?
    Problem bei dem Script ist das der Zauber noch wirkt. Probier mal in der Art:
    Code:
    
    begin teleport_balmora
    
    if ( Player -> GetSpellEffects, "GdM_teleportbalmora" == 1 ) 
      Player -> RemoveEffect (HIER MUSST DU IN DER HILFE DIE NUMMER DES ZAUBER-EFFEKTS RAUSSUCHEN UND EINSETZEN)
    
      Player -> PositionCell -754.663, -1006.161, -640.235, 45.0 "Balmora, Magiergilde" 
    endif
    end
    
    So wie es momentan aussieht wirst Du für die Dauer des Zaubers immer wieder teleportiert. Auch wenn's nur eine Sekunde ist, bei 50fps + Ladezeit möglicherweise 2-3 mal...
    Ich hab leider kein MW mehr installiert kann's Dir also nicht genau sagen welche Effekt-Nummer - da musst Du wohl den Shield-Effect(?) entfernen.

    Es sei denn dieses Script wird nur kurz gestartet und von aussen auch wieder gestoppt. Dann ist es ganz einfach:
    Code:
    
    begin teleport_balmora
    
    StopScript teleport_balmora
    
    if ( Player -> GetSpellEffects, "GdM_teleportbalmora" == 1 )
         Player -> PositionCell -754.663, -1006.161, -640.235, 45.0 "Balmora, Magiergilde"
    endif
    
    end
    
    Das StopScript bewirkt nur das das Script nicht erneut startet- es läuft aber noch bis zum Ende durch.
     
  15. Darkrai1991

    Darkrai1991 Neuankömmling

    nene alles sind zwar die gleichen scripts aber der zauber den ich benutze ist ein schild zauber der nur 1 sekunde gilt xd also gerade genug zeit das das script greift xd
     
  16. ReneMiner

    ReneMiner Bürger

    Dann hast Du für jeden Ziel-Ort ein eigenes globales Script am Laufen?
     
  17. Darkrai1991

    Darkrai1991 Neuankömmling

    öh wie meinste das jetzt? ich habe momentan für die 5 magiergilden und für seyda neen jeweils diesen zauber erstellt und für jeden dieser zauber wirkt ein eigenes script ich hoffe deine frage ist damit beantwortet xd
     
  18. £exa

    £exa Freund des Hauses

    Ich hab mir das mal angesehen, schaut wie folgt aus:

    Das Plugin arbeitet mit einer Anzahl (z.Zt. sechs) Hintergrundscripts, die durch die "Start Scripts" Funktion automatisch gestartet werden und dann dauerhaft laufen. Per se ist das in Ordnung, aber unnötig - du kannst diese sechs Miniscripts zu einem Hintergrundscript zusammenfassen, das dann als Start Script eingetragen wird - wenn du so arbeiten willst. Es wäre alternativ möglich, dieses Script erst durch einen Questgeber zu starten, in einem Dialogresult... das wäre meine Wahl, da dann sichergestellt ist, dass die Funktion nur arbeitet, wenn der Spieler auch die nötige Quest (absolviert) hat.

    Mein Vorschlag für ein Globales Script sähe so aus:

    Code:
    begin GdM_GlobalTelescan_scr
    ;Beobachtet den Einsatz der GdM Teleport-Zauber
    float CoolDown
    
    IF ( CoolDown > 0 )
    	set Cooldown to ( CoolDown - GetSecondsPassed )
    ELSE
    	IF	( Player->GetSpellEffects, "GdM_teleportaldruhn" == 1 )
    		set CoolDown to ( 2 + 0 * GetSecondsPassed )
    		Player->PositionCell 2592.889, -511.854, -261.050, 270.0 "Ald'ruhn, Magiergilde"
    	ElseIF	( Player->GetSpellEffects, "GdM_teleportbalmora" == 1 )
    		set CoolDown to ( 2 + 0 * GetSecondsPassed )
    		Player->PositionCell -754.663, -1006.161, -640.235, 45.0 "Balmora, Magiergilde"
    	ElseIF	( Player->GetSpellEffects, "GdM_teleportcaldera" == 1 )
    		set CoolDown to ( 2 + 0 * GetSecondsPassed )
    		Player->PositionCell 525.714, 334.805, 490.127, 90.0 "Caldera, Magiergilde"
    	ElseIF	( Player->GetSpellEffects, "GdM_teleportsadrithmora" == 1 )
    		set CoolDown to ( 2 + 0 * GetSecondsPassed )
    		Player->PositionCell -31.410, 212.681, 159.849, 45.0 "Sadrith Mora, Wolfenhalle: Magiergilde"
    	ElseIF	( Player->GetSpellEffects, "GdM_teleportseydaneen" == 1 )
    		set CoolDown to ( 2 + 0 * GetSecondsPassed )
    		Player->Position -10994.985, -71073.180, 338.716, 343.5
    	ElseIF	( Player->GetSpellEffects, "GdM_teleportvivec01" == 1 )
    		set CoolDown to ( 2 + 0 * GetSecondsPassed )
    		Player->PositionCell 3.520, 1391.325, -385.853, 180.0 "Vivec, Magiergilde"
    	EndIF
    EndIF
    
    end GdM_GlobalTelescan_scr
    
    Das Script fängt alle bisher vorhandenen Zielorte ab. Ich habe außerdem einen CoolDown eingebaut, der aktiv wird, sobald eine der sechs Teleportkonditionen greift. Er verhindert das erneute Teleportieren, solange der verursachende Zauber noch aktiv ist. Die Zeitspanne beträgt im Moment zwei Sekunden, aber das kann man beliebig verlängern oder kürzen. Wundere Dich nicht über diesen extrem seltsamen Aufruf mit 2 + 0*GetSecondsPassed. So setze ich den internen Timecounter seit dem letzten Aufruf definitiv auf Null, damit der CoolDown auf jeden Fall korrekt runterzählt und nicht durch irgendwelche willkürlichen Effekte beeinflusst wird.

    Wenn das bisher wiederholte Aufrufen von PositionCell der Grund für die sporadischen Crashes sein sollte, müsste diese Variante das Problem beheben. Ansonsten müssen wir das noch mal analysieren. Eigentlich gibt es dafür aber keinen ersichtlichen Grund, denn so (oder ähnlich) arbeiten Teleportringe oder vergleichbare Dinge und es ist eigentlich unerheblich, ob man vorher schon einmal in der Zielzelle war.
     
    Zuletzt bearbeitet: 20. August 2013
    Darkrai1991 gefällt das.
  19. Darkrai1991

    Darkrai1991 Neuankömmling

    @ReneMiner ähm ich kenne mich da leider nicht so aus aber wie gesagt für jeden einzelnen zauber (teleport balmora; teleport aldruhn; etc) greift an anderes script mit natürlich anderem namen und anderen koordinaten wenne das meinst ja es ist für jeden zielort ein eigenes script xd


    @Eexa wenn ich jetzt also neue orte hinzufüge müsste ich die 2 normalen script zeilen einfach nur als ein weiteres elseif einfügen + der 3 zusätslichen cooldown zeile oder was? sry ich habe da kaum ahnung xd


    @alle wir weichen ein wenig vom thema ab eigentlich sollte dieses thema nicht für script diskussionen dienen xd nix für ungut xd
     
    Zuletzt bearbeitet: 19. August 2013
  20. £exa

    £exa Freund des Hauses

    Mit einem Wort: Ja.

    Vorteilhaft, nicht? ;)
     
  21. ReneMiner

    ReneMiner Bürger

    Lexa- das Problem wird sein das der Interpreter nach dem PositionCell aussteigt und von oben anfängt.
    Der cooldown sollte vor dem Teleport eingesetzt werden
    Darkrai: wir wollen doch nur das es nicht mehr abstürzt :)
     
  22. Werbung (Nur für Gäste)
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden