Skriptthread zum Creation Kit

Dieses Thema im Forum "[Skyrim] Creation Kit" wurde erstellt von Eldarie, 2. Oktober 2011.

  1. Thalon Mook

    Thalon Mook Abenteurer


    Thx für die rasche Hilfe. Also das mit dem Script werd ich gleich mal testen. Das sollte passen.

    Wie ich schon geschrieben habe kann man wohl den Text einer Messagebox per Script ändern. Hab das ja auch schon gemacht. Leider hab ich es noch nicht geschafft aus einem Text ein Objekt oder eine Referenz zu machen die ich dann übergeben kann.
    Wenn mir hier jemand helfen könnte wär ich sehr dankbar.

    Bis denn Thalon
     
  2. Die Buttons lassen sich per Papyrus nicht ändern.
    Du könntest verschiedene Messages erzeugen und je nach Ausgangslage das jeweilige im Script per Show anzeigen lassen.
     
  3. Thalon Mook

    Thalon Mook Abenteurer

    Hi nnw,

    hast Du Dir meinen Post richtig durch gelesen ?
    Ich will nicht die Buttons ändern sondern den Text der Messagebox ;-)
    Dies geht auch mit Platzhalter.ForceRefTo(MeineRef). Ich habe es aber nur mit Objekten wie z.B. Game.GetPlayer hinbekommen.

    Was ich möchte ist einen String dafür zu nutzen.
    Zum Verständnis ich möchte per Script auslesen welche Zaubersprüche ein Begleiter hat und diese in der Messagebox anzeigen lassen.
    Normalerweiße kein Thema mit Debug.Messagebox("Zaubersprüche" + AusgeleseneSprueche). Nur möchte ich hier nicht die einfache Box haben sondern eine mit Buttons um nur eine Box zu haben die dann unten die Buttons zeigt.

    Bis denn Thalon
     
  4. Hallo,

    So etwas ähnliches habe ich mal gemacht, die Methode ist aber etwas aufwendig. Du kannst mittels GetName() den Namen des Zaubers auslesen und ihn mit SetName() einer ReferenceAlias zuweisen. Dadurch kann der Name des Zaubers dann mit dem Tag <Alias=AliasName> in der Message angezeigt werden. Auf was sich dieser Alias bezieht, ist im Grunde egal, es kann auch ein MiscObject sein. Das Objekt muss nur ein FULL Record haben, logisch.
    Diese Prozedur muss dann für jeden Zauber wiederholt und für jeden Zauber ein Alias angelegt werden. Wie gesagt, der Aufwand ist schon ziehmlich enorm, aber die einzige Möglichkeit die ich kenne. Wenn es dafür eine bessere Löung gibt, würde mich das auch interessieren.


    MfG
     
    Thalon Mook gefällt das.
  5. Thalon Mook

    Thalon Mook Abenteurer

    @Quad2Core
    Ich bekomme leider einen Compiler Fehler wenn ich Deinen Code verwende.
    Scheinbar kommt er mit den Befehlen "GetCostliestEffectIndex()" und "GetNthEffectMagicEffect()" nicht klar.
    Muss ich da noch eine Klasse laden?

    @Ghaunadaur
    Thx für den Tipp.
    Für jeden Zauber das wäre dann doch etwas zu viel Aufwand ausserdem wenn ein andere Mod nen Zauber hinzufügt wäre meiner inkompatibel. Ich möchte das Ganze so einfach wie möglich halten und auch nicht abhängig von einer Vanilla Version. Naja ich werd mal abwarten ob noch jemand eine andere Idee hat und für den Anfang mit einer DebugBox arbeiten.

    edit: Gibt es ein Limit für die Länge eines Namens. Wenn das nicht zu niedrig ist könnte ich vlt den Namen missbrauchen und alle Sprüche da hinein scripten.

    Bis denn Thalon
     
    Zuletzt bearbeitet: 5. März 2013
  6. Quad2Core

    Quad2Core Abenteurer

    @Thalon Mook
    Ich guck es mir noch mal an.
    Das einzige was mir jetzt spontan einfallen würde wäre, dass die Funktion SKSE Funktionen benutzt und daher wird SKSE auch benötigt, sorry hatte vergessen das zu erwähnen.

    Edit: Wenn du die funktion nur in einem script verwenden willst, kannst du den Global flag auch weglassen.
     
    Zuletzt bearbeitet: 5. März 2013
  7. Thalon Mook

    Thalon Mook Abenteurer

    Das ging ja fix mit der Antwort :D

    Ja das SKSE benötigt wird ist klar. Ich brauch das ja auch für mein Script.
    Hab den Fehler gefunden lag nicht an Deinem Script sondern wie sollte es auch anders sein an dem Typen vorm Keyboard ;D

    Hab die aktuelle Version vom SKSE nochmal runtergeladen und drüber gebügelt. Da hatten wohl ein paar Scripte gefehlt vorher.

    Nun lief es sauber durch.

    Edit: Hab noch ne Idee.
    Kann man das Zauber UI auch für NPC's verwenden. Also es aufrufen mit einem Begleiter als Referenz?

    Thx
    Bis denn Thalon
     
    Zuletzt bearbeitet: 5. März 2013

  8. Interessante Idee. Ich habs mal getestet, das Limit scheint bei 259 Zeichen zu liegen. Je nachdem wieviele Zauber der Begleiter kennt, könnte das ausreichen. In Verbindung mit dem Skript von Quad2Core, könntest du auch einen Alias pro Zauberschule verwenden.
     
  9. Ich hatte dies als Tippfehler interpretiert.
    Bei den ganzen Berufslegasthenikern hier, macht man schon mal diesen Fehler ;)
     
  10. ArgonianDovahkiin42

    ArgonianDovahkiin42 Fremdländer

    Hi,

    ich brauche bitte einen Script für eine Waffe, der bewirkt, dass ein Spell gewirkt wird, sobald man jemanden mit der Waffe schlägt.
    Der Spell soll dabei in keine bestimmte Richtung gewirkt werden.
    Ich hoffe, ich habe mich verständlich ausgedrückt und bekomme bald eine gute Antwort.

    MfG

    AD42
     
  11. Quad2Core

    Quad2Core Abenteurer

    Ich würde das über einen perk managen. Die Perk Entry Point's:

    • Apply Combat Hit Spell
    • Apply Weapon Swing Spell
    sollten das gewünschte Ergebniss erziehlen, mit den conditions kannst du diesen Effekt dann noch genauer specifizieren (z.B. nur erlauben, wenn die speziele waffe angelegt ist). Dann musst du nur noch einen Weg finden diesen Perk dem Spieler hinzuzufügen.
    z.B mit einer Quest, welche Start game enabled "angekreuzt" hat und an folgenden script angebunden ist:
    Code:
    Perk Property MyPerk Auto
    
    Event OnInit()
        if !(Game.GetPlayer().HasPerk(MyPerk))
            Game.GetPlayer().AddPerk(MyPerk)    
        endif    
    EndEvent
    Edit: Wahrscheinlich wäre es besser den Perk über die Waffe dem Actor hinzuzufügen z.B mit diesem Script:
    Code:
    Perk Property MyPerk Auto
    
    Event OnEquipped(Actor akActor)
        if (akActor == Game.GetPlayer())
            if !(Game.Getplayer().HasPerk(MyPerk))
                Game.GetPlayer().AddPerk(MyPerk)
            endif
        endif
    EndEvent
    
    Event Event OnUnequipped(Actor akActor)
        if (akActor == Game.GetPlayer())
            if !(Game.Getplayer().HasPerk(MyPerk))
                Game.GetPlayer().RemovePerk(MyPerk)
            endif
        endif
    EndEvent
    Wenn du willst das der Perk auch noch anderen Actors hinzugefügt werden kann (wie z.B dem Banditen der die Waffe benutzt), musst du einfach nur die
    if (akActor == Game.GetPlayer()) zeilen entfernen (und natürlich auch die dazu gehörigen endif's)
     
    Zuletzt bearbeitet: 6. März 2013
    ArgonianDovahkiin42 gefällt das.
  12. LindayWolf

    LindayWolf Abenteurer

    Hallo Leute,

    Suche grade eine Möglichkeit per script einen magic effect oder notfalls einen spell zu aktivieren also zu casten

    Das dazugehörige Skript liegt auf einem Actor und wird durch die Veränderung im Kampfmodus (Kämpfend/nicht Kämpfend) aktiviert

    Kennt jemand den passenden befehl für den magic effect?


    Grüße LindayWolf
     
  13. Kahmul

    Kahmul Angehöriger

    MagicEffects kannst Du nicht ohne einen zugehörigen Spell auftragen. Du kannst nur den Spell mit cast() auf ein Ziel setzen.
     
    LindayWolf gefällt das.
  14. LindayWolf

    LindayWolf Abenteurer

    Ah danke werd ich auch mal probieren :)

    Hab mir inzwischen so geholfen, dass ich den skript auf den actor übertragen hab
     
  15. Tywele

    Tywele Ehrbarer Bürger

    Ich weiß einfach nicht warum dieses Scriptfragment nicht funktionieren will:

    Code:
    AddInventoryEventFilter(SpellTomeList)
    ShowGiftMenu(true, SpellTomeList, true, false)
    RemoveAllInventoryEventFilters()
    SpellTomeList ist als property eingetragen und ist eine FormList mit allen Zauberbüchern.

    Als Fehlermeldung erhalte ich folgendes:

    Code:
    Starting 1 compile threads for 1 files...
    Compiling "FeyriaTrainSpellScript"...
    C:\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\FeyriaTrainSpellScript.psc(9,0): AddInventoryEventFilter is not a function or does not exist
    C:\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\FeyriaTrainSpellScript.psc(10,0): ShowGiftMenu is not a function or does not exist
    C:\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\FeyriaTrainSpellScript.psc(11,0): RemoveAllInventoryEventFilters is not a function or does not exist
    No output generated for FeyriaTrainSpellScript, compilation failed.
    
    
    Batch compile of 1 files finished. 0 succeeded, 1 failed.
    Failed on FeyriaTrainSpellScript
    Was mache ich falsch?
    Das Scriptfragment möchte ich bei einem Dialogue Topic am Beginn einfügen.
     
  16. Quad2Core

    Quad2Core Abenteurer

    Ich kenne mich zwar nicht so mit Dialoguen aus aber versuch doch einfach mal dies:
    Code:
    akSpeakerRef.AddInventoryEventFilter(SpellTomeList)
    akSpeaker.ShowGiftMenu(true, SpellTomeList, true, false)
    akSpeakerRef.RemoveAllInventoryEventFilters()
     
    Tywele gefällt das.
  17. Tywele

    Tywele Ehrbarer Bürger

    Danke, das war es leider hab ich das was ich damit erreichen wollte wieder verworfen. ^^

    Jetzt stehe ich aber vor dem nächsten Problem: Gibt es ein Event welches aufgerufen wird sobald der Spieler eine Stufe aufgestiegen ist (oder etwas ähnliches)?
     
  18. Drullo321

    Drullo321 Reisender

    Muss es eigentlich geben denn genau da liegt das Problem mit der Quest "Die Wolfskönigin". Zwischen dem ersten und zweiten Teil kommt ein Kurier, wenn man eine Stufe aufsteigt, es kommt aber logischerweise dann keiner wenn man schon Stufe 81 ist ;) Evtl. mal da einen Blick reinwerfen
     
    Tywele gefällt das.
  19. Tywele

    Tywele Ehrbarer Bürger

    Leider konnte ich da nichts finden. In der Quest gibt es nicht eine Condition, die irgendetwas mit der Stufe zu tun hat, und im einzigen Script, das der Quest hinzugefügt wurde, ist auch kein Hinweis auf soetwas zu finden.
     
  20. Quad2Core

    Quad2Core Abenteurer

    Ja es gibt so ein event. Allerdings ist es ein teil der Story Manager 's. Das Prinzip von Story Manager Events ist das du bevor du sowelche Events nutzen kannst deine Quest erst für das gewünschte Event "registrieren" musst.
    Das gesuchte Event währe das Event OnStoryIncreaseLevel(int aiNewLevel).
     
    Tywele gefällt das.
  21. 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