Problems with Queued move orders.

LilBlueSmurf

New Member
Reaction score
0
I'm trying to figure out why units behave absolute stupidly when I order a lot of them to move all at once. In a nut shell, I spawn a bunch of units and order each one to move individually to a point with offset a number of times.

My test trigger spawn a number of units and then does the following for each unit:
Code:
    Assign Move Orders
        Options: Action
        Return Type: (None)
        Parameters
            Unit = (Last created unit) <Unit>
            Lane = 0 <Integer>
            FromTop = true <Boolean>
            Direction = Center <Integer>
        Grammar Text: Assign Move Orders(Unit, Lane, FromTop, Direction)
        Hint Text: (None)
        Custom Script Code
        Local Variables
            WhichPoint = 0 <Integer>
            PointUporDown = 1 <Integer>
            i = 0 <Integer>
        Actions
            General - If (Conditions) then do (Actions) else do (Actions)
                If
                    FromTop == false
                Then
                    Variable - Set PointUporDown = -1
                    Variable - Set WhichPoint = 6
                Else
            General - If (Conditions) then do (Actions) else do (Actions)
                If
                    Direction != 0
                Then
                    General - For each integer i from WhichPoint to (WhichPoint + (6 * PointUporDown)) with increment PointUporDown, do (Actions)
                        Actions
                            Unit - Order Unit to ( Move targeting (PathPoint[Lane][i] offset by (((Random real between 0.0 and MaxOffset[i]) * (Real(Direction))), 0.0))) (After Existing Orders)
                Else
            General - If (Conditions) then do (Actions) else do (Actions)
                If
                    FromTop == true
                Then
                    Unit - Order Unit to ( Move targeting (Spawn[Lane][1] offset by (((Random real between 0.0 and 3.0) * (Real(Direction))), 0.0))) (After Existing Orders)
                Else
                    Unit - Order Unit to ( Move targeting Spawn[Lane][0]) (After Existing Orders)

*maxoffset is a static array, no funky stuff.

And when I debug the units orders all of the assigned move points look like you would expect, no points right next to other or backwards or anything. (variation in x of a little bit from the randomness)
43.6,143.0
43.2,114.5
44.6,102.4
43.5,92.0
45.3,79.0
42.5,72.0
41.7,61.0
44.3,55.3
0.0,0.0
0.0,0.0
0.0,0.0
----end unit-----
*the extra was to make sure there weren't extra orders being assigned

And finally, here is a video of the buggers acting completely retarded.
[YOUTUBE]Bems6fomNgw[/YOUTUBE]

If anyone has ideas to fix this, it would be awesome. I would really like to avoid the old way of lots of regions/enters region triggers, and I've already tried turning off unit pushing and using the "move to relative point" order instead. And no, I don't want to turn off collision. Thanks. :)
 

Rusty

New Member
Reaction score
5
if i understand this right, youre trying to spawn a bunch of units, then have them move/attack move to several different points?

if i have it right, there is another way to approach this.
heres the gui text for how i did this

Unit - Create 1 Ultralisk for player 14 at zergspawn1 facing 10.0 degrees (No Options)
Unit - Order (Last created unit) to ( Attack targeting Point 005) (Replace Existing Orders)
Unit - Order (Last created unit) to ( Attack targeting Point 004) (After Existing Orders)
Unit - Order (Last created unit) to ( Attack targeting Point 003) (After Existing Orders)
Unit - Order (Last created unit) to ( Attack targeting Point 002) (After Existing Orders)
Unit - Order (Last created unit) to ( Attack targeting Point 001) (After Existing Orders)


and heres the script if you prefer it that way

UnitCreate(1, "Ultralisk", 0, 14, PointFromId(1), 10.0);
UnitIssueOrder(UnitLastCreated(), OrderTargetingPoint(AbilityCommand("attack", 0), PointFromId(13)), c_orderQueueReplace);
UnitIssueOrder(UnitLastCreated(), OrderTargetingPoint(AbilityCommand("attack", 0), PointFromId(14)), c_orderQueueAddToEnd);
UnitIssueOrder(UnitLastCreated(), OrderTargetingPoint(AbilityCommand("attack", 0), PointFromId(15)), c_orderQueueAddToEnd);
UnitIssueOrder(UnitLastCreated(), OrderTargetingPoint(AbilityCommand("attack", 0), PointFromId(12)), c_orderQueueAddToEnd);
UnitIssueOrder(UnitLastCreated(), OrderTargetingPoint(AbilityCommand("attack", 0), PointFromId(11)), c_orderQueueAddToEnd);


the PointFromId's are a little off on the script because i renamed them
hope thats what you were looking for

edit: to get each unit to go separately, you could link this to another trigger/function to use it multiple times, or use some random-modified variables to get points that youd like to send them to
 

LilBlueSmurf

New Member
Reaction score
0
Actually, I'm already doing what you're describing, but in a more complex way. The problem isn't that I don't know how to issue the orders. The problem is that when a group of units try to carry out multiple separate move order queues, they start behaving oddly and moving to places they shouldn't.

I have verified (as far as I can figure) that the units DO have the correct points in their order queue. No extra points are mysteriously being added. (see original post)

Attached a picture to try to help illustrate the problem, this would be the path of just one unit. The other units all have different paths.

Red Dots = Points ordered to
Pink = Path units should take
Blue Line= Path actually taken (why?)
 

Attachments

  • PathWonk.jpg
    PathWonk.jpg
    18.1 KB · Views: 232

LilBlueSmurf

New Member
Reaction score
0
Not sure if bumping is allowed here even once, but I'll go ahead.

Do people think this may be a pathing or Blizzard issue with no normal solution? Meaning, should I take this over to the Blizz forums and try it out as bug and see what happens? I don't want to go cry bug when it may not be, but no one has pointed out errors in the code.
 
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