Не хватает одного end_if.
Не скромный вопрос: а где здесь цикл?
Если это всё что крутится в внутрикликеровском цикле, то можно так:
$time = $_time_t + 1800
WHILE($time > $_time_t)
wait(5)
getscreen
IF_PIXEL_IN (2597,300,2597,300,0)
lclick(2384,293)
wait(40)
move(3186,798)
WAITMS(500)
dblclick(3186,798)
DEFINE ($GOLD,2)
print($GOLD)
INC($GOLD,2)
else
$var=1
IF($var < 40)
lclick(2370,376)
wait(2)
dblclick(3186,798)
WAITMS(100)
INC ($var,1)
else
wait(5)
lclick(2184,872)
wait(5)
IF_PIXEL_IN (2147,890,2147,890,13480209)
dblclick(3186,798)
wait(5)
lclick(2579,875)
WAITMS(100)
end_if
end_if
end_if
END_IF
// пол часа отработал
// делаем что нужно