Skriptthread zum Creation Kit

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

  1. Van Helsing

    Van Helsing Neuankömmling

    Hm, der "StartCombat" Befehl ist doch Teil des "ActorScripts"
    evtl. musst du die Funktionen des Actor Scripts erst in dein Script reinladen.

    Also entweder direkt in der 1. Zeile mittels "Scriptname .... extends Actor"
    oder danach die Zeile "Actor.StartCombat" einfügen...?!?
     
  2. freezing_rain

    freezing_rain Neuankömmling

    Danke euch, aber es lag einfach am Quest. Manchmal führt der scheinbar grundlos keine direkten Scriptbefehle in nem Quest mehr aus, dann muss man eben das Quest wechseln. Hab ich getan und jetzt funktionierts. Das CK ist komisch. :)
     
  3. Draconis

    Draconis Reisender

    Mein Script funktioniert immer noch nicht.
    Funktion: Das Script liegt auf einen MagicEffect, dieser wiederum ist in einem Zauber enthalten. Der vom Zauber getroffene NPC soll Essential werden, wenn er es noch nicht ist, und nicht-Essential werden, wenn er Essential ist. Nur leider funktioniert das ganze nicht. Es kommt immer die Meldung "Dieser NPC ist nun Essential", egal, ob er es vorher war oder nicht, und er ist dann auch nicht Essential.

    Script:
    Code:
    Scriptname DrReEsEssential   extends ActiveMagicEffect
    
    ReferenceAlias property akTarget auto
    
    Event OnEffectStart(Actor akTarget, Actor akCaster)
    	Actor target = akTarget.GetActorReference()
    	ActorBase targetBase = target.GetActorBase()
    	bool status = targetBase.IsEssential()
        if (status == true)
            targetBase.SetEssential(False)
            Debug.Notification("Dieser NPC ist nicht mehr Essential")
        else
            targetBase.SetEssential()
            Debug.Notification("Dieser NPC ist nun Essential")
        endif
    endEvent
    Ich bin im Moment echt am verzweifeln, wäre super, wenn mir jemand helfen könnte.
     
  4. enorm

    enorm Abenteurer

    hallo,
    ich suche ein Script für einen Ring. wenn er ausgerüstet wird soll sich das Level auf 20 setzen
    thx
     
  5. Boby

    Boby Reisender

    Skriptanfrage:

    Moin,

    ich würde gerne etwas basteln damit Sturmmäntel und Kaiserliche nach der Quest "Battle for Windhelm" nicht mehr "essential" sind sodass man nicht vor der unlösbaren Aufgabe steht verbliebene Sturmmäntel oder Kaiserliche nicht töten zu können.
    Wie lässt sich das mit einem Script realisieren? Die Quest ID wäre:
    Code:
    CWSiegeObj
    und die Quest Stage
    Code:
    9999
    Herzlichen Dank schon mal im voraus. :)
     
  6. blackHawk

    blackHawk Abenteurer

    Sorry dass ich euch mit sowas belästigen muss, aber ich krieg nichtmal einen simplen Script hin...

    Ich möchte, dass wenn man auf eine Tafel klickt, eine Nachricht erscheint. Dazu habe ich unter "Miscellaneous -> Message" eine kleine Nachricht geschrieben. Allerdings komme ich mit dem Script nicht weiter. Das ist mein erster Script im CK, daher fehlt mir die Übung und mache Anfängerfehler.

    Was genau fehlt da noch? Und muss noch ein zusätzlicher Schritt unternohme werden?
     
  7. Damrok

    Damrok Neuankömmling

    Ich kenne mich zwar gar nicht aus, aber vielleicht einfach mal warnung.show mit warning.show austauschen :).
     
    blackHawk gefällt das.
  8. blackHawk

    blackHawk Abenteurer

    Also mein Script heisst "warning" und der Text hat den Titel "Warnung", ich habe da Englisch und Deutsch ein wenig vertauscht XD
     
  9. Kahmul

    Kahmul Angehöriger

    @ BlackHawk: Kommt auf das Objekt:

    Code:
    ScriptName <ScriptNameEinfügen> extends Object Reference
    
    Event OnActivate(ObjectReference akActionRef)
    
    if(akActionRef == game.getplayer())
      debug.messagebox("<DeinText>")
    endif
    
    EndEvent
    @Boby:

    Das Skript kommt auf den MagicEffect eines Zaubers (kannst eventuell auch Draconis' Script nehmen, wenn seins mit meinen Änderungen funktioniert):

    Code:
    ScriptName <ScriptNameEinfügen> extends ActiveMagicEffect
    
    Actor Property a1
    Actor Property a2
    Actor Property a3
    Actor Property a4
    Actor Property a5
    Actor Property a6
    Actor Property a7
    ; soviele Du brauchst
    
    Int Stage = CWSiegeObj.getcurrentstageID()
    
    
    Event OnEffectStart(Actor akTarget, Actor akCaster) 
      if(stage == 9999)
        a1.getactorbase().setessential(false)
        a2.getactorbase().setessential(false)
        a3.getactorbase().setessential(false)
        a4.getactorbase().setessential(false)
        a5.getactorbase().setessential(false)
        a6.getactorbase().setessential(false)
        a7.getactorbase().setessential(false)
        ; und so weiter, für jede Property einmal
      endif
    endif
    
    EndEvent
    
     
    Du machst für jeden Hauptmann ein Property und weist den einzelnen Properties dann den Actor's zu.

    @Enorm:

    Laut dem CK-Wiki gibt es für das Setzen des Levels keinen Befehl.

    @Draconis:

    Probier' es mal so:

    Code:
    Scriptname DrReEsEssential extends ActiveMagicEffect
    
    Event OnEffectStart(Actor akTarget, Actor akCaster)
    
       if(akTarget.getactorbase().isessential())
         akTarget.getactorbase().setessential(false)
       else
         akTarget.getactorbase().setessential(true)
       endif
    
    endEvent
     
    Zuletzt bearbeitet: 19. Februar 2012
  10. Hebrock

    Hebrock Abenteurer

    @ BlackHawk:

    Du musst die Box als Property definieren.
    Eine genaue Erklärung und ein kleines Tutorial findest du hier.
     
    blackHawk gefällt das.
  11. blackHawk

    blackHawk Abenteurer

    Hat geklappt! Vielen Dank! Das CK ist im Gegensatz zum CS wessentlich kompliziert geworden...
     
  12. Boby

    Boby Reisender

    @Kahmul:

    Danke schonmal, aber geht das nicht auch ohne einen Zauber? Z.B. das Script wird beim Spielstart einmal initialisiert oder ähnliches?
     
  13. Kahmul

    Kahmul Angehöriger

    Ich habe schon oft probiert, Sachen so ablaufen zu lassen. Mit OnInit und OnUpdate sollte es eigentlich funktionieren. Aber entweder Bethesda hat da Blödsinn programmiert oder es ist nicht so vorgesehen. Im CK-Wiki steht auch nichts zur Runtime von Skripten, was ich alles andere als schön finde.
    Wenn jemand Näheres dazu weiß, wäre es nett, wenn dieser es hier posten könnte.
     
  14. Boby

    Boby Reisender

    Hmm... das ist ja schade.
    Wie wäre es denn wenn ich auf jeden Hauptmann ein script lege, welches sobald der NPC mit einer Waffe getroffen wird den NPC auf "none essential" setzt. Würde so etwas funktionieren?
     
  15. Kahmul

    Kahmul Angehöriger

    Ja.

    Code:
    ScriptName <ScriptName> extends ObjectReference
    
    Event OnHit(ObjectReference akAggressor)
    
    if(akAggressor == game.getplayer())
      self.getactorbase().setessential(false)
    endif
    
    EndEvent
    
    Ob das mit "self" geht, oder ob man es überhaupt braucht, musst Du mal ausprobieren. In Obl. wurde ohne Referenz-Angabe der Befehl auf das Objekt ausgeführt. Ob es in Skyrim auch so ist, weiß ich nicht.
     
  16. Boby

    Boby Reisender

    Ok danke.
    Wie würde das denn in Verbindung mit einer QuestStage abfrage aussehen?
    Code:
    ScriptName <ScriptName> extends ObjectReference
    
    
    Event OnHit(ObjectReference akAggressor)
    
    Int Stage = CWSiegeObj.getcurrentstageID()
    
    if (stage == 9999)
    
    andif (akAggressor == game.getplayer())
      self.getactorbase().setessential(false)
    
    endif
    
    EndEvent
    ? Passt das so? Wahrscheinlich wohl nicht oder?
     
  17. agoon12

    agoon12 Fremdländer

    Irgendeine Lösung für addscriptpackage

    Hallo zusammen,
    ich habe jetzt schon tagelang probiert herauszufinden, ob es eine Alternative zum aus Oblivion/F:3/F:NV bekannten addscriptpackage - Befehl gibt.

    Natürlich ist es möglich einzelnen Actors neue Packages per Quest Alias zuzuweisen, aber das ist nicht nur umständlich und unübersichtlich, sondern nicht einmal ausreichend. Jedes Alias kann nur einmal vergeben werden, und wenn es also z.B. um ein neues Companion-System geht, bei dem man mehr als einen Begleiter hat, dann müsste man für jeden Begleiter-Slot mindestens zwei Aliases definieren...

    Hat irgendjemand vielleicht einen Hinweis, was man noch ausprobieren könnte?

    Und zu der Sache, die weiter vorne im Thread gefragt wurde... ein Pferd einzuparken ist ziemlich einfach. Du brauchst 'ne Quest, in diese Quest fügst du ein Quest Alias ein und dieses Quest Alias definierst du als "Specific Reference", lässt dann aber das Auswahlfeld leer. Unten dann bei Packages noch ein Travel-Package einfügen, dass zu deinem "Pferde-Parkplatz" führt.
    Schließlich musst du dir natürlich noch eine Triggerbox bauen und diese Abfragen lassen ob akActionRef ein Pferd ist und ob dieses Pferd auch dem Spieler gehört. Dann schiebst du die Reference des Pferdes, das in die Box gelaufen ist per ForceRefTo() in das QuestAlias deiner PferdeEinparkQuest.

    Fertig.

    Problem ist auch hier: nur ein Pferd kann gleichzeitig auf dem Parkplatz stehen, da das Alias, welches das Travel-Package verteilt, nur einmal belegt werden kann. Ansonsten wirds gleich relativ umständlich... aber das ist ja genau das Problem, für welches ich eine Lösung brauche.
     
  18. Kahmul

    Kahmul Angehöriger

    Code:
    ScriptName <ScriptName> extends ObjectReference
    
    
    Event OnHit(ObjectReference akAggressor)
    
    Int Stage = CWSiegeObj.getcurrentstageID()
    
    if (stage == 9999)
     if (akAggressor == game.getplayer())
       self.getactorbase().setessential(false)
     endif
    endif
    
    EndEvent
     
    Boby gefällt das.
  19. Draconis

    Draconis Reisender

    Es gibt ja die Möglichkeit, QuestVariabeln als Bedingung für Dialoge auszuwählen. Ich habe das ganze so verstanden, dass man die Variabeln in ein Script schreiben muss, dieses dann an die Quest anhängen und nun die Quest-Variabeln auswählen kann, leider bleibt das Feld dafür grau. Habe ich irgendetwas falsch gemacht? Das Script mit den Variablen:

    Code:
    Scriptname DrQuestScript   extends Quest Conditional
    
    Int Property uno = 0 Auto  
    Int Property duo = 0 Auto
    Als das nicht funktioniert hat, habe ich folgendes probiert, bin damit aber leider auch gescheitert:
    Code:
    Scriptname DrQuestScript   extends Quest Conditional
    
    Int uno = 0
    Int duo = 0
     
  20. Boby

    Boby Reisender

    Ich habe das jetzt mal so getestet und bei mir hat das Script trotz abgeschlossener Quest keinen Effekt dh. die NPCs kann man immer noch nicht töten. Allerdings weis ich nicht warum, da ich an keiner Stelle eine Fehlermeldung bekommen habe. :?
     
  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