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

The_Flood's Hero Selection System V1.3a

  • Like
Reactions: Nillere and dardas
The_Flood's Hero Selection System [Version 1.3a]

This system is created by The_Flood (Flood @ hiveworkshop). Give credits when used or modified.

You may edit this system how much you want, but don't contact me if your changes does not work properly because that isn't my problem, but if you haven't modified anything and the system isn't working as it should, please contact me then! =)

The_Flood's Hero Selection System is a system that allow you to create an original way of hero selection. I think a lot of players are tired of the old "tavern"-selections and then I came up with this. By using a multiboard you can scroll heroes through a list, up and down, using your arrow-keys. An information text will then be displayed to the right about the current selected hero. There's absolutely no limit of how many heroes you can put into this system, the scroll feature will always make sure the correct heroes will be shown. You'll select the hero by pressing the right arrowkey.

This system is also MPI, allowing up to 12 players use it at the same time. I'm using > > if GetLocalPlayer() == Player(udg_HSS_Integer[0] - 1) then < < to make sure each player has it's own multiboard.

This system is user-friendly and has no leaks at all, so have fun using it!

Make sure you read the HSS READ ME, when you've opened the map. There's a lot of text there that tells you how to use this system.

TRIGGERS


JASS:
###########################################################################################################
###########################################################################################################
################################ THE_FLOOD'S HERO SELECTION SYSTEM [HSS] ##################################
############################################# VERSION: 1.2a ###############################################
###########################################################################################################

This system is created by The_Flood (Flood at hiveworkshop). Give credits when used or modified.

You may edit this system how much you want, but don't contact me if your changes does not work properly
because that isn't my problem, but if you haven't modified anything and the system isn't working as it
should, please contact me then! =)


The_Flood's Hero Selection System is a system that allow you to create an original way of hero selection. I
think a lot of players are tired of the old "tavern"-selections and then I came up with this. By using a
multiboard you can scroll heroes through a list, up and down, using your arrow-keys. An information text
will then be displayed to the right about the current selected hero. There's absolutely no limit of how
many heroes you can put into this system, the scroll feature will always make sure the correct heroes will
be shown.

This system is also MPI, allowing up to 12 players use it at the same time. I'm using
> > if GetLocalPlayer() == Player(udg_HSS_Integer[0] - 1) then < < to make sure each player has it's own
multiboard.

This system is user-friendly and has no leaks at all, so have fun using it!



###########################################################################################################
                    [How do I import this system?]

It's simple. Paste the whole folder "The_Floods HSS" into your map and make sure you've checked the
"[X] Automatically create unknown variables while pasting trigger data" in File > Preferences.

Also, you need to copy some script that can be found under the script folder called: "The_FloodsHSS.w3x" and
paste it at the same place in your map.

When you've done this, you can start using this system!



###########################################################################################################
                    [How do I setup this system?]

The only thing you'll have to do is to edit the stuffs in the "HSS Initialization" trigger. You can easily
read and change the variables there to make this system as you want it.

//  This is the name of the multiboard.
Set HSS_MultiboardName = |cffFF8000The_Flood's Hero Selection System|r


//  This is how many heroes you want to be visible at the same time at the "scroll-list".
Set HSS_NumberOfHeroesDisplayed = 5 // MAXIMUM IS 25!


//  This is the color that the strength-text will be displayed with.
Set HSS_StrengthColorAndText = |c00FF0000Strength: |r


//  This is the color that the agility-text will be displayed with.
Set HSS_AgilityColorAndText = |c0096FF96Agility: |r


//  This is the color that the intelligence-text will be displayed with.
Set HSS_IntelligenceColorAndText = |c006969FFIntelligence: |r


//  This is a boolean (true or false variable) that will allow you to determine if the heroes stats shall appear
//  at the top of the descriptiontext or the bottom. (true = TOP, false = BOTTOM)
Set HSS_DisplayAttributesAtTop = True


//  This is the color of the "viewing-text". This is the color that the current selected hero in the "scroll-list"
//  will use.
Set HSS_ViewingColor = |cffFF8000


//  This is the color of the "already-selected-text". All selected heroes names will be displayed with this color.
//  This will only appear if HSS_CanUseTheSameHeroes is set to false. (Read below about this).
Set HSS_SelectedColor = |cffff0000


//  This is where the selected hero will be created. Set one location for each player in your map.
//  This is an example of Player 1's start location.
Set HSS_Player_HeroSpawnLocation[1] = (Playable map area)


//  This is a boolean (true or false variable) that allow you to set if the same hero can be picked again or not.
//  If you set it to false, the players can't pick this hero again.
//  If you set it to true, the players can pick this hero again.
Set HSS_CanUseTheSameHeroes = False


//  This is a boolean (true or false variable) that allow you to change if the players current selected hero
//  shall be colored in your "view-color" (above) or shall be colored with your "selected-color" (above) if
//  the hero is picked. This will only be used if HSS_CanUseTheSameHeroes is set to false.
Set HSS_IfPickedSelectViewColor = False



//  This is the text that will appear if the hero a player wants to pick already is picked.
//  This will only appear if HSS_CanUseTheSameHeroes is set to false.
Set HSS_HeroSelectedHeroWarning = |cffff0000Error:|r This hero has already been selected!


//  This is the duration of how long time the text above will be displayed.
Set HSS_HeroSelectedWarningDur = 5.00



###########################################################################################################
                    [How do I add a hero to this system?]

It's extremely simple! You only need a minimum of two actions.

The most important one is this function:

Custom script:   call HSSAddHero('Hpal', "Paladin", "ReplaceableTextures\\CommandButtons\\BTNHeroPaladin.blp", "22 (+2.7)", "13 (+1.5)", "17 (+1.8)")

It's very easy to use when you know how it works.


We'll start with the first argument: 'Hpal'.

    This is the raw-code of your hero (the unit-type). You can see this by visit the Object Editor and press: Ctrl + D.

Next is the "Paladin".

    This is the name of your hero.

3rd is: "ReplaceableTextures\\CommandButtons\\BTNHeroPaladin.blp"

    This is the icon your hero shall have in this system.
    WARNING: You MUST use two "\\" or else it won't work, in worst cases, world editor will crash.

4th: "22 (+2.7)"

    This is the amount of strength your hero starts with and how much strength that is gained per level.

5th: "13 (+1.5)"

    This is the amount of agility your hero starts with and how much agility that is gained per level.

and 6th: "17 (+1.8)"

    This is the amount of intelligence your hero starts with and how much intelligence that is gained per level.


And now we're almost done! The only thing left is the description text for your hero. It's very simple to add this, just check
those functions out:

Custom script:   call HSSAddDT1("Warrior Hero, exceptional at defense and augmenting nearby friendly troops.")
//This adds a text to the first description row for your hero.

Custom script:   call HSSAddDT2("")
//This adds a text to the second description row for your hero.

Custom script:   call HSSAddDT3("Range: Melee")
//This adds a text to the third description row for your hero.

and so on, very simple! :) 

Warning: You should only use a maximum of 100 characters for each description row.
Warning: There's a maximum of 10 description rows (Custom script:   call HSSAddDT10("LAST ONE").
Warning: You may create more of those by your own, but it's up to you. If something went wrong it's not my fault.


###########################################################################################################
JASS:
function HSSAddHero takes integer hssHero, string hssName, string hssIcon, integer hssSStr, integer hssSAgi, integer hssSInt returns nothing
    set udg_HSS_MaxHeroes = ( udg_HSS_MaxHeroes + 1 )
    set udg_HSS_Hero[udg_HSS_MaxHeroes] = hssHero
    set udg_HSS_HeroName[udg_HSS_MaxHeroes] = hssName
    set udg_HSS_HeroIcon[udg_HSS_MaxHeroes] = hssIcon
    set udg_HSS_HeroStartStrength[udg_HSS_MaxHeroes] = hssSStr
    set udg_HSS_HeroStartAgility[udg_HSS_MaxHeroes] = hssSAgi
    set udg_HSS_HeroStartIntelligence[udg_HSS_MaxHeroes] = hssSInt
endfunction

function HSSAddDT1 takes string DT returns nothing
    set udg_HSS_DescriptionTextRow1[udg_HSS_MaxHeroes] = DT
endfunction

function HSSAddDT2 takes string DT returns nothing
    set udg_HSS_DescriptionTextRow2[udg_HSS_MaxHeroes] = DT
endfunction

function HSSAddDT3 takes string DT returns nothing
    set udg_HSS_DescriptionTextRow3[udg_HSS_MaxHeroes] = DT
endfunction

function HSSAddDT4 takes string DT returns nothing
    set udg_HSS_DescriptionTextRow4[udg_HSS_MaxHeroes] = DT
endfunction

function HSSAddDT5 takes string DT returns nothing
    set udg_HSS_DescriptionTextRow5[udg_HSS_MaxHeroes] = DT
endfunction

function HSSAddDT6 takes string DT returns nothing
    set udg_HSS_DescriptionTextRow6[udg_HSS_MaxHeroes] = DT
endfunction

function HSSAddDT7 takes string DT returns nothing
    set udg_HSS_DescriptionTextRow7[udg_HSS_MaxHeroes] = DT
endfunction

function HSSAddDT8 takes string DT returns nothing
    set udg_HSS_DescriptionTextRow8[udg_HSS_MaxHeroes] = DT
endfunction

function HSSAddDT9 takes string DT returns nothing
    set udg_HSS_DescriptionTextRow9[udg_HSS_MaxHeroes] = DT
endfunction

function HSSAddDT10 takes string DT returns nothing
    set udg_HSS_DescriptionTextRow10[udg_HSS_MaxHeroes] = DT
endfunction
  • HSS Initialization
    • Events
      • Time - Elapsed game time is 0.00 seconds
    • Conditions
    • Actions
      • -------- First time using this system? Check out the HSS READ ME!! --------
      • -------- First time using this system? Check out the HSS READ ME!! --------
      • -------- ---------------------------------------------------------------------------------------- --------
      • -------- ---------------------------------------------------------------------------------------- --------
      • -------- ------------------------------------------------------ [INITIALIZE THE MULTIBOARD] ------------------------------------------------------ --------
      • Set HSS_MultiboardName = |cffFF8000The_Flood's Hero Selection System [Version 1.2a]|r
      • Set HSS_NumberOfHeroesDisplayed = 5
      • -------- ---------------------------------------------------------------------------------------- --------
      • Set HSS_StrengthColorAndText = |c00FF0000Strength: |r
      • Set HSS_AgilityColorAndText = |c0096FF96Agility: |r
      • Set HSS_IntelligenceColorAndText = |c006969FFIntelligence: |r
      • Set HSS_DisplayAttributesAtTop = True
      • -------- ---------------------------------------------------------------------------------------- --------
      • Set HSS_ViewingColor = |cffFF8000
      • Set HSS_SelectedColor = |cffff0000
      • -------- ---------------------------------------------------------------------------------------- --------
      • Set HSS_Player_HeroSpawnLocation[1] = (Playable map area)
      • Set HSS_Player_HeroSpawnLocation[2] = (Playable map area)
      • Set HSS_Player_HeroSpawnLocation[3] = (Playable map area)
      • -------- ---------------------------------------------------------------------------------------- --------
      • Set HSS_CanUseTheSameHeroes = False
      • Set HSS_IfPickedSelectViewColor = False
      • -------- ---------------------------------------------------------------------------------------- --------
      • Set HSS_HeroSelectedHeroWarning = |cffff0000Error:|r This hero has already been selected!
      • Set HSS_HeroSelectedWarningDur = 5.00
      • -------- ---------------------------------------------------------------------------------------- --------
      • -------- ------------------------------------------------------ [INITIALIZE THE HEROES] ------------------------------------------------------ --------
      • -------- ---------------------------------------------------------------------------------------- --------
      • Custom script: call HSSAddHero('Hpal', "Paladin", "ReplaceableTextures\\CommandButtons\\BTNHeroPaladin.blp", "22 (+2.7)", "13 (+1.5)", "17 (+1.8)")
      • Custom script: call HSSAddDT1("Warrior Hero, exceptional at defense and augmenting nearby friendly troops.")
      • Custom script: call HSSAddDT2("")
      • Custom script: call HSSAddDT3("Range: Melee")
      • Custom script: call HSSAddDT4("")
      • Custom script: call HSSAddDT5("|cffFF8000Abilities:|r Holy Light, Divine Shield, Devotion Aura and Resurrection.")
      • -------- ---------------------------------------------------------------------------------------- --------
      • Custom script: call HSSAddHero('Hamg', "Archmage", "ReplaceableTextures\\CommandButtons\\BTNHeroArchMage.blp", "14 (+1.8)", "19 (+1.0)", "17 (+3.2)")
      • Custom script: call HSSAddDT1("Mystical Hero, adept at ranged assaults.")
      • Custom script: call HSSAddDT2("")
      • Custom script: call HSSAddDT3("Range: 600")
      • Custom script: call HSSAddDT4("")
      • Custom script: call HSSAddDT5("|cffFF8000Abilities:|r Blizzard, Brilliance Aura, Summon Water Elemental and Mass Teleport.")
      • -------- ---------------------------------------------------------------------------------------- --------
      • Custom script: call HSSAddHero('Hmkg', "Mountain King", "ReplaceableTextures\\CommandButtons\\BTNHeroMountainKing.blp", "24 (+3.0)", "11 (+1.5)", "15 (+1.5)")
      • Custom script: call HSSAddDT1("Warrior Hero, adept at offensive combat and disrupting enemy troops.")
      • Custom script: call HSSAddDT2("")
      • Custom script: call HSSAddDT3("Range: Melee")
      • Custom script: call HSSAddDT4("")
      • Custom script: call HSSAddDT5("|cffFF8000Abilities:|r Thunder Clap, Storm Bolt, Bash and Avatar.")
      • -------- ---------------------------------------------------------------------------------------- --------
      • Custom script: call HSSAddHero('Hblm', "Blood Mage", "ReplaceableTextures\\CommandButtons\\BTNHeroBloodElfPrince.blp", "18 (+2.0)", "14 (+1.0)", "19 (+3.0)")
      • Custom script: call HSSAddDT1("Mystical Hero, adept at controlling magic and ranged assaults.")
      • Custom script: call HSSAddDT2("")
      • Custom script: call HSSAddDT3("Range: 600")
      • Custom script: call HSSAddDT4("")
      • Custom script: call HSSAddDT5("|cffFF8000Abilities:|r Flame Strike, Banish, Spihon Mana and Pheonix.")
      • -------- ---------------------------------------------------------------------------------------- --------
      • Custom script: call HSSAddHero('Obla', "Blademaster", "ReplaceableTextures\\CommandButtons\\BTNHeroBlademaster.blp", "18 (+2.0)","23 (+1.75)", "16 (+2.25)")
      • Custom script: call HSSAddDT1("Cunning Hero, adept at quickly killing individual units and creating confusion among enemies.")
      • Custom script: call HSSAddDT2("")
      • Custom script: call HSSAddDT3("Range: Melee")
      • Custom script: call HSSAddDT4("")
      • Custom script: call HSSAddDT5("|cffFF8000Abilities:|r Wind Walk, Critical Strike, Mirror Image and Bladestorm.")
      • -------- ---------------------------------------------------------------------------------------- --------
      • Custom script: call HSSAddHero('Ofar', "Far Seer", "ReplaceableTextures\\CommandButtons\\BTNHeroFarseer.blp", "15 (+2.0)", "18 (+1.0)", "19 (+3.0)")
      • Custom script: call HSSAddDT1("Mystical Hero, effective at ranged attacks and scouting.")
      • Custom script: call HSSAddDT2("")
      • Custom script: call HSSAddDT3("Range: 600")
      • Custom script: call HSSAddDT4("")
      • Custom script: call HSSAddDT5("|cffFF8000Abilities:|r Far Sight, Feral Spirit, Chain Lightning and Earthquake.")
      • -------- ---------------------------------------------------------------------------------------- --------
      • Custom script: call HSSAddHero('Otch', "Tauren Chieftain", "ReplaceableTextures\\CommandButtons\\BTNHeroTaurenChieftain.blp", "25 (+3.2)", "10 (+1.5)", "14 (+1.3)")
      • Custom script: call HSSAddDT1("Warrior Hero, exceptional at absorbing damage and melee combat.")
      • Custom script: call HSSAddDT2("")
      • Custom script: call HSSAddDT3("Range: Melee")
      • Custom script: call HSSAddDT4("")
      • Custom script: call HSSAddDT5("|cffFF8000Abilities:|r Shockwave, Endurance Aura, War Stomp and Reincarnaction.")
      • -------- ---------------------------------------------------------------------------------------- --------
      • Custom script: call HSSAddHero('Oshd', "Shadow Hunter", "ReplaceableTextures\\CommandButtons\\BTNShadowHunter.blp", "15 (+2.0)", "20 (+1.5)", "17 (+2.5)")
      • Custom script: call HSSAddDT1("Cunning Hero, adept at healing magics and voodoo curses.")
      • Custom script: call HSSAddDT2("")
      • Custom script: call HSSAddDT3("Range: 600")
      • Custom script: call HSSAddDT4("")
      • Custom script: call HSSAddDT5("|cffFF8000Abilities:|r Healing Wave, Hex, Serpent Ward and Bid Bad Voodoo.")
      • -------- ---------------------------------------------------------------------------------------- --------
      • -------- Don't change things below. --------
      • Set HSS_HeroesLeft = HSS_MaxHeroes
      • -------- ---------------------------------------------------------------------------------------- --------
      • -------- ------------------------------------------------------ [CREATE THE MULTIBOARD] ------------------------------------------------------ --------
      • Trigger - Run HSS InitializeMultiboard <gen> (checking conditions)
  • HSS InitializeMultiboard
    • Events
    • Conditions
    • Actions
      • -------- Do not change anything here, if you don't know what you're doing. --------
      • -------- ---------------------------------------------------------------------------------------- --------
      • For each (Integer HSS_Integer[0]) from 1 to 12, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Player(HSS_Integer[0])) controller) Equal to User
              • ((Player(HSS_Integer[0])) slot status) Equal to Is playing
            • Then - Actions
              • Trigger - Add to HSS ScrollUp <gen> the event (Player - (Player(HSS_Integer[0])) Presses the Up Arrow key)
              • Trigger - Add to HSS ScrollDown <gen> the event (Player - (Player(HSS_Integer[0])) Presses the Down Arrow key)
              • Trigger - Add to HSS SelectHero <gen> the event (Player - (Player(HSS_Integer[0])) Presses the Right Arrow key)
              • -------- ---------- --------
              • Set HSS_Player_CurrentIndex[HSS_Integer[0]] = 1
              • -------- ---------- --------
              • Multiboard - Create a multiboard with 2 columns and 25 rows, titled HSS_MultiboardName
              • Set HSS_Player_Multiboard[HSS_Integer[0]] = (Last created multiboard)
              • -------- ---------- --------
              • Multiboard - Set the display style for HSS_Player_Multiboard[HSS_Integer[0]] item in column 0, row 0 to Show text and Hide icons
              • Multiboard - Set the display style for HSS_Player_Multiboard[HSS_Integer[0]] item in column 2, row 1 to Show text and Show icons
              • -------- ---------- --------
              • Multiboard - Set the width for HSS_Player_Multiboard[HSS_Integer[0]] item in column 1, row 0 to 15.00% of the total screen width
              • Multiboard - Set the width for HSS_Player_Multiboard[HSS_Integer[0]] item in column 2, row 0 to 85.00% of the total screen width
              • -------- ---------- --------
              • Multiboard - Hide HSS_Player_Multiboard[HSS_Integer[0]]
              • For each (Integer HSS_Integer[1]) from 1 to HSS_NumberOfHeroesDisplayed, do (Actions)
                • Loop - Actions
                  • Multiboard - Set the display style for HSS_Player_Multiboard[HSS_Integer[0]] item in column 1, row HSS_Integer[1] to Show text and Show icons
                  • Multiboard - Set the icon for HSS_Player_Multiboard[HSS_Integer[0]] item in column 1, row HSS_Integer[1] to HSS_HeroIcon[HSS_Integer[1]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[0]] item in column 1, row HSS_Integer[1] to HSS_HeroName[HSS_Integer[1]]
              • -------- ---------- --------
              • Set HSS_Integer[4] = (Player number of (Player(HSS_Integer[0])))
              • Trigger - Run HSS UpdateMultiboard <gen> (checking conditions)
            • Else - Actions
  • HSS ScrollUp
    • Events
    • Conditions
      • HSS_Player_ViewingMultiboard[(Player number of (Triggering player))] Equal to True
    • Actions
      • -------- Do not change anything here, if you don't know what you're doing. --------
      • -------- ---------------------------------------------------------------------------------------- --------
      • Set HSS_Player_CurrentIndex[(Player number of (Triggering player))] = (HSS_Player_CurrentIndex[(Player number of (Triggering player))] - 1)
      • -------- ---------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • HSS_Player_CurrentIndex[(Player number of (Triggering player))] Less than or equal to 0
        • Then - Actions
          • Set HSS_Player_CurrentIndex[(Player number of (Triggering player))] = 1
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • HSS_Player_CurrentIndex[(Player number of (Triggering player))] Greater than HSS_MaxHeroes
            • Then - Actions
              • Set HSS_Player_CurrentIndex[(Player number of (Triggering player))] = HSS_MaxHeroes
            • Else - Actions
      • -------- ---------- --------
      • Set HSS_Integer[4] = (Player number of (Triggering player))
      • Trigger - Run HSS UpdateMultiboard <gen> (checking conditions)
  • HSS ScrollDown
    • Events
    • Conditions
      • HSS_Player_ViewingMultiboard[(Player number of (Triggering player))] Equal to True
    • Actions
      • -------- Do not change anything here, if you don't know what you're doing. --------
      • -------- ---------------------------------------------------------------------------------------- --------
      • Set HSS_Player_CurrentIndex[(Player number of (Triggering player))] = (HSS_Player_CurrentIndex[(Player number of (Triggering player))] + 1)
      • -------- ---------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • HSS_Player_CurrentIndex[(Player number of (Triggering player))] Less than or equal to 0
        • Then - Actions
          • Set HSS_Player_CurrentIndex[(Player number of (Triggering player))] = 1
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • HSS_Player_CurrentIndex[(Player number of (Triggering player))] Greater than HSS_MaxHeroes
            • Then - Actions
              • Set HSS_Player_CurrentIndex[(Player number of (Triggering player))] = HSS_MaxHeroes
            • Else - Actions
      • -------- ---------- --------
      • Set HSS_Integer[4] = (Player number of (Triggering player))
      • Trigger - Run HSS UpdateMultiboard <gen> (checking conditions)
  • HSS SelectHero
    • Events
    • Conditions
      • HSS_Player_ViewingMultiboard[(Player number of (Triggering player))] Equal to True
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • HSS_HeroSelected[HSS_Player_CurrentIndex[(Player number of (Triggering player))]] Equal to False
        • Then - Actions
          • -------- Change things here if you know what you're doing. You may need to modify this trigger. --------
          • -------- ---------------------------------------------------------------------------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • HSS_CanUseTheSameHeroes Equal to False
            • Then - Actions
              • Set HSS_HeroSelected[HSS_Player_CurrentIndex[(Player number of (Triggering player))]] = True
            • Else - Actions
          • -------- ---------------------------------------------------------------------------------------- --------
          • Set HSS_Integer[6] = (Player number of (Triggering player))
          • Set HSS_Player_ViewingMultiboard[HSS_Integer[6]] = False
          • -------- ---------- --------
          • -------- Those actions will hide the multiboard for the player that selected a hero. --------
          • Custom script: if GetLocalPlayer() == Player(udg_HSS_Integer[6] - 1) then
          • Multiboard - Hide HSS_Player_Multiboard[HSS_Integer[6]]
          • Custom script: endif
          • -------- ---------- --------
          • -------- This action is not necessary, but it will reset the camera. Good if you'll use the EXAMPLE PanCameraWhileSelecting trigger. --------
          • Camera - Reset camera for (Player(HSS_Integer[6])) to standard game-view over 0.00 seconds
          • -------- ---------- --------
          • -------- This is the actions that will create a selected hero for a player. --------
          • Set HSS_Point = (Center of HSS_Player_HeroSpawnLocation[HSS_Integer[6]])
          • Camera - Pan camera for (Player(HSS_Integer[6])) to HSS_Point over 0.00 seconds
          • Unit - Create 1 HSS_Hero[HSS_Player_CurrentIndex[HSS_Integer[6]]] for (Player(HSS_Integer[6])) at HSS_Point facing Default building facing degrees
          • Custom script: call RemoveLocation(udg_HSS_Point)
          • -------- ---------- --------
          • -------- You can modify this line. This is the text that will appear when a player selects a hero. --------
          • Game - Display to (All players) for 15.00 seconds the text: (|cffFF8000 + ((Name of (Triggering player)) + (|r has selected: + HSS_HeroName[HSS_Player_CurrentIndex[HSS_Integer[6]]])))
        • Else - Actions
          • Set HSS_PlayerGroup = (Player group((Triggering player)))
          • Game - Display to HSS_PlayerGroup for HSS_HeroSelectedWarningDur seconds the text: HSS_HeroSelectedHeroWarning
          • Custom script: call DestroyForce(udg_HSS_PlayerGroup)
  • HSS UpdateMultiboard
    • Events
    • Conditions
    • Actions
      • -------- Do not change anything here, if you don't know what you're doing. --------
      • -------- ---------------------------------------------------------------------------------------- --------
      • Set HSS_Integer[5] = HSS_Player_CurrentIndex[HSS_Integer[4]]
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Or - Any (Conditions) are true
            • Conditions
              • HSS_HeroesLeft Greater than 0
              • HSS_CanUseTheSameHeroes Equal to True
        • Then - Actions
          • For each (Integer HSS_Integer[3]) from 1 to HSS_NumberOfHeroesDisplayed, do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (HSS_Player_CurrentIndex[HSS_Integer[4]] + (HSS_Integer[3] - 1)) Less than or equal to HSS_MaxHeroes
                • Then - Actions
                  • Multiboard - Set the display style for HSS_Player_Multiboard[HSS_Integer[4]] item in column 1, row HSS_Integer[3] to Show text and Show icons
                  • Multiboard - Set the icon for HSS_Player_Multiboard[HSS_Integer[4]] item in column 1, row HSS_Integer[3] to HSS_HeroIcon[(HSS_Player_CurrentIndex[HSS_Integer[4]] + (HSS_Integer[3] - 1))]
                  • -------- ---------- --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • HSS_Integer[3] Equal to 1
                    • Then - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • HSS_HeroSelected[(HSS_Player_CurrentIndex[HSS_Integer[4]] + (HSS_Integer[3] - 1))] Equal to False
                        • Then - Actions
                          • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 1, row HSS_Integer[3] to (HSS_ViewingColor + (HSS_HeroName[(HSS_Player_CurrentIndex[HSS_Integer[4]] + (HSS_Integer[3] - 1))] + |r))
                        • Else - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • HSS_IfPickedSelectViewColor Equal to False
                            • Then - Actions
                              • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 1, row HSS_Integer[3] to (HSS_SelectedColor + (HSS_HeroName[(HSS_Player_CurrentIndex[HSS_Integer[4]] + (HSS_Integer[3] - 1))] + |r))
                            • Else - Actions
                              • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 1, row HSS_Integer[3] to (HSS_ViewingColor + (HSS_HeroName[(HSS_Player_CurrentIndex[HSS_Integer[4]] + (HSS_Integer[3] - 1))] + |r))
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • HSS_HeroSelected[(HSS_Player_CurrentIndex[HSS_Integer[4]] + (HSS_Integer[3] - 1))] Equal to False
                        • Then - Actions
                          • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 1, row HSS_Integer[3] to HSS_HeroName[(HSS_Player_CurrentIndex[HSS_Integer[4]] + (HSS_Integer[3] - 1))]
                        • Else - Actions
                          • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 1, row HSS_Integer[3] to (HSS_SelectedColor + (HSS_HeroName[(HSS_Player_CurrentIndex[HSS_Integer[4]] + (HSS_Integer[3] - 1))] + |r))
                • Else - Actions
                  • Multiboard - Set the display style for HSS_Player_Multiboard[HSS_Integer[4]] item in column 1, row HSS_Integer[3] to Hide text and Hide icons
              • -------- ---------- --------
              • Multiboard - Set the icon for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 1 to HSS_HeroIcon[HSS_Integer[5]]
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • HSS_CanUseTheSameHeroes Equal to True
                • Then - Actions
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 1 to (HSS_ViewingColor + (HSS_HeroName[HSS_Integer[5]] + |r))
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • HSS_IfPickedSelectViewColor Equal to True
                    • Then - Actions
                      • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 1 to (HSS_ViewingColor + (HSS_HeroName[HSS_Integer[5]] + |r))
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • HSS_HeroSelected[HSS_Integer[5]] Equal to False
                        • Then - Actions
                          • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 1 to (HSS_ViewingColor + (HSS_HeroName[HSS_Integer[5]] + |r))
                        • Else - Actions
                          • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 1 to (HSS_SelectedColor + (HSS_HeroName[HSS_Integer[5]] + |r))
              • -------- ---------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • HSS_DisplayAttributesAtTop Equal to True
                • Then - Actions
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 3 to (HSS_StrengthColorAndText + (HSS_HeroStartStrength[HSS_Integer[5]] + |r))
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 4 to (HSS_AgilityColorAndText + (HSS_HeroStartAgility[HSS_Integer[5]] + |r))
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 5 to (HSS_IntelligenceColorAndText + (HSS_HeroStartIntelligence[HSS_Integer[5]] + |r))
                  • -------- ---------------------------------------------------------------------------------------- --------
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 7 to HSS_DescriptionTextRow1[HSS_Integer[5]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 8 to HSS_DescriptionTextRow2[HSS_Integer[5]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 9 to HSS_DescriptionTextRow3[HSS_Integer[5]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 10 to HSS_DescriptionTextRow4[HSS_Integer[5]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 11 to HSS_DescriptionTextRow5[HSS_Integer[5]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 12 to HSS_DescriptionTextRow6[HSS_Integer[5]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 13 to HSS_DescriptionTextRow7[HSS_Integer[5]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 14 to HSS_DescriptionTextRow8[HSS_Integer[5]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 15 to HSS_DescriptionTextRow9[HSS_Integer[5]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 16 to HSS_DescriptionTextRow10[HSS_Integer[5]]
                • Else - Actions
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 14 to (HSS_StrengthColorAndText + (HSS_HeroStartStrength[HSS_Integer[5]] + |r))
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 15 to (HSS_AgilityColorAndText + (HSS_HeroStartAgility[HSS_Integer[5]] + |r))
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 16 to (HSS_IntelligenceColorAndText + (HSS_HeroStartIntelligence[HSS_Integer[5]] + |r))
                  • -------- ---------------------------------------------------------------------------------------- --------
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 3 to HSS_DescriptionTextRow1[HSS_Integer[5]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 4 to HSS_DescriptionTextRow2[HSS_Integer[5]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 5 to HSS_DescriptionTextRow3[HSS_Integer[5]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 6 to HSS_DescriptionTextRow4[HSS_Integer[5]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 7 to HSS_DescriptionTextRow5[HSS_Integer[5]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 8 to HSS_DescriptionTextRow6[HSS_Integer[5]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 9 to HSS_DescriptionTextRow7[HSS_Integer[5]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 10 to HSS_DescriptionTextRow8[HSS_Integer[5]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 11 to HSS_DescriptionTextRow9[HSS_Integer[5]]
                  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 12 to HSS_DescriptionTextRow10[HSS_Integer[5]]
        • Else - Actions
          • Set HSS_PlayerGroup = (Player group((Player(HSS_Integer[4]))))
          • Game - Display to HSS_PlayerGroup for 2.50 seconds the text: |cffff0000System Er...
          • Set HSS_Player_ViewingMultiboard[HSS_Integer[4]] = False
          • Custom script: if GetLocalPlayer() == Player(udg_HSS_Integer[4] - 1) then
          • Multiboard - Hide HSS_Player_Multiboard[HSS_Integer[4]]
          • Custom script: endif
          • Custom script: call DestroyForce(udg_HSS_PlayerGroup)
  • EXAMPLE RepickHero
    • Events
      • Player - Player 1 (Red) types a chat message containing -Repick as An exact match
    • Conditions
    • Actions
      • -------- Make sure there's any heroes left to be repicked with. --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Or - Any (Conditions) are true
            • Conditions
              • HSS_HeroesLeft Greater than 0
              • HSS_CanUseTheSameHeroes Equal to True
        • Then - Actions
          • Game - Display to (All players) for 5.00 seconds the text: ((Name of (Triggering player)) + will repick his hero!)
          • -------- ---- --------
          • Custom script: set bj_wantDestroyGroup = true
          • Unit Group - Pick every unit in (Units owned by (Triggering player) matching (((Matching unit) is A Hero) Equal to True)) and do (Actions)
            • Loop - Actions
              • Unit - Remove (Picked unit) from the game
          • -------- ---- --------
          • Set HSS_Player_ViewingMultiboard[(Player number of (Triggering player))] = True
          • Custom script: if GetLocalPlayer() == GetTriggerPlayer() then
          • Multiboard - Show HSS_Player_Multiboard[(Player number of (Triggering player))]
          • Multiboard - Maximize HSS_Player_Multiboard[(Player number of (Triggering player))]
          • Custom script: endif
          • Set HSS_Player_CurrentIndex[(Player number of (Triggering player))] = 1
          • Set HSS_Integer[4] = (Player number of (Triggering player))
          • Trigger - Run HSS UpdateMultiboard <gen> (checking conditions)
        • Else - Actions
          • Set HSS_PlayerGroup = (Player group((Triggering player)))
          • Game - Display to HSS_PlayerGroup for 5.00 seconds the text: You can't repick, t...
          • Custom script: call DestroyForce(udg_HSS_PlayerGroup)
  • EXAMPLE PanCameraWhileSelecting
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • For each (Integer HSS_Integer[10]) from 1 to 12, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Player(HSS_Integer[10])) controller) Equal to User
              • ((Player(HSS_Integer[10])) slot status) Equal to Is playing
              • HSS_Player_ViewingMultiboard[HSS_Integer[10]] Equal to True
            • Then - Actions
              • Camera - Apply HSS Camera <gen> for (Player(HSS_Integer[10])) over 0.20 seconds
            • Else - Actions
[/HIDDEN]
CHANGELOG


  • Release


  • The multiboard will now automatically be maximized instantly.


  • Improved the information text in the "HSS READ ME".
  • Added a new option that allow users to change if they want to make the heroes be selected more than once or not. (Prevent double selecting). This wil be changed by this new action:
  • Set HSS_CanUseTheSameHeroes = False
With this new feature some other options also got created like those:
  • Set HSS_SelectedColor = |cffff0000
  • Set HSS_IfPickedSelectViewColor = False
  • Set HSS_HeroSelectedHeroWarning = |cffff0000Error:|r This hero has already been selected!
  • Set HSS_HeroSelectedWarningDur = 5.00
Just to make it as simple as possible. You can read about those options in the "HSS READ ME" text.
  • Improved the EXAMPLE AllPickMode trigger.
  • Improved the system. Some errors and bugs fixed.


  • Players will no longer be stuck in the selection menu when no heroes is left to be picked. The system will automatically detect this and close the selection menu for the player(s).
  • The HSS_StartStrength/Agility/Intelligence have been changed into a string variable instead of a integer variable. Players will now be able to write a stat text such as "Strength: 15 (+2.2)".
  • Improved the temporarily system heroes "view".
  • Improved the system overall a little, things that won't be noticed.


  • Fixed an issue with the system.
  • Added a new EXAMPLE trigger (Repick a Hero).

Keywords:
The_Flood, Flood, Hero, Selection, System, List, Multiboard, Color, HSS, New, Version
Contents

The_Flood's HSS - Version 1.3a (Map)

Reviews
19:22, 15th Oct 2010 The_Reborn_Devil: The triggering looks good and this could be useful to someone. Status: Approved Rating: Useful

Moderator

M

Moderator

19:22, 15th Oct 2010
The_Reborn_Devil:

The triggering looks good and this could be useful to someone.


Status: Approved
Rating: Useful
 
Level 11
Joined
Sep 12, 2008
Messages
657
Nice job,
but i should state that when i firstly opened the map without reading the "readme".
i noticed the multiboard dont open.. and i had to open it manualy,
it might be something you wanna change.
other then that, 5/5 and aproval =]
 
Level 1
Joined
Aug 9, 2009
Messages
275
This do seem nice, and i might test it laters, as i have something to do :) But i would maybe suggest to make some sorta hero preview in the right side of the mutliboard, as it aint used, after what i can see :p Else than that, it seems nice, +rep
 
Level 11
Joined
Sep 12, 2008
Messages
657
hmm in the map header..

JASS:
function HSSAddDT10 takes string DT returns nothing
    set udg_HSS_DescriptionTextRow10[udg_HSS_MaxHeroes] = DT
endfunction

if i do

JASS:
function HSSAddDT11 takes string DT returns nothing
    set udg_HSS_DescriptionTextRow11[udg_HSS_MaxHeroes] = DT
endfunction

it will work?
and ofcourse, add a variable..

edit:

is there a way to also remove a unit from the list?
so it can be picked only 1 time for example?
 
Level 19
Joined
Aug 16, 2007
Messages
881
Yes, it should work if you add the variable. Also you must add two actions to the HSS UpdateMultiboard trigger:

  • Multiboard - Set the text for HSS_Player_Multiboard[HSS_Integer[4]] item in column 2, row 17 to HSS_DescriptionTextRow11[HSS_Integer[5]]
Hm, not yet I think, if you can't come up with something yourself, I may update to make the system support that soon :)
 
Level 11
Joined
Sep 12, 2008
Messages
657
i can do that.. but i have no idea how it'll effect the system overal^^ and i dont wanna go thru all the lines of code you did ;p

edit:

important thing... in the tutorial on how to create a new hero, etc, (modify the multiboard and everything)
you sayd

JASS:
3rd is: "ReplaceableTextures\\CommandButtons\\BTNHeroPaladin.blp"

    This is the icon your hero shall have in this system.

if you havent noticed the problem..

in object editor/import manager the

JASS:
"ReplaceableTextures\\CommandButtons\\BTNHeroPaladin.blp"

is actually:

JASS:
"ReplaceableTextures\CommandButtons\BTNHeroPaladin.blp"

you forgot to mention they have to double the \ (gui users would never guess..)
 
Last edited:
Level 11
Joined
Sep 12, 2008
Messages
657
okay heres another bug of the new ver =]
i got all heroes, and sayd -ap, and it still opened the multiboard, and i couldnt pick anything,
so i was.. stuck D:

and another thing..
maybe add that you can manipulate the amount of times a hero can be select?
and its kind of odd a mod didnt check this out yet.
 
Level 11
Joined
Sep 12, 2008
Messages
657
same here :D
this look so awesome, and its gonna be very usefull for mah map ^^
so i keep commenting ;p
maybe pm 1 of the admins to check this out just to be safe?
(if its approved, it goes staright to the top of the list)
 
Level 19
Joined
Aug 16, 2007
Messages
881
@king_drift_alex,
I don't really get it by what you mean with "out from window". If I understand you correct, the answer is as dardas said, the will be unseen, until the player scrolls down in the list. You can change the numbers of heroes visible at the same time by changing this value:
  • Set HSS_NumberOfHeroesDisplayed = 5
 
Level 11
Joined
Sep 12, 2008
Messages
657
he means like..
ussualy when something bugs,
example, when it gets out of x/y of map bounds.
basicly, its invisible, but you see it in the full map small view in left corner.
thats out of frame
dialogs - when the button name is oto long
and gets out of it, and looks weird.
and so on,
he probably means it leaves the multiboard frame.
 
Level 19
Joined
Aug 16, 2007
Messages
881
@dardas,
Well, okay. I still don't really get it, haha. If you know what he means you're free to answer him. Now I'll take my time to update this system. Finally all school projects and tests are done for a couple of days.

By the way, I'd like some feedback and ideas regarding how to prevent a player to be "stuck" in the selection menu. How do you want a player to be unstuck? Automatically, with a command or something else?


EDIT: This system has now been updated to version 1.2a, be sure you download this version and replace it with the old version in your map if you use this system. The changelog can be read at the description.
 
Last edited:
Level 19
Joined
Aug 16, 2007
Messages
881
You could do that yourself, it's easy. Just copy the EXAMPLE trigger for the All Pick thing and make it work only for the repicking player. Then you make it suit your needs. Anyway, I'll add another example trigger for repick when I've got time! :)


Update (09-11-2010): I've updated the system to version 1.3a. Read the changelog if you want to know the updates/changes. Make sure you always have the latest version in your map.
 
Last edited:
Level 16
Joined
May 1, 2008
Messages
1,605
Moin moin =)

=== My personal vote: Approved [4/5] ====

Ok after I downloaded and tested the map, I got the following review:

First of all it's a nice system, I like this, because it's simple working system, not complicated with triggers but still a good work and you did this very well.

But I got some points:
1) Maybe you add an "exit" function or something. Because when I type -ap and/or -repick, I'm forced to pick a hero and can't get out of the system, so you got an optional escape.

2) When I type -repick and don't have choose any hero before, the window isn't focused on the black terrain.

3) Maybe add a simple note in the Multiboard, HOW to choose and select a hero. Just a simple line would be cool, because I was a little confused.

4) Optional: You should add events for all players nut just player 1. I mean it's a easy thing to add it and everyone can do this, but this should be included directly.

== So in the end we've got ==
A very good hero choose system. We got more then one of these systems, but I prefer this, because it's simple, don't has this (unnecessary) extras, other system have, easy to configure and works like a system should work. All in all, i think [4/5] is ok for this, good job, well done GUI.

Note: My review is NOTHING against you and NOTHING against the system. Is my own opinion how I see this system, if you like this review or not.

Greetings and Peace
Dr. Boom
 
Level 19
Joined
Aug 16, 2007
Messages
881
@Dr. Boom,
Thanks for the review! I do also like this system, weird I've never seen something like this before, that why I did create it. :)

1. Are you sure you did use the latest version? Because I thought I did fix the "can't get out glitch"... I'll have to take a look at that then.
2. I'll fix this when I've got time.
3. People are able to do this at their own, but as the maker, I think this should be included. I'll fix it when I've got time.
4. I'll fix this when I've got time.

Thanks again, +rep.
 
Level 1
Joined
Dec 7, 2011
Messages
5
Sr but i cant find any "script that can be found under the script folder named: The_FloodsHSS.w3x"
Could it be anything wromg with that...?
 
Top