Stoping building traing unit

Sgqvur

FullOfUltimateTruthsAndEt ernalPrinciples, i.e shi
Reaction score
62
Is there a trigger that stops a building to train a unit? For example when you order a Barracks to train a footman I want to order the Barracks to stop training it.
 

Sgqvur

FullOfUltimateTruthsAndEt ernalPrinciples, i.e shi
Reaction score
62
Well it works =). tnx

How did you know which order id does that? (experimenting?)

Is there some documentation about orders somewhere?
 

3ICE

Cool Member
Reaction score
3
To find out the Order ID of an ability (yes, cancel is an ability), you can make a simple trigger:

JASS:
//JASS is so much nicer:
function Grab_OrderID takes nothing returns nothing
  call DisplayTextToPlayer(GetLocalPlayer(),0,0,I2S((GetIssuedOrderId())))
endfunction

function InitTrig_Grab_OrderID takes nothing returns nothing
  set gg_trg_Grab_OrderID=CreateTrigger()
  call TriggerRegisterUnitEvent(gg_trg_Grab_OrderID,u,EVENT_UNIT_ISSUED_ORDER)
// u is gg_unit_hbar_0000 which is the barracks
  call TriggerAddAction(gg_trg_Grab_OrderID,function Grab_OrderID)
endfunction

The function returns this number when you cancel a training unit: 851976
(I tested with a barracks cancelling some footmen.)

We translate that number to hexadecimal using google:
http://www.google.com/search?q=851976+in+hexadecimal
(or a calculator) and we get: 851976 = 0xD0008

And finally, I don't know if not padding that with zeros to 8 digits or keeping it in uppercase causes any trouble so I did those two steps anyway, just to be safe: 0x000d0008

Actually, now that I think of it... All that messing around with hexadecimals is not even needed! We can just use the decimal number directly:
JASS:
call IssueImmediateOrderById(Building,851976)
I tested it.

And I made this demo map for you:
 

Attachments

  • 3ICE's Grab OrderID and Cancel Training Unit.w3x
    8.1 KB · Views: 155

Sgqvur

FullOfUltimateTruthsAndEt ernalPrinciples, i.e shi
Reaction score
62
tnx u a lot =).

I think [ljass]IssueImmediateOrderById(Building,851976)[/ljass] shoud really be used as building_cancel_production/research(unit building). Those magic numbers tell you nothing.

>And finally, I don't know if not padding that with zeros to 8 digits or keeping it in uppercase causes any trouble so I did those two steps anyway, just to be safe: 0x000d0008

I think hex numbers are fine no matter how you write them(with 0x and less then 7FFFFFFF). But if you use ascii ('Aatk') you should use either four digits or just 1. (Tested it a long time ago)

For example a shortcut for a dialog button might be written using ascii
[ljass]dialog_add_button(d, "text", action_function, 'X') // 'X' is the hotkey[/ljass]
but if instead of 'X' you write '0X' or '00X' the game won't start (writing it '000X' makes no sense though =))

Anyway even if you specify orders in ascii they are still quite cryptic so I guess constants should be used.
 
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