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 15 von 15

Thema: Troy's Scriptthread (inkl. Auslösen von Animationen)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Huh also mittlerweile spielt der Feind die Animation ab. Ich habs wie gesagt über ein Item geregelt. Ich versuch momentan noch rum und melde mich später wieder falls probleme gibt.

    Eine andere sache ist:
    Ich wollte wenn der Feind bereit zum Töten ist mit Pluggy_HUD auf dem Bildschirm die mitteilung bringen das man den Knopf drücken soll. Am besten soll der Knopf der tastatur angezeigt werden (Also ein kleines Bild)

    Edit: Lol ich kann keine Beiträge von dir bewerten also sag ich hier: Danke

  2. #2
    Zitat Zitat von SirTroy Beitrag anzeigen
    Huh also mittlerweile spielt der Feind die Animation ab. Ich habs wie gesagt über ein Item geregelt. Ich versuch momentan noch rum und melde mich später wieder falls probleme gibt.
    Falls du auf die Timer-Sache anspielst: die ist auch nur für das wegschleudern/töten verantwortlich.

    Falls du die PlayGroup/Parameter-Sache meinst: ich hab nie gesagt, dass das nicht funktioniert. Es ist nur unnötig.

    Zitat Zitat
    Eine andere sache ist:
    Ich wollte wenn der Feind bereit zum Töten ist mit Pluggy_HUD auf dem Bildschirm die mitteilung bringen das man den Knopf drücken soll. Am besten soll der Knopf der tastatur angezeigt werden (Also ein kleines Bild)
    Da das nicht der Hauptteil der Mod ist: auf jeden Fall optional (IsHudEnabled).
    Du weißt schon, wegen CTDs und so.


    Ansonsten:
    NewHudS/NewHudT können nicht mit dem Set-Befehl verwendet werden, sofern alle Parameter verwendet werden (Absturz des CS beim kompilieren). Schuld ist der sog. 73-Bytes Bug. IIRC hat der irgendwas mit Buffer Overrun zu tun. Wer genaueres wissen will soll Scruggsy fragen.
    Auf jeden Fall sorgt der dafür, dass jedes mal wenn bei einem Set-/If-/Elseif-Befehl die kompilierte Größe mehr als 73 Bytes beträgt das CS beim speichern/kompilieren des Scripts abstürzt.

    Einfachste Methode das zu verhindern:
    Verwende den Let-Befehl, der hat das Problem nicht.
    Alternative: lass ein paar Parameter weg und bestimme die Eigenschaften mit separaten Befehlen.


    Ab OBSE v0018 Beta 2 laufen (mit diese OBSE-Version kompilierte) Skripte mit OBSE-Expressions (let/Eval/While/ForEach/etc.) nicht mehr, sofern nicht mindestens v0018 Beta 2 installiert wurde.
    Sofern keiner dieser Befehle verwendet wurde ist alles wie vorher.

    Zitat Zitat
    Edit: Lol ich kann keine Beiträge von dir bewerten also sag ich hier: Danke
    Die Funktion wird momentan noch getestet, könnte sich also noch ändern.

  3. #3
    So also ich bin schonmal ein wenig vorrangekommen.
    Der Button wird nun in der MessageBox angezeigt, Der NPc spielt die Animation ab, der Player auch. Nur das mit dem Timer funktioniert nicht.

    Empfiehlt sich da eventuell eine extra Quest einzurichten?

    Das Script sieht bis jetzt so aus (Später kommen noch diverse abfragen dazu, das ist erstmal zum testen)
    Code:
    Scriptname ZFinisherQuestScript
    
    Short Done
    
    Float fQuestdelayTime
    
    Short Finisherkey
    
    Ref PossibleTarget
    Ref Target
    
    Short Move
    Short Possible
    
    Float Timer
    
    Begin GameMode
    	Set Timer to Timer + GetSecondsPassed
    	If IsKeyPressed2 Finisherkey
    		Set Move to 1
    	Endif
    	If Move == 1
    		Set PossibleTarget to GetCrosshairRef
    			If PossibleTarget != 0
    				If PossibleTarget.IsActor
    					If PossibleTarget.IsCreature == 0
    						If PossibleTarget.GetDead == 0
    							Set Target to PossibleTarget
    							Set Possible to 1
    						Else
    							Set Move to 0
    						Endif
    					Else
    						Set Move to 0
    					Endif
    				Else
    					Set Move to 0
    				Endif
    			Else
    				Set Move to 0
    			Endif
    		If Possible == 1
    			Set Timer to 0
    			Target.AddItem ZTFinisherRing 1
    			Set Possible to 2
    			Player.Pickidle
    			Target.PickIdle
    			If Timer >= 0.5 && Timer <= 0.6
    				Target.Kill
    				Target.RemoveItem ZTFinisherRing 1
    				Set Move to 0
    			Endif
    		Endif
    	Endif
    End
    Ich hoffe es reicht den GetSecondsPassed befehl am anfang einmal zu verwenden, ich denke mal der läuft dann halt immer mit, oder?

    Die Animation des Gegners besitzt die Condition GetItemCount ZTFinisherRing == 1, und die des Player GetQuestVariable XQuest Possible == 2 UND GetIsReference PlayerREF.
    Wie gesagt das funktioniert. Er will das mit dem Timer aber einfch nicht machen -.-* Kommt mir vor als wenn Oblivion den Timer einfach ignoriert ô.o

    Jemand nen Plan wie das funktionieren könnte? Und empfiehlt es sich eventuell einen Conditionquest mit einzubringen? Zurzeit orientier ich mich noch ein bisschen an Deadly Reflex (von SkyCaptain), nur erweist es sich als schwieriger als erwartet aus seinen Scripts schlau zu werden. (Hab den anfang zwar schon aber naja)

  4. #4
    Zitat Zitat von SirTroy Beitrag anzeigen
    Ich hoffe es reicht den GetSecondsPassed befehl am anfang einmal zu verwenden, ich denke mal der läuft dann halt immer mit, oder?
    Schon, allerdings nützt es nichts, wenn später im Script (aber noch vor der Abfrage) folgende Zeile erschient:
    Zitat Zitat
    Set Timer to 0


    Ich hab in deinem Script mal herumgepfuscht um das mit dem Timer zu beheben:
    Code:
    Scriptname ZFinisherQuestScript
    
    Short Done
    
    Float fQuestdelayTime
    
    Short Finisherkey
    
    Ref PossibleTarget
    Ref Target
    
    Short Move
    Short Possible
    
    Float Timer
    
    Begin GameMode
    	If IsKeyPressed2 Finisherkey
    		Set Move to 1
    	Endif
    	If Move == 1
    		Set PossibleTarget to GetCrosshairRef
    		If PossibleTarget != 0
    			If ( PossibleTarget.IsActor ) && ( PossibleTarget.IsCreature == 0 ) && ( PossibleTarget.GetDead == 0 )		;Wozu so viele If-Befehle wenn eine einfache &&-Verknüpfung möglich ist?
    				Set Target to PossibleTarget
    				Set Possible to 1
    			Else
    				Set Move to 0
    			Endif
    		Else
    			Set Move to 0
    		Endif
    		If Possible == 1
    			Target.AddItem ZTFinisherRing 1
    			Set Possible to 2
    			Player.Pickidle
    			Target.PickIdle
    		elseif Possible == 2
    			Set Timer to Timer + GetSecondsPassed		;Verschoben, damit der Befehl nicht unnötigerweise aufgerufen wird und man die Timer-Variable nur einmal zurücksetzten muss.
    			If Timer >= 0.5			;Langsame Framerate kann auch von Zeit zu Zeit vorkommen, oder anders ausgedrückt: Ich sehe keinerlei Sinn an einer Obergrenze, wenn die Variable nur erhöht wird. ;)
    				Target.Kill
    				Target.RemoveItem ZTFinisherRing 1
    				Set Move to 0
    				Set Timer to 0
    				Set Possible to 0
    			Endif
    		Endif
    	Endif
    End

  5. #5
    Danke, nur will der Timer Ingame immer nocht nicht klappen ô.o
    Meiner Meinung nach ist alles richtig. Ich hab jetzt mal testweise 2 Animationen aus Deadly Reflex genommen, den Timer auf 1.2 gesetzt, aber es passiert nichts. Nach dem ersten mal abspielen läuft der Gegner einfach weiter und der Spieler führt die Animation ein 2tes mal aus Was ist denn jetzt falsch

    Edit: Kann es sein das Target irgendwie wieder weggesetzt wird, sodass es nichtmehr erkannt wird?

  6. #6
    Probier mal das hier:
    Code:
    Scriptname ZFinisherQuestScript
    
    Short bFinish
    Short iFinisherKey
    Float fQuestdelayTime
    Float fTimer
    Ref rTarget
    
    Begin GameMode
    	if ( bFinish )
    		set fTimer to ( fTimer + GetSecondsPassed )
    		if ( fTimer >= 0.5 )
    			rTarget.Kill
    			rTarget.RemoveItem ZTFinisherRing, 1
    			set bFinish to 0
    			set fTimer to 0
    		endif
    	elseif ( IsKeyPressed2 iFinisherKey )
    		set rTarget to GetCrosshairRef
    		if ( IsFormValid rTarget )
    			if ( rTarget.IsActor ) && ( rTarget.GetIsCreature == 0 ) && ( rTarget.GetDead == 0 )
    				set bFinish to 1
    				rTarget.AddItem ZTFinisherRing, 1
    				Player.Pickidle
    				rTarget.PickIdle
    			endif
    		endif
    	endif
    End

    Bei der alten Version wurde der Timer nie verwendet: es war extrem unwahrscheinlich, dass Possible bis zur Abfrage auch wirklich 2 bleibt.

  7. #7
    Mein Script funktioniert mittlerweile, hab vor der abfrage vom target ein If Possible == 0 gehängt:
    Code:
    Scriptname ZFinisherQuestScript
    
    Short Done
    
    Float fQuestdelayTime;set to 0.1 from another script
    
    Short Finisherkey
    
    Ref PossibleTarget
    Ref Target
    
    Ref PlayerWeapon
    Ref PlayerWeaponType
    
    Short Move
    Short Possible
    
    Float Timer
    
    Short TargetBaseHealth
    
    Begin GameMode
    	If IsKeyPressed2 Finisherkey
    		Set Move to 1
    	Endif
    	If Move == 1
    		if Possible == 0
    			Set PossibleTarget to GetCrosshairRef
    			If PossibleTarget != 0
    				If ( PossibleTarget.IsActor ) 
    					If ( PossibleTarget.IsCreature == 0 ) 
    						If ( PossibleTarget.GetDead == 0 )        
    							Set Target to PossibleTarget
    							Set Possible to 1
    						Endif
    					Endif
    				Endif
    			Else
    				Set move to 0
    			Endif
    		ElseIf Possible == 1
    			Set Playerweapon to Player.GetEquippedObject 16
    			If PlayerWeapon != 0
    				Set PlayerWeaponType to GetWeaponType PlayerWeapon
    			Endif
    			Set TargetBaseHealth to Target.GetBaseActorValue Health
    			If Player.IsWeaponOut
    				If PlayerWeaponType == 0 || PlayerWeaponType == 1
    					If Target.GetAV Health <= (TargetBaseHealth / 2)
    						If Player != Target
    							;If Target.GetDistance Player <= 120
    								Player.SetRestrained 1
    								Target.AddItem ZTFinisherRing 1
    								Set Possible to 2
    								Player.Pickidle
    								Target.PickIdle
    								Set Possible to 3
    							;Else
    								;Set Move to 0
    							;Endif
    						Else
    							Set move to 0
    						Endif
    					Else
    						Set Move to 0
    					Endif
    				Else
    					Set move to 0
    				Endif
    			Else
    				Set move to 0
    			Endif
    		Elseif Possible == 3
    			If Timer >= 1                   
    				Target.Kill
    				Target.RemoveItem ZTFinisherRing 1
    				Player.SetGhost 0
    				Player.SetRestrained 0
    				Set Move to 0
    				Set Timer to 0
    				Set Possible to 0
    			Endif
    			Set Timer to Timer + GetSecondsPassed
    		Endif
    	Endif
    End
    Die im offiziellen Forum meinen auch das die abrfragen (IsActor, IsCreature) nacheinander gemacht werden sollten.

    Jedenfalls klappt das jetzt danke, werd später wenn ich soweit bin vllt nochmal auf Pluggy zurückkommen und könnt da noch Hilfe gebrauchen.
    Lg

  8. #8
    Dobbel-Post

    Ich will jetzt nen Zweiten Move einbinden der aber den ersten vorraussetzt (Da der Gegner bei der ersten sozusagen kurz außer gefecht ist, er geht paar schritte zurück etc), und in dieser Zeit soll der Spieler halt hin und nochmal den Key drücken, damit eine zweite Animation ausgeführt wird.

    Habt ihr ne Idee?
    Script sieht bis jetzt so aus: (Hab momentan net viel Zeit daher können einige Flüchtigkeitsfehler drin sein sry)

    Code:
    Scriptname ZFinisherQuestScript
    
    Short Done
    
    Float fQuestdelayTime;set to 0.1 from another script
    
    Short Finisherkey
    
    Ref PossibleTarget
    Ref Target
    
    Ref PlayerWeapon
    Ref PlayerWeaponType
    
    Short Move
    Short Possible
    Short Possible2
    
    Float Timer
    Float Timer2
    
    Short TargetBaseHealth
    
    Begin GameMode
    	If ( IsKeyPressed2 Finisherkey ) 
    		Set Move to 1
    	Endif
    	If Move == 1
    		if Possible == 0
    			Set PossibleTarget to GetCrosshairRef
    			If PossibleTarget != 0
    				If ( PossibleTarget.IsActor ) 
    					If ( PossibleTarget.IsCreature == 0 ) 
    						If ( PossibleTarget.GetDead == 0 )        
    							Set Target to PossibleTarget
    							Set Possible to 1
    						Endif
    					Endif
    				Endif
    			Else
    				Set move to 0
    			Endif
    		ElseIf Possible == 1
    			Set Playerweapon to Player.GetEquippedObject 16
    			If PlayerWeapon != 0
    				Set PlayerWeaponType to GetWeaponType PlayerWeapon
    			Endif
    			Set TargetBaseHealth to Target.GetBaseActorValue Health
    			If Player.IsWeaponOut
    				If PlayerWeaponType == 0 || PlayerWeaponType == 1
    					If Target.GetAV Health <= (TargetBaseHealth / 2)
    						If Player != Target
    							Target.AddItem ZTHeBStuRing 1
    							Target.SetRestrained 1
    							Target.SetUnconscious 1
    							Set Possible to 2
    							Player.Pickidle
    							Target.PickIdle
    							Set Possible to 3
    						Else
    							Set move to 0
    						Endif
    					Else
    						Set Move to 0
    					Endif
    				Else
    					Set move to 0
    				Endif
    			Else
    				Set move to 0
    			Endif
    		Elseif Possible == 3
    			If Timer >= 0.2 && Timer < 0.5
    				PlaySound BreakingNose
    			Elseif Timer < 3.333 && Timer >= 0.6
    				If IsKeyPressed2 FinisherKey
    					If Target != 0
    						If (Target.IsActor ) 
    							If ( Target.IsCreature == 0 ) 
    								If ( Target.GetDead == 0 )
    									Set Possible to 4
    								Endif
    							Endif
    						Endif
    					Endif
    				Endif
    			Elseif Timer >= 3.333
    				If Target.GetItemCount ZTFinisherRing < 1         
    					Target.RemoveItem ZTHeBStuRing 1
    					Target.SetRestrained 0
    					Target.SetUnconscious 0
    					Set Move to 0
    					Set Timer to 0
    					Set Possible to 0
    				Endif
    			Endif
    			Set Timer to Timer + GetSecondsPassed
    		Elseif Possible == 4
    			Target.RemoveItem ZTheBStuRing 1
    			Target.AddItem ZTFinisherRing 1
    			If Player.IsWeaponOut
    				Set Timer to 0
    				Set Possible to 5
    				Target.SetRestrained 1
    				Target.PickIdle
    				Player.PickIdle
    			Endif
    		Elseif Possible == 5
    			If Timer == 1
    				Target.Kill
    				Target.RemoveItem ZTFinisherRing 1
    				Set Move to 0
    				Set Timer to 0
    				Set Possible to 0
    			Endif
    			Set Timer to Timer + GetSecondsPassed
    		Endif
    	Endif
    End
    2tens:
    Wie kann ich ein Skelett dazu bringen in Richtung des Spielers zu sehen?
    SkelettRef.Look Player funzt irgendwie net, noch ne andere Idee?

  9. #9
    Tribble Post

    Nach langer Zeit mal wieder ne frage:

    Ich habe mir eine ini erstellt, und habe dort ein paar Informationen gespeichert.

    Ingame geht es jetzt darum, diese Informationen abzufragen (per Pluggys String funktion) und diese dann auf einen Feind zu übertragen. Heißt es soll dann ein Feind erstellt werden (Ich dachte da an eine Kopie des Spielers) nur mit anderem Namen, Level, Leben, Mana, Ausdauer, Gold, Zauber und Waffe.

    Die Infos aus der ini ablesen, und in einem String speichern hab ich hinbekommen. Mir fehlt jetzt das erstellen der Kopie und dem Ausrüsten/ändern der Werte. Ich hoffte dabei könnte mir jemand behilflich sein.

    Momentan sieht das Script so aus:



    Ich hatte testweise versucht die Kopie zu erstellen, aber er hat dann 100 Kopien gemacht und nichtmal der Name stimmte.

    Kleine Frage noch: Ist es möglich irgendwie ein Aussehen durch die ini festzulegen? Sodass ein Neuer NPc erstellt wird mit neuem Aussehen?

  10. #10
    Zitat Zitat von SirTroy Beitrag anzeigen
    Kleine Frage noch: Ist es möglich irgendwie ein Aussehen durch die ini festzulegen? Sodass ein Neuer NPc erstellt wird mit neuem Aussehen?
    Script durchschauen dauert mir zu lang, daher nur das hier betreffend:

    List of Functions
    Copy/SetHair
    Copy/SetEyes


    Rasse, Geschlecht & Gesicht wird nur gehen, in dem du mehrere NPCs mit best. Gesicht erstellst und die dann als Auswahlmöglichkeiten anbietest.

Berechtigungen

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