Difference between revisions of "Talk:GetDialogueTarget - Actor"
Jump to navigation
Jump to search
imported>Zartar |
imported>Zartar |
||
Line 30: | Line 30: | ||
== Examples == | == Examples == | ||
<source lang="papyrus"> | <source lang="papyrus"> | ||
;This is a custom function so you have to include it in your script. | |||
Actor Function GetPlayerDialogueTarget() | |||
Actor kPlayerDialogueTarget | |||
Actor kPlayerRef = Game.GetPlayer() | |||
Int iLoopCount = 10 | |||
While iLoopCount > 0 | |||
iLoopCount -= 1 | |||
kPlayerDialogueTarget = Game.FindRandomActorFromRef(kPlayerRef , 200.0) | |||
If kPlayerDialogueTarget != kPlayerRef && kPlayerDialogueTarget.IsInDialogueWithPlayer() | |||
Return kPlayerDialogueTarget | |||
EndIf | |||
EndWhile | |||
Return None | |||
EndFunction | |||
; Print a message if the player is in dialogue with Bob. | ; Print a message if the player is in dialogue with Bob. | ||
if (GetPlayerDialogueTarget() == Bob) | if (GetPlayerDialogueTarget() == Bob) |
Revision as of 21:10, 9 February 2013
Obtains the actor the player is currently in dialogue with.
Syntax
Actor Function GetPlayerDialogueTarget() non-native
Source:
Actor Function GetPlayerDialogueTarget()
Actor kPlayerDialogueTarget
Actor kPlayerRef = Game.GetPlayer()
Int iLoopCount = 10
While iLoopCount > 0
iLoopCount -= 1
kPlayerDialogueTarget = Game.FindRandomActorFromRef(kPlayerRef , 200.0)
If kPlayerDialogueTarget != kPlayerRef && kPlayerDialogueTarget.IsInDialogueWithPlayer()
Return kPlayerDialogueTarget
EndIf
EndWhile
Return None
EndFunction
Parameters
None.
Return Value
The actor the player is currently in dialogue with (if any).
Examples
;This is a custom function so you have to include it in your script.
Actor Function GetPlayerDialogueTarget()
Actor kPlayerDialogueTarget
Actor kPlayerRef = Game.GetPlayer()
Int iLoopCount = 10
While iLoopCount > 0
iLoopCount -= 1
kPlayerDialogueTarget = Game.FindRandomActorFromRef(kPlayerRef , 200.0)
If kPlayerDialogueTarget != kPlayerRef && kPlayerDialogueTarget.IsInDialogueWithPlayer()
Return kPlayerDialogueTarget
EndIf
EndWhile
Return None
EndFunction
; Print a message if the player is in dialogue with Bob.
if (GetPlayerDialogueTarget() == Bob)
Debug.Trace("The player is in dialogue with Bob!")
endIf
Notes
This usually finds the actor the player is in dialogue with but more testing is required. It works very well for me, so far... I tend to modify this by passing in the player's reference and lowering iLoopCount but the version I posted is safe and convenient.