That's gobbledygook (im Sinne von Fachchinesisch) to me. :confused:
Druckbare Version
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.Code:if ( callingActor.getAV aggression > 5 )
if ( callingActor.getDisposition target < callingActor.getAV aggression )
; actor is hostile toward target
endif
endif
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. ;)
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.
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.
Ab jetzt (mit T.I.E.) scheint ein neues Problem aufzutauchen. Die NPC Beschwörer beschwören meistens mehrere summons gleichzeitig. Mal bekämpfen sich diese 2-3 summons gegenseitig, mal gehen sie sogar auf ihren Beschwörer los oder umgekehrt, es ist in dem Durcheinander kaum noch zu sehen, wer wen angreift.
Wenn ich dieses script deaktiviere, ist anscheinend Ruhe im (gleichen) gegnerischen Rudel.
Das liegt leider daran, dass GetNthFollower/GetNumFollowers keine Beschwörungen berücksichtigt und es auch sonst keine Möglichkeit gibt das zu überprüfen.
Heißt: da kann ich leider nichts machen. :(
Sollte doch jemand einen Weg kennen das zu beheben so möge er/sie es mir doch bitte mitteilen.
T.I.E. benutze ich gerade nicht mehr, aber vielleicht kommen in FCOM auch irgendwann Beschwörer mit multiple summons vor(?)...
Könntest du es auch auf eine nur auf die Arena, oder vielleicht auf Interieur begrenzte Version umschreiben?
Ich glaube, in freier Wildbahn macht das doch noch zu viele Probleme. Besonders bei "Außenquests" ist es oft so, dass die zu erledigenden Gegner über die halbe Karte weglaufen und man sie nicht mehr wieder findet (z.B. Anvil MG Recommendation Quest; damit habe ich getestet mit und ohne diese Mod). Bei einem Gegner geht es vielleicht gerade noch, aber wenn 2 oder 3 questrelevante NPCs in alle möglichen Richtungen kilometerweit hinter dem nächsten Reh herlaufen, verliert man sie immer wieder.
Probier mal folgendes: <klick>
Damit ist das nur noch in Interior-Zellen, deren ID mit ICArena beginnt aktiv (zumindest solange der Spieler sich in einer solchen befindet).
Ich würde gerne eine weniger radikale Methode anbieten, aber leider weiß ich nicht wie. :(
PS:
Ich hab jetzt nicht getestet, ob es in der Arena noch funktioniert, außerhalb macht es auf jeden Fall nichts mehr und für Innerhalb hat sich eigentlich nichts verändert.
Danke dafür! Ich komme im Moment nicht so richtig dazu, aber spätestens wenn OXP leveling und RBP in die nächste Version gehen, teste ich es auf jeden Fall durch - vielleicht vorher.. :)
OBSE v0017-Beta ist raus und damit der Befehl GetFollowers, welcher auch Summons berücksichtigt.
Hier ein Versuch dazu. Damit sollte das Problem deswegen nicht mehr auftreten.
Könnte evtl. andere Fehler enthalten (sollte es natürlich nicht, aber trotzdem). Ist absolut ungetestet.
Das sieht gut aus, bislang konnte ich keine der bekannten Probleme mehr feststellen.
Freut mich zu hören. :)
Aufgrund von OBSE Beta 2 Scripte neu kompiliert und etwas angepasst: <klick>
Danke für die tolle Mod :D
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 :)
Ja ja, mea culpa.
Was ändern die auch plötzlich die Revision-Nummer für Beta 2. http://www.multimediaxis.de/images/s.../old/s_032.gif
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.
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?
Ich benutze seit einiger Zeit Combat Hide und nach ein paar Sekunden Suche wenden sich die Gegner damit dem nächstmöglichen Gegner zu. Ich müsste es noch mal etwas genauer beobachten, aber eigentlich scheint mich an dem Verhalten damit nichts mehr so gewaltig zu stören.