Allgemein
News
News-Archiv
Partner
Netzwerk
Banner
Header
Media
Downloads
Impressum

The Elder Scrolls
Arena
Daggerfall
Spin-offs
Romane
Jubiläum
Reviews
Welt von TES
Lore-Bibliothek
Namens-
generator

FRPGs

Elder Scrolls Online
Allgemein
Fraktionen
Charakter
Kargstein
Technik
Tamriel-
Manuskript

Media

Skyrim
Allgemein
Lösungen
Tipps & Tricks
Steam-Kniffe
Review
Media
Plugins & Mods

Oblivion
Allgemein
Lösungen
Tipps & Tricks
Technik
Charakter
Media
Plugins & Mods
Kompendium

Morrowind
Allgemein
Lösungen
Tipps & Tricks
Media
Plugins & Mods

Foren
The Elder Scrolls Online
Hilfe & Diskussion

Skyrim
Hilfe & Diskussion
Plugins & Mods

Ältere TES-Spiele
TES-Diskussion
Oblivion-Plugins
Morrowind-Plugins

Community
Taverne zum Shalk
Adventures of Vvardenfell
Tales of Tamriel
Ergebnis 1 bis 14 von 14

Thema: 4 Skripttechnische Fragen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Wie die meisten OBSE-Funktionen ist (wahrscheinlich) auch SetName für einen Gebrauch mit Referenz-, als auch mit Object-ID ausgelegt.
    Code:
    [Ref-Variable, Referenz].SetName "Name"
    sollte genauso funktionieren, wie
    Code:
    SetName "Name" [Ref-Variable, Base Object]

    Wenn beides bereitgestellt wird, also z.B.:
    Code:
    [Ref-Variable, Referenz].SetName "Name" [Ref-Variable, Base Object]
    sollte das Base Object "gewinnen", es würde also so wirken als ob die Referenz gar nicht angegeben wurde.

    Ergo: ObjectID:ref kannst du einfach weglassen.



    Bei dir sollte das Problem allerdings darin liegen, dass du myself nicht als Variable definiert hast.
    Dazu schreibst du irgentwo vor das SetName (ich würde den Anfang des Script nach dem scn und dem ersten Begin-Block empfehlen, jeweils mit Leerzeilen abgegrenzt) einmal ref myself.
    Damit das ganze auch funktioniert muss noch irgentwo vor das SetName-Kommando hin: set myself to GetSelf ;(zumindest solange dass ein ObjectScript auf dem gewünschten Object ist).


    Zeig mal dein ganzes Script, dann geht die Fehlersuche eigentlich um einiges leichter.

  2. #2
    Danke für den Hinwies, ich hatte für die myself-Variable versehentlich den Datentyp short anstatt ref gewählt.

    Mir ist jedoch gerade aufgefallen, dass die SetName-Funktion anscheinend einen schweren Fehler hat:
    Ändere ich den Namen eines Objektes zB. von "Name1" auf "Name2" funktioniert dies problemlos, lade ich danach meinen Spielstand neu wird immer noch "Name2" angezeigt.

    Lässt sich dieser Fehler irgendwie verhindern? So wäre die Funktion ansonsten nicht für mich zu gebrauchen.

  3. #3
    Wie neuladen?

    Einen Spielstand, wo du den Dateinamen noch nicht geändert hast?

    Falls ja, versuch mal Oblvion zu beenden und erst nach einem Neustart den Save zu laden, dann sollte der Name wieder der alte sein.
    Sollte das aber wirklich der Fall sein würde ich dir empfehlen, das im OBSE-Thread zu melden damit der Bug behoben werden kann.

  4. #4
    So, neue Frage:

    Ich würde gerne die ID von Creatures per Skript abprüfen, zB

    Ist die target-Creature vom Typ "CreatureBearBlack"? oder
    Ist die target-Creature vom Typ"CreatureRat"?

    Gibt es dafür eine passende Funktion? Ich habe gerade im CS-Wiki nachgeforscht, konnte aber leider nichts passendes finden.

  5. #5
    um was für eine art von ziehl geht es? bei einem Zauber wärs ganz einfach:
    Code:
    scn targetspellSCRIPT
    
    ref myself
    
    begin scripteffectstart
    	set myself to getself
    	if myself == idDerKreatur
    		;hier kommt des rein was dann passiern soll
    	endif
    end
    (des script muss dan ein magic effect sein)

    Oder bei einem Trigger:
    Code:
    scn targettriggerSCRIPT
    
    ref myself
    ;short triggered
    
    begin ontrigger
    	;if triggered == 0 ;dieser block (und die variable oben) wird benötigt,
    		;set triggered to 1 ;wenn des Script was bei der richtigen Kreatur nur ein mal ausgeführt werden soll
    		set myself to getactionref
    		if myself == idDerKreatur
    			;hier kommt des rein was dann passiern soll
    		endif
    	;endif
    end
    Geändert von Atoom (22.03.2008 um 15:55 Uhr) Grund: uups, return vergessen

  6. #6
    Wenn du eine Referenz überprüfen willst kannst du das Script von Atoom verwenden (auch wenn ich da eher GetIsReference verwenden würde).


    Wenn du aber das BaseObject überprüfen willst kannst du das mittels GetIsID tun (oder du nimmst Atooms Script und gehst den Umweg über GetBaseObject).

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •