Автокликер Clickermann :: Форум
		Основной раздел => Общие вопросы => Topic started by: Форвард on February 26, 2013, 08:46:25 AM
		
			
			- 
				Хотел назвать тему - нубское применение нубского GOTO нубскими нубами,
 но все же решив, что в более общую тему могут обратиться разные люди дал общее название.
 
 Дано:
 кликер 4.7 SE, Win7
 
 Предистория:
 Не зная, что в кликере 4.7 отменен переход GOTO по строкам родил "шедевр":
 
 SUB(timer1)// 
 GOTO(RNDFROM(6,11,16,21,26,31,36,41,46,51,56,61)
 // 6 строка
 WAITMS(RND(3000,6000))
 LCLICK(RND(),RND())
 WAITMS(RND(1000,2000))
 GOTO(70)
 // 11 строка
 WAITMS(RND(3000,6000))
 LCLICK(RND(),RND())
 WAITMS(RND(1000,2000))
 GOTO(70)
 ---------удалил повторы внутри САБа чтобы тут выложить---------
 //61 строка
 WAITMS(RND(3000,6000))
 LCLICK(RND(),RND())
 WAITMS(RND(1000,2000))
 GOTO(70)
 // 70 строка
 END_SUB
 Этот "шедевр" в оконном режиме кликал не по одному единственному клику внутри САБа как надо было, а по всем подряд до конца САба до самого ЭНД_САБ
 
 История:
 
 Вчера внес в "шедевр"  исправления так как узнал что кликер 4.7 не работает по строкам.
 
 SUB(timer1)// Блок выбора ... для таймера
 GOTO(RND(3,16)) // тут убрал RNDFROM с перечислением
 3://
 WAITMS(RND(3000,6000))
 LCLICK(RND(),RND())
 WAITMS(RND(1000,2000))
 GOTO(19)
 4://
 WAITMS(RND(3000,6000))
 LCLICK(RND(),RND())
 WAITMS(RND(1000,2000))
 GOTO(19)
 ----------удалил повторы внутри САБа чтобы тут выложить-----------
 16://Пройти все
 WAITMS(RND(3000,6000))
 GOSUB(luna2)
 WAITMS(RND(1000,2000))
 GOTO(19)
 17: запасная
 18: запасная
 19://
 END_SUB
 Проблема:
 
 Второй исправленый САБ теперь кликает при вызове этого САБа только по первой метке 3:
 и все - никакого рандома нет и не переходит на другие метки.
 
 Вру - на 19: метку как то переходит!!! На другие не хочет....
 
 Повторюсь - все это в оконном режиме.
 Кликать надо в разные места.... потому и столько ЛКЛИКов...
 И прыгать через GOTO надо только внутри САБа.
 
 Осталось попробовать вернуть GOTO(RNDFROM(с перечислением всех меток))
 Но не уверен что поможет... но проверю...
 
 И до кучи -
 в другом месте этого же кода в оконном режиме и не в САБе:
 GOTO(RNDFROM(20,21,22)
 давало прыжок только на 20 метку (и тут и в начале только первая цифра срабатывает)
 но к этой строке статистики обращений мало, а к описанным в начале много.
- 
				Это из-за того, что убрали явное разделение на числовые и строковые переменные.
 Твоя строка GOTO(19) срабатывает правильно, потому, что в таком виде она строковая (текст).
 Она и переходит на ТЕКСТОВУЮ метку 19:
 
 А после RND ты получаешь число.
- 
				Зачем тебе здесь GOTO? Выдели одну переменную и сделай нормально с условиями.
 
 SUB(timer1)// Блок выбора ... для таймера
 $var=RND(3,16)
 IF($var = 3)
 WAITMS(RND(3000,6000))
 LCLICK(RND(),RND())
 WAITMS(RND(1000,2000))
 END_IF
 
 IF($var = 4)
 WAITMS(RND(3000,6000))
 LCLICK(RND(),RND())
 WAITMS(RND(1000,2000))
 END_IF
 
 ----------удалил повторы внутри САБа чтобы тут выложить-----------
 IF($var = 16)
 WAITMS(RND(3000,6000))
 GOSUB(luna2)
 WAITMS(RND(1000,2000))
 END_IF
 END_SUB
- 
				ОГО!
 Реально красиво!
 Спасибо огроменное за разъяснение!
 Буду теперь все перегонять в переменные.
 Ну а зачем мне тут GOTO - да уже не за чем.
 Просто я не догонял до этого объяснения зачем вообще нужны какие-то переменные....
 И тыкался с тем, что вроде понятно было....