Chaosy
Tutorial Reviewer
- Joined
- Jun 9, 2011
- Messages
- 13,184
I have been working on a MPI version of the Conversation System uploaded back in the day. Sadly it only worked in single player so I thought I would give it a try.
To be completely honest this is the most weird method I've ever used to create a system.
The system WORKS but I want to fix flaws, maybe opinions on how to make it easier to use, etc.
edit: I am working on selecting units right now, no need to point out that out ^^
To be completely honest this is the most weird method I've ever used to create a system.
The system WORKS but I want to fix flaws, maybe opinions on how to make it easier to use, etc.
edit: I am working on selecting units right now, no need to point out that out ^^
-
Init
-
Events
- Map initialization
- Conditions
-
Actions
- Hashtable - Create a hashtable
- Set CS_hash = (Last created hashtable)
- Custom script: endfunction
- Custom script: scope ConversationScope initializer myUniqueInit
- Custom script: function UpdateText takes player p returns nothing
- Custom script: set udg_CS_player = p
- Set CS_id = (Player number of CS_player)
- Set CS_merge[CS_id] = <Empty String>
-
For each (Integer A) from 1 to CS_total_messages[CS_id], do (Actions)
-
Loop - Actions
- Set CS_messages[(Integer A)] = (Load (10 + (Integer A)) of CS_id from CS_hash)
- Custom script: set udg_CS_msg = udg_CS_messages[bj_forLoopAIndex] + "\n"
- Set CS_current_option = (Load 2 of CS_id from CS_hash)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- CS_current_option Equal to (Integer A)
-
Then - Actions
- Set CS_msg = (|c007d7d7d + (CS_msg + |r))
- Else - Actions
-
If - Conditions
- Set CS_merge[CS_id] = (CS_merge[CS_id] + CS_msg)
-
Loop - Actions
- Custom script: endfunction
- Custom script: function SaveOptions takes player p returns nothing
- Custom script: set udg_CS_id = GetPlayerId(p) + 1
- Custom script: call SaveInteger(udg_CS_hash, udg_CS_id, 2, 1)
-
For each (Integer CS_save_int) from 1 to CS_total_messages[CS_id], do (Actions)
-
Loop - Actions
- Hashtable - Save CS_messages[CS_save_int] as (10 + CS_save_int) of CS_id in CS_hash
-
Loop - Actions
- Custom script: call UpdateText(p)
- Custom script: endfunction
- Custom script: function KeyUp takes nothing returns nothing
- Set CS_current_option = (Load 2 of (Player number of (Triggering player)) from CS_hash)
- Set CS_current_option = (CS_current_option - 1)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- CS_current_option Less than 1
-
Then - Actions
- Set CS_current_option = CS_total_messages[(Player number of (Triggering player))]
- Else - Actions
-
If - Conditions
- Hashtable - Save CS_current_option as 2 of (Player number of (Triggering player)) in CS_hash
- Custom script: call UpdateText(GetTriggerPlayer())
- Custom script: endfunction
- Custom script: function KeyDown takes nothing returns nothing
- Set CS_current_option = (Load 2 of (Player number of (Triggering player)) from CS_hash)
- Set CS_current_option = (CS_current_option + 1)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- CS_current_option Greater than CS_total_messages[(Player number of (Triggering player))]
-
Then - Actions
- Set CS_current_option = 1
- Else - Actions
-
If - Conditions
- Hashtable - Save CS_current_option as 2 of (Player number of (Triggering player)) in CS_hash
- Custom script: call UpdateText(GetTriggerPlayer())
- Custom script: endfunction
- Custom script: private function myUniqueInit takes nothing returns nothing
- Custom script: set udg_CS_temp_trigger = CreateTrigger()
- Custom script: call TriggerAddAction(udg_CS_temp_trigger, function KeyDown)
- Trigger - Add to CS_temp_trigger the event (Player - Player 1 (Red) Presses the Down Arrow key)
- Custom script: set udg_CS_temp_trigger = CreateTrigger()
- Trigger - Add to CS_temp_trigger the event (Player - Player 1 (Red) Presses the Up Arrow key)
- Custom script: call TriggerAddAction(udg_CS_temp_trigger, function KeyUp)
- Custom script: endfunction
- Custom script: endscope
- Custom script: function whatever takes nothing returns nothing
-
Events
-
Loop
-
Events
- Time - Every 0.03 seconds of game time
- Conditions
-
Actions
-
Player Group - Pick every player in CS_ReplyGroup and do (Actions)
-
Loop - Actions
- Custom script: local real r = LoadReal(udg_CS_hash, GetPlayerId(GetEnumPlayer()), 1) + 0.03
- Custom script: call SaveReal(udg_CS_hash, GetPlayerId(GetEnumPlayer()), 1, r)
- Custom script: if r > 2 then
- Custom script: call FlushChildHashtable( udg_CS_hash, GetPlayerId(GetEnumPlayer()))
- Player Group - Remove (Picked player) from CS_ReplyGroup
- Custom script: endif
-
Loop - Actions
-
For each (Integer B) from 1 to 12, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- ((Player((Integer B))) is in CS_ReplyGroup) Equal to False
-
Then - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- CS_merge[(Integer B)] Not equal to <Empty String>
-
Then - Actions
- Cinematic - Send transmission to (Player group((Player((Integer B))))) from a Player 1 (Red) No unit-type named Player at (Position of Mountain King 0001 <gen>): Play No sound and display CS_merge[(Integer B)]. Modify duration: Set to 0.00 seconds and Wait
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
-
Player Group - Pick every player in CS_ReplyGroup and do (Actions)
-
Events
-
Create Base Dialogue
-
Events
- Time - Elapsed game time is 0.00 seconds
- Conditions
-
Actions
- -------- ------------ --------
- Set CS_messages[1] = Hello.
- Set CS_messages[2] = I got a present for you.
- Set CS_messages[3] = How do I get past the bridge?
- Set CS_messages[4] = See you!
-
Player Group - Pick every player in Player Group - Player 1 (Red) and do (Actions)
-
Loop - Actions
- Cinematic - Turn cinematic mode On for (Player group((Picked player)))
- Cinematic - Enable user control for (Player group((Picked player)))
- Camera - Apply Camera 001 <gen> for (Picked player) over 0.00 seconds
- Camera - Lock camera target for (Picked player) to Mountain King 0001 <gen>, offset by (0.00, 0.00) using Default rotation
- Set CS_total_messages[(Player number of (Picked player))] = 4
- Custom script: call SaveOptions(GetEnumPlayer())
-
Loop - Actions
- Trigger - Turn on Loop <gen>
-
Events
-
Replies
-
Events
- Player - Player 1 (Red) Presses the Right Arrow key
- Conditions
-
Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- CS_messages[CS_current_option] Equal to Hello.
-
Then - Actions
- Cinematic - Send transmission to (All players) from Archmage 0002 <gen> named sad: Play No sound and display My greetings.. Modify duration: Set to 2.00 seconds and Don't wait
- Player Group - Add (Triggering player) to CS_ReplyGroup
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- CS_messages[CS_current_option] Equal to How do I get past the bridge?
-
Then - Actions
- Cinematic - Send transmission to (All players) from Archmage 0002 <gen> named sad: Play No sound and display Impossible.. Modify duration: Set to 2.00 seconds and Don't wait
- Player Group - Add (Triggering player) to CS_ReplyGroup
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- CS_messages[CS_current_option] Equal to See you!
-
Then - Actions
- Cinematic - Turn cinematic mode Off for (Player group((Triggering player)))
- Set CS_total_messages[(Player number of (Triggering player))] = 0
- Custom script: call SaveOptions(GetTriggerPlayer())
- Camera - Reset camera for (Triggering player) to standard game-view over 2.00 seconds
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- CS_messages[CS_current_option] Equal to Nevermind.
-
Then - Actions
- Set CS_messages[1] = Hello.
- Set CS_messages[2] = I got a present for you.
- Set CS_messages[3] = How do I get past the bridge?
- Set CS_messages[4] = See you!
- Custom script: call SaveOptions(GetTriggerPlayer())
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
Or - Any (Conditions) are true
-
Conditions
- CS_messages[CS_current_option] Equal to Give him a teddybear.
- CS_messages[CS_current_option] Equal to Give him a wizard hat.
- CS_messages[CS_current_option] Equal to Give him a love letter.
-
Conditions
-
Or - Any (Conditions) are true
-
Then - Actions
- Cinematic - Send transmission to (All players) from Archmage 0002 <gen> named sad: Play No sound and display Thank you!. Modify duration: Set to 2.00 seconds and Don't wait
- Player Group - Add (Triggering player) to CS_ReplyGroup
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- CS_messages[CS_current_option] Equal to I got a present for you.
-
Then - Actions
- Cinematic - Send transmission to (All players) from Archmage 0002 <gen> named sad: Play No sound and display What is it?. Modify duration: Set to 2.00 seconds and Don't wait
- Player Group - Add (Triggering player) to CS_ReplyGroup
- Set CS_messages[1] = Give him a teddybear.
- Set CS_messages[2] = Give him a wizard hat.
- Set CS_messages[3] = Give him a love letter.
- Set CS_messages[4] = Nevermind.
- Custom script: call SaveOptions(GetTriggerPlayer())
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Events
Attachments
Last edited: