[Gelöst] Modding Tutorial? (Cloak Spell)

Dieses Thema im Forum "[Skyrim] Modprobleme (SSE)" wurde erstellt von HughJanus, 1. November 2022.

  1. HughJanus

    HughJanus Neuankömmling

    Hallo zusammen,

    das Skyrim nun auf GOG verfügbar ist, würde ich auch gerne in die Modding-Szene einsteigen. Ein laufendes CK habe ich bereits - und auch schon nach diesem Tutorial versucht, eine Mod zu erstellen (https://www.creationkit.com/index.php?title=Dynamically_Attaching_Scripts). Leider passiert ingame gar nichts (eigentlich sollte links oben am Schirm der zugefügte Schaden im Kampf angezeigt werden).
    Weiß jemand, ob dieses Tutorial noch aktuell ist bzw. warum es bei mir mit diesem Tutorial nicht funktioniert? (esp nicht anbei, da ich die hier wohl nicht hochladen kann)

    Beste Grüße,
    HJ
     
  2. Werbung (Nur für Gäste)
  3. HughJanus

    HughJanus Neuankömmling

    Ich habe jetzt etwas recherchiert und anschließend das Papyrus-Log geprüft.
    Dort steht Folgendes:
    Unable to bind script MonitorScript to Active effect %stets anderer Wert% on %stets anderer Wert% because their base types do not match

    Ich habe alles genau nach Anleitung gemacht. Der Error tritt nicht mehr auf, wenn ich den "MagicEffect", der das Skript beinhaltet auf Typ "Spell" ändere (aktuell vom Typ "Script"). Doch dann passiert ingame auch nichts.
     
  4. PixelMurder

    PixelMurder Angehöriger

    Im Prinzip kann man Scripte auf jeden MagicEffect setzen, das beschränkt sich nicht nur auf Archetype Script. Man wählt diesen Typ, wenn es etwa ein für den Spieler unsichtbarer konstanter Effekt ist, der mit einem Script einen Actor überwacht. MonitorScript klingt genau nach dem.

    Aber wenn ein Script auf einem MagicEffect steht, muss es in der obersten Zeile so aussehen:
    Scriptname MonitorScript extends ActiveMagicEffect

    Das mit dem "because their base types do not match" bedeutet, dass das Script etwa "extends ObjectReference" statt "extends MagicEffect" drin hat. Wobei das eigentlich regulär nicht möglich sein sollte, weil das CK nur die richtigen Scripte vorschlagen sollte. Oder es könnte sein, dass das Script an den falschen Ort kompiliert wurde, d.h. nicht nach Data/Scripts, dann wird es nicht gefunden.

    Auf jeden Fall erscheint mir dieses Tutorial absolut aktuell, auch wenn ich nicht jede Zeile durchgelesen habe. Grundsätzlich hat sich an diesem Verfahren auch seit 2011 überhaupt nichts geändert, in egal welcher Edition.

    Aber bitte gib nicht auf, ich werde dir gerne weiterhelfen, falls mehr Fragen sind.
     
  5. HughJanus

    HughJanus Neuankömmling

    Danke für die Antwort.
    Das Skript sieht so aus (also eigentlich korrekt, nach dem was du beschreibst):
    Code:
    Scriptname MonitorScript extends ActiveMagicEffect 
     
    Actor MySelf
    Float Health
     
    Event OnEffectStart(Actor akTarget, Actor akCaster)
        MySelf = akTarget
        Health = MySelf.GetActorValue("Health")
        RegisterForSingleUpdate(0.25)
    EndEvent
     
    Event OnUpdate()
        Health = MySelf.GetActorValue("Health")
        RegisterForSingleUpdate(0.25)
    EndEvent
     
    Event OnEffectFinish(Actor akTarget, Actor akCaster)
        UnregisterForUpdate()
    EndEvent
     
    Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, \
      bool abSneakAttack, bool abBashAttack, bool abHitBlocked)
        Float Damage = Health - MySelf.GetActorValue("Health")
        Health = MySelf.GetActorValue("Health")
        if (akAggressor == Game.GetPlayer()) && (Damage > 0)
            Debug.Notification("You did " + Damage as Int + " points of damage.")
        endif
    EndEvent
    Ich arbeite im CK der Steam Version, die Mod läuft beim Testen aber in der GOG Version - laut Nexus sollte das keine Auswirkungen haben (es werden auch nur vanilla Papyrus-Befehle benutzt, kein SKSE oder sonstiges).
    Woran könnte es noch liegen?
    Den Cloak-Spell sehe ich am Charakter, doch es passiert einfach nichts. Dem Error zufolge, hat es wohl ausschließlich mit dem Script zu tun.

    Ganz oben im Log bekomme ich auch diese Meldung:
    Code:
    Cannot open store for class "MonitoringScript", missing file?
    Doch laut Recherche bedeutet die nichts (bzw. ist kein Indikator für einen Fehler) und nur Bethesda-Jank.
     
  6. PixelMurder

    PixelMurder Angehöriger

    Ich würde das nicht als Bagatelle betrachten, ich arbeite ja nicht bei Bethesda ;)
    Es gibt in Logs tausende Zeilen, die keine Bedeutung haben, aber diese musst du ernst nehmen.

    Es kann ein Indikator dafür sein, dass die PEX-Datei nicht am richtigen Ort ist. Möglicherweise hat es in einer Ini einen falschen Pfad, was dazu führt, dass Scripte an den falschen Ort kompiliert werden.
    Um sicherzugehen, kannst du sinngemäss folgende Zeilen jeweils als erste Zeile in OnEffectStart und OnHit reinkopieren, die anschliessend im Log stehen sollten:
    Debug.Trace("Meine Mod: Effekt gestartet")
     
  7. HughJanus

    HughJanus Neuankömmling

    Wie kann sie denn am falschen Ort sein? Ich mache alles übers Creation Kit - Spells mit Effekten werden erstellt, dann via QuestAlias der Cloak-Spell dem Spieler zugeordnet (in der Theorie trigger der Cloak-Spell dann den nächsten Spell, wenn ein NPC mit dem Cloak kollidiert - dieser Spell entscheidet, dann ob die Ability auf den NPC übertragen wird (wenn dieser nicht tot ist und die Ability nicht schon hat). Ich kann mir da keine Pfade oder ini-Einträge aussuchen..?
    Wo muss ich ansetzen, um die Papyrus-Datei an einen anderen/richtigen Ort schieben zu können? Alles was ich habe, ist eine .esp, die all meine Effekte, Spells und die Quest beinhaltet.
     
  8. PixelMurder

    PixelMurder Angehöriger

    Befindet sich dein Script in Data/Scripts?
    Gibt es Log-Meldungen aus, wenn du Debug.Trace nutzt?
     
  9. HughJanus

    HughJanus Neuankömmling

    Ich habe gestern nichts mehr probiert.
    Verstehe noch nicht ganz, was du mit dem Skript bzw. der .pex Datei meinst. Ich speichere sämtlichen Content aus dem Creation Kit als .esp - eine andere Datei erhalte ich nicht. Wo soll ich die .pex hernehmen?
     
  10. PixelMurder

    PixelMurder Angehöriger

  11. HughJanus

    HughJanus Neuankömmling

    Danke. Ich denke, die Infos aus dem Link habe ich verstanden.
    Was neu für mich ist (steht aber auch nicht im Link) ist, dass die Skripte nicht IN der .esp Datei gespeichert werden, sondern außerhalb in einem Verzeichnis.
    Ich habe Mods installiert, von denen ich überzeugt war, dass diese mit Skripten arbeiten - sie haben jedoch nur eine .esp Datei (was bedeuten würde, dass dem nicht so ist).
    Verstehe ich das richtig? Jede Mod, die eigens geschriebene Skripte verwendet, muss neben der .esp auch das "Scripts" Verzeichnis im Archiv besitzen?
     
  12. PixelMurder

    PixelMurder Angehöriger

    Nur neue Scripte müssen mitgeliefert werden, wenn man vorhandene aus Vanilla verwendet, nicht. Bei dir braucht es eine esp und eine pex-Datei. psc-Dateien als Source-Datei können, müssen aber nicht mitgeliefert werden.

    Vor Fallout 4 waren die Scripte übrigens tatsächlich in einer esp.
     
  13. HughJanus

    HughJanus Neuankömmling

    Das ist dann bestimmt der Fehler. Sobald ich das verifizieren konnte, melde ich mich wieder. Vielen Dank!
     
  14. HughJanus

    HughJanus Neuankömmling

    Das wars, jetzt bekomm ich zumindest einen aussagekräftigeren Error:
    Code:
        [ (00013491)].WIDeadBodyCleanupScript.AddSpell() - "<native>" Line ?
        [Active effect 6 on  (00013491)].ApplyingScript.OnEffectStart() - "ApplyingScript.psc" Line 6
    [11/11/2022 - 05:52:06AM] Error: Cannot add a None spell to the actor
    Das ist jenes Skript, das im Effek des Spells aufgerufen wird, der im Cloak Effect das "Assoc. Item 1" ist. Es wird im Spell geprüft ob der Actor tot ist oder bereits die Monitoring-Ability besitzt - trifft beides nicht zu, wird die Monitoring-Ability auf den Actor angewendet.
    Die Zeile des Anwendens wirft diesen Error.

    So sehen die Eigenschaften der Monitoring-Ability aus (alles wie im Tutorial):
    upload_2022-11-11_6-1-36.png
     
  15. PixelMurder

    PixelMurder Angehöriger

    Sind im Script auf dem Cloak-MagicEffect die Werte gefüllt? Mit rechter Maus-Taste auf das Script, dann Properties wählen. Alle Felder darin müssen gefüllt sein, das macht das CK nicht automatisch. None bedeutet, dass eine Variable keinen Wert enthält, z.B. dies hier:
    Spell Property CloakAbility Auto

    Siehe hier:
    https://www.creationkit.com/index.php?title=Dynamically_Attaching_Scripts#Filling_Properties
    https://www.creationkit.com/index.php?title=Papyrus_Introduction#Setting_Property_Data_in_the_Editor
     
  16. HughJanus

    HughJanus Neuankömmling

    Ja, das war's.
    Ich sehe jetzt zwar den Cloak Effect im Spiel nicht mehr und es passiert auch nichts, doch es gibt keine Logeinträge mehr für die Mod^^
    Wo fange ich an, den Fehler zu suchen? :)
     
  17. PixelMurder

    PixelMurder Angehöriger

    Ich würde an allen relevanten Orten Debug-Meldungen ausgeben, damit man sieht, dass einzelne Programmteile funktionieren. Und zwar überall, wo Scripte gestartet werden, bevor if-Statements.
    Kann man sinngemäss so machen:
    Debug.Trace("Cloak: Stelle 1 durchlaufen")
    Debug.Trace("Monitor: Stelle 2 durchlaufen")
    Debug.Trace("Monitor: OnHit gestartet")

    Ich habe das Problem auch immer, dass ich nicht genau weiss, ob Dinge funktionieren. Es müssen nicht unbedingt Script-Fehler sein.
    Actor- und MagicEffect-Scripte werden ausserhalb des Grids entladen. Du hast einen falschen Save geladen, wo der Spieler den Effekt noch nicht hat. Manche Scripte werden nicht geupdatet, wenn der Effekt mal gestartet hat und mal in einem Save ist.
    Für solche Aufgaben merke ich mir einen Save vor einem Dungeon, den ich noch nie betreten habe und bevor die neue Funktion installiert wurde. Dann bei jeder Änderung deiner Mod diesen Save laden, Funktion starten und in den Dungeon gehen. Dann Logs lesen und auswerten.
    Wenn du aus irgendeinem Grund einen Test machst mit einem Save, in dem Leute den Effekt bereits bekommen haben, dann solltest du den Spell den NPC oder dir per Konsole abnehmen und eventuell wieder geben. Es ist nicht garantiert, dass Script-Änderungen bei einem laufenden MagicEffect upgedatet werden.

    Ich habe übrigens Skyrim gerade nicht installiert, sonst hätte ich gerne deine Mod getestet.
     
  18. HughJanus

    HughJanus Neuankömmling

    Habs jetzt mit folgendem Tutorial geschafft (in Kombination mit dem Artikel aus dem Eingangspost): Link
    Danke für deine Unterstützung! Der Knackpunkt war bestimmt, dass ich die Skript-Files nicht mit-installiert habe.

    Edit: lol :D Link
     
    PixelMurder gefällt das.
  19. 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