Dialogs
Dialogs are used mainly either to create Custom UIs, Choosing Menus or Leaderboard (and some times Timer Dialogs). They create a "floating" cadre that you can fill with text, buttons and variables.
General Theory
Dialogs' coordinates are relative to the screen. The Dialogs basically act as "content boxes" which will be filled with information.
Those "informations" are Dialog Items. There are different types: Image, Button, Text, etc.
All Dialog Items must be linked to a Dialog (Create Dialog Item 'x' for Dialog 'x'). Their coordinates are relative to the Dialog box itself (for example, "(0,0) offset from Top Right of Dialog 'x'").
Hiding a Dialog will hide all the Dialog Items it contains.
Custom UI
Custom UI are the kind of things that really gives a unique feeling to your map. And it greatly improves the professionalism of your map.
In order to know how to create your own Custom UI, it is highly recommended that you watch this video by Swampfox, a StarEdit Network community's member. What's really great about this video is the fact that it also teaches you how to create great Dialogs in general, and not just in the cadre of Custom UIs.
<youtube>vlQR6MXodI0</youtube>
Choosing Menus
You could want to use this application of the Dialogs in a situation where you want players to select a RPG character, a difficulty, and pretty much anything that relates with having a choice and pressing a button. As mentioned in the introduction, you must use a lot of (empty) variables to create a Dialog. Here's an exhaustive list of the type of variables you should create:
- Dialog
- 'x' Dialog Item (Where 'x' is the number of buttons you will have)
- Player Group (Optional - Only if you're planning on not showing the menu to all players)
As you can see, pretty much everything in a Dialog uses up a variable. If you are planning on not showing the menu to all players, fill the "Player Group" variable with the players that will see the menu.
It is strongly recommended to create a whole trigger just for the Dialog itself instead of incorporating it into the "Map Initialization" trigger.
Reference triggers
This is how the "Map Initialization" trigger should look:
http://omegacode.0sites.org/BBCode/BBCode3.php?ID=11
Init Events Game - Map initialization Local Variables Conditions Actions Player Group - Add player 1 to Host Trigger - Run Host_Dialog (Ignore Conditions, Don't Wait until it finishes)
As you can see, I am planning on showing the menu only for the Host.
http://vgshorts.com/BBCode/BBCode3.php?ID=12
Host_Dialog Events Local Variables Conditions Actions Dialog - Create a Modal dialog of size (500, 400) at (0, 0) relative to Center of screen Variable - Set Game_Mode_Dialog = (Last created dialog) Dialog - Show Game_Mode_Dialog for Host Dialog - Set title of Game_Mode_Dialog to "Select a Game Mode" Dialog - Display button 1 of size (200, 50) with text "Game mode #1" at Center of screen with offset (0, -90) (run Game Mode 1 when button is clicked) Variable - Set GM_1 = (Last created dialog item) Dialog - Set (Last created dialog item) tooltip to "This is a description of the Game mode #1" for (All players) Dialog - Display button 2 of size (200, 50) with text "Game mode #2" at Center of screen with offset (0, -40) (run Game Mode 2 when button is clicked) Variable - Set GM_2 = (Last created dialog item) Dialog - Set (Last created dialog item) tooltip to "This is a description of the Game mode #2" for (All players) Dialog - Display button 3 of size (200, 50) with text "Game mode #3" at Center of screen with offset (0, 10) (run Game Mode 3 when button is clicked) Variable - Set GM_3 = (Last created dialog item) Dialog - Set (Last created dialog item) tooltip to "This is a description of the Game mode #3" for (All players)
- Note that there aren't any Events or Conditions.
- It is also easy to see how often a Variable type action is called in such a trigger.
- And again, notice how I this trigger itself references to more triggers (Game Mode #).
- Last remark on this trigger: the "positions data" (offset values) have randomly been chosen and do not guarantee any aesthetic result.
http://vgshorts.com/BBCode/BBCode3.php?ID=13
Game Mode 1 Events Local Variables Conditions Actions ------- Insert any action you want to trigger when the player presses this button (the first one, in this case) here
IMPORTANT NOTE: The triggers that buttons triggers must be flagged as Not Initially On. To achieve such a thing, select the trigger and press "Ctrl + Shift + I" or right click it and uncheck the "Initially On" option. If this step has been applied properly, the little white page's trigger icon should have been greyed out. And again, notice that there are no Events nor Conditions.
Leaderboards
Most of the people are using the Leaderboard trigger-label to make this task easier, but here is how you can make Leaderboards with Dialogs.
Reference triggers
The variable list:
Leaderboard = No Leaderboard <Leaderboard> Round Score = 0 <Integer[2]> Label Score = No Dialog Item <Dialog Item[2]> Row Offset for theme = 0 <Integer> Current no. of players = 0 <Integer> Main Dialog window = No Dialog <Dialog>
The trigger:
http://vgshorts.com/BBCode/BBCode3.php?ID=220
Leaderboard Events Game - Map initialization Local Variables Row offset = 0 <Integer> MD_Y = 157 <Integer> Conditions Actions Player Group - Pick each player in (Active Players) and do (Actions) Actions General - If (Conditions) then do (Actions) else do (Actions) If (Status of player (Picked player)) == Playing Then Variable - Modify Current no. of players: + 1 Variable - Modify MD_Y: + 27 Else Dialog - Create a Modal dialog of size (350, MD_Y) at (0, 25) relative to Top Right of screen Variable - Set Main Dialog window = (Last created dialog) Variable - Set Row offset = 130 Dialog - Create a label for dialog Main Dialog window with the dimensions (220, 25) anchored to Top Left with an offset of (50, 50) with the text "Phantom Dodge Ra</c" color set to White text writeout set to false with a writeout duration of 2.0 Dialog - Create a label for dialog Main Dialog window with the dimensions (100, 25) anchored to Top Right with an offset of (40, 100) with the text "Laps" color set to White text writeout set to false with a writeout duration of 2.0 Dialog - Set (Last created dialog item) tooltip to "8 laps to win." for (All players) ------- Only currently set to support up to three players. It can be set for as many as you want. All you need to do is to reproduce the following IF-THEN-ELSE loop and change what you see has to change for every new loop. General - If (Conditions) then do (Actions) else do (Actions) If Current no. of players >= 1 Then Dialog - Create an image for dialog Main Dialog window with the dimensions (282, 37) anchored to Top Left with an offset of (35, (Row offset - 9)) setting the tooltip to (Name of player 1) using the image Assets\Textures\ui_battlenet_loading_bar_player_frame_highlighted.dds as a Normal type with tiled set to false tint color (Color((Current player 1 color))) and blend mode Normal Dialog - Create a label for dialog Main Dialog window with the dimensions (125, 25) anchored to Top Left with an offset of (50, Row offset) with the text (Name of player 1) color set to (Color((Default player 1 color))) text writeout set to true with a writeout duration of 2.0 Dialog - Create a label for dialog Main Dialog window with the dimensions (75, 25) anchored to Top Right with an offset of (45, Row offset) with the text (Text(Score[1])) color set to (Color((Default player 1 color))) text writeout set to false with a writeout duration of 2.0 Variable - Set Label Score[1] = (Last created dialog item) Variable - Modify Row offset: + 27 Else General - If (Conditions) then do (Actions) else do (Actions) If Current no. of players >= 2 Then Dialog - Create an image for dialog Main Dialog window with the dimensions (282, 37) anchored to Top Left with an offset of (35, (Row offset - 9)) setting the tooltip to (Name of player 2) using the image Assets\Textures\ui_battlenet_loading_bar_player_frame_highlighted.dds as a Normal type with tiled set to false tint color (Color((Current player 1 color))) and blend mode Normal Dialog - Create a label for dialog Main Dialog window with the dimensions (125, 25) anchored to Top Left with an offset of (50, Row offset) with the text (Name of player 2) color set to (Color((Default player 1 color))) text writeout set to true with a writeout duration of 2.0 Dialog - Create a label for dialog Main Dialog window with the dimensions (75, 25) anchored to Top Right with an offset of (45, Row offset) with the text (Text(Score[2])) color set to (Color((Default player 1 color))) text writeout set to false with a writeout duration of 2.0 Variable - Set Label Score[2] = (Last created dialog item) Variable - Modify Row offset: + 27 Else General - If (Conditions) then do (Actions) else do (Actions) If Current no. of players >= 3 Then Dialog - Create an image for dialog Main Dialog window with the dimensions (282, 37) anchored to Top Left with an offset of (35, (Row offset - 9)) setting the tooltip to (Name of player 3) using the image Assets\Textures\ui_battlenet_loading_bar_player_frame_highlighted.dds as a Normal type with tiled set to false tint color (Color((Current player 1 color))) and blend mode Normal Dialog - Create a label for dialog Main Dialog window with the dimensions (125, 25) anchored to Top Left with an offset of (50, Row offset) with the text (Name of player 3) color set to (Color((Default player 1 color))) text writeout set to true with a writeout duration of 2.0 Dialog - Create a label for dialog Main Dialog window with the dimensions (75, 25) anchored to Top Right with an offset of (45, Row offset) with the text (Text(Score[3])) color set to (Color((Default player 1 color))) text writeout set to false with a writeout duration of 2.0 Variable - Set Label Score[3] = (Last created dialog item) Variable - Modify Row offset: + 27 Else Dialog - Show Main Dialog window for (All players) Variable - Set Row Offset for theme = Row offset Variable - Set Current no. of players = 0 Variable - Set Row Offset for theme = 0
Note: The only "maintenance" it requires is to update the "Set Label Score[]" variable.
It can be long to try to reproduce this trigger. In order to save you time, you should take a look at the "See Also" section where a map has been listed for you to "steal" the trigger from without any requirements of credits.
See Also
- Phantom Dodge Race: An Open Source map project from StarEdit Network that features a Dialog-Leaderboard (in fact, the trigger reference of this current wiki comes directly from this map, so if you want a quicker way to reproduce it, just copy-paste it from the map to yours)
- Dialog Designer: Creating dialogs isn't hard. However, positioning them so everything looks nice can be hard. This "tool" lets you directly preview what your dialogs would look like from inside Battle.Net.
- Dialog Item
- Timer Dialogs
- Dialog Background