1. если txt файл лежит в основной папке карты(т.е. Maps/SingleMissions/имя_карты), то путь к нему можно указать таким образом:
GetMapDataPath()..'имя_файла.txt'
2. ну самым простым способом будет повесить на все необходимые объекты OBJECT_CAPTURE_TRIGGER и завести переменную, которая будет хранить число захваченных объектов:
huts = {таблица_скриптовых_имен_объектов}
huts_captured = 0 -- число захваченных объектов
for i, hut in huts do
Trigger(OBJECT_CAPTURE_TRIGGER, hut, 'CaptureHut')
end
-- функция, срабатывающая при захвате объекта
function CaptureHut(p_owner, n_owner)
-- новый владелец объекта - игрок?
if n_owner == PLAYER_1 then
-- увеличить число захваченных
huts_captured = huts_captured + 1
-- если все захвачены и задание активно
if huts_captured = length(huts) and GetObjectiveState('имя_задания') == OBJECTIVE_ACTIVE then
-- завершить задание
SetObjectiveState('имя_задания', OBJECTIVE_COMPLETED)
end
else -- если новый владелец - не игрок?
if p_owner == PLAYER_1 then
-- уменьшить число захваченных, если игрок был предыдущим владельцем
huts_captured = huts_captured - 1
end
end
end
3. MoveHeroRealTime() в помощь
4. OpenCircleFog() в помощь
p.s. советую читать мануалы повнимательнее, вопросы максимально банальные и раскрываются в любых гайдах