Attaching units to... a unit?

averes

New Member
Reaction score
17
Currently using Handle Vars, i imagine thats not the best system for this. I assume ABC would work though so I can get that if needed. Basically what I'm trying to do is this: I have a list of units that a certain unit can build. I return these units through a function one at a time so it's not just a unit group.

Rather than store all of these in an array, I'd like to attach them to the builder that can build them, in a Struct I'd assume. I've done some basic JASS structs before but I'm wondering how I could do this exactly.

+ Rep of course :D
 

soulreaping

New Member
Reaction score
17
Well PUI will be the answer of course.
I'm not sure but I think there is a none-vJass version of PUI.

Anyway, PUI is a system that assigns a unit with a unique id.

So you make a unit array and assigns unit to the array member of the unit you want to attach to.
 

averes

New Member
Reaction score
17
Thanks for the tips! I'm sorry I didn't phrase my question right, I think i made it sound more complicated than it is XD. All I need is the following:

I make a struct, the struct has X amount of units in it, I then attach that struct to a unit so that I can return the value of the units in that struct anywhere in the triggers. ABC, HAIL, HSAS... I've only used ABC once before, are HAIL and HSAS better? Could you give me an example code as to how I might use them?
 

averes

New Member
Reaction score
17
You can just use Set/GetHandleInt and a struct.

Er, what do you mean exactly?

Code:
struct ex
unit b1
unit b2
unit b3
...
endstruct

function exp takes nothing returns nothing
      ??????
endfunction

How would I set the handle int if its a struct? Or are structs considered ints? And are Handle Variables carried through triggers as well? Not just functions?
 
Reaction score
333
Does the list of units need to:

1. Be ordered?
2. Allow for insertion or removal of units from the middle of the list?
3. Be scalable (no fixed size limit)?
4. Allow for iteration/searching?

You need to describe how it will be used.
 

averes

New Member
Reaction score
17
Does the list of units need to:

1. Be ordered?
2. Allow for insertion or removal of units from the middle of the list?
3. Be scalable (no fixed size limit)?
4. Allow for iteration/searching?

You need to describe how it will be used.

1) Yes, in a way atlesat. Its going to contain each unit that a specific builder can build. The only ordering thing that would be needed is that, for example, I don't want the unit variable used when attached to a peasant building a farm when if attached to a peon would build a great hall, if that makes sense.
2) No.
3) No, theres a fixed number of units any unit can build I believe so this is unneeded.
4) No. I don't believe so.

As for use, it's for making AI for a TD I'm making. I just want to be able to take a unit and say something like "Build basic tower" Where the basic tower would be stored in the struct/list attached to that builder (I've already worked out how to determine what a unit can build so that's not as much of an issue)
 
Reaction score
333
As for use, it's for making AI for a TD I'm making. I just want to be able to take a unit and say something like "Build basic tower" Where the basic tower would be stored in the struct/list attached to that builder (I've already worked out how to determine what a unit can build so that's not as much of an issue)

In that case you can attach an array (substitute '5' for however many towers can be built).

JASS:
type t_towers extends integer array[5]


For attaching, you can use SetUnitUserData. Something along the following lines should work:

JASS:
local t_towers tlist = t_towers.create()
set tlist[0] = 'h001' // Basic tower
set tlist[1] = 'h002' // Better tower
set tlist[2] = 'h003' // Etc
call SetUnitUserData(builder, tlist)


Why attach to units and not players or unit types?
 

averes

New Member
Reaction score
17
Thanks! That helps alot.

> Why attach to units and not players or unit types?

Each player can have up to 3 different builders, though attaching to unit-types would probably be a better idea... Is there any real difference between them?
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top