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
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 21

Thema: Skripten: Zaubereffekte und Wasseranstieg

  1. #1

    Skripten: Zaubereffekte und Wasseranstieg

    Hallo

    Ich möchte gerne eine Statue machen, die beim Wirken eines bestimmten Zaubereffekts eine Reaktion hervorruft. Gut, das ist ja nicht schwer. Aber ich möchte nicht die Reaktion durch einen ganz bestimmten Zauber hervorrufen (zB "StandardCalmTarget2Apprentice"), sondern durch alle Zauber einer Art (also zB alle "Beruhigungs"-Zauber).
    Wie setze ich dies per Skript um?

    Andere Frage:
    Ist es möglich über Skript per Schalter den Wasserpegel ansteigen zu lassen? Also nicht schlagartig, sondern eher langsam, da sich der Spieler gleichzeitig in der selben Zelle befinden soll.

  2. #2
    Zitat Zitat von Invidious Beitrag anzeigen
    [1]sondern durch alle Zauber einer Art (also zB alle "Beruhigungs"-Zauber).
    Wie setze ich dies per Skript um?

    [2]Ist es möglich über Skript per Schalter den Wasserpegel ansteigen zu lassen?
    1. Begin OnMagicEffectHit ####
    #### = gewünschter Effekt.
    2. Uah. Nicht, daß ich wüßte.

  3. #3
    Danke, dieser Befehl wird mir noch sehr hilfreich sein.

    zum 2. Also langsames Ansteigen ist auch nicht unbedingt nötig, es kann auch eine schlagartige Änderung der Wasserhöhe sein, falls dies möglich ist.

  4. #4
    wie wärs mit vielen kleinen schlagatigen Anstiegen hintereinander, mit nem zeitintervall dazwischen?

  5. #5

  6. #6
    Ist wie es aussieht nicht möglich ohne OBSE....

    Naja, dann werde ich mein "Problem" wohl ein wenig anders lösen müssen.

  7. #7
    So, hab noch ein Problem.

    Bei Begin OnMagicEffectHit gehört eine 4-stellige Buchstabenfolge hin, welche den Zaubereffekt beschreibt. Woher soll ich jetzt wissen, was ich hier nehmen soll?

    Und wie würde das Resultat-Skript aussehen, das beim Anwenden des gewünschten Zaubers einen Activator auslösen soll?

  8. #8
    Zitat Zitat von Invidious Beitrag anzeigen
    Bei Begin OnMagicEffectHit gehört eine 4-stellige Buchstabenfolge hin, welche den Zaubereffekt beschreibt. Woher soll ich jetzt wissen, was ich hier nehmen soll?
    Aus dem CS. Die EditorID jedes Zaubereffekts wird im CS angezeigt, wenn man da ein paar Balken verschiebt. Beispiel: FIDG = Fire Damage.

    Script: Schau einfach vorhandene Scripts an, z.B. das des Magiergildenauftrags

  9. #9
    Zitat Zitat
    Script: Schau einfach vorhandene Scripts an, z.B. das des Magiergildenauftrags
    Ja, das hab ich mir schon ausführlich angeschaut.

    Das Problem ist, dass die bereits vorhandenen Skripte immer mit so vielen anderen Dingen "vollgestopft" sind. So enthält dieses Magiergildenskripte erstmal 4 solche Abfragen, dann noch andere Questabfragegen und und und.

    Ich möchte ein sauberes, einfaches Skript, das auf eine kurze Magieeffektabfrage einen Activator auslöst.

    Edit:
    Die Lösung war ganz einfach. Warum müssen selbst die einfachsten Skripte von Bethesda Softworks immer so komplex und kompliziert aufgebaut sein? (zB stinknormale Schalter).

    Mein Ergebnis ist ganz kurz, benötigt gerade mal 2 Variablen und sieht sauber aus:

    Code:
    Scriptname 1FeueraufActivator
    
    ;Feuer auf den Activator löst den ParentActivator aus.
    
    ref myParent
    ref mySelf
    
    Begin OnMagicEffectHit FIDG
    
    		set myParent to getParentRef
    		set mySelf to getSelf
    		myParent.activate mySelf 1
    	return
    
    End
    Funktioniert schon hervorragend, nur den Balken für die 4 Buchsttabenkennung habe ich nach langen Rumschiebeversuchen immer noch nicht gefunden. Könntest du mir eventuell einen Screenshot schicken?
    Geändert von Low Post (18.12.2007 um 20:11 Uhr) Grund: Doppelpost

  10. #10
    Schau dir alternativ die Liste im Wiki an.

    PS:
    Ich hab mal deine Posts zusammengefügt. In Zukunft bitte Doppelpost innerhalb so kurzer Zeit unterlassen.

  11. #11
    hier is noch mal ein screenshot ausm cs:

  12. #12
    Danke, funktioniert jetzt so wie es sein sollte.

    Neues Problem:

    Ich möchte ein kleines Skript schreiben, das den Spieler prüft, ob ein bestimmter Magiezustand auf ihm liegt. Ich habe in den bereits vorhandenen Skripten gesucht, aber nichts gefunden. Kann mir jemand dabei behilflich sein?

    Edit:
    Ein Trigger ist nach einmaligem Auslösen "aufgebraucht", wenn ich mich nicht irre? Ließe sich dieser in diesem Fall durch das Betreten eines anderen Triggers wieder aktivieren? Oder schreibe ich gerade Humbug und Triger können so oft ausgelöst werden, wie man will?
    Geändert von Indy (19.12.2007 um 19:11 Uhr)

  13. #13
    *auf sich aufmerksam mach*

    Was ich genau bezwecken will:
    Bei Berührung eines Triggers soll per Skript geprüft werden, ob der Spieler unsichtbar ist (=> MagicEffect!).

    Gibt es dafür einen geeigneten Befehl?


    Und so nebenbei:
    Wie heißt eigentlich die Skriptsprache, die im CS verwendet wird?

  14. #14
    HasMagicEffect


    Bei deinem Trigger-Problem kann ich dir leider nicht weiterhelfen. Die haben mir auch noch nicht ihr Geheimniss offenbart.

  15. #15
    Sieh dir mal das Script des Triggers an. Höchstwarscheinlich gibt es dort eine Variable "doonce" die am ende des Scripts auf einen Wert gesezt wird der höher als 0 ist. Das Script des anderen Triggers könnte dann wiefolgt lauten:

    PHP-Code:
    scn Scriptname

    short doonce
    ref parent

    begin OnTrigger Player 
    if doonce == 0
    Set Parent to GetParentRef
    Set Parent
    .doonce to 0
    set doonce to 1
    endif
    end 
    Dann musst du nur den Trigger den du wieder aktiviert haben willst als Parent des anderen einstellen.

  16. #16
    Es funktioniert jetzt. Nur habe ich jetzt ein Problem.

    Sobald ich den Trigger betrete, der auf Unsichtbarkeit prüft soll dieser danach nicht mehr ausgelöst werden können, bis der andere Trigger passiert wurde. Beim Betreten des anderen Triggers soll das Auslösen dieses Triggers dann wieder möglich sein.


    Edit: (Keine Codefunktion bei Edit? )
    Hier beide Quellcodes:

    Haupttrigger:

    Code:
    Scriptname 1TestUnsichtbartest
    
    short triggered
    ref target
    ref mySelf
    ref timer
    
    begin onTriggerActor
    
    if timer != 1
    		if player.HasMagicEffect INVI != 1
    			set target to getParentRef
    			set mySelf to getSelf
    			target.activate mySelf 1
    
    			set timer to 1
    		endif
    else
    	MessageBox "Test - Tür nicht aktiviert!"
    	endif
    
    end
    Rücksetztrigger:

    Code:
    scn 1DoonceRuecksetzen
    
    short timer
    ref parent
    
    begin OnTrigger Player
    		Set Parent to GetParentRef
    		Set Parent.timer to 0
    end

    Beim Rücksetzen wird der Timer nicht wie erwartet zurückgesetzt - Die Messagebox "Test - Tür nicht aktiviert!" wird ausgegeben. Und ja, der Rücksetztrigger hat den Haupttrigger als Parent.

    Sieht ganz danauch aus, als ob bei dem Rücksetzsrkipt was nicht klappt.
    Geändert von Indy (20.12.2007 um 17:57 Uhr) Grund: Erweitert

  17. #17
    Beim Edit gibt's sehr wohl Code-Tags:
    Entweder klickst du auf Erweitert um in den normalen Editor zu kommen, oder du schreibst selber an den Anfang des Codes [Code] und an's Ende [/Code] hin.


    Zu deinem Script:
    ich würde Timer noch zu einer Short-Variablen machen.
    als Ref ist das imho etwas doof.


    Außerdem ist bei deinem Script, so wie es jetzt aussieht die Timer-Variable im Zurücksetzt-Script etwas sinnlos ist (wird nicht verwendet).

  18. #18
    Derzeitiger Zustand des Skripts:

    Code:
    Scriptname 1TestUnsichtbartest
    
    ref target
    short doonce
    ref myself
    
    begin onTriggerActor
    
    if doonce == 0
    		MessageBox "Test - Tür aktiviert!"
    		if player.HasMagicEffect INVI != 1
    			set target to getParentRef
    			set myself to getself
    			target.activate myself 1
    	                set doonce to 1
    			set myself to 0
    		endif
    	endif
    
    end
    Code:
    scn 1DoonceRuecksetzen
    
    short doonce
    ref parent
    
    begin OnTrigger Player
    Set Parent to GetParentRef
    Set Parent.doonce to 0
    end
    (Wenn ich versuche im Rücksetzskript "short doonce" zu entfernen wirft er mir Skript Errors entgegen)

    Funktioniert nur leider nicht wie es sollte -> Hauptskript wird einmal ausgelöst, danach nie wieder. -> doonce wird nicht zurückgesetzt!

    Edit: Hier noch das vorgefertigte Skript des Activator-Doors, falls dieses irgendwie reinpfuschen könnte:

    Code:
    scn RuinsGATEopenSCRIPT
    
    ; activated by linked child
    ; activates optionally linked parent after 1 sec delay
    
    short init
    short closed
    short next
    short busy
    float timer
    
    ref mySelf
    ref myParent
    
    begin onActivate
    
    	set mySelf to getSelf
    	set myParent to getParentRef
    
    	if isActionRef player == 1
    
    		if closed == 1
    			message "Dieses Tor wird anderswo geöffnet."
    		endif
    
    	elseif isActionRef mySelf == 0 && busy == 0
    
    		if closed == 0
    			playgroup forward 0
    			set closed to 1
    			disableLinkedPathPoints
    		else
    			playgroup backward 0
    			set closed to 0
    			enableLinkedPathPoints
    		endif
    
    		set next to 1
    		set timer to 1
    		set busy to 1
    
    	endif
    
    end
    
    begin gameMode
    
    	if init == 0
    		; set up ref vars
    		set mySelf to getSelf
    		set myParent to getParentRef
    		; prepare linked pathsgrid points
    		enableLinkedPathPoints
    		set init to 1
    	endif
    
    	; daisy-chain activation
    	if next == 1 && timer <=0
    		set next to 0
    		myParent.activate mySelf 1
    	endif
    
    	if timer > 0
    		set timer to timer - getSecondsPassed
    	endif
    	
    	if isAnimPlaying == 0 && busy == 1
    		set busy to 0
    	endif
    
    end
    
    begin onReset
    
    	reset3DState
    	set closed to 0
    	set next to 0
    	set busy to 0
    	enableLinkedPathPoints
    
    end
    Geändert von Indy (20.12.2007 um 18:10 Uhr)

  19. #19
    Problem gelöst. Ich habe das Skript auf nun anders geschrieben, sodass doonce automatisch zurückgesetzt wird, wenn sich der Spieler davon entfernt.

    Nun ein neues Problem:

    Code:
    scn 1FalscherSchrittTeleport2
    
    short triggered
    float timer
    ref me
    
    begin onTriggerActor
    
    	if triggered == 0
    		set me to getself
    		cast  1Eiseffekt me
    		Player.MovetoMarker 1MarkerBack
    		set triggered to 1
    		set timer to 5
    	endif
    
    end
    
    begin gameMode
    
    	if triggered == 1 && timer <= 0
    		set triggered to 0
    	endif
    
    	if timer >= 0
    		set timer to timer - getSecondsPassed
    	endif
    
    end
    Dieses Skript soll beim Betreten eines Triggers den Spieler einfach zum Marker teleportieren. Dummerweise wird dies zu einer Endlosschleife. Was habe ich hier vergessen?

  20. #20
    So, ich habe nun ein neues Problem.

    Ich möchte in einem Skript nach ein if-Abfrage ganz einfach einen bestimmten NPC töten.
    Versucht habe ich dies mit

    Code:
    kill NameRef
    doch der NPC stirbt nicht wie geplant.

Berechtigungen

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