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 20 von 38

Thema: Unsichtbarer PC, Gegner ignorieren Beschwörungen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Noch ein freeze Problem...



    OK, debug file, hatte das Kommando vergessen; folgt demnächst.

    EDIT: Beim 3. Anlauf gab es keinen freeze trotz Unsichtbarkeit. Dann hilft das debug file wohl nichts, oder? Ich hänge es trotzdem mal an.
    Angehängte Dateien Angehängte Dateien
    Geändert von DWS (09.09.2008 um 18:35 Uhr)

  2. #2
    Also in dem Debug-File hab ich eine Merkwürdigkeit entdeckt (CombatTarget von Camilla Lollia will einfach nicht auf SkeletonArcher wechseln, bei anderen neuen Zielen klappt das seltsamerweise ohne Probleme; gab es da Probleme mit herumgesuche?), aber ohne das Log vom Freeze selber lässt sich da recht wenig gegen den Freeze machen.

    Du kannst ja die Debugnachrichten allgemein anstellen (das alte Debugfile wird bei jedem Spielstart gelöscht), dann musst du das beim nächsten Freeze nicht noch x-mal durchkauen nur um das Log zu kriegen.
    Hoffen wir mal, dass das "nur" ein Oblivionfehler war und das nicht nochmal auftritt. *faul ist*

  3. #3
    Der Skeleton Archer war jedenfalls nicht von mir, ich glaube der wurde von der Nekromantin beschworen; heisst die so, Camilla Lollia?

    Herumgesuche gab es eigentlich nicht. Aber wenn ich recht erinnere, bin ich bei den ersten Malen unten durch die Tür in den Zwischengang geflüchtet, mich vorsichtshalber gleich unsichtbar gemacht und dann blieb das Bild stehen. Beim letzten Durchgang blieb ich oben. Aber irgendwie habe ich jetzt auch gerade keine Lust, das noch mal zu provozieren.

  4. #4
    Was der ist von der selbst.
    Dann ist's ja kein Wunder, dass die den nicht angreifen will.
    Stimmt wohl was mit der Formel zu überprüfen der Feindlichkeit nicht.
    Müsste wohl irgendwie überprüfen, ob es sich um eine beschworene Kreatur handelt. Weiß da jemand was?

  5. #5
    Wessen Formel?

    Die Beschwörungen hat sie aus einem LAME Modul, u.a. hatte sie auch mal diese großen Klappergerüste beschworen. Wieso müsste sie auf die Idee kommen, ihre eigenen minions angreifen zu wollen? Ist das nicht hardcodiertes Verhalten?

  6. #6
    Kurzer Zwischeneinwurf: Wie funktioniert die Speicherung von Debugnachrichten¿

  7. #7
    Auch zwischen fragt: Ich nehme an, die globale Variable für debug bleibt auf 1, wenn man danach einen Speicherpunkt setzt? Oder muss ich das im CS setzen?

  8. #8
    Zitat Zitat von DWS Beitrag anzeigen
    Wessen Formel?
    Die Formel von der Wiki-Seite zu GetShouldAttack:

    Code:
    if ( callingActor.getAV aggression > 5 )
      if ( callingActor.getDisposition target < callingActor.getAV aggression )
        ; actor is hostile toward target
      endif
    endif
    Mir fällt gerade auf, da muss noch eine Überprüfung nach IsActorEvil (bzw. GetIsCreature) rein.

    Zitat Zitat
    Die Beschwörungen hat sie aus einem LAME Modul, u.a. hatte sie auch mal diese großen Klappergerüste beschworen. Wieso müsste sie auf die Idee kommen, ihre eigenen minions angreifen zu wollen? Ist das nicht hardcodiertes Verhalten?
    Ich hab ihr gesagt, sie soll den angreifen anstelle des unsichtbaren aktuellen CombatTargets (dem Spieler, also dir), in dem ich ein StartCombat auf sie geworfen habe.
    Das erst nachdem durch obige Formel herauskam, dass sie ihn ohne anderes CombatTarget angreifen würde. Warum mag die auch ihre eigenen beschworenen Viecher nicht. >_<

    Zitat Zitat von bg2408 Beitrag anzeigen
    Kurzer Zwischeneinwurf: Wie funktioniert die Speicherung von Debugnachrichten¿
    Mit Pluggy:
    Code:
    short EspID
    long StringFileName
    
    Begin OnReset
    	set EspID to GetESP
    	set StringFileName to CreateString EspID "Currently not Used" 1 1
    	ESPToString StringFileName EspID
    	set EspID to ( ( StringLen StringFileName ) - 4 )
    	StringLen StringFileName EspID
    	SetString -2000 "\DebugFile.txt" 1
    	StringCat StringFileName -2000
    	StringMsg StringFileName
    End
    
    Begin OnActivate
    	SetString -2000 "DebugMessage" 1
    	StringToTxtFile StringFileName -2000 1
    End
    Die Begin-Blöcke natürlich noch austauschen, aber die repräsentieren (vom Namen her) so ziemlich genau wofür die da sind.

    Zitat Zitat von DWS Beitrag anzeigen
    Auch zwischen fragt: Ich nehme an, die globale Variable für debug bleibt auf 1, wenn man danach einen Speicherpunkt setzt? Oder muss ich das im CS setzen?
    Einfach per Konsole auf 1 (oder einen anderen Wert, ich überprüfe immer nur nach != 0 ) setzen und speichern, das bleibt im SaveGame gespeichert.
    Ich lösche immer nur alte Debug-Files, einfach weil die sonst zu groß werden würden und vorher ja anscheinend alles funktioniert hat.

  9. #9
    Zitat Zitat von Low Post Beitrag anzeigen
    Ich hab ihr gesagt, sie soll den angreifen anstelle des unsichtbaren aktuellen CombatTargets (dem Spieler, also dir), in dem ich ein StartCombat auf sie geworfen habe.
    Das erst nachdem durch obige Formel herauskam, dass sie ihn ohne anderes CombatTarget angreifen würde. Warum mag die auch ihre eigenen beschworenen Viecher nicht. >_<
    That's gobbledygook (im Sinne von Fachchinesisch) to me.

  10. #10
    Code:
    if ( callingActor.getAV aggression > 5 )
      if ( callingActor.getDisposition target < callingActor.getAV aggression )
        ; actor is hostile toward target
      endif
    endif
    Diese Formel nutze ich zum überprüfen, ob Actor1 (CallingActor, eine Referenz mit einem unsichtbaren Angriffsziel) unter normalen umständen Actor2 (target, die neu ermittelte Referenz) angreifen würde.
    Falls das zutrifft sage ich Actor1 mittels StartCombat, dass er/sie/es Actor2 angreifen soll.


    Bei dem Log von dir war das der Fall (StartCombat wurde ausgelöst), allerdings hat sich das Angriffsziel nicht verändert.
    Liegt anscheinend daran, dass der Skeleton Archer von ihr selbst beschworen wurde.
    Seltsamerweise mag die den aber so wenig, dass sie ihn (laut obiger Formel) unter normalen Umständen angreifen würde.
    Könnte allerdings auch an einer extrem hohen Aggression liegen, dann kann die den noch so lieben.

  11. #11
    Ein weiterer Invisible Freeze, diesmal in Villa Flugfels, 3 Sparring-Skelette kämpften gegen mich, ich machte mich irgendwann mal unsichtbar und dann passierte es. Könnte evtl. auch Zufall gewesen sein, das Spiel lief schon relativ lange.
    Angehängte Dateien Angehängte Dateien

  12. #12
    Ich konnte den Bug leider nicht reproduzieren, daher ist das auch ein bisschen ein Schuss in's blaue: <klickst du hier>

    Script sieht jetzt so aus (ich hab noch ein bisschen an der Formel zum überprüfen der Feindlichkeit geschraubt):
    Code:
    scn LPNISQuestScript
    
    int ShutDown
    short OBSEVersion
    long Index
    long Index2
    float fQuestDelayTime
    ref CombatTarget
    ref Follower
    ref OldReference
    ref Reference
    
    Begin Gamemode
    	SetStage LPNISQuest 0
    	if ( OBSEVersion >= 15 )
    		if ( LPNISPluggyDebug )
    			if ( IsPluginInstalled "OBSE_Elys_Pluggy" == 0 ) || ( GetPluginVersion "OBSE_Elys_Pluggy" < 112 )
    				set LPNISPluggyDebug to 0
    				MessageBox "Die DebugMessages dieses PIs benötigen Pluggy v112 (oder höher)."
    				Return
    			endif
    			DestroyAllStrings
    			set Index to GetEsp
    			EspToString -2000 Index 1 1
    			set Index to ( ( StringLen -2000 ) - 4 )
    			StringLen -2000 Index 1
    			SetString -2001 " - DebugFile.txt" 1
    			StringCat -2000 -2001
    			if ( GetGameRestarted )
    				DelFile -2000
    			endif
    		endif
    		set Index to 0
    		SaveIP 1
    		if ( Index < GetNumRefs 69 1 0 )
    			set Reference to Apple
    			if ( Index )
    				set Reference to GetNextRef
    			else
    				set Reference to GetFirstRef 69 1 0
    			endif
    			if ( IsFormValid OldReference )
    				set Index to ( Index + 1 )
    				if ( Reference == OldReference )
    					set OldReference to 0
    					set Index to 0
    				endif
    				RestoreIP 1
    			elseif ( Index == 0 ) && ( LPNISPluggyDebug )
    				SetString -2001 "------------------------------------------------" 1
    				StringToTxtFile -2000 -2001 1
    			endif
    			if ( LPNISPluggyDebug )
    				FmtString -2001 1 "Reference: %n (%i), Index: %.0f", Reference, Reference, Index
    				StringToTxtFile -2000 -2001 1
    			endif
    			if ( Reference.GetCombatTarget )
    				set CombatTarget to Apple
    				set CombatTarget to Reference.GetCombatTarget
    				if ( LPNISPluggyDebug )
    					FmtString -2001 1 "	CombatTarget: %n (%i)", CombatTarget, CombatTarget
    					StringToTxtFile -2000 -2001 1
    				endif
    				if ( CombatTarget.HasMagicEffect INVI ) && ( Reference.GetActorValue Aggression >= 5 )
    					if ( LPNISPluggyDebug )
    						FmtString -2001 1 "		HasMagicEffect INVI"
    						StringToTxtFile -2000 -2001 1
    					endif
    					set OldReference to Apple
    					set OldReference to Reference
    					if ( LPNISPluggyDebug )
    						FmtString -2001 1 "		OldReference: %n (%i)", OldReference, OldReference
    						StringToTxtFile -2000 -2001 1
    					endif
    					set Index2 to 0
    					SaveIP 2
    					if ( Index2 < GetNumRefs 69 1 0 )
    						set CombatTarget to Apple
    						if ( Index2 )
    							set CombatTarget to GetNextRef
    						else
    							set CombatTarget to GetFirstRef 69 1 0
    						endif
    						if ( CombatTarget.HasMagicEffect INVI == 0 ) && ( Reference.GetIsReference CombatTarget == 0 )
    							if ( ( ( Reference.GetDisposition CombatTarget < Reference.GetActorValue Aggression ) || ( Reference.IsActorEvil != CombatTarget.IsActorEvil ) ) && ( Reference.GetActorValue Aggression > 5 ) ) || ( CombatTarget.GetCombatTarget == Reference )
    								if ( LPNISPluggyDebug )
    									FmtString -2001 1 "			NewCombatTarget: %n (%i)", CombatTarget, CombatTarget
    									StringToTxtFile -2000 -2001 1
    								endif
    								set Index to 0
    								SaveIP 3
    								if ( Index < Reference.GetNumFollowers )
    									set Follower to Apple
    									set Follower to Reference.GetNthFollower Index
    									if ( CombatTarget.GetIsReference Follower )
    										if ( LPNISPluggyDebug )
    											FmtString -2001 1 "			%n (%i) is a Follower of %n (%i)", CombatTarget, CombatTarget, Reference, Reference
    											StringToTxtFile -2000 -2001 1
    										endif
    										set Index2 to ( Index2 + 1 )
    										RestoreIP 2
    									else
    										set Index to ( Index + 1 )
    										RestoreIP 3
    									endif
    								endif
    								set Index to 0
    								SaveIP 4
    								if ( Index < CombatTarget.GetNumFollowers )
    									set Follower to Apple
    									set Follower to CombatTarget.GetNthFollower Index
    									if ( Reference.GetIsReference Follower )
    										if ( LPNISPluggyDebug )
    											FmtString -2001 1 "			%n (%i) is a Follower of %n (%i)", Reference, Reference, CombatTarget, CombatTarget
    											StringToTxtFile -2000 -2001 1
    										endif
    										set Index2 to ( Index2 + 1 )
    										RestoreIP 2
    									else
    										set Index to ( Index + 1 )
    										RestoreIP 3
    									endif
    								else
    									Reference.StartCombat CombatTarget
    									if ( LPNISPluggyDebug )
    										FmtString -2001 1 "			%n (%i).StartCombat %n (%i)", Reference, Reference, CombatTarget, CombatTarget
    										StringToTxtFile -2000 -2001 1
    									endif
    								endif
    							else
    								set Index2 to ( Index2 + 1 )
    								RestoreIP 2
    							endif
    						else
    							set Index2 to ( Index2 + 1 )
    							RestoreIP 2
    						endif
    					elseif ( Player.HasMagicEffect INVI == 0 )
    						if ( ( Reference.GetDisposition Player < Reference.GetActorValue Aggression ) && ( Reference.GetActorValue Aggression > 5 ) ) || ( CombatTarget.GetCombatTarget == Reference )
    							if ( LPNISPluggyDebug )
    								FmtString -2001 1 "			%n (%i).StartCombat Player", Reference, Reference
    								StringToTxtFile -2000 -2001 1
    							endif
    							Reference.StartCombat Player
    						endif
    					endif
    					Return
    				endif
    			endif
    			set Index to ( Index + 1 )
    			RestoreIP 1
    		endif
    	elseif ( Shutdown == 2 )
    		if ( OBSEVersion >= 11 )
    			con_Quitgame
    		else
    			Player.Disable
    		endif
    	elseif ( Shutdown == 1 )
    		set Shutdown to ( GetButtonPressed + 2 )
    	elseif ( OBSEVersion )
    		set Shutdown to ( GetButtonPressed + 2 )
    		MessageBox "Dieses PI benötigt OBSE v0015 oder höher. Du verwendest momentan OBSE v%04.0f", OBSEVersion
    	else
    		set Shutdown to ( GetButtonPressed + 2 )
    		MessageBox "Dieses PI benötigt OBSE v0015 oder höher. Stelle sicher, dass du Oblivion über die 'obse_loader.exe' startest."
    	endif
    End


    PS:
    Ab jetzt wird Pluggy v112 oder höher für die Debugnachrichten benötigt.
    Geändert von Low Post (14.09.2008 um 22:29 Uhr)

  13. #13

  14. #14
    Hey, Lowi, irgendwie erkennt die Version meine OBSE 0017 Beta 2 Version nicht. Ich bekomme beim Start eine Endlosschleife mit dem Hinweis, das dieses PlugIn OBSE 0017 Beta 2 braucht, ich Version 0017 installiert hätte. Diese Endlosschleife der Messagebox resultiert dann auch in nem Crash. Ich hab übrigens ganz sicher Beta 2 installiert, weil ich noch nen anderen Mod nutze, der zwingend diese Version braucht (und funktioniert ) und weil ich zusätzlich dazu auch noch in der Lage bin zu lesen. Ist auch kein Pre-Release der Beta oder sonstiges - zumindest wüßte ich nicht, wie das gehen sollte
    Geändert von NewRaven (21.05.2009 um 02:48 Uhr)

  15. #15
    Ja ja, mea culpa.
    Was ändern die auch plötzlich die Revision-Nummer für Beta 2.
    Mal ganz abgesehen, dass die auch ohne Änderung nicht erkannt worden wäre.

    Endlosschleife sollte auch beseitigt sein und gleich nach der Meldung zum Absturz führen.


    Link bleibt der gleiche wie vorhin.

  16. #16
    Mit der neuen OBSE-Versionen kamen die Funktionen GetAllies & GetTargets, wodurch die Gegner- & Verbündeten-Suche komplett von meiner Seite an OBSE abgegeben würde. Einbauen würde vermutlich nicht länger als eine Stunde dauern, aber bevor ich mir die Mühe macht, hat überhaupt jemand Interesse an einem solchen Update?

Berechtigungen

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