Skriptthread zum Creation Kit

Normalerweise sollte es reichen, wenn du einfach im ReferenceWIndow den Schalter und die Brücke per Parent verbindest.

Nocheinmal meine Frage: GIbt es eine Methode, die die Tragfähigkeit des SPielers beeinflusst?
 
Ich stehe mit der neuen Scriptsprache wirklich auf Kriegsfuß!
Folgendes Script habe ich einem MagicEffect zugefügt, doch der Effekt tritt einfach nicht ein:
Code:
Scriptname DrReEsEssential   

ReferenceAlias property akTarget auto

Event OnEffectStart(Actor akTarget, Actor akCaster)
	Actor target = akTarget.GetActorReference()
	ActorBase targetBase = target.GetActorBase()
    if (target.IsEssential())
        targetBase.SetEssential(False)
        Debug.Notification("Dieser NPC ist nicht mehr Essential")
    else
        targetBase.SetEssential()
        Debug.Notification("Dieser NPC ist nun Essential")
    endif
endEvent
 
Scriptname DrReEsEssential extends ActiveMagicEffect

ReferenceAlias property akTarget auto


Event OnEffectStart(Actor akTarget, Actor akCaster)
Actor target = akTarget
if (target.IsEssential())
target.SetEssential(False)
Debug.Notification("Dieser NPC ist nicht mehr Essential")
else
target.SetEssential()
Debug.Notification("Dieser NPC ist nun Essential")
endif
endEvent

Wenn Ich dies richtig interpretiere benötigst du lediglich eine Ziel Referenz.
 
Zuletzt bearbeitet von einem Moderator:
Ah, danke, so langsam verstehe ich die Sprache. Nun habe ich aber noch ein letztes Problem: Die Wirkung fehlt, ich bekomme dauernd die Meldung "Dieser NPC ist nun Essential", egal ob er es vorher schon war oder nicht, wenn nicht wird er aber nicht Essential. Mein aktuelles Script:

Code:
Scriptname DrReEsEssential   extends ActiveMagicEffect

ReferenceAlias property akTarget auto

Event OnEffectStart(Actor akTarget, Actor akCaster)
	Actor target = akTarget.GetActorReference()
	ActorBase targetBase = target.GetActorBase()
    if (targetBase.IsEssential())
        targetBase.SetEssential(False)
        Debug.Notification("Dieser NPC ist nicht mehr Essential")
    else
        targetBase.SetEssential()
        Debug.Notification("Dieser NPC ist nun Essential")
    endif
endEvent
 
Code:
Event OnEffectStart(Actor akTarget, Actor akCaster)
Actor target = akTarget
bool status = target.GetActorBase().IsEssential()
if(status == true)
target.SetEssential(False)
Debug.Notification("Dieser NPC ist nicht mehr Essential")
else
target.SetEssential()
Debug.Notification("Dieser NPC ist nun Essential")
endif
endEvent
 
DIesen Script habe ich aus dem CK-Wiki, etwas abgeändert...

PHP:
Scriptname RHOSCarrying   
{Hauptskript von RHOS-Carrying}
Event OnObjectEquipped(Form akBaseObject)
  if akBaseObject as Weapon
    Debug.Trace("TestDebug")
  endIf
endEvent

Es soll immer, wenn eine Waffe irgendeiner Art angelegt wird diese Debugmeldung kommen (Der eigentliche Effekt soll dann natürlich ein anderer sein, aber ich wollte zuerst mal das Event an sich testen).
Im SPiel tut sich allerdings überhaupt nichts, weis jemand, wieso? Vielen dank, ich bin leider in Papyrus noch nicht so drin :)

EDIT: Mir ist gerade eine Vermutung gekommen dass das Skript garnicht läuft...In Oblivion hätte ich das ganze auf eine QUest legen müssen, muss ich das hier auch?
 
Zuletzt bearbeitet:
DIesen Script habe ich aus dem CK-Wiki, etwas abgeändert...

PHP:
Scriptname RHOSCarrying   
{Hauptskript von RHOS-Carrying}
Event OnObjectEquipped(Form akBaseObject)
  if akBaseObject as Weapon
    Debug.Trace("TestDebug")
  endIf
endEvent

Es soll immer, wenn eine Waffe irgendeiner Art angelegt wird diese Debugmeldung kommen (Der eigentliche Effekt soll dann natürlich ein anderer sein, aber ich wollte zuerst mal das Event an sich testen).
Im SPiel tut sich allerdings überhaupt nichts, weis jemand, wieso? Vielen dank, ich bin leider in Papyrus noch nicht so drin :)

EDIT: Mir ist gerade eine Vermutung gekommen dass das Skript garnicht läuft...In Oblivion hätte ich das ganze auf eine QUest legen müssen, muss ich das hier auch?

Sofern bei dir der Trace nicht angezeigt wird ist meine erste Vermutung das dir die INI Settings fehlen. Diese sind default auf FALSE und somit ist die Debug Klasse unnütz. Siehe:
http://www.creationkit.com/INI_Settings_(Papyrus)
EDIT: Um zu kontrolliere ob das Skript läuft empfehle ich die MessageBox funktion.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Dacri
Sofern bei dir der Trace nicht angezeigt wird ist meine erste Vermutung das dir die INI Settings fehlen. Diese sind default auf FALSE und somit ist die Debug Klasse unnütz. Siehe:
http://www.creationkit.com/INI_Settings_(Papyrus)
EDIT: Um zu kontrolliere ob das Skript läuft empfehle ich die MessageBox funktion.

Trace...Davon hab ich bis gerdae eben nie was gehört, tja das komment eben von den Beispielscripts :D .Ja, ich werds mal mit MessageBox versuchen, danke! :)
 
Zuletzt bearbeitet:
Code:
Event OnEffectStart(Actor akTarget, Actor akCaster)
Actor target = akTarget
bool status = target.GetActorBase().IsEssential()
if(status == true)
target.SetEssential(False)
Debug.Notification("Dieser NPC ist nicht mehr Essential")
else
target.SetEssential()
Debug.Notification("Dieser NPC ist nun Essential")
endif
endEvent

Funktioniert leider immer noch nicht, gleiches Problem. Ich musste das Script wegen den Bezügen noch etwas abändern, damit der Compiler nicht meckert, mein aktuelles 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
Hoffentlich findet sich eine Lösung, ich werde nämlich langsam ratlos :(
 
Hallo, ich komme mit diesem neuen Scriptsystem nicht klar.

Kann mir kurz jemand erklären, was dieses neue System sich vom alten Oblivion System unterscheidet und was man neuerdings beachten muss? Muss man die Scripts neu umschreiben? Gibt es irgendwo eine Liste mit den Scriptbefehlen? Oder gibt es irgendwo ein vernünftiges Tutorial?

Ich bin für jede Hilfe dankbar.

LG
 
Hallo,

kann man irgendwie von einem Script aus auf das Leben und das Mana des Spielers zugreifen, also es auslesen und verändern?
Und ist es möglich den Schaden von einer gegnerischen Atacke auszulesen?

Danke
 
Zuletzt bearbeitet:
Hallo,

kann man irgendwie von einem Script aus auf das Leben und das Mana des Spielers zugreifen, also es auslesen und verändern?
Danke

Ja das ist möglich!
Die Befehle dafür sind
GetActorValue("Health") --> Hiermit wird z.B. die Lebensenergie abgefragt
ModActorValue("Health", 100) --> Hiermit wird z.B. die Lebensenergie um 100 erhöht
SetActorValue("Health", 100) --> Hiermit wird z.B. die Lebensenergie genau auf 100 gesetzt, unabhängig vom ursprünglichen Wer.

Das funktioniert mit allen 3 Attributen und allen 18 Fertigkeiten.
 
  • Like
Reaktionen: adinsx
Ich suche für meinen Mod jemanden, der mir 2 Scripte erstellen kann. Undzwar:
1.) Sobald sich das Spielerpferd in der ´´Aktivatorbox´´ befindet, soll es zu einem X-Marker gehen. Das soll das Einparken erleichtern :D
2.) Bei Regen sollen Objekte aktiviert werden.

Ihr bekommt dann natürlich auch Credits
 
2.) Bei Regen sollen Objekte aktiviert werden.

Es gibt ne Condition Function "IsRaining" die man im Objektfenster unter den Conditions direkt eintragen kann ohne Script. Ich seh mir das heut am Abend mal genauer an, kann mir aber nicht vorstellen dass man damit in Kombination mit "Initially Diasabled" was machen kann in der Richtung. Das wäre fast zu einfach... ^^
 
Zu 1.: Das läuft mit Packages, dazu habe ich keine Ahnung. Das Event, das nötig wäre, lautet OnTrigger.

Zu 2.: Versuche es mal mit einem Quest-Script:

Code:
ScriptName <ScriptNameEinfügen> extends Quest

ObjectReference Property Obj1
ObjectReference Property Obj2
ObjectReference Property Obj3
ObjectReference Property Obj4
; und so weiter, für jedes Objekt eine Property

Event OnInit()

registerforupdate(1)
gotostate("s")

EndEvent

State s
   Event OnUpdate()
      weather w = weather.getcurrentweather()
     if(w == <Regen-Status>)  ; Ich kenne die ID für die Wetter-Stadien nicht, muss man nachschauen
        Obj1.enable(true)
        Obj2.enable(true)
        ; und so weiter
     else
        if(Obj1.isdisabled())
           gotostate("s")
        else
           Obj1.disable(true)
           Obj2.disable(true)
           ; und so weiter
        endif
     endif
   EndEvent
EndState

Den Properties weist Du die Objekte zu.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: MaGlas
Wow danke für die schnelle hilfe. Hab auch die WetterID´s gefunden: SkyrimOvercastRain
SkyrimOvercastRainFF
SkyrimOvercastRainMA
SkyrimOvercastRainRE
SkyrimOvercastRainTU
SkyrimOvercastRainVT
SkyrimStormRain
SkyrimStormRainFF
Was muss ich also dran ändern, damit es für mehrere Wetter gilt?

SkyrimStormRainTU