4
« on: November 01, 2014, 12:02:27 PM »
Привет ещё раз всем. Вчера до 3х ночи пытался заставить заработать вложенные циклы.
Задача такая:
Персонаж должен копать (работает) N раз (работает) после этого класть материалы в багажник (работает) и снова начинать копать (не работает).
Сейчас скрипт ведёт себя так: запускает саб с внутренним циклом FOR (копает N раз (вынес это в отдельный SUB(pickaxe_use), 12я строка)), после этого запускает внешний цикл и $cnt_cycles раз сбрасывает груз в багажник, игнорируя копку.
Не работало даже при использовании самого простого варианта с
FOR($x, $x < 3)
FOR($y, $y < 3)
print($x, ":", $y)
END_CYC
END_CYC
Вело себя абсолютно так же.
А по логике, каждый раз, когда внутренний цикл отработал (накопал), он должен продолжить внешний цикл (там саб сбросить в багажник), и начать внешний цикл заново, проникнуть во внутренний и запустить копание. Вместо этого копание срабатывает только один раз, остальные разы он просто $cnt_cycles раз сбрасывает груз в багажник
#ps2_keyboard //Без этого параметра игра не воспринимает нажатые кнопки
DEFINE($cnt_a, 10) //КОЛИЧЕСТВО АЙТЕМОВ ДЛЯ СБРОСА
DEFINE($cnt_runs, 5) //Количество запусков копки до сброса
DEFINE($cnt_cycles, 2) //Количество циклов копка-сброс
SUB(clocker_a) // Звук по завершении копки.
WAITMS(50)
SOUND("Notify.wav")
END_SUB
SUB(pickaxe_use) //Саб на копание
FOR($a,$a<$cnt_runs) //Копаем $cnt_runs раз
WAITMS(20)
KEYPRESS(#Y) //Открыть меню игрока Y
WAITMS(200)
MOVE(820,260)
WAITMS(100)
LCLICK(820,260) //Выбрать кирку
WAITMS(100)
MOVE(830,530)
WAITMS(100)
LCLICK(830,530) //Нажать использовать
WAITMS(50)
WAITMS(7800) //Ожидание чуда (конца одного раза копки)
END_CYC
END_SUB
SUB(throw_to_truck) //Бросить в багажник
KEYPRESS(#T) //Открыть багажник
WAITMS(50)
MOVE(710,283) //Move to second thing
WAITMS(100)
LCLICK(710,283)
WAITMS(50)
MOVE(720,540) //Сдвинуться в текстовое поле
WAITMS(100)
LCLICK(720,540)
WAITMS(50)
KEYPRESS(8)
WAITMS(50)
KEYSTRING($cnt_a) //Изменение количества айтемов в поле
WAITMS(100)
LCLICK(790,585) //Положить
WAITMS(50)
KEYPRESS(27) //Нажать ESC чтобы закрыть меню
END_SUB
//Меня интересует это место:
IF(iskeydown(#O)=1) //Инициация скрипта
FOR($b,$b<$cnt_cycles) //Считаем циклы для полной загрузки грузовика
pickaxe_use() //Этот саб копает N раз (внутри цикл FOR)
WAITMS(20)
throw_to_truck() //Выбрасываем в грузовик
END_CYC
clocker_a() //Конец работы, звук
END_IF
Где собака?