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
Где собака?