Count units in group and show how many of each type

Rainther

I guess I should write something of value here...
Reaction score
61
I'm afraid it doesn't fully. Are you looking for a function to do such?

So you want a function that gives out like "This group contains of 2 Footmans and 3 Riflemans"?
 

Rainther

I guess I should write something of value here...
Reaction score
61
Would you like to have it in GUI or Jass? Please say vJass ;D
 

Gtam

Lerning how to write and read!! Yeah.
Reaction score
164
Sry but unfortanly i need it in GUI
 

Rainther

I guess I should write something of value here...
Reaction score
61
Oh god, don't even know where I'm supposed to start in GUI.

If anyone else might wish to help that's better in GUI I'd welcome those.
 

jwallstone

New Member
Reaction score
33
Here's something I already wrote in jass for my own map that does something similar.
You'll need an integer array called udg_unitTypeCount. Instead of testing for flying/melee etc as I was doing replace it with GetUnitTypeId(testunit) == 'hfoo' or whatever unit type you're testing for.

JASS:

function CategorizeGroupEnum takes nothing returns nothing
    local unit testunit = GetEnumUnit()
    
    set bj_groupCountUnits = bj_groupCountUnits + 1
    if IsUnitType(testunit, UNIT_TYPE_FLYING) then
        set udg_unitTypeCount[3] = udg_unitTypeCount[3] + 1
    elseif IsUnitType(testunit, UNIT_TYPE_MELEE_ATTACKER) then
        set udg_unitTypeCount[0] = udg_unitTypeCount[0] + 1
    elseif GetUnitState(testunit, UNIT_STATE_MAX_MANA) >= 200 then
        set udg_unitTypeCount[2] = udg_unitTypeCount[2] + 1
    elseif IsUnitType(testunit, UNIT_TYPE_RANGED_ATTACKER) then
        set udg_unitTypeCount[1] = udg_unitTypeCount[1] + 1
    endif
    
    if IsUnitType(testunit, UNIT_TYPE_ATTACKS_FLYING) then
        set udg_unitTypeCount[6] = udg_unitTypeCount[6] + 1
    else
        set udg_unitTypeCount[5] = udg_unitTypeCount[5] + 1
    endif
    set testunit = null
endfunction

function CategorizeGroup takes group testGroup returns nothing
    set bj_groupCountUnits = 0
    set udg_unitTypeCount[0] = 0
    set udg_unitTypeCount[1] = 0
    set udg_unitTypeCount[2] = 0
    set udg_unitTypeCount[3] = 0
    set udg_unitTypeCount[4] = 0
    set udg_unitTypeCount[5] = 0
    set udg_unitTypeCount[6] = 0
    call ForGroup(testGroup, function CategorizeGroupEnum)
endfunction
 

Gtam

Lerning how to write and read!! Yeah.
Reaction score
164
No i wan when a player types bla it displays how many of each unittype he has currently selected
 

SnowCrow

New Member
Reaction score
7
No i wan when a player types bla it displays how many of each unittype he has currently selected

Trigger:
  • Count Units
    • Events
      • Player - Player 1 (Red) types a chat message containing -footmen as An exact match
    • Conditions
    • Actions
      • Unit Group - Pick every unit in (Units in (Playable map area)) and do (Actions)
        • Loop - Actions
          • Set UnitCountInteger = (Number of units in (Units owned by Player 1 (Red) matching ((Unit-type of (Matching unit)) Equal to Footman)))
          • Game - Display to (All players) for 15.00 seconds the text: (You control + ((String(UnitCountInteger)) + Footmen.))


Is this what you want?
 

Gtam

Lerning how to write and read!! Yeah.
Reaction score
164
No if he types some thing i want it to display how many unit of each type in the currently selected units
 

SnowCrow

New Member
Reaction score
7
No if he types some thing i want it to display how many unit of each type in the currently selected units

So like if I select a group of units in game, like 4 ghouls, 4 footmen and 4 grunts, and type -units the trigger would say that I have selected those units?
 

SnowCrow

New Member
Reaction score
7
Damn, my triggering skills aren't enough then. :D Sorry, but I can't help with this any further.
Hope someone finds a way to do it.
 

Asdfblah1

New Member
Reaction score
10
Trigger:
  • asdf
    • Events
    • Conditions
    • Actions
      • Set Temp_Group = (Units of type Footman)
      • Set Temp_String = <Empty String>
      • Unit Group - Pick every unit in Temp_Group and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked unit) is selected by (Triggering player)) Equal to True
            • Then - Actions
              • Set Temp_Integer = (Temp_Integer + 1)
            • Else - Actions
              • Do nothing
      • Set Temp_String = ((String(Temp_Integer)) + ( + (Name of (Random unit from Temp_Group))))
      • Custom script: call DestroyGroup(udg_Temp_Group)
      • Set Temp_Group = (Units of type Knight)
      • Set Temp_Integer = 0
      • Unit Group - Pick every unit in Temp_Group and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked unit) is selected by (Triggering player)) Equal to True
            • Then - Actions
              • Set Temp_Integer = (Temp_Integer + 1)
            • Else - Actions
              • Do nothing
      • Set Temp_String = (Temp_String + (, + ((String(Temp_Integer)) + ( + (Name of (Random unit from Temp_Group))))))
      • Custom script: call DestroyGroup(udg_Temp_Group)
      • Game - Display to (Player group((Triggering player))) the text: Temp_String
 

Gtam

Lerning how to write and read!! Yeah.
Reaction score
164
That will require way to many action if its for all the unit types but thx any way. Any other suggestions
 

Asdfblah1

New Member
Reaction score
10
Then intialize the unit types into an array and do a little loop...I don't see how the command helps anyways. A player can only select 12 units and when selected it even shows them all with pretty pictures.
 

tmow

New Member
Reaction score
7
yeap its a bunch of if/then/else functions and variables....depending on how many diffrent types you have...the more u have the harder its gonna be..
 

Gtam

Lerning how to write and read!! Yeah.
Reaction score
164
This system im creating doesnt just show how many units in a unit group but does variour other things but i want to display him the units first to double check its the units he want to use
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top