there is a better way...
EVENT
unit is issued an order targeting an object
CONDITION
issued order equal to attack
target unit is an ally of triggering unit
owner of triggering unit not equal to owner of
target unit
ACTION
pause triggering unit
unpuse triggering unit
order triggering unit to stop
it stops the unit when he is ordered,so your unit does not have to walk to ally unit and begin attacking,and than stop
but you don't need to pause him really. just order him to stop. and if I'm right the unit's owner is considered as an ally of that unit's owner, so there's no need for the last condition.
its the same as maker´s "((Owner of (Triggering unit)) is an ally of (Owner of (Attacking unit))) Equal to True" but changed because event
you need this because player might want to attack his own units
pauseing and unpauseing unit makes unit able to stop in event - unit is issued an order
here is the trigger
if you don't use pause and unpause warcraft will crash coz unit cannot have to orders in the same time
stop ally attack targeting
Events
Unit - A unit Is issued an order targeting an object
Conditions
(Issued order) Equal to (Order(attack))
((Target unit of issued order) belongs to an ally of (Owner of (Triggering unit))) Equal to True
(Owner of (Triggering unit)) Not equal to (Owner of (Target unit of issued order))
Actions
Unit - Pause (Triggering unit)
Unit - Unpause (Triggering unit)
Unit - Order (Triggering unit) to Stop
-------- give player the massage that he cannot attack allied units --------