Kamera Event

TripleBlade

Fremdländer
Hallo, ich hatte vor einigen Tagen entdeckt, dass es ein Event gibt, dass ausgeführt wird, wenn der Spieler ein Objekt ansieht.
Jetzt wo ich es brauche, finde ich es nicht mehr... :?
Weiß jemand zufällig, wie dieses Event heißt?
mfg, TripleBlade
 
Ja, danke. Das war OnCrosshairRefChange.
Ich bekomme mein Script leider aber nicht dazu das auszuführen.
Ich habe einen NPC, der, wenn man ihn anguckt dieses Event ausführen soll
Code:
Scriptname dunchangeActorLong extends ObjectReference
OBJECTREFERENCE PROPERTY storedActor AUTO

EVENT onLoad()
           SELF.GetBaseObject().RegisterForCrosshairRef()
          ;Hier noch ein paar Zeilen zum ausfuehren, die ganz sicher funktionieren
endevent

Event OnCrosshairRefChange(ObjectReference ref)
          Debug.Trace("Crosshair had " + ref + " targeted.")
          ;Code zum ausfuehren, Event scheint aber nicht ausgefuehrt zu werden
          SELF.GetBaseObject().SetName(storedActor.GetBaseObject().GetName())
EndEvent
Wie erreiche ich, dass das Event ausgeführt wird? Ich verwende Utility.wait, das könnte natürlich auch unterbinden, dass das Event überhaupt ausgeführt wird. So wie ich das verstanden habe, ist aber jedes Event unabhängig vom anderen... oder geht das CK das Script Zeile für Zeile durch (ich hoff doch nicht)?
 
Zuletzt bearbeitet:
Nach ein paar Tests habe ich das Event dazu bekommen, das es ausgeführt wird, sehr zuverlässig funktioniert das allerdings nicht. Mal geht es, mal nicht, manchmal dauert es eine Weile bis es erneut getriggert wird. Zudem wird das Event nicht nur beim fokusieren des Objektes ausgelöst, sondern auch dann, wenn das Fadenkreuz weg bewegt wird. Deshalb wäre es ratsam eine IF-Bedingung einzufügen. Versuche es mal mit diesem Skript, ich gebe keine Garantie, dass es funktioniert.:?

Code:
Scriptname dunchangeActorLong extends ObjectReference

OBJECTREFERENCE PROPERTY storedActor AUTO

EVENT OnInit()
        RegisterForCrosshairRef()
        ;Debug.messagebox("Event registered")
        ;Hier noch ein paar Zeilen zum ausfuehren, die ganz sicher funktionieren
endevent

Event OnCrosshairRefChange(ObjectReference ref)
        if ref == self
          ;Debug.messagebox("Crosshair had " + ref + " targeted.")
          ;Code zum ausfuehren, Event scheint aber nicht ausgefuehrt zu werden
          SELF.GetBaseObject().SetName(storedActor.GetBaseObject().GetName())
        endif
EndEvent
 
  • Like
Reaktionen: TripleBlade
Danke, das funktioniert so wie es soll. Allerdings muss ich immer zweimal auf den Actor gucken,
bevor der den Namen ändert (scheint unmöglich zu sein, das direkt zu verändern. Ist ja auch logisch... das Event wird ja erst ausgeführt nachdem der Spieler begonnen hat auf den Actor zu sehen, nicht davor).
Auch mit while Schleife geht das nicht. Ansonsten funktioniert alles immer zuverlässig, also denke ich, da werde ich jetzt nichts mehr ändern.
mfg, TripleBlade