Skriptthread zum Creation Kit

Ich hätte einige Fragen:

- gibt es Arrays?
- gibt es eine Möglichkeit diese Automatisch zu füllen. (z.B. Parents)?
- gibt es Befehle zum Ändern der Textur, oder des Modells einer Referenz?
 
@adinsx: Damit meint er, dass er den Perk EagleEye30 nicht findet. Im CK-Wiki steht auch nicht, was man dort angeben muss. Versuche mal den Namen des Perks (Adlerauge) zu benutzen, auch wenn ich nicht glaube, dass es etwas ändert. Vielleicht muss man auch die FormID angeben, wozu ich leider auch keine Ahnung habe, wo man die findet, wenn es sie in dem Fall überhaupt gibt.

@Schmelz: Hier findest Du so ziemlich alles zu Arrays. Für Textures scheint es nichts zu geben.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Schmelz
So, mein LichtschalterScript ist fertig. Es ist eine reduzierte Variante von "defaultActorEnableDisableLinkedRef" allerdings ohne "STATE Done" (Wartezeit für die Schalteranimation, in der der Activator nicht nocheinmal aktiviert werden kann solange er noch beschäftigt ist), weil's mit State einfach nicht klappt. (Vermutlich wartet der Activator sonst auf ein Feedback von der Referenz, was aber nicht kommt, da hier ja nur enabled/disabled wird und es keine Aktivierung in dem Sinne gibt die wahrgenommen werden kann.)

Danke an dieser Stelle nochmal an Kahmul, der mich auf die Idee gebracht hat IsEnabled zu verwenden, anstatt extra eine weitere Variable für die Sensorik zu verschwenden.

Code:
Scriptname DisableEnableFlipFlopLinkRef extends ObjectReference  
{
- This script enables by first activation and disables by second activation linked ref (FlipFlop-Switch)
- This script fires always by activation
- Delay and Fade optional
}

bool Property Fade = FALSE auto
{
Fade in/out when enabled/disabled? (DEFAULT = FALSE)
}

float Property Delay = 0.0 auto
{
Delay before Enable/Disable (DEFAULT = 0.0)
}

ObjectReference myLinkedRef

    Event onActivate(ObjectReference akActor)
        myLinkedRef = GetLinkedRef() as ObjectReference
            
        utility.Wait(Delay)

        if (myLinkedRef.IsEnabled())
            myLinkedRef.disable(Fade)
        else
            myLinkedRef.enable(Fade)
        endif
        
    endEvent


Unfassbar das ein ganzer Nachmittag draufgeht für einen simplen Flip-Flop-Schalter... :cry:
 
Kann mir einer helfen, ich habe bei einem pi einen Eimer "bucket02b" verwendet und möchte, dass man diesen nicht als gegenstand aufheben kann, sondern als Objekt sieht ohne mit ihm zu interargieren und ohne dass sich der Eimer bewegt.
Gibt es dazu ein script?
 
Kann mir einer helfen, ich habe bei einem pi einen Eimer "bucket02b" verwendet und möchte, dass man diesen nicht als gegenstand aufheben kann, sondern als Objekt sieht ohne mit ihm zu interargieren und ohne dass sich der Eimer bewegt.
Gibt es dazu ein script?

Muss man dafür nicht einfach den Eimer unter Statics einordnen? Also im ObjectWindow unter Static rechtsklick --> New --> Mesh des Eimers, Name, ... und fertig?
 
Muss man dafür nicht einfach den Eimer unter Statics einordnen? Also im ObjectWindow unter Static rechtsklick --> New --> Mesh des Eimers, Name, ... und fertig?

Die einfachste Methode ist oft die beste :oops:

das problem ist, der computer findet keine .nif dateien. und das ck auch nicht

Das liegt daran dass die *.nif dateien noch in den BSA-Archiven Gepackt sind. Du musst diese Archive öffnen (Mit einem BSA-Unpacker) Und die entsprechenden *.nif files entpacken.
 
  • Like
Reaktionen: benon
....
Scriptname DRWEffectsControllerScript extends ObjectReference
Code:
Book Property MySelf  Auto
...
Message Property DRWEffectsMsgDof  Auto
...

Function ReadMySelf(bool fromWorld)
    int    dofLevel = DRWEffectsDofLevel.GetValueInt()
 [B]   int dofSelection = DRWEffectsMsgDof.Show(dofLevel + 1)[/B]

    if(dofSelection == 0)
        ; Return
    elseif (dofSelection == 1)
        ; Effekt deaktivieren
...
EndFunction
...
Event OnEquipped(Actor reader)
    if (reader != Game.GetPlayer())
        return
    endif
    Utility.WaitMenuMode(2.0)
    ReadMySelf(false)
EndEvent

Event OnActivate(ObjectReference reader)
    if (reader != Game.GetPlayer() || IsActivationBlocked())
        return
    endif
    Utility.WaitMenuMode(2.0)
    ReadMySelf(true)
EndEvent
....

Hallo,

mal eine einfache Frage.
Wo ist eigentlich der Text definiert. Im Bild (link klicken) sieht man ja z.B. "Aktueller Filter" und "Filter aktiviert". Wo kommt das her?

Grüße
 
Habe gestern mein Script für meinen Mod erweitert, hatte dann aber im Spiel ein seltsames Verhalten.

Code:
Message Property DRWEffectsMsgMain Auto

Function MenuMain()
    int selected = DRWEffectsMsgMain.Show(EffectQuest.EffectsEnabled)

Event OnEquipped(Actor reader)
     MenuMain()
EndEvent

Die Property zeigt im CK auf das richtige Menu, wenn ich Auto fill mache. Im Spiel wird aber anschliessend das falsche Menu aufgerufen und zwar das für Tiefenunschärfe. Ich kann mir das nur so erklären, dass das Auto im Spiel zickt. Oder gibt es sonst eine Erklärung dafür?

Edit:
Bin ja auch ein Vollidiot, dass ich die letzte BSA nicht gelöscht habe. Problem erledigt.
 
Zuletzt bearbeitet:
Sowiet funktioniert alles in meinem Mod, allerdings merke ich, dass da doch zuviel Performance gesogen wird, wenn alle Filter aktiv sind.
Kann das sicher teilweise begrenzen, indem ich beim Initialisieren des Mods nicht mehr alle Filter aktiviere und auf einen Default-Wert stelle. Da läuft halt doch ein Filter mit, obwohl einer keine Verstärkung der Sättigung benötigt.
Aber im Script selbst gibt es möglicherweise ebenfalls noch Potential zur Optimierung:

Code:
ImageSpaceModifier[] Property DRWFxSaturation  Auto
ImageSpaceModifier[] Property DRWFxBrightness  Auto
ImageSpaceModifier[] Property DRWFxContrast  Auto
ImageSpaceModifier[] Property DRWFxColor  Auto
ImageSpaceModifier[] Property DRWFxDof  Auto
ImageSpaceModifier[] Property DRWFxBloom  Auto

Das hier sind Arrays von durchnummerierten Filtern: 6 Kanäle zu je 13 Filtern(=Einstellungen).
An sich sind das ja nur Referenzen und benötigt werden im Maximal-Fall genau 6 Filter, je einen pro Kanal.
Jetzt frage ich mich, ob ich die Arrays jeweils zur Laufzeit erstellen soll, wenn das Buch geöffnet wird und wieder auf null zu setzen, wenn es geschlossen wird.
Stelle mir das aber relativ komplex vor, und ich habe keine Lust, für 6x13 Filter eine Ininitialisierung und Entladung zu schreiben, wenn das keinen deutlichen Vorteil bei der Performance bringt.
Im CK kann man ja Arrays sehr komfortabel auffüllen, aber für die Automatisierung müsste es eine Schleife geben, die nach Filtern sucht, etwa GetFx("DRWFxDof" + x) Gibt es eine Möglichkeit mit erstellten Strings nach Forms zu suchen?
 
Gibt es eine Methode, die die Tragfähigkeit des SPielers beeinflusst? Ich hab nämlich irgendwie nichts gefunden...

EDIT: Und noch etwas: Keine Direkte Scriptfrage, aber was genau soll das Notepad alles können, wenn man es Papyrus-Fähig macht? Mehr als dass die Scripte in schönen bunten Farben hinterlegt werden passiert nämliich nicht :D Ich denke irgendetwas von einer AutoVervollständigung gelesen zu haben in dem Tutorial... Und das mit dem Compilen funktioniert auch nicht so ganz (Hab zu Testzwecken nen offensichtlichen Fehler eingebaut und auf Compile geklickt --> Nichts ist passiert).
Welche Fehler könnte ich gemacht haben? Und sorry wegen der ungenauen Beschreibung aber in dem Tutorial dafür habe ich nicht wirklich viel verstanden :D
 
Zuletzt bearbeitet:
Das hat bei mir auch nocht besser geklappt, aber die Farbunterlegung ist schon nützlich. Ich entwickle mit Notepad++, paste den Code anschliessend rüber und kompiliere im CK.
 
  • Like
Reaktionen: Dacri
Öffne den Papyrus Script Manager und mach einen rechtsklick=>Compile
 
Hallo,


irgendwie scheint es nicht so recht zu klappen.

Ich habe folgendes script geschrieben.

Code:
Scriptname MR_transport_Nereleft extends ObjectReference  

Message Property MR_Nereleft Auto
objectReference property MR_TransMarkerREF auto

Event OnEquipped(Actor akActor)

    int choice = MR_Nereleft.Show()
    if (choice == 0)
        ; nichts
    elseif (choice == 1)
        ; akActor.moveto(MR_TransMarkerREF)
             ; utility.wait(2.5)
        game.getPlayer().moveTo(MR_TransMarkerREF)

    else
        ; nichts
    endif

endevent

MR_Nereleft ist eine Message.
MR_TransMarkerREF ist die Reference auf einen TeleportMarker.

Wenn ich den Ring im Spiel anziehe, passiert nichts. Fehlermeldungen beim "Speichern" des Scripts kommen aber nicht mehr.

Es soll so funktionieren, das wenn man ihn anzieht man sofort nach Nereleft (zu Marker Position) teleportiert wird.

Grüße
 
Hallo,

ich bräuchte auch Hilfe ich möchte eine Brücke, die durch ein Schalter aktiviert wird, erstellen und weis nicht wie man das hinbekommt.Sowas ähnliches möchte ich auch mit eine Tor und einem Schalter machen.

Könnt ihr mir beschreiben wie man das einstellt?

Viel Dank im vorraus

MfG,

Junuz