//! zinc
library ClickOrderTest {
// =============================================================================================
// Unit order trigger actions.
private function OrderTrigAction() {
player p;
// If we're currently listening to unit orders, fetch the clicking player.
if (Listen) {
p = ListenPlayer;
// ***********************
// Ordering player is p
// Do whatever with p here
// ***********************
// Debug
BJDebugMsg("[|cFF50FF50" + I2S(GetTriggerExecCount(GetTriggeringTrigger())) + "|r] |cFFFF0000" + GetPlayerName(p) + "|r (|cFF5050FF" + OrderId2String(GetIssuedOrderId()) + "|r)");
p = null;
}
}
// =============================================================================================
// Trigger variables. Useless comments.
private trigger MouseTrig = CreateTrigger();
private trigger OrderTrig = CreateTrigger();
// Unit order listen variables.
private boolean Listen = false;
private player ListenPlayer = null;
private timer ListenTimer = CreateTimer();
// =============================================================================================
// Timer handler.
// Stops listening for unit orders.
private function ListenHandler() {
Listen = false;
ListenPlayer = null;
}
// Mouse click trigger actions.
// Starts listening for unit orders on the current frame.
private function MouseTrigAction() {
ListenPlayer = GetTriggerPlayer();
Listen = true;
TimerStart(ListenTimer, 0, false, function ListenHandler);
}
// Initializer function.
private function onInit() {
// Set up mouse click trigger.
TriggerRegisterPlayerEvent(MouseTrig, Player(0), EVENT_PLAYER_MOUSE_DOWN);
TriggerAddAction(MouseTrig, function MouseTrigAction);
// Set up unit order trigger.
TriggerRegisterAnyUnitEventBJ(OrderTrig, EVENT_PLAYER_UNIT_ISSUED_ORDER);
TriggerRegisterAnyUnitEventBJ(OrderTrig, EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER);
TriggerRegisterAnyUnitEventBJ(OrderTrig, EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER);
TriggerAddAction(OrderTrig, function OrderTrigAction);
}
}
//! endzinc