I did it like this in my third and newly released module at some places.
- Make a few waypoints where you want the PC and the companions to stand, so they face each other like you want at an appropriate distance
- Then make a New Generic Trigger where you put a script like this at the OnEnter of the trigger.
- Make sure that you have a script somewhere on some node of the dialogue where the PC exits CutSceneMode otherwise the player won’t be able to move once the dialogue is done.
OnEnter trigger script example:
object oPC = GetEnteringObject();
if (!GetIsPC(oPC)) return;
int DoItOnce = GetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF));
if (DoItOnce==TRUE) return;
object oWP1 = GetNearestObjectByTag("wptfb1");
object oWP2 = GetNearestObjectByTag("wptfb2");
object oCompanion1 = GetNearestObjectByTag("comp1");
object oCompanion2 = GetNearestObjectByTag("comp2");
object oCompanion3 = GetNearestObjectByTag("comp3");
object oCompanion4 = GetNearestObjectByTag("comp4");
object oFactionLeader = GetFactionLeader(oPC);
SetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF), TRUE);
SetCutsceneMode(oPC); // this needs to be cleared by the dialog's End/Abort dialog handlers.
AssignCommand(oCompanion1, ActionStartConversation(oFactionLeader, "conversation", FALSE, FALSE, FALSE, FALSE));
Exit cutscene mode script that I use somewhere on a node in the dialogue(I think you can do this in another way too, but that’s just the way I do it):
object oPC = GetPCSpeaker();
Edit: When you have done it like this, and you’re now sure exactly where everyone is going to stand, you can then set up cameras that you tweak, so that they show the characters exactly the way you like, if you want it to be even more controlled from your part.
Edit 2: And you can of course use even more waypoints to really control exactly where each and everyone is standing.