I'll give you an example from RoHT:
In the East Empire Company (EEC) quest, the player is supposed to have a Telvanni spy kill Canctunian Ponius by a scentless and tasteless poison. If the player decides to kill Ponius directly, an official enquiry will follow, and the Telvanni spy will have to flee. In that case, House Telvanni will lose its influence in the EEC completely.
Now, a scentless and tasteless poison is hard to find. It takes a master alchemist to make one, and neither Nalcarya of White Haven nor Abelle Chriditte are inclined to get involved in House politics and make one. So the player needs to find someone else. That someone was once a member of House Telvanni before he had to leave and hide from Therana. In order to persuade him to brew that poison, he'll demand a tower of his own, complete with guards.
Now there are three possible endings to that quest:
- The master alchemist gets his tower, brews the poison, and the Telvanni spy uses it to poison Canctunian Ponius.
- The master alchemist gets his tower, brews the poison, but the player decides to kill Canctunian Ponius by other means (or Ponius dies in an accident). The spy flees Vvardenfell.
- The master alchemist doesn't get his tower. The player kills Canctunian Ponius directly, or Canctunian has been dead from the beginning of the quest.
This situation is difficult to control by Journal entries alone, so I made global variables to keep track on the master alchemist's tower and on whether the spy takes over the EEC or flees Vvardenfell.
Let's get our hands dirty with some actual code:
The variables are called RoHT_EEC_status and RoHT_TelAzura_status. I added a global script to keep track of Canctunian Ponius' health:
begin RoHT_Canctunian_Script; this script checks, whether Canctunian is killed by the furtive poison or other means.; It is started by RoHT_advisor in the dialogue topic "imprudent activity"; global RoHT_EEC_status; This variable is set by RoHT_advisor in the dialogue "Greeting 1" and in this script; 0 = Canctunian Ponius lives and is in charge of the East Empire Company; 1 = Canctunian Ponius is dead and Mehitabel Llaras has taken office; 2 = Canctunian Ponius is dead and Mehitabel Llaras had to fleeif ( MenuMode == 1 ) returnendifif ( GetJournalIndex "RoHT_EastEmpireCompany" < 100 ); Canctunian should be alive if ( GetDeadCount, "Canctunian Ponius" > 0 ); but if he isn't, you have probably killed him before and this quest can't be solved as intended Journal, "RoHT_EastEmpireCompany", 110; stop this script, it has served its purpose; RoHT_EEC_status will be set to 2 by RoHT_advisor in the dialogue "Greeting 1", so that Mehitabel won't vanish before your eyes StopScript, "RoHT_Canctunian_Script" endif else return endifelseif ( GetJournalIndex "RoHT_EastEmpireCompany" == 100 ); this Journal entry is set by your advisor in the dialogue "Greeting 1" set RoHT_EEC_status to 1 "Canctunian Ponius"->SetHealth, 0 "Canctunian Ponius"->disable; quest solved, stop the script StopScript, "RoHT_Canctunian_Script"endifEnd
That script is started in dialogue at the appropriate time and will run until Canctunian Ponius is dead, regardless of his cause of death. RoHT_TelAzura is also set in dialogue:
; global RoHT_TelAzura_status; This variable is set to 1 by RoHT_advisor in the dialogue topic "master alchemist"; 0 = Tel Azura isn't built yet, Ammardunibi Camp is active; 1 = Tel Azura is completely built; Ranos and Bodrusa have moved there
With these two variables I'm able to keep track of this quest's outcome, regardless of Journal entries. For example:
"RoHT_TelAzura_status = 1" and "RoHT_EEC_status = 0" means that the player has recruited the master alchemist, but hasn't made any progress on taking over the EEC yet.
"RoHT_TelAzura_status = 1" and "RoHT_EEC_status = 1" means complete success.
"RoHT_TelAzura_status = 1" and "RoHT_EEC_status = 2" means partial success - master alchemist won, EEC lost
"RoHT_TelAzura_status = 0" and "RoHT_EEC_status = 2" means complete failure.
I have made extensive use of these possibilties in later quests, for example when I needed to filter dialogue independently of the EEC quest but with regard to the master alchemist's status in House Telvanni. To get an idea of how convoluted this can get, have a look at http://i271.photobucket.com/albums/jj158/bhlmods/WIP%20Rise%20of%20House%20Telvanni/RoHTQuestTree.png. Doing this by Journal entries alone would be a royal pain in the ****.
If you'd like to take a closer look at it, let me know: I can send you the current WIP version. It contains quite a few interesting dialogue techniques, like quest deflectors, quest delays, quests within quests, dialogue-and-script-choreographed sequences... lots of stuff to browse through. :read:
Expect to find some bugs in later quests, though. I'm not done testing yet.

B
Edit:I forgot to mention that using global variables also enables other mods to interact with your mod without being dependend on it. All that is required is that both mods feature the same global variable. For example, if you wanted one of your NPCs to comment on House Telvanni taking over the EEC, you'd add the global short variable "RoHT_EEC_status" to your mod and filter your dialogue for "global RoHT_EEC_status == 1". If RoHT is also running, players would be able to see that dialogue; if RoHT isn't running, they won't even notice that it exists. Point is that your mod will work, regardless of whether RoHT is present or not.