"self" in custom Funktionen nicht korrekt vorhanden

  • Moin zusammen,

    ich benötige mal eure Hilfe: In all meinen Skripten hatte ich bisher das Problem, dass ich beim Ansprechen von "self.spec_modName" aus eigenen (mit registerFunctions registrierten) Funktionen nur 'nil' geliefert bekomme. Bei bereits verfügbaren Funktionen und EventListenern wie z.B. 'onLoad' oder 'onUpdate' existiert das Problem nicht. Ich habe mir mal testweise den Wert von 'self' rekursiv printen lassen, einmal aus einer custom Funktion und einmal aus onLoad. Wie in der Log zu sehen, ist 'self' in der custom Funktion grob unvollständig, was auch der Grund für das Fehlen des spec-Tables ist. Einige Code-Ausschnitte:

    Zusätzlich besteht das Problem, dass ich mir (siehe Code) erstmal einen Spec Table erstellen muss, da der ursprüngliche ein anderen Titel hat ("self.spec_FS22_modName.specializationName"). Ist das normal?

    Danke im Voraus und viele Grüße

    Vector Man

  • Moin Vector Man!

    Uff, registerFunctions() habe ich bei den Scripten, die ich bisher erstellt habe, noch nie benutzt, daher kann ich da nicht viel zu sagen.

    Die Frage ist jetzt, wenn Du Dir mal einen (möglichst kurzen) Script-Mod eines anderen Modders suchst (möglichst aus dem ModHub) der registerFunctions() enthält, und dann dort testweise mal printTableRecursively() einbaust, sieht das dann anders aus? Vielleicht ließe sich die Problematik durch die dann gewonnenen Erkenntnisse etwas einkreisen.

    NACHTRAG:

    Wie und wo wird TopSaw:cutTop(noEventSend) aufgerufen? Wird self durch den Doppelpunkt übergeben? Oder ist self als aufrufender Parameter angegeben? Also wie folgt:

    TopSaw:cutTop()

    TopSaw.cutTop(self)

    Hier ein Beitrag mit Video zu dem Thema:

    PeterAH
    20. Juni 2021 um 15:46

    LG, Peter

    Einmal editiert, zuletzt von PeterAH (30. Oktober 2022 um 11:33)

  • Oh Mann, hab den Wald vor lauter Bäumen nicht gesehen (wortwörtlich :D)

    Habe die cutTop() immer aus der Klasse aufgerufen statt aus self, also TopSaw:cutTop() statt self:cutTop(). Eigentlich logisch :)

    Jedenfalls, vielen Dank für die schnelle Hilfe. Echt ein tolles Forum, auch für Skripter :D

    LG


    Virtual, in Real Life or Somewhere in Between!

    3 Mal editiert, zuletzt von Vector Man (2. November 2022 um 18:05)