E
Ehemaliger Benutzer
Gast
Ich denke, es wäre eine gute Idee verschiedene Beispielskripte für mehr oder weniger komplexe Aufgaben in einem Thread zu sammeln. Dass erspart dann womöglich einzelnen Moddern die Notwendigkeit das Rad für seine Zwecke neu erfinden zu müssen.
Nachdem ich eines meiner - einfacheren - Scripte ins CK Wiki rein gestellt habe (um zu sehen wie das mit der Wiki Software so funktioniert) mache ich hier den Anfang mit ein paar seit langem tadellos funktionierenden Beispielen.
Vielleicht hilft es ja jemandem weiter.
=================================
Hinweis:
Wenn ihr auf den Player zugreifen wollt, so vermeidet den unnötigen Einsatz der Funktion GetPlayer(). Eine Actor Property mit der Referenz PlayerRef arbeitet bis zu 1000 mal schneller.
z.B:
Actor Property PlayerRef Auto
PlayerRef.Additem(Objekt, Menge)
=================================
Ein einfaches Uhrzeitskript, dass über einen Magic Effekt aufgerufen werden kann.
Ein "Lichtquellen" Aktivator der automatisch die Innenbeleuchtung von Tag auf Nacht und umgekehrt umschalten kann.
Ein einfaches Sortierskript. Ich habe dabei bewusst auf eine Formlist verzichtet, da man hiermit mehr Kontrolle über den Sortier Vorgang hat.
Ein Transportabler Beutel. Dafür ist es allerdings notwendig, den in Skyrim vorhandenen statischen Beutelmesh - Clutter\Container\Pouch01.nif in ein Misc Object hinein zu operieren.
Fragen / Anregungen / Verbesserungsvorschläge?
Nachdem ich eines meiner - einfacheren - Scripte ins CK Wiki rein gestellt habe (um zu sehen wie das mit der Wiki Software so funktioniert) mache ich hier den Anfang mit ein paar seit langem tadellos funktionierenden Beispielen.
Vielleicht hilft es ja jemandem weiter.
=================================
Hinweis:
Wenn ihr auf den Player zugreifen wollt, so vermeidet den unnötigen Einsatz der Funktion GetPlayer(). Eine Actor Property mit der Referenz PlayerRef arbeitet bis zu 1000 mal schneller.
z.B:
Actor Property PlayerRef Auto
PlayerRef.Additem(Objekt, Menge)
=================================
Ein einfaches Uhrzeitskript, dass über einen Magic Effekt aufgerufen werden kann.
Code:
ScriptName NNWUhrzeitScript Extends ActiveMagicEffect
Message Property NNWZeitAnzeigen Auto
GlobalVariable Property GameHour Auto
float Function ZeigeZeit()
Float Time = GameHour.GetValue()
Int Std = Math.Floor(Time) ;Entfernt die Nachkommastelle der Float Variable um diese als Integer nutzen zu können
Time = Time - Std
Time = ((Time / 5)*3)
Time = Time + Std
Return Time
EndFunction
Event OnEffectStart(Actor akTarget,Actor akCaster)
NNWZeitAnzeigen.Show(ZeigeZeit())
EndEvent
Ein "Lichtquellen" Aktivator der automatisch die Innenbeleuchtung von Tag auf Nacht und umgekehrt umschalten kann.
Code:
Scriptname NNWTagesLichtSkript extends ObjectReference
GlobalVariable Property GameHour Auto
GlobalVariable Property NNWweiter Auto
Int Property Intervall = 60 Auto
Keyword Property NNWTagesLichtQuelle Auto
Keyword Property NNWLampenReferenz Auto
ObjectReference Property TagesLicht Auto Hidden
ObjectReference Property Lampe Auto Hidden
Event OnInit()
RegisterForSingleUpdate(10)
TagesLicht = GetLinkedRef(NNWTagesLichtQuelle)
Lampe = GetLinkedRef(NNWLampenReferenz)
EndEvent
Event OnUpdate()
Float Zeit = GameHour.GetValue()
Bool weiter = NNWweiter.GetValue()
If(Zeit > 19 || Zeit < 7)
Disable()
TagesLicht.Disable(True)
Lampe.Enable(True)
Else
EnableNoWait()
TagesLicht.Enable()
Lampe.Disable(True)
EndIf
If weiter
RegisterForUpdate(Intervall)
Else
UnregisterForUpdate()
EndIf
EndEvent
Ein einfaches Sortierskript. Ich habe dabei bewusst auf eine Formlist verzichtet, da man hiermit mehr Kontrolle über den Sortier Vorgang hat.
Code:
ScriptName NNWMaterialSortierSkript Extends ObjectReference
Import Utility
Keyword Property NNWErz Auto
Keyword Property NNWBarren Auto
Keyword Property NNWMaterial Auto
ObjectReference Property ErzKiste Auto Hidden
ObjectReference Property BarrenKiste Auto Hidden
ObjectReference Property MaterialKiste Auto Hidden
MiscObject[] Property MaterialListe Auto
Actor Property PlayerRef Auto
int Menge = 0
Function MaterialEinlagern()
ErzKiste = GetLinkedRef(NNWErz)
BarrenKiste = GetLinkedRef(NNWBarren)
MaterialKiste = GetLinkedRef(NNWMaterial)
Menge = PlayerRef.GetItemCount(MaterialListe[0])
if(Menge >0)
ErzKiste.Additem(MaterialListe[0], Menge)
PlayerRef.RemoveItem(MaterialListe[0], Menge)
endif
Menge = PlayerRef.GetItemCount(MaterialListe[1])
if(Menge > 0)
ErzKiste.Additem(MaterialListe[1], Menge)
PlayerRef.RemoveItem(MaterialListe[1], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[2])
if(Menge > 0)
ErzKiste.Additem(MaterialListe[2], Menge)
PlayerRef.RemoveItem(MaterialListe[2], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[3])
if(Menge > 0)
ErzKiste.Additem(MaterialListe[3], Menge)
PlayerRef.RemoveItem(MaterialListe[3], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[4])
if(Menge > 0)
ErzKiste.Additem(MaterialListe[4], Menge)
PlayerRef.RemoveItem(MaterialListe[4], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[5])
if(Menge > 0)
ErzKiste.Additem(MaterialListe[5], Menge)
PlayerRef.RemoveItem(MaterialListe[5], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[6])
if(Menge > 0)
ErzKiste.Additem(MaterialListe[6], Menge)
PlayerRef.RemoveItem(MaterialListe[6], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[7])
if(Menge > 0)
ErzKiste.Additem(MaterialListe[7], Menge)
PlayerRef.RemoveItem(MaterialListe[7], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[8])
if(Menge > 0)
ErzKiste.Additem(MaterialListe[8], Menge)
PlayerRef.RemoveItem(MaterialListe[8], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[9])
if(Menge > 0)
BarrenKiste.Additem(MaterialListe[9], Menge)
PlayerRef.RemoveItem(MaterialListe[9], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[10])
if(Menge > 0)
BarrenKiste.Additem(MaterialListe[10], Menge)
PlayerRef.RemoveItem(MaterialListe[10], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[11])
if(Menge > 0)
BarrenKiste.Additem(MaterialListe[11], Menge)
PlayerRef.RemoveItem(MaterialListe[11], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[12])
if(Menge > 0)
BarrenKiste.Additem(MaterialListe[12], Menge)
PlayerRef.RemoveItem(MaterialListe[12], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[13])
if(Menge > 0)
BarrenKiste.Additem(MaterialListe[13], Menge)
PlayerRef.RemoveItem(MaterialListe[13], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[14])
if(Menge > 0)
BarrenKiste.Additem(MaterialListe[14], Menge)
PlayerRef.RemoveItem(MaterialListe[14], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[14])
if(Menge > 0)
BarrenKiste.Additem(MaterialListe[14], Menge)
PlayerRef.RemoveItem(MaterialListe[14], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[15])
if(Menge > 0)
BarrenKiste.Additem(MaterialListe[15], Menge)
PlayerRef.RemoveItem(MaterialListe[15], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[16])
if(Menge > 0)
BarrenKiste.Additem(MaterialListe[16], Menge)
PlayerRef.RemoveItem(MaterialListe[16], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[17])
if(Menge > 0)
BarrenKiste.Additem(MaterialListe[17], Menge)
PlayerRef.RemoveItem(MaterialListe[17], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[18])
if(Menge > 0)
BarrenKiste.Additem(MaterialListe[18], Menge)
PlayerRef.RemoveItem(MaterialListe[18], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[19])
if(Menge > 0)
BarrenKiste.Additem(MaterialListe[19], Menge)
PlayerRef.RemoveItem(MaterialListe[19], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[20])
if(Menge > 0)
MaterialKiste.Additem(MaterialListe[20], Menge)
PlayerRef.RemoveItem(MaterialListe[20], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[21])
if(Menge > 0)
MaterialKiste.Additem(MaterialListe[21], Menge)
PlayerRef.RemoveItem(MaterialListe[21], Menge)
EndIf
Menge = PlayerRef.GetItemCount(MaterialListe[22])
if(Menge > 0)
MaterialKiste.Additem(MaterialListe[22], Menge)
PlayerRef.RemoveItem(MaterialListe[22], Menge)
EndIf
EndFunction
Event OnActivate(ObjectReference akActionRef)
MaterialEinlagern()
EndEvent
Ein Transportabler Beutel. Dafür ist es allerdings notwendig, den in Skyrim vorhandenen statischen Beutelmesh - Clutter\Container\Pouch01.nif in ein Misc Object hinein zu operieren.
Code:
ScriptName NNWBeutelSkript extends ObjectReference
ObjectReference Property NNWStatischeTruhe Auto
MiscObject Property NNWBeutel Auto
Sound Property KlapperKlapper Auto
Message Property NNWTascheNachricht Auto
ObjectReference Ich
Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer)
If(akOldContainer && !akNewContainer)
Ich = (Self as ObjectReference)
Ich.BlockActivation()
ElseIf(akNewContainer == NNWStatischeTruhe)
NNWTascheNachricht.Show()
Utility.Wait(1)
NNWStatischeTruhe.RemoveItem(NNWBeutel, 1, False)
Game.GetPlayer().AddItem(NNWBeutel, 1, True)
endIf
endEvent
Event OnEquipped(Actor akActor)
If(akActor == Game.GetPlayer())
Utility.Wait(1)
KlapperKlapper.Play(Game.GetPlayer())
NNWStatischeTruhe.Activate(Game.GetPlayer())
endif
EndEvent
Event OnActivate(ObjectReference akActionRef)
If(akActionRef == Game.GetPlayer())
If(Game.GetPlayer().IsSneaking())
KlapperKlapper.Play(Game.GetPlayer())
NNWStatischeTruhe.Activate(Game.GetPlayer())
Else
Ich.Activate(akActionRef, True)
EndIf
EndIf
EndEvent
Fragen / Anregungen / Verbesserungsvorschläge?
Zuletzt bearbeitet von einem Moderator: