User talk:AdiBeiElderScrolls
Hi out there, in this great Wiki!
I've learned a lot here, as this wiki provides a lot of helpful hints, but still some questions I can't solve.
I'm still fighting with a good solution for this companion thing. There is some helpful code for having companions with horses, that follow. But it doesn't really work well. Still timing problems may occur and the NPC is standing in front of his horse, without mounting it or time displays that it has elapsed ...
Moreover I would like to give the NPC companion a possibility to call his horse. I tried to add some AI package in the GameMode script of the horse, if a certain script variable is set. But it seems, that the horse, if it is out of sight, just doesn't react or evaluate any package (which makes sense, to keep the game performance).
An answer to a special topic then set the RufVernommen variable.
Here is a code summary of the horse (sorry, but comments are in german)
ScriptName 0poScrPferdBegleiter01 ; Variable, die dem Pferd mitteilt, es wurde gerufen short RufVernommen short Unterwegs float Entfernung short Abstand1000 short Abstand2000 short Abstand3000 short Abstand4000 short Abstand5000 short Abstand10000 short Abstand15000 short Abstand20000 short Abstand25000 short Abstand30000 Begin GameMode If ( Abstand1000 == 0) Set Abstand1000 To 1000 Set Abstand2000 To 2000 Set Abstand3000 To 3000 Set Abstand4000 To 4000 Set Abstand5000 To 5000 Set Abstand10000 To 10000 Set Abstand15000 To 15000 Set Abstand20000 To 20000 Set Abstand25000 To 25000 Set Abstand30000 To 30000 EndIf If RufVernommen ; lade das Package, um den Besitzer aufzusuchen If ( GetIsCurrentPackage "0poAIBegleiter01Aufsuchen" == 0 ) ; jedes Package entfernen, das nicht dafür sorgt, das der Begleiter aufgesucht wird RemoveScriptPackage ; das Package veranlasst das Pferd zum Besitzer zu reisen AddScriptPackage "0poAIBegleiter01Aufsuchen" ; damit die Änderung sofort wirksam wird EvaluatePackage EndIf Set Entfernung To GetDistance "0poBegleiter01Ref" Message "Fabians Schimmel hat den Ruf vernommen. Es ist %.0f entfernt", Entfernung ; setze die Variable zurück Set RufVernommen To 0 Set Unterwegs To 1 EndIf ;prüfen, ob wir unser Ziel erreicht haben If Unterwegs If ( GetDistance "0poBegleiter01Ref" < 1000 ) Message "Fabians Schimmel ist weniger als %.0f entfernt", Abstand1000 ElseIf ( GetDistance "0poBegleiter01Ref" < 2000 ) Message "Fabians Schimmel ist weniger als %.0f entfernt", Abstand2000 ElseIf ( GetDistance "0poBegleiter01Ref" < 3000 ) Message "Fabians Schimmel ist weniger als %.0f entfernt", Abstand3000 ElseIf ( GetDistance "0poBegleiter01Ref" < 4000 ) Message "Fabians Schimmel ist weniger als %.0f entfernt", Abstand4000 ElseIf ( GetDistance "0poBegleiter01Ref" < 5000 ) Message "Fabians Schimmel ist weniger als %.0f entfernt", Abstand5000 ElseIf ( GetDistance "0poBegleiter01Ref" < 10000 ) Message "Fabians Schimmel ist weniger als %.0f entfernt", Abstand10000 ElseIf ( GetDistance "0poBegleiter01Ref" < 15000 ) Message "Fabians Schimmel ist weniger als %.0f entfernt", Abstand15000 ElseIf ( GetDistance "0poBegleiter01Ref" < 20000 ) Message "Fabians Schimmel ist weniger als %.0f entfernt", Abstand20000 ElseIf ( GetDistance "0poBegleiter01Ref" < 25000 ) Message "Fabians Schimmel ist weniger als %.0f entfernt", Abstand25000 ElseIf ( GetDistance "0poBegleiter01Ref" < 30000 ) Message "Fabians Schimmel ist weniger als %.0f entfernt", Abstand30000 EndIf If ( GetDistance "0poBegleiter01Ref" < 350 ) ; wir sind jetzt nahe genug, laden wir das PferdInDerWildnis Package If ( GetIsCurrentPackage "0poAIPferdInDerWildnis" == 0 ) ; nicht benötigtes Package entfernen RemoveScriptPackage ; das Package veranlasst das Pferd zum Besitzer zu reisen AddScriptPackage "0poAIPferdInDerWildnis" EndIf ; setze die Variable zurück Set Unterwegs To 0 EndIf EndIf End
AdiBeiElderScrolls 18:16, 7 November 2006 (EST)