Okay so the character goes somewhere, and that's good, but here's another problem:
The character needs to go meet another character.
So I have something of the form:
IF
DialogEnded("NameOfDialog", _)
AND
CharacterGetVarInteger(CHARACTER_SomeGuy,"FlagGo",1)
THEN
CharacterMoveToCharacter(CHARACTER_SomeGuy, CHARACTER_TheOtherGuy, 1, "");
which is nice.
Now I need something to happen after he's arrived. If I add an instruction after this, it runs immediately after they depart rather than after arrival. So how do I do -that-?
I refer to this as "event chaining".
So on your last call "CharacterMoveToCharacter" you have a "" at the end. That is a field you can use to make character events.
So make it something like:
CharacterMoveToCharacter(CHARACTER_SomeGuy, CHARACTER_TheOtherGuy, 1, "ArrivedAtOtherGuy");
The event ArrivedAtOtherGuy will throw once the call Movetocharacter is complete.
Then add another statement:
IF
CharacterEvent(CHARACTER_SomeGuy,"ArrivedAtOtherGuy")
THEN
WHATEVER YOU WANT TO HAPPEN.
So just keep in mind that if the character never reaches the other guy, the next event will never happen. Like if he gets killed in between or the path finding bugs out.
This is further complicated if the other guy also moves around.
As a blunt method you could stop any actions "other guy" is doing by using CharacterFreeze() in the first statement. This is dangerous though because you need to make sure the unfreeze happens in the event SomeGuy fails to arrive.
If he's using a wander script or something you can change the priority on it which is safer.
Course if he's doing nothing then nothing to worry about.