Проще всего создать регион размера 1x1 и написать триггер по входу в этот регион:
Trigger(REGION_ENTER_AND_STOP_TRIGGER,"имя региона","FName")
Где FName -- имя функции. А перед этим собственно что должна делать функция
function FName(heroname)
if GetObjectOwner(heroname)==1 then
SetObjectiveState("имя задания", OBJECTIVE_COMPLETED)
Trigger(REGION_ENTER_AND_STOP_TRIGGER,"имя региона",nil)
end;
end;
Внутри функции мы, во-первых, сделали проверку условия, что heroname принадлежит первому игроку (если игрок-человек первый, конечно). Во-вторых, если условие выполнено, засчитали задание выполненным и отменили действие триггера, чтобы он больше не вызывался.