• 🏆 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!

Simple Multiboard Issues

Status
Not open for further replies.
Level 6
Joined
Aug 12, 2007
Messages
201
I'm trying to set up a multiboard but I've never worked with them before and don't really understand what I am doing. I looked over the tutorials on them but they didn't really help me understand much, neither did searching past posts.

I want to create a multiboard that is as tall as the number of user players playing, that shows the values of their hero's current HP as well as the integers of Hunger and Fatigue.

I have this so far:

  • ConditionMultiboard Copy Copy
    • Events
      • Time - Elapsed game time is 1.00 seconds
    • Conditions
    • Actions
      • Player Group - Pick every player in (All players) and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked player) slot status) Equal to Is playing
            • Then - Actions
              • Set PlayersPlaying = (PlayersPlaying + 1)
            • Else - Actions
      • Set PlayersPlaying = (PlayersPlaying + 1)
      • Multiboard - Create a multiboard with 4 columns and PlayersPlaying rows, titled Player Condition
      • Multiboard - Set the display style for (Last created multiboard) item in column 0, row 0 to Show text and Hide icons
      • Multiboard - Set the width for (Last created multiboard) item in column 0, row 0 to 4.00% of the total screen width
      • Multiboard - Set the color for (Last created multiboard) item in column 0, row 1 to (100.00%, 80.00%, 20.00%) with 0.00% transparency
      • Multiboard - Set the width for (Last created multiboard) item in column 1, row 0 to 8.00% of the total screen width
      • Multiboard - Set the width for (Last created multiboard) item in column 4, row 0 to 5.00% of the total screen width
      • Multiboard - Set the text for (Last created multiboard) item in column 1, row 1 to Player
      • Multiboard - Set the text for (Last created multiboard) item in column 2, row 1 to Health
      • Multiboard - Set the text for (Last created multiboard) item in column 3, row 1 to Hunger
      • Multiboard - Set the text for (Last created multiboard) item in column 4, row 1 to Fatigue
      • Player Group - Pick every player in (All players) and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked player) slot status) Equal to Is playing
            • Then - Actions
              • Set PlayersArray = (PlayersArray + 1)
              • Multiboard - Set the text for (Last created multiboard) item in column 1, row PlayersArray to (Name of (Picked player))
            • Else - Actions
      • Multiboard - Show (Last created multiboard)
But I don't really no where to go with it from here. Any help would be appreciated. I've looked at a few and they are all massive triggers of like 50+ manually setting every box, and I'm sure there is a less tedious way of doing it.

My current issue is trying to set it so say if there are players in slots 1,5, and 7 that their names and data show up in rows 2, 3, and 4.

I set player 1, 2,3 and 7 to User, Biggs (Computer), Wedge (Computer) and Vicks (Computer), but my leaderboard only returns three rows of the discriptions, player one, and then 'Comput'. Why won't it fill them out with the other computers and their names?

When I start the game it only shows me and Computer blue, how do I make the game recognize the other computers? Oh wait that is in Used Fixed Player Settings under Forces.

Now my issue is getting it to set and upadate the proper data in the right rows.
 
Last edited:
Level 9
Joined
Jun 7, 2007
Messages
195
You could use: (won't leak)
  • For each (Integer A) 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 A))) slot status) Equal to Is playing
        • Then - Actions
          • Set PlayersPlaying = (PlayersPlaying + 1)
        • Else - Actions
 
Level 7
Joined
Apr 12, 2009
Messages
188
Tips on multiboards, from my experience:

You HAVE to manually set up the display style for each item in a multiboard.
  • Multiboard - Set the display style for Infoboard item in column 1, row 1 to Show text and Hide icons
You also HAVE to set up the width of every item in a multiboard. If something isn't showing up completely, it's because the width isn't enough for the text.
  • Multiboard - Set the width for Infoboard item in column 1, row 1 to 8.00% of the total screen width

Here is my multiboard update system:
  • Multiboard
    • Events
      • Time - Every 2.00 seconds of game time
    • Conditions
    • Actions
      • For each (Integer A) from 2 to 6, do (Actions)
        • Loop - Actions
          • Multiboard - Set the text for Infoboard item in column 2, row (Integer A) to (String((Integer(DamageDone[((Integer A) - 1)]))))
          • Multiboard - Set the text for Infoboard item in column 3, row (Integer A) to (String(Kills[((Integer A) - 1)]))
          • Multiboard - Set the text for Infoboard item in column 4, row (Integer A) to HeroStatus[((Integer A) - 1)]
Mine shows a row for every possible player slot, not just the players in game (just so I could use arrays with player numbers as indicies). It shows three things, Damage Done, Killing Blows, and a status message. Each of those things is stored in an array location for each player. As the game progresses, the damage done is added to the DamageDone[] real variable array and the kills are added to the Kills[] integer variable array, and certain events trigger the update of the HeroStatus[] string variable array, and the above trigger updates the multiboard with those variables every two seconds. Hope this helps.



The only 'less tedious' way of doing things is with integer loops iterating through the rows of the board (mine has 5 players in the game, so i go from row 2 to row 6 skipping the header row), like this:
  • For each (Integer A) from 2 to 6, do (Actions)
    • Loop - Actions
      • Multiboard - Set the display style for Infoboard item in column 1, row (Integer A) to Show text and Show icons
      • Multiboard - Set the display style for Infoboard item in column 2, row (Integer A) to Show text and Hide icons
      • Multiboard - Set the display style for Infoboard item in column 3, row (Integer A) to Show text and Hide icons
      • Multiboard - Set the display style for Infoboard item in column 4, row (Integer A) to Show text and Hide icons
      • Multiboard - Set the width for Infoboard item in column 1, row (Integer A) to 8.00% of the total screen width
      • Multiboard - Set the width for Infoboard item in column 2, row (Integer A) to 5.00% of the total screen width
      • Multiboard - Set the width for Infoboard item in column 3, row (Integer A) to 2.00% of the total screen width
      • Multiboard - Set the width for Infoboard item in column 4, row (Integer A) to 5.00% of the total screen width
      • Multiboard - Set the icon for Infoboard item in column 1, row (Integer A) to ReplaceableTextures\WorldEditUI\Editor-Random-Unit.blp
      • Multiboard - Set the text for Infoboard item in column 1, row (Integer A) to (Player_Colors[((Integer A) - 1)] + PlayerNames[((Integer A) - 1)])
      • Multiboard - Set the text for Infoboard item in column 2, row (Integer A) to 0
      • Multiboard - Set the text for Infoboard item in column 3, row (Integer A) to 0
      • Multiboard - Set the text for Infoboard item in column 4, row (Integer A) to |cffFFCC00Choosing....
Again ripped from my multiboard.
 
Status
Not open for further replies.
Top