• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Conversation System

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Some people had asked me, so I uploaded a full conversation system form project with example talk.
The System is easy to modify. New conversations will use data from a separate category (Conversation NCD), so that everything is automated.



  • Conversation NCD
    • Events
    • Conditions
    • Actions
      • Unit - Make The_Interlocutor_CPU Invulnerable
      • Unit - Make The_Interlocutor_HERO[Player_ID] Invulnerable
      • Unit - Pause The_Interlocutor_HERO[Player_ID]
      • Unit - Pause The_Interlocutor_CPU
      • Trigger - Turn on Conversation Player Ask list <gen>
      • Trigger - Turn on Down Arror Key <gen>
      • Trigger - Turn on Up Arrow Key <gen>
      • Unit - Make The_Interlocutor_CPU face The_Interlocutor_HERO[Player_ID] over 1.00 seconds
      • Unit - Make The_Interlocutor_HERO[Player_ID] face The_Interlocutor_CPU over 1.00 seconds
      • Cinematic - Clear the screen of text messages for PlayerCinematicGroup[Player_ID]
      • Cinematic - Enable user control for PlayerCinematicGroup[Player_ID]
      • Camera - Lock camera target for PlayerCinematic[Player_ID] to The_Interlocutor_HERO[Player_ID], offset by (0.00, 0.00) using Default rotation
      • Trigger - Run Conversation Player Options <gen> (ignoring conditions)
      • Trigger - Turn off (This trigger)
Arrow Keys:

  • Down Arror Key
    • Events
      • Player - Player 1 (Red) Presses the Down Arrow key
      • Player - Player 2 (Blue) Presses the Down Arrow key
      • Player - Player 3 (Teal) Presses the Down Arrow key
      • Player - Player 4 (Purple) Presses the Down Arrow key
      • Player - Player 5 (Yellow) Presses the Down Arrow key
      • Player - Player 6 (Orange) Presses the Down Arrow key
      • Player - Player 7 (Green) Presses the Down Arrow key
      • Player - Player 8 (Pink) Presses the Down Arrow key
      • Player - Player 9 (Gray) Presses the Down Arrow key
      • Player - Player 10 (Light Blue) Presses the Down Arrow key
      • Player - Player 11 (Dark Green) Presses the Down Arrow key
      • Player - Player 12 (Brown) Presses the Down Arrow key
    • Conditions
      • Conversation[Player_ID] Equal to True
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Default_Selected_Text_Line Less than Total_Number_of_Text_Lines
        • Then - Actions
          • Set Default_Selected_Text_Line = (Default_Selected_Text_Line + 1)
        • Else - Actions
          • Set Default_Selected_Text_Line = 1
      • Trigger - Run Conversation Player Options <gen> (ignoring conditions)

  • Up Arrow Key
    • Events
      • Player - Player 1 (Red) Presses the Up Arrow key
      • Player - Player 2 (Blue) Presses the Up Arrow key
      • Player - Player 3 (Teal) Presses the Up Arrow key
      • Player - Player 4 (Purple) Presses the Up Arrow key
      • Player - Player 5 (Yellow) Presses the Up Arrow key
      • Player - Player 6 (Orange) Presses the Up Arrow key
      • Player - Player 7 (Green) Presses the Up Arrow key
      • Player - Player 8 (Pink) Presses the Up Arrow key
      • Player - Player 9 (Gray) Presses the Up Arrow key
      • Player - Player 10 (Light Blue) Presses the Up Arrow key
      • Player - Player 11 (Dark Green) Presses the Up Arrow key
      • Player - Player 12 (Brown) Presses the Up Arrow key
    • Conditions
      • Conversation[Player_ID] Equal to True
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Default_Selected_Text_Line Greater than 1
        • Then - Actions
          • Set Default_Selected_Text_Line = (Default_Selected_Text_Line - 1)
        • Else - Actions
          • Set Default_Selected_Text_Line = Total_Number_of_Text_Lines
      • Trigger - Run Conversation Player Options <gen> (ignoring conditions)
Player's sentences: (5 max) /edit: 6 is possible

  • Conversation Player Options
    • Events
    • Conditions
    • Actions
      • Set Prepared_Questions = <Empty String>
      • For each (Integer A) from 1 to Total_Number_of_Text_Lines, do (Actions)
        • Loop - Actions
          • Set Text = (((String((Integer A))) + . ) + Text_Line[(Integer A)])
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Integer A) Equal to Default_Selected_Text_Line
            • Then - Actions
              • Set Text = ((Color_START + Text) + Color_END)
            • Else - Actions
          • Set Text = (Text + |n)
          • Set Prepared_Questions = (Prepared_Questions + Text)
      • Trigger - Turn on Conversation Player Ask list <gen>
      • Trigger - Turn off (This trigger)
Show player's sentences: (in cinematic mode)

  • Conversation Player Ask list
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Cinematic - Send transmission to PlayerCinematicGroup[Player_ID] from a PlayerCinematic[Player_ID] No unit-type named (Name of The_Interlocutor_HERO[Player_ID]) at temploc: Play No sound and display Prepared_Questions. Modify duration: Set to 0.00 seconds and Wait
Ending

  • Ending
    • Events
    • Conditions
    • Actions
      • Trigger - Turn off Camera_Triggers[Convestaion_ID_Number[Player_ID]]
      • Trigger - Turn off Down Arror Key <gen>
      • Trigger - Turn off Up Arrow Key <gen>
      • Trigger - Turn off Conversation Player Ask list <gen>
      • Trigger - Turn off Conversation Player Options <gen>
      • Cinematic - Turn cinematic mode Off for PlayerCinematicGroup[Player_ID]
      • Camera - Reset camera for PlayerCinematic[Player_ID] to standard game-view over 1.00 seconds
      • Unit - Make The_Interlocutor_CPU Vulnerable
      • Unit - Make The_Interlocutor_HERO[Player_ID] Vulnerable
      • Unit - Unpause The_Interlocutor_CPU
      • Unit - Unpause The_Interlocutor_HERO[Player_ID]
      • Set The_Interlocutor_HERO[Player_ID] = No unit
      • Set The_Interlocutor_CPU = No unit
      • Set Conversation[Player_ID] = False
      • Set Convestaion_ID_Number[Player_ID] = 0
      • Custom script: call DestroyForce(udg_PlayerCinematicGroup[udg_Player_ID])
      • Selection - Select Hero[Player_ID]
      • Set Player_ID = 0
I formed it to work for every new conversation, irrespective of contents and the number of the answers/questions.

You can add more cameras and make big convestaion answers/questions tree.
I added tooltips in triggers, so I think it's easy to understand.

messagebox_warning.png
When you copy triggers into your map, some variables with initial value will be reset.

Color_START = |c00808080 (example selected text line color)
Color_END = |r
And Conversation[array] = False




Example Activate:

  • Enter01
    • Events
      • Unit - A unit enters Example Talk Activate Loc <gen>
    • Conditions
      • ((Entering unit) is A Hero) Equal to True
      • (Entering unit) Equal to Hero[(Player number of (Owner of (Entering unit)))]
    • Actions
      • Set Player_ID = (Player number of (Owner of (Entering unit)))
      • Set PlayerCinematic[Player_ID] = (Owner of (Entering unit))
      • Set PlayerCinematicGroup[Player_ID] = (Player group(PlayerCinematic[Player_ID]))
      • Game - Display to PlayerCinematicGroup[Player_ID] the text: ...
      • Trigger - Turn on Activated Talk 01 <gen>
      • Trigger - Turn on Leave01 <gen>
      • Trigger - Turn off (This trigger)
Example Deactive:

  • Leave01
    • Events
      • Unit - A unit leaves Example Talk Activate Loc <gen>
    • Conditions
      • ((Leaving unit) is A Hero) Equal to True
      • (Leaving unit) Equal to Hero[(Player number of (Owner of (Leaving unit)))]
    • Actions
      • Cinematic - Clear the screen of text messages for PlayerCinematicGroup[Player_ID]
      • Custom script: call DestroyForce(udg_PlayerCinematicGroup[udg_Player_ID])
      • Set Player_ID = 0
      • Trigger - Turn off Activated Talk 01 <gen>
      • Trigger - Turn on Enter01 <gen>
      • Trigger - Turn off (This trigger)
If player press the [E] button:

  • Activated Talk 01
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Use [E]
      • (Casting unit) Equal to Hero
      • Actions
        • Trigger - Turn off (This trigger)
        • Selection - Clear selection for PlayerCinematic[Player_ID]
        • Trigger - Turn off (This trigger)
        • Set Activate_Trigger = Enter01 <gen>
        • Set Deactivate_Trigger = Leave01 <gen>
        • Trigger - Turn off Activate_Trigger
        • Trigger - Turn off Deactivate_Trigger
        • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
        • -------- That Boolean variable is used to disable other things (like camera system) when Talk System is activated --------
        • Set Conversation[Player_ID] = True
        • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
        • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
        • -------- Always set number of talk. (This is important to Active and Deactive Camera of this conversation without copy and paste) --------
        • Set Convestaion_ID_Number[Player_ID] = 1
        • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
        • Set The_Interlocutor_HERO[Player_ID] = Hero
        • Set The_Interlocutor_CPU = Knight 0000 <gen>
        • Set The_Interlocutor_CPU_Name = Guard
        • Cinematic - Turn cinematic mode On for PlayerCinematicGroup[Player_ID]
        • Wait 1.00 seconds
        • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
        • Set Hero_STARTING_Location = (Position of The_Interlocutor_HERO[Player_ID])
        • Set MoveLocation = (Region centered at (Center of Conversation 01 <gen>) with size (10.00, 10.00))
        • Set Hero_ENDING_Location = (Center of MoveLocation)
        • Unit - Move The_Interlocutor_HERO[Player_ID] instantly to Hero_ENDING_Location
        • Custom script: call RemoveLocation(udg_Hero_STARTING_Location)
        • Custom script: call RemoveRect(udg_MoveLocation)
        • Custom script: call RemoveLocation(udg_Hero_ENDING_Location)
        • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
        • Set Camera_Triggers[Convestaion_ID_Number[Player_ID]] = Camera 01 <gen>
        • Trigger - Turn on Camera_Triggers[Convestaion_ID_Number[Player_ID]]
        • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
        • -------- The interlocutor starts conversation in this instance: --------
        • Cinematic - Send transmission to PlayerCinematicGroup[Player_ID] from The_Interlocutor_CPU named The_Interlocutor_CPU_Name: Play No sound and display Hello!. Modify duration: Set to 1.50 seconds and Wait
        • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
        • Trigger - Run Player 01a <gen> (checking conditions)
        • Trigger - Turn on Answers01a <gen>
        • Trigger - Run Conversation NCD <gen> (ignoring conditions)
Now Dialog 01 Starts:

Dialogs:



  • Player 01a
    • Events
    • Conditions
      • Conversation[Player_ID] Equal to True
    • Actions
      • Set Text_Line[1] = Hello
      • Set Text_Line[2] = How are you?
      • Set Text_Line[3] = Bye
      • Set Total_Number_of_Text_Lines = 3
      • Set Default_Selected_Text_Line = 1
      • -------- --------- --------
      • Trigger - Turn off (This trigger)
CPU Answers:

  • Answers01a
    • Events
      • Player - Player 1 (Red) Presses the Right Arrow key
      • Player - Player 2 (Blue) Presses the Right Arrow key
      • Player - Player 3 (Teal) Presses the Right Arrow key
      • Player - Player 4 (Purple) Presses the Right Arrow key
      • Player - Player 5 (Yellow) Presses the Right Arrow key
      • Player - Player 6 (Orange) Presses the Right Arrow key
      • Player - Player 7 (Green) Presses the Right Arrow key
      • Player - Player 8 (Pink) Presses the Right Arrow key
      • Player - Player 9 (Gray) Presses the Right Arrow key
      • Player - Player 10 (Light Blue) Presses the Right Arrow key
      • Player - Player 11 (Dark Green) Presses the Right Arrow key
      • Player - Player 12 (Brown) Presses the Right Arrow key
    • Conditions
      • Conversation[Player_ID] Equal to True
    • Actions
      • Trigger - Turn off Conversation Player Ask list <gen>
      • Trigger - Turn off Down Arror Key <gen>
      • Trigger - Turn off Up Arrow Key <gen>
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Default_Selected_Text_Line Equal to 1
        • Then - Actions
          • Cinematic - Send transmission to PlayerCinematicGroup[Player_ID] from The_Interlocutor_CPU named The_Interlocutor_CPU_Name: Play No sound and display May I help you?. Modify duration: Set to 3.00 seconds and Wait
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
          • Trigger - Turn on Answers01b <gen>
          • Trigger - Run Player 01b <gen> (ignoring conditions)
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Default_Selected_Text_Line Equal to 2
            • Then - Actions
              • Cinematic - Send transmission to PlayerCinematicGroup[Player_ID] from The_Interlocutor_CPU named The_Interlocutor_CPU_Name: Play No sound and display Great, thanks. May .... Modify duration: Set to 2.00 seconds and Wait
              • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
              • Trigger - Turn on Answers01b <gen>
              • Trigger - Run Player 01b <gen> (ignoring conditions)
              • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Default_Selected_Text_Line Equal to 3
                • Then - Actions
                  • -------- ENDING --------
                  • Cinematic - Send transmission to PlayerCinematicGroup[Player_ID] from The_Interlocutor_CPU named The_Interlocutor_CPU_Name: Play No sound and display Good bye. Modify duration: Set to 2.00 seconds and Wait
                  • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
                  • Trigger - Run Ending <gen> (ignoring conditions)
                  • Trigger - Turn off (This trigger)
                  • Skip remaining actions
                  • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
                • Else - Actions
                  • Do nothing
      • Trigger - Turn on Down Arror Key <gen>
      • Trigger - Turn on Up Arrow Key <gen>
      • Trigger - Turn on Conversation Player Ask list <gen>
      • Trigger - Run Conversation Player Options <gen> (ignoring conditions)
      • Trigger - Turn off (This trigger)


  • [Player 01b
    • Events
    • Conditions
      • Conversation[Player_ID] Equal to True
    • Actions
      • Set Text_Line[1] = I need blacksmith for repairs
      • Set Text_Line[2] = I killed so many people today and I need new equipment
      • Set Text_Line[3] = No, thanks
      • Set Text_Line[4] = Do you know where is the urban area?
      • Set Total_Number_of_Text_Lines = 4
      • Set Default_Selected_Text_Line = 1
      • -------- --------- --------
      • Trigger - Turn off (This trigger)
CPU Answers:

  • Answers01b
    • Events
      • Player - Player 1 (Red) Presses the Right Arrow key
      • Player - Player 2 (Blue) Presses the Right Arrow key
      • Player - Player 3 (Teal) Presses the Right Arrow key
      • Player - Player 4 (Purple) Presses the Right Arrow key
      • Player - Player 5 (Yellow) Presses the Right Arrow key
      • Player - Player 6 (Orange) Presses the Right Arrow key
      • Player - Player 7 (Green) Presses the Right Arrow key
      • Player - Player 8 (Pink) Presses the Right Arrow key
      • Player - Player 9 (Gray) Presses the Right Arrow key
      • Player - Player 10 (Light Blue) Presses the Right Arrow key
      • Player - Player 11 (Dark Green) Presses the Right Arrow key
      • Player - Player 12 (Brown) Presses the Right Arrow key
    • Conditions
      • Conversation[Player_ID] Equal to True
    • Actions
      • Trigger - Turn off Conversation Player Ask list <gen>
      • Trigger - Turn off Down Arror Key <gen>
      • Trigger - Turn off Up Arrow Key <gen>
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Default_Selected_Text_Line Equal to 1
        • Then - Actions
          • Cinematic - Send transmission to PlayerCinematicGroup[Player_ID] from The_Interlocutor_CPU named The_Interlocutor_CPU_Name: Play No sound and display The blacksmith is o.... Modify duration: Set to 2.50 seconds and Wait
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
          • Trigger - Turn on Answers01c <gen>
          • Trigger - Run Player 01c <gen> (ignoring conditions)
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Default_Selected_Text_Line Equal to 2
            • Then - Actions
              • Cinematic - Send transmission to PlayerCinematicGroup[Player_ID] from The_Interlocutor_CPU named The_Interlocutor_CPU_Name: Play No sound and display Nice. City is behin.... Modify duration: Set to 4.50 seconds and Wait
              • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
              • Trigger - Turn on Answers01c <gen>
              • Trigger - Run Player 01c <gen> (ignoring conditions)
              • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Default_Selected_Text_Line Equal to 3
                • Then - Actions
                  • Cinematic - Send transmission to PlayerCinematicGroup[Player_ID] from The_Interlocutor_CPU named The_Interlocutor_CPU_Name: Play No sound and display Ok. I'm sorry, but .... Modify duration: Set to 3.00 seconds and Wait
                  • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
                  • Trigger - Run Ending <gen> (ignoring conditions)
                  • Trigger - Turn off (This trigger)
                  • Skip remaining actions
                  • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
                • Else - Actions
                  • Do nothing
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Default_Selected_Text_Line Equal to 4
                    • Then - Actions
                      • Cinematic - Send transmission to PlayerCinematicGroup[Player_ID] from The_Interlocutor_CPU named The_Interlocutor_CPU_Name: Play No sound and display Behind the hill is .... Modify duration: Set to 1.50 seconds and Wait
                      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
                      • Trigger - Turn on Answers01c <gen>
                      • Trigger - Run Player 01c <gen> (ignoring conditions)
                      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
                    • Else - Actions
                      • Do nothing
      • Trigger - Turn on Down Arror Key <gen>
      • Trigger - Turn on Up Arrow Key <gen>
      • Trigger - Turn on Conversation Player Ask list <gen>
      • Trigger - Run Conversation Player Options <gen> (ignoring conditions)
      • Trigger - Turn off (This trigger)


  • Player 01c
    • Events
    • Conditions
      • Conversation[Player_ID] Equal to True
    • Actions
      • Set Text_Line[1] = Ok, thanks
      • Set Total_Number_of_Text_Lines = 1
      • Set Default_Selected_Text_Line = 1
      • -------- --------- --------
      • Trigger - Turn off (This trigger)
CPU Answers:

  • Answers01c
    • Events
      • Player - Player 1 (Red) Presses the Right Arrow key
      • Player - Player 2 (Blue) Presses the Right Arrow key
      • Player - Player 3 (Teal) Presses the Right Arrow key
      • Player - Player 4 (Purple) Presses the Right Arrow key
      • Player - Player 5 (Yellow) Presses the Right Arrow key
      • Player - Player 6 (Orange) Presses the Right Arrow key
      • Player - Player 7 (Green) Presses the Right Arrow key
      • Player - Player 8 (Pink) Presses the Right Arrow key
      • Player - Player 9 (Gray) Presses the Right Arrow key
      • Player - Player 10 (Light Blue) Presses the Right Arrow key
      • Player - Player 11 (Dark Green) Presses the Right Arrow key
      • Player - Player 12 (Brown) Presses the Right Arrow key
    • Conditions
      • Conversation[Player_ID] Equal to True
    • Actions
      • Trigger - Turn off Conversation Player Ask list <gen>
      • Trigger - Turn off Down Arror Key <gen>
      • Trigger - Turn off Up Arrow Key <gen>
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Default_Selected_Text_Line Equal to 1
        • Then - Actions
          • Cinematic - Send transmission to PlayerCinematicGroup[Player_ID] from The_Interlocutor_CPU named The_Interlocutor_CPU_Name: Play No sound and display See you later. Modify duration: Set to 1.50 seconds and Wait
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
          • Trigger - Run Ending <gen> (ignoring conditions)
          • Trigger - Turn off (This trigger)
          • Skip remaining actions
          • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
        • Else - Actions
      • Trigger - Turn on Down Arror Key <gen>
      • Trigger - Turn on Up Arrow Key <gen>
      • Trigger - Turn on Conversation Player Ask list <gen>
      • Trigger - Run Conversation Player Options <gen> (ignoring conditions)
      • Trigger - Turn off (This trigger)




Keywords:
talk, conversation, arrow keys, arrow, key, system
Contents

Blabla (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. Very nice system, but it only works in single player.

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.

Reviewed by Maker, Conversation System, 27th Jan 2012

Very nice system, but it only works in single player.
 
This is outstanding and deserving of nothing less than a Highly Recommended.
Could you please post the triggers in the description though? :3

edit
Seriously, if you can improve the triggers, I'd nag Bribe to rate it 5/5 =P (It's not always about the triggers, but sometimes, the concept)

1- Instead of making it run specifically for Player 1, you should give it the ability to run for multiple players.
2- In the Conversation NCD trigger, the wait can be removed :eek:
3- This should also be able to support multiple units per player :/ (Since this system is going to be used for RPG maps only, I'm guessing a unit array variable supporting one unit per player would be fine. You could take it a step further and give it support for multiple units. )
4- Instead of 0.02, use 0.03 for the periodic trigger
5- All the variables like Conversation and the like should be arrays so that it could support multiple players.

Yes, I still rated it 5/5 even though the triggers needed an improvement.
Is there a problem? I loved it.
 
Level 4
Joined
May 1, 2008
Messages
315
This is outstanding and deserving of nothing less than a Highly Recommended.
Could you please post the triggers in the description though? :3

edit
Seriously, if you can improve the triggers, I'd nag Bribe to rate it 5/5 =P (It's not always about the triggers, but sometimes, the concept)

1- Instead of making it run specifically for Player 1, you should give it the ability to run for multiple players.
2- In the Conversation NCD trigger, the wait can be removed :eek:
3- This should also be able to support multiple units per player :/ (Since this system is going to be used for RPG maps only, I'm guessing a unit array variable supporting one unit per player would be fine. You could take it a step further and give it support for multiple units. )
4- Instead of 0.02, use 0.03 for the periodic trigger
5- All the variables like Conversation and the like should be arrays so that it could support multiple players.

Yes, I still rated it 5/5 even though the triggers needed an improvement.
Is there a problem? I loved it.


1- I didn't thought about the other players, because I thought, that no one will use this cinematic based system in multiplayer map, but ok. ;)

2. Haha ... this is doing nothnig, but I'll kill it.

3-1

4- For me no difference. Just prove, this make a difference. ;)

In total, you told me some improvements, which every average triggerer can do for himself, but ok, maybe i update something. ;D

==========================================================================================
edit:
I tested it as other players then red and it works.
 
Last edited:

Deleted member 177737

D

Deleted member 177737

You finally uploaded it, yay!
 
Trolltip:
Instead of registering events like that, you could create a new trigger that runs on Map initialization and loops from 1 to 12 to add the events to both triggers:

  • Init
    • Events
      • Map Initialization
    • Conditions
    • Actions
      • For Each (Integer A) from 1 to 12, do (Actions)
        • Loop - Actions
          • Trigger - Add Arrowkey Press Down event to the first trigger for Player (Integer A)
          • Trigger - Add Arrowkey Press Up event to the second trigger for Player (Integer A)
Now you can leave the Arrow Key triggers with no events
 
Looking at your map thread and I saw this in there lol. Btw maggy it's more effecient to add the events manually (the map doesnt have to cycle through integers and reduces map load time) even though its way easier doing it that way xD

Sadly about this system though is that it requires a enormus amount of triggers to do a simple conversation, I don't really have any suggestions on how to improve it, but I'll think about it.
I would definately want to see this improved/approved though.
 
Level 4
Joined
May 1, 2008
Messages
315
Looking at your map thread and I saw this in there lol. Btw maggy it's more effecient to add the events manually (the map doesnt have to cycle through integers and reduces map load time) even though its way easier doing it that way xD

Sadly about this system though is that it requires a enormus amount of triggers to do a simple conversation, I don't really have any suggestions on how to improve it, but I'll think about it.
I would definately want to see this improved/approved though.

Heh... you think, that I didn't thought how make it more...short? ;)

IMO, there is not that big amount of triggers. Completely it is easy to add new qustions/answers. And maybe on this map conversation algorithm is simple , as you say (every answer comes down to the same set of questions), but a little time and you can do really extensive talk with many options.

I had an idea, to create the base of contents (separate, one trigger), which other trigger (answers) would take contents from base and show in correct order. I mean, you could program the whole talk in one trigger using integers and basic calculations. And everything would happen with only two triggers.

Approved?
This is 3rd day, but.. essentially, I don't care about it. I uploaded it, because few persons asked me for it.

Thanks, anyway. ;)
 
Level 4
Joined
May 1, 2008
Messages
315
I've not had time to open this up in World Editor, so no, I can't approve it yet.

I am usual at work when you see me online at The Hive.

Keep in mind we are all volunteers here. No one is getting paid.

You can try to message Pharaoh_ or Maker, if they have some time to test this.

It's ok.

I was moderator of the other several polish sites like that (heh... most of them are already dead), so I know that is a pure voluntarism. ;)

Will you add more of your system in the future?

Perhaps, after release.
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
First of all you should add importing instructions into the map file.

Then you could create an initialization trigger where you set Color end and color start.

You shouldn't set initial size for the player group array. If you set the initial size to 12, then 12 player groups are created. Then you create groups over them when conversations start.

As far as I can tell the Interlocutor_CPU should also be arrayed so the system is MPI.

When you run Ending trigger, you turn off Up and Down arrow triggers. What if another player is having a conversation?

I think you could make the example triggers not leak locations :)
 
Level 4
Joined
May 1, 2008
Messages
315
First of all you should add importing instructions into the map file.

Added.

Then you could create an initialization trigger where you set Color end and color start.

Yea, let's make this useless trash.

As far as I can tell the Interlocutor_CPU should also be arrayed so the system is MPI.

Isn't it a constant variable?

When you run Ending trigger, you turn off Up and Down arrow triggers. What if another player is having a conversation

This really doesn't have anything to things, so it was off by Conversation[Player_ID] = False too :). I know, using "multiplayer" word was bad. I meant system just works, for each player, regardless of whether we are playing the red, blue, pink or brown on user's map. Previously I uploaded version only for player 1.

Rather, I had no intention of making it for lan games, where 12 people could talk to a computer in the same way, as it's not meaningful. By far the system will occur only in single-player RPG maps. But as you can see (arrays = 12) I tried it, but now I changed it.

I think you could make the example triggers not leak locations :)

:) Maybe I forgot to clean something. If you are experiencing what leaks, be just nice and show where, but please note that this map is set to enable this conversation all the time, so I don't know if some location cleaning is necessary.
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
Isn't it a constant variable?

No, it isn't.

  • Activated Talk 01
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Use [E]
      • (Casting unit) Equal to Hero
    • Actions
      • Set The_Interlocutor_CPU = Knight 0000 <gen>
      • Set The_Interlocutor_CPU_Name = Guard
      • Wait 1.00 seconds
      • Cinematic - Send transmission to PlayerCinematicGroup[Player_ID] from The_Interlocutor_CPU named The_Interlocutor_CPU_Name: Play No sound and display Hello!. Modify duration: Set to 1.50 seconds and Wait


If a unit of another player starts a conversation during that wait, then the interlocutor_cpu will be the wrong unit.


Rather, I had no intention of making it for lan games, where 12 people could talk to a computer in the same way, as it's not meaningful. By far the system will occur only in single-player RPG maps. But as you can see (arrays = 12) I tried it, but now I changed it.

The system can be MPI, so I'd like to see it made MPI :)


Maybe I forgot to clean something. If you are experiencing what leaks, be just nice and show where
  • Unit - Move The_Interlocutor_HERO[Player_ID] instantly to (Center of Partymember1 <gen>)
 
Level 4
Joined
May 1, 2008
Messages
315
No, it isn't.

  • Activated Talk 01
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Use [E]
      • (Casting unit) Equal to Hero
    • Actions
      • Set The_Interlocutor_CPU = Knight 0000 <gen>
      • Set The_Interlocutor_CPU_Name = Guard
      • Wait 1.00 seconds
      • Cinematic - Send transmission to PlayerCinematicGroup[Player_ID] from The_Interlocutor_CPU named The_Interlocutor_CPU_Name: Play No sound and display Hello!. Modify duration: Set to 1.50 seconds and Wait


If a unit of another player starts a conversation during that wait, then the interlocutor_cpu will be the wrong unit.

Heh, no, it is. ;) I said in previuos post, that this is for single player, so another player can't do anything during that wait. :)

The system can be MPI, so I'd like to see it made MPI :)

Unkindly. xC
Can be ≠ must. I like niggle people too, but without exaggeration. And there is no such rule in Spell section.

  • Unit - Move The_Interlocutor_HERO[Player_ID] instantly to (Center of Partymember1 <gen>)

Oh, that old one, thanks. Fixed
 
Last edited:
Level 37
Joined
Mar 6, 2006
Messages
9,240
Level 4
Joined
May 1, 2008
Messages
315
... as this system can't be MUI, then it must be MPI at least.

Where is this PostScript in rules?

Whether this is maybe from Bible of Moderators?

Forgive me, my friend, but I have no intention of
remaking half the system, because someone has such desire.

As if someone said: make Requiem to play opponents.

Forgive I don't have the desire to make this and there is no such rule. No, unless the PostScript that it finds there. :)
 

Bribe

Code Moderator
Level 50
Joined
Sep 26, 2009
Messages
9,464
Under "Performance":

Spells must be free of bugs, leaks, unreasonable lag, and must be fully multiinstanceable.

If it works only for single-player, it fails the criteria for "multi-instanciable".

Normally I would not quote rules, but since you are insistent that "multi-player-instanciable" is not in the rules I do have to use a quote here. Please do not make us do that.
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
Where is this PostScript in rules?

Whether this is maybe from Bible of Moderators?


rules.jpg
[/IMG]


You have agreed that you have read and understood the rules. Spell resource rules can be found by clicking the Full resource rules or the The Hive Workshop rules link.

Forgive me, my friend, but I have no intention of
remaking half the system, because someone has such desire.

I don't make up rules, nor have I created these rules. I just enforce them. Currectly the system does not meet the standards of The Hive Workshop (it is not MPI). I have to set the spell to Needs Fix state.

It is a good system, and I hope you will make it MPI.
 
maddeem said:
Btw maggy it's more effecient to add the events manually (the map doesnt have to cycle through integers and reduces map load time) even though its way easier doing it that way xD

Adding the events manually does the exact same thing but my alternative is faster because in this case, it does half the number of iterations.
 
Top