Skriptthread zum Creation Kit

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

  1. GetName und SetName sind Funktionen von SKSE. Die Fehlermeldung kann darauf hindeuten, dass du es nicht installiert hast. Du benötigst die Archiv Version, der Installer funktioniert nicht zum scripten, da die .psc Dateien nicht enthalten sind.

    Weiterhin werden die Namensänderungen durch SetName nicht im Save gespeichert, der Befehl müsste also u.U. bei jedem Spielstart erneut ausgeführt werden.
     
    Zuletzt von einem Moderator bearbeitet: 16. März 2014
    TripleBlade gefällt das.
  2. TripleBlade

    TripleBlade Fremdländer

    Vielen Dank an euch beide, das hat super funktioniert! Ich hatte SKSE tatsächlich über den Installer installiert (ich hatte gedacht SKSE liefert in jedem Fall die Modders Recource mit, ist aber wohl nicht so).
    Mit ein paar kleinen Änderungen hat das Script dann auch genau die Funktion erfüllt, die ich gebraucht habe.
    mfg, TripleBlade
     
  3. bjoernret

    bjoernret Hausbruder

    Ich habe ein sonderbares Problem: Während eines Dialoges wird per Script ein Item in eine Kiste eingefügt. Das Item hat folgendes Script:
    Code:
    Scriptname myScript   Extends ObjectReference
    
    Quest Property myQuest Auto
    
    
    Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer)
    If akNewContainer == Game.GetPlayer()
    	If myQuest.GetStage() == 40
    		myQuest.SetStage(45)
    	EndIf
    EndIf
    EndEvent
    Der Sinn des Scriptes ist es, die Quest-Stage zu aktualisieren (abhängig von der aktuellen Quest-Stage). Nehme ich aber jetzt ingame das Item aus der Truhe, passiert nichts, erst wenn ich es fallen lassen und wieder aufnehme, wird die Quest-Stage aktualisiert. Was mache ich falsch und wie bekomme ich es hin, dass die Quest-Stage sofort beim ersten Aufnehmen aktualisiert wird?
     
  4. Bernd009

    Bernd009 Ehrbarer Bürger

    Da ich im Papyrus-Skripten eine Niete bin wollte ich mal fragen, ob mir jemand hier ein Skrikpt schreiben kann, dass beim Aufnehmen eines Items eine Queststage auslöst?
     
  5. Tigurius

    Tigurius Neuankömmling

    Meine letzten Scripts waren im CS von Morrowind. Nach zig Stunden einlesen für Papyrus krieg ich garnichts gebacken :/

    Ich brauche einen Script für meine Mod:
    Ein NPC verkauft Zauberbücher, die verstärkte Versionen der im Spiel enthaltenen lehren. Insgesamt kann jeder Zauber um 4 Level erhöht werden. Um ein neues Buch kaufen zu können, muss man die Vorstufe erlernt haben UND einen Mindestskill im entsprechenden Zauberbaum haben.

    Sieht dann vom Sinn her so aus für z.B. den Flammenzauber

    if(destruction >= 25)
    if(player->getspellid flammenlv1 == 1)
    Zauberbuch lv2 in Truhe des Händlers packen
    endif
    endif

    Hab nur absolut keine Ahnung wie das in Papyrus funktioniert, die Nerven liegen blank:cry:

    Hoffe mir kann jemand helfen, danke im vorraus!
     
    Zuletzt bearbeitet: 12. April 2015
  6. enorm

    enorm Abenteurer

    Tachchen,
    ich benötige ein Script für eine Zauberrolle, welches bewirkt, daß bei Benutzung der Rolle ein geladener gewöhnlicher Seelenstein verwendet (aus dem Inventar entfernt) wird.
    Gibt es Unterschiede zwischen vorgeladenen und selber mit Seelenfalle aufgeladenen Seelensteinen?

    Bitte um Hilfe!
    Vielen Dank
     
  7. Tigurius

    Tigurius Neuankömmling

    Nach weiteren Stunden des frustriert seins, habe ich jetzt meinen ersten Script einfügen können ;)

    Zur Hälfte funktioniert er auch, folgendes Problem:

    Der Script liegt auf einem Buch, das von sich aus nichts bewirkt.

    1) Wenn der Spieler unter Skill 25 in Zerstörung ist wenn er es liest soll nichts passieren -> klappt

    2) Ist der Spieler mindestens auf Skill 25 und besitzt den Flammenzauber, so soll folgendes passieren:
    a) Der Zauber "Flammen - Lv. 2" soll erlernt werden -> klappt
    b) Der Zauber "Flammen" soll entfernt werden -> klappt NICHT
    c) Das Buch soll aus dem Inventar verschwinden -> klappt NICHT

    Wo ist der Fehler?

    Code:
    Scriptname zzscriptflammen2 extends ObjectReference
    
    ObjectReference Property zzzzSpellTomeFlameslv2 auto
    
    Spell Property Flames auto
    
    Spell Property zzzzFlameslv2 auto
    
    
    Event OnRead()
    
        if(Game.GetPlayer().HasSpell(Flames))
           Debug.Notification("Spieler besitzt den Flammenzauber")
        
            if(Game.GetPlayer().getAV("Destruction") >= 25)
                Debug.Notification("Spieler hat Skill von mindestens 25")
                Game.GetPlayer().AddSpell(zzzzFlameslv2)
                Game.GetPlayer().RemoveSpell(Flames)
                Game.GetPlayer().RemoveItem(zzzzSpellTomeFlameslv2, 1)
            endif
    
            if(Game.GetPlayer().getAV("Destruction") < 25)
                Debug.Notification("Spieler hat Skill von weniger als 25")
            endif
    
        endif
    
    EndEvent 
    
    Bitte helft mir, ich weiss nicht weiter!

    Gruß Tigu
     
  8. Ich hoffe, ich habe deine Frage jetzt nicht total missverstanden, aber ein Skript auf ein Scroll Objekt legen, das geht leider nicht. In diesem Fall wäre es vielleicht besser, das Skipt auf den zugehörigen magischen Effekt zu legen. Dann könntest du auch gleich eine Bedingung hinzufügen, damit der Effekt nur dann gestartet wird, wenn der Spieler einen gewöhn. Seelenstein im Inventar hat.

    Das Skript würde dann in ungefähr so aussehen:
    Code:
    Scriptname _test extends activemagiceffect
    
    Soulgem Property SoulGemCommonFilled auto
    
    Event OnEffectStart(Actor akTarget, Actor akCaster)
        akCaster.RemoveItem(SoulGemCommonFilled, 1)
    EndEvent
    

    Und die Bedingung in etwa so:
    Unbenannt-1.jpg

    Ob es im Spiel Unterschiede zwischen vorgeladenen und selbst geladenen Seelensteinen gibt, weiss ich jetzt auch nicht genau, musst du ausprobieren.



    RemoveItem erwartet eine Base Form im ersten Parameter, dein Property ist aber eine Objekt-Referenz. Eine Möglichkeit, ändere das ObjectReference Property in ein Book Property ,oder du versuchst folgendes:

    Code:
    Game.GetPlayer().RemoveItem(zzzzSpellTomeFlameslv2.GetBaseObject(), 1)
    Warum das mit dem Zauber entfernen nicht funktioniert, da stehe ich momentan auch auf dem Schlauch, sieht eigentlich gut aus. Schau doch mal in den Properties nach, ob du nicht versehentlich FlamesLeftHand oder FlamesRightHand ausgewählt hast.

    Noch ein kleiner Hinweis: Anstatt mehrmals Game.GetPlayer() aufzurufen, ist es effizienter ein Property für den Player anzulegen.

    Code:
    Actor Property PlayerRef auto

    ...und auch auf die Gefahr hin, dass ich mich anhöre wie eine kaputte Schallplatte... SKRIPTE IMMER MIT EINEM CLEAN SAVE TESTEN!;)
     
    Zuletzt von einem Moderator bearbeitet: 14. April 2015
    enorm und Tigurius gefällt das.
  9. Tigurius

    Tigurius Neuankömmling

    Danke erstmal für den Beitrag!

    Ich habe nun ein bissel rumprobiert und die Book-Property brachte dann die Erlösung.

    Der Script ist jetzt für Flammen, Frostbiss, Funken und Blitzzauber bis max Lv. 5 integriert. Das entfernen der Vorstufe des Zaubers klappt auch bei allem einwandfrei, ausser bei "Flammen". Den bekomme ich einfach nicht weg. Ist das vielleicht ein gesicherter Startzauber oder sowas?

    Script sieht jetzt folgendermaßen aus (Beispiel für Frostbiss Lv. 3)

    Code:
    Scriptname zzscriptfrostbite3 extends ObjectReference
    
    ObjectReference Property zzzzZaubermeisterbox auto
    
    Spell Property zzzzFrostbisslv2 auto
    Spell Property zzzzFrostbisslv3 auto
    Book Property zzzzSpellTomeFrostbitelv3 auto
    
    Event OnRead()
    
    if(Game.GetPlayer().HasSpell(zzzzFrostbisslv2))
        
        if(Game.GetPlayer().getAV("Destruction") >= 50)
            Game.GetPlayer().AddSpell(zzzzFrostbisslv3)
            Game.GetPlayer().RemoveSpell(zzzzFrostbisslv2)
            Game.GetPlayer().RemoveItem(zzzzSpellTomeFrostbitelv3,  1, abSilent = true, akOtherContainer = None)
    
        else
            Debug.Notification("Voraussetzungen nicht erfüllt")
        endif
    
    endif
    
    EndEvent 
    
    Aus Sicht eines Profis vielleicht umständlich, erfüllt für mich aber seinen Zweck ;)

    Ich denke mal, das ich die fehlenden 21 Zauber im laufe der Woche fertig bekomme, dann gibts für die Zerstörungsmagier schonmal was neues.
    ( Wenn vielleicht auch 2-3 Jahre zu spät :lol: )

    Danach versuche ich mich an den anderen Magieschulen.
     
  10. enorm

    enorm Abenteurer

    @ Ghaunadaur

    Danke, hat soweit funktioniert! :good:

    Vielen Dank nochmals!
     
  11. Vampir2005

    Vampir2005 Abenteurer

    Hilfe bei 2 Scripten und deren Einbindung

    Hallo,

    dies ist mein erster Versuch irgendetwas zu Scripten seit Fo3.

    Was soll(en) das(die) Script(e) machen?

    Das erste Script soll wenn ein Item dem Spielerinventar hinzugefügt wird eine Referenz aktivieren (enablen).
    Das zweite Script soll an eine Queststage gebunden werden und soll wiederum eine Referenz aktivieren (enablen).

    Dass haben meine grauen Zellen bis jetzt ausgespuckt

    Script selten01 extends Objectreference; ????

    ObjectReference Property raresTeil01 auto
    ;ObjectReference Property raresTeil02 auto weiss nicht ob ich beide brauche

    hier haperts schon ist es ein Event oder was?

    if raresTeil01.enable() != true
    set raresTeil01.enable;????
    endif

    dazu schon die erste Frage kann ich es so einrichten das das Script genau nur 1. mal durchläuft?

    Mein Gedanke hierbei ist: Der Player nimmt ein Gegenstand auf (zb. die Golden Klaue ) in dem Moment wo Sie dem Inventar hinzugefügt wird wird automatisch die Referenz aktiviert.

    Beim zweiten weiss ich ehrlich noch nicht genau wie.

    Es soll zum Bsp. der Quest von Hircine (Haut des Erretters) hinzugefügt werden.
    es soll dann entweder die Referenz für den Ring oder die Referenz für die Rüssi aktivieren.


    Mfg.

    Vampi

    Ps.

    Ich hoffe ich habe mich verständlich ausgedrückt.
     
    Zuletzt bearbeitet: 27. April 2015
    1 Person gefällt das.
  12. Beschreibst du mir mal bitte kurz und prägnant deine Aufgabenstellung? :)
    Im Moment weiß ich noch nicht so genau, was du definitiv erreichen möchtest :bye:

    Grüße
    LF
     
  13. Vampir2005

    Vampir2005 Abenteurer

    Hi Ladyfalk,

    also was ich erreichen möchte ist ein Modul zu erstellen das es mir erlaubt gewisse Items leichter auszustellen ohne diese extra an einem Bestimmten Platz einzulagern. Dazu habe ich eine neue Zelle erstellt in der Referenzen liegen für zb. "Die Zackenkrone".
    Nun soll folgendes geschehen der Player nimmt die "Krone" auf beim aufnehmen wir die Referenz aktiviert.
    Mher soll das Modul nicht machen. Jetzt kann jeder Modder der dieses Modul nutzt seine Ausstellungstücke einfach mit "aktivate Parrent"? einschalten ohne sich darum kümmern zu müssen wsie er dies aus dem Spielerinventar bekommt bzw. bei Item's die der Spieler eigentlich nicht bekommen/behalten kann.
    Ich hoffe es ist etwas deutlicher. Ziel ist es auch wenn ich zb. mehrere Mods habe die ein und dasselbe Ausstellen wollen dies dann auch können.

    Mfg.

    Vampi
     
  14. Okay, ich guck mal "die Tage" (nicht bös sein das es ein wenig dauern kann) was ich da so im Petto für dich von meinen eigenen Mods habe. ;)
    LG
    Ladyfalk
     
  15. Destero

    Destero Angehöriger

    Hallo zusammen,

    ich habe jetzt schon ewig im Internet gesucht, aber habe leider nicht gefunden was ich brauche, vielleicht kann mir ja hier jemand helfen.

    Folgendes Problem:

    Ich möchte mit einem Schalter ein static einschalten "enable" anschließend soll es sich nach z.B. 1 sekunde automatisch wieder ausschalten "disable". Mit dem Gleichen Schalter möchte ich einen Gegenstand einschalten ohne dass er sich automatisch selber abschaltet, sondern ganz normal mit dem Schalter, welcher dann das Script für den 1. Gegenstand wiederholen soll.

    Für Ideen bzw. ein fertiges script wäre ich sehr dankbar und werde entsprechende Credits in die Beschreibung geben, wenn es zu einer fertigen Mod kommen sollte und sie so funktioniert, wie ich mir das wünsche. Wird entweder eine Ressource, oder ein Transportmittel für Skyrim oder beides.

    Danke im Vorraus!

    Gruß
    Dest.
     
  16. Hallo Destero,

    vielleicht etwas spät, aber falls du immer noch ein Skript benötigst, kannst du es mal mit diesem hier versuchen:

    Code:
    Scriptname _test extends ObjectReference
    
    ObjectReference Property Objekt01 auto
    ObjectReference Property Objekt02 auto
    
    
    AUTO STATE WaitingForActivation
    Event OnActivate(ObjectReference akActionRef)
        if akActionRef == Game.GetPlayer()
            if Objekt02.IsDisabled()
                BlockActivation()
                Objekt01.Enable()
                Objekt02.Enable()
                RegisterForSingleUpdate(1.0)
                GotoState("")
            else
                BlockActivation()
                Objekt01.Enable()
                Objekt02.Disable()
                RegisterForSingleUpdate(1.0)
                GotoState("")
            endif
        endif
    EndEvent
    ENDSTATE
    
    Event OnUpdate()
        Objekt01.Disable()
        BlockActivation(false)
        GotoState("WaitingForActivation")
    EndEvent
    
    

    Ich nehme an, du weißt wie du es einbauen musst. Für das Property Objekt01 wählst du den Gegenstand aus, der automatisch deaktiviert werden soll und für Objekt02 den anderen.
     
    Destero und Ysolda gefällt das.
  17. Ysolda

    Ysolda Abenteurer

    Fehlt nur noch der Timer

    Utility.Wait(1.0)) "anschließend soll es sich nach z.B. 1 sekunde automatisch wieder ausschalten"

    ----
    EDIT
    Sorry, dieser Beitrag kann gelöscht werden. Sehe es gerade, wurde besser gelöst. ... facepalm

    RegisterForSingleUpate(1.0)
     
    Zuletzt bearbeitet: 23. Juni 2015
    Destero gefällt das.
  18. Destero

    Destero Angehöriger

    Hallo Ghaunadaur und Ysolda, danke für eure Hilfe, habe das erst jetzt gesehn, da ich mich zwischenzeitlich dann doch um was anderes gekümmert habe. Werde das aber ausprobieren, sobald ich an dieser Mod weiter machen kann.

    Gruß
    Destero
     
  19. Yves

    Yves Bürger

    Hallo!
    Nach langer Abwesenheit bin ich nochmal auf Scharest unterwegs, da ich momentan wieder mehr Zeit habe mich mit den TES spielen zu befassen :D
    Ich habe mich die letzten Tage in das neue CK von Skyrim eingearbeitet doch im Bereich Skripten hat sich im Vergleich zu Oblivion einiges getan! Deswegen würde ich um etwas Starthilfe für ein Skript bitten.
    Was soll das Skript machen? Also sofern der Spieler level 30 ist, soll er beim nächsten Rasten in einem Bett geweckt werden durch einen NPC der eine Unterhaltung beginnt.

    Ich würde mich über eine Antwort freuen!+

    Beste Grüße

    Yves!
     
  20. blackHawk

    blackHawk Abenteurer

    Hi, ich habe seit Ewigkeiten wieder angefangen zu modden und habe ein Problem mit einem Skript. Es ist eigentlich ganz einfach: Ein Schalter mit dem man das Licht an,- und ausschalten kann.

    Mein Script sieht so aus:
    _______________________________
    Scriptname Lichtschalter01 extends ObjectReference

    Int schalter
    ObjectReference Property licht01 Auto
    ObjectReference Property licht02 Auto

    Event onactivate(ObjectReference akActionRef)

    If (schalter == 0)
    Licht01.enable()
    Licht02.enable()
    schalter += 1
    endif

    If (schalter == 1)
    Licht01.disable()
    Licht02.disable()
    schalter -= 1
    endif

    endevent
    _______________________________

    schalter steht jeweils für die Betätigung des Schalter. Im Spiel passiert bei Aktivierung nichts... wenn mir jemand sagen könnte was ich falsch mache und eine Lösung hat wäre das top :)
     
  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