Difference between revisions of "Osiris/Shared/Proc StartDialog"

From Divinity Engine Wiki
Jump to: navigation, search
m
(Explain how to start a dialog with more than six speakers)
 
(One intermediate revision by the same user not shown)
Line 15: Line 15:
 
* If you want to set or clear certain flags before a particular dialog starts, you can use [[Osiris/Shared/Proc_DialogFlagSetup|Proc_DialogFlagSetup]].
 
* If you want to set or clear certain flags before a particular dialog starts, you can use [[Osiris/Shared/Proc_DialogFlagSetup|Proc_DialogFlagSetup]].
 
* By default, this routine will make all participants of the dialog face each other before the dialog starts. This can be prevented per NPC by defining the [[Osiris/Shared/DB_DoNotFace|DB_DoNotFace]] database. This is particularly important if you have e.g. a knocked-down NPC with which you want players to be able to converse. The reason is that any Osiris command issues for a character will remove any incapicated statuses for that character, and this includes looking at someone else. So without setting this DB, the knocked-down status will be removed as soon as someone talks to that NPC.
 
* By default, this routine will make all participants of the dialog face each other before the dialog starts. This can be prevented per NPC by defining the [[Osiris/Shared/DB_DoNotFace|DB_DoNotFace]] database. This is particularly important if you have e.g. a knocked-down NPC with which you want players to be able to converse. The reason is that any Osiris command issues for a character will remove any incapicated statuses for that character, and this includes looking at someone else. So without setting this DB, the knocked-down status will be removed as soon as someone talks to that NPC.
 +
* If you need to start a dialog with more than six speakers, start it with six speakers and after the [[Osiris/API/AutomatedDialogStarted|AutomatedDialogStarted]]/[[Osiris/API/DialogStarted|DialogStarted]] event, add the remaining speakers with [[Osiris/API/DialogAddActorAt|DialogAddActorAt]].
 
===== See Also =====
 
===== See Also =====
 
* [[Osiris/API/AutomatedDialogRequestFailed|AutomatedDialogRequestFailed]]
 
* [[Osiris/API/AutomatedDialogRequestFailed|AutomatedDialogRequestFailed]]
 
* [[Osiris/API/AutomatedDialogStarted|AutomatedDialogStarted]]
 
* [[Osiris/API/AutomatedDialogStarted|AutomatedDialogStarted]]
 +
* [[Osiris/API/DialogAddActorAt|DialogAddActorAt]]
 
* [[Osiris/API/DialogRequestFailed|DialogRequestFailed]]
 
* [[Osiris/API/DialogRequestFailed|DialogRequestFailed]]
 
* [[Osiris/API/DialogRequestStop|DialogRequestStop]]
 
* [[Osiris/API/DialogRequestStop|DialogRequestStop]]
Line 23: Line 25:
 
* [[Osiris/API/DialogStarted|DialogStarted]]
 
* [[Osiris/API/DialogStarted|DialogStarted]]
 
* [[Osiris/API/DialogStartRequested|DialogStartRequested]]
 
* [[Osiris/API/DialogStartRequested|DialogStartRequested]]
 +
* [[Osiris/API/StartDefaultDialog|StartDefaultDialog]]
 +
* [[Osiris/API/StartDialog_Internal|StartDialog_Internal]]
 +
* [[Osiris/API/StartDialog_Internal_NoDeadCheck|StartDialog_Internal_NoDeadCheck]]
 
* Helper [[Osiris/Shared/DB DialogNPCs|DB DialogNPCs]]
 
* Helper [[Osiris/Shared/DB DialogNPCs|DB DialogNPCs]]
 
* Helper [[Osiris/Shared/DB DialogPlayers|DB DialogPlayers]]
 
* Helper [[Osiris/Shared/DB DialogPlayers|DB DialogPlayers]]

Latest revision as of 12:33, 19 December 2018

Full Definition(s)
  • PROC Proc_StartDialog((INTEGER)_Automated, (STRING)_Dialog, (GUIDSTRING)_Speaker1)
  • PROC Proc_StartDialog((INTEGER)_Automated, (STRING)_Dialog, (GUIDSTRING)_Speaker1, (GUIDSTRING)_Speaker2)
  • PROC Proc_StartDialog((INTEGER)_Automated, (STRING)_Dialog, (GUIDSTRING)_Speaker1, (GUIDSTRING)_Speaker2, (GUIDSTRING)_Speaker2)
  • PROC Proc_StartDialog((INTEGER)_Automated, (STRING)_Dialog, (GUIDSTRING)_Speaker1, (GUIDSTRING)_Speaker2, (GUIDSTRING)_Speaker2, (GUIDSTRING)_Speaker3)
  • PROC Proc_StartDialog((INTEGER)_Automated, (STRING)_Dialog, (GUIDSTRING)_Speaker1, (GUIDSTRING)_Speaker2, (GUIDSTRING)_Speaker2, (GUIDSTRING)_Speaker3, (GUIDSTRING)_Speaker4)
  • PROC Proc_StartDialog((INTEGER)_Automated, (STRING)_Dialog, (GUIDSTRING)_Speaker1, (GUIDSTRING)_Speaker2, (GUIDSTRING)_Speaker2, (GUIDSTRING)_Speaker3, (GUIDSTRING)_Speaker4, (GUIDSTRING)_Speaker5)
  • PROC Proc_StartDialog((INTEGER)_Automated, (STRING)_Dialog, (GUIDSTRING)_Speaker1, (GUIDSTRING)_Speaker2, (GUIDSTRING)_Speaker2, (GUIDSTRING)_Speaker3, (GUIDSTRING)_Speaker4, (GUIDSTRING)_Speaker5, (GUIDSTRING)_Speaker6)
Description

This is the only routine that should be used to start dialogs. _Automated should be 1 if _Dialog is an automated dialog of any kind (automated dialog, automated ghost dialog, or a repeated variant of these). You have to specify as many speaker parameters as there are speakers in _Dialog. You can, however, specify NULL_00000000-0000-0000-0000-000000000000 in case you have optional speakers for your dialog (through the use of optional nodes or flag checks).

Return Values
  • /
Notes
  • This routine is both used for explicitly starting dialogs from Osiris, and to start dialogs in response to a DialogStartRequested event due to a player clicking on something.
  • If you want to set or clear certain flags before a particular dialog starts, you can use Proc_DialogFlagSetup.
  • By default, this routine will make all participants of the dialog face each other before the dialog starts. This can be prevented per NPC by defining the DB_DoNotFace database. This is particularly important if you have e.g. a knocked-down NPC with which you want players to be able to converse. The reason is that any Osiris command issues for a character will remove any incapicated statuses for that character, and this includes looking at someone else. So without setting this DB, the knocked-down status will be removed as soon as someone talks to that NPC.
  • If you need to start a dialog with more than six speakers, start it with six speakers and after the AutomatedDialogStarted/DialogStarted event, add the remaining speakers with DialogAddActorAt.
See Also