Автокликер Clickermann :: Форум
		Основной раздел => Общие вопросы => Topic started by: aheart82 on March 26, 2014, 05:00:30 PM
		
			
			- 
				у меня есть допустим 3 сценария ,которые записаны в файлах
 1.cms
 2.cms
 3.cms
 
 в случайном порядке мне надо их вызывать
 как представляю я
 
 $x=RND(1,3)
 #include "/projects/ВОТ ЗДЕСЬ $x.cms"
 
 но у меня не работает, перепробовал различные варианты 4.9 (build 005)
 
 
 и заодно вопрос, а если таких инклюдов у меня будет сотня, не зависнет ли программа?
- 
				Верный код.
 $inclx = RND(1,3)
 
 IF($inclx = 1)
 #include "1.cms"
 END_IF
 
 IF($inclx = 2)
 #include "2.cms"
 END_IF
 
 IF($inclx = 3)
 #include "3.cms"
 END_IF
- 
				$x=strconcat(RND(1,3),".cms")
 #include $x
жалко что не работает изза обязательного наличия кавычек
- 
				$x=strconcat(RND(1,3),".cms")
 #include $x
жалко что не работает изза обязательного наличия кавычек
 
 
 При запуске строки #include заменяются кодом из соответствующего файла. Ты что хочешь динамически менять код чтоли? Это никак работать не будет!
- 
				Сорри, но не работает из за того , что инклуд загружается только при загрузке скрипта и только один раз. В этот момент переменных просто нет, поэтому имя инклуда уже должно быть и должно быть действительным. Причем, сам инклуд должен быть самостоятельно выполняемым. Я пробовал на ходу, из основного скрипта, изменять текст в файле инклуда. Но Кликерман повторно файл инклуда не перечитывает, а выполняет то, что уже взял в память при загрузке скрипта.
 
 Поэтому тут, как мне кажется, возможны только костыли, типа:
 Но этот код, у меня почему то не работает.
 $inclx = RND(1,3)
 
 SWITCH($inclx)
 CASE(1)
 #include "1.cms"
 CASE(2)
 #include "2.cms"
 CASE(3)
 #include "3.cms"
 DEFAULT
 // случай по умолчанию
 END_SWITCH
 
 Очевидно, что если инклудов будет сотня и они будут большими, то потребуется много оперативной памяти. Надеюсь, что не так уж и много, чтобы зависла программа.
- 
				Для чего сотня инклудов? Нельзя в одном скрипте написать сотню сабов и вызывать их в любой момент, используя 1 инклуд в начале?
			
- 
				$inclx = RND(1,3)
 
 SWITCH($inclx)
 CASE(1)
 #include "1.cms"
 CASE(2)
 #include "2.cms"
 CASE(3)
 #include "3.cms"
 DEFAULT
 // случай по умолчанию
 END_SWITCH
слишком длинная портянка получается, но  наверно другого выхода нет.
 когда будет полностью готов код на счет 100 сценариев- я отпишусь в этой ветке, как себя ведет комп
- 
				Не представляю себе зачем это нужно. Ещё учти что если в коде по инклюду есть сабы, #include "1.cms" нельзя писать внутри любых конструкций, хоть IF, хоть CASE
			
- 
				Не представляю себе зачем это нужно. Ещё учти что если в коде по инклюду есть сабы, #include "1.cms" нельзя писать внутри любых конструкций, хоть IF, хоть CASE
 
 
 А ведь правда не работает внутри конструкций IF и CASE, даже без сабов.  :( То, что я написал выше не работает. SWITCH нельзя использовать.  Почему то выполняется только первая секция CASE, независимо от значения переменной.
 
 С IF тоже беда, его получилось использовать только один раз. Если написать два IF с инклудами и рандомной переменной $inclx = RND(1,3), то всегда выполняется только первый IF. Если написать $inclx = 2, например, то скрипт впадает в какой то бесконечный цикл.
 
 Windows 7 SP1 x64
 Clickermann v4.9 (build 005) и Clickermann v4.10
- 
				А что в твоих скриптах? 
 
 Простой тест показывает что все работает и с условиями и с SWITCH
 
 В три скрипта записываю строки
 LOGWRITE ("Скрипт 1")
 WAITMS(500)
далее "Скрипт 2" и "Скрипт 3"
 
 В логе получаю
 12:02:17 Скрипт 3
 12:02:18 Скрипт 1
 12:02:18 Скрипт 3
 12:02:19 Скрипт 3
 12:02:19 Скрипт 2
- 
				Да, да с обычными работает. Проверял раньше на 4.9 
 С сабами нет, т.к. SUB должен быть в "корне" скрипта, а не в цикле или условии.
- 
				А так не получится?
 $y=".cms"
 $x=strconcat(RND(1,3),$y)
 #include $x
- 
				А так не получится?
 $y=".cms"
 $x=strconcat(RND(1,3),$y)
 #include $x
 
 не работает
 
 а вот вариант вполне работает$inclx = RND(1,3)
 SWITCH($inclx)
 CASE(1)
 #include "/projects/1.cms"
 CASE(2)
 #include "/projects/2.cms"
 CASE(3)
 #include "/projects/3.cms"
 END_SWITCH
только длинный получается в условии
- 
				
 а вот вариант вполне работает$inclx = RND(1,3)
 SWITCH($inclx)
 CASE(1)
 #include "/projects/1.cms"
 CASE(2)
 #include "/projects/2.cms"
 CASE(3)
 #include "/projects/3.cms"
 END_SWITCH
только длинный получается в условии
 
 
 И получится свитч из 100 условий... =\
- 
				если для работы тебе нужно сто сценариев \ сто условий, то я бы задумался об оптимальности выбранного решения
			
- 
				если для работы тебе нужно сто сценариев \ сто условий, то я бы задумался об оптимальности выбранного решения
 
 
 предложи пожалуйста
- 
				так задача то не озвучена. ты просто сообщил что у тебя есть три внешних сценария. и предположил какой начался бы ад если бы их было сто например.
 на что в свою очередь я заметил что "сто сценариев не нужны".
 
 что такого у тебя там в твоих трех сценариях например? и почему бы их не запихать в один, а внутренности допустим разделить условиями или процедурами
- 
				каждый сценарий движения мышки и кликанье по кнопкам , протяженностью 3-7  минут.
 для удобства хотел каждый сценарий и записать отдельно в свой файл, в случае если надо изменить что то, то просто перезаписать этот cms.
 
 и кстати еще вопрос, а то вроде видел где то, но не вдавался в подробности.
 если в основе поставить #include , а в нем еще #include , то работать не будет?
 просто у меня выходило, что при написании инклудов, вроде все работало, а когда закрывал кликер и запускал заново, то не работал вложенный инклюд
 
- 
				если тебе так сильно нужно прыгать от одного сценария к другому то можешь прибегнуть к goto
 чтото типа того
 nachalo:
 //какоето условие
 ......
 goto(kuda_to)
 ......
 goto(kuda_to2)
 ......
 goto(kuda_to3)
 .....
 .....
 kuda_to:
 //это самое куда то
 //делаем что нам надо
 // возвращаемся в начало
 goto(nachalo)
 kuda_to2:
 ...
 // возвращаемся в начало
 goto(nachalo)
 kuda_to3:
 ...
 // возвращаемся в начало
 goto(nachalo)
 
тут вам и цикл можно применить и переменные(не уверен)
- 
				если в основе поставить #include , а в нем еще #include 
 
 :o
 Это как?
- 
				 :o
 Это как?
 
 
 (http://img0.joyreactor.cc/pics/comment/countryballs-%D0%9A%D0%BE%D0%BC%D0%B8%D0%BA%D1%81%D1%8B-%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F-%D1%8F%D0%BF%D0%BE%D0%BD%D0%B8%D1%8F-878719.jpeg)
- 
				если в основе поставить #include , а в нем еще #include 
 
 :o
 Это как?
 
 Загрузка скрипта через инклуд, в котором присутствует инклуд
 
- 
				Да, с этим хотелось бы уточнить. Тоже возникал вопрос по вложенности... но не возможность (вроде работает), а о взаимодействии. Что, если в инклюде будет вызов инклюда который есть в основном скрипте?
 Поюсняю: есть скрипт
 #include "УРА.cms"
 ляляля
 #include "тополя.cms"
 ...
 
 Если в тополя.cms уже есть #include "УРА.cms" это критично? Вопрос об уникальности имён сабов например, которые есть в УРА.cms. Так как в результате вливания в один скрипт получаются 2++ саба с одним именем. И если без проблем, вызываться будет расположенный выше? С этим тоже проблем не будет?
 
 Зачем это всё нужно? Для создания библиотек. Некоторые подпрограммы требуют подключения определённых инклюдов. Естесственно для самодостаточности и завершённости библиотеки она сама должна содержать вызов #include (чтобы не забыть). Естесственно они могут пересекаться.
 
 Вот в питоне например подключаемые модули активно пересекаются, но при импорте интерпритатор запоминает имя подгруженного модуля и если импорт встретится ещё, загружать повторно не будет, просто расширит область видимости на этот модуль.
- 
				Содомия какая то =\
			
- 
				каждый сценарий движения мышки и кликанье по кнопкам , протяженностью 3-7  минут.
 для удобства хотел каждый сценарий и записать отдельно в свой файл, в случае если надо изменить что то, то просто перезаписать этот cms.
 
 Копаешь совсем в ложную сторону реализации, а может оказаться всё гораздо проще ;-)
 
 В тот момент, когда я (наконец) дочитал в хелпе до инклудов (вернее, когда их ввели в новой версии) - я сразу представил, как мои Sub'ы мигрируют в отдельные файлы  ;D и читаемость/юзабилити кода упроститься намного.
 
 Короче говоря, нужно инклудить ВСЁ! но с умом:
 SUB (mouse1)
 #include "1.cms"
 END_SUB
 
 SUB (mouse2)
 #include "2.cms"
 END_SUB
 
 SUB (mouse2)
 #include "2.cms"
 END_SUB
 
 GOSUB(mouse1)
 GOSUB(mouse2)
 GOSUB(mouse3)
 
 В отличии от GOTO, с SUB'ами работать намного удобнее и практичнее. Загоняешь всё в сабы, а потом уже играешься с условиями из вызовов.
- 
				
 Короче говоря, нужно инклудить ВСЁ! но с умом:
 GOSUB(mouse1)
 
 
 Еще рекомендую дочитать про вызов функций в новой версии ;)
 
 На мой взгляд проще иметь просто один подключаемый файл с функциями. Чем вагон файлов. На читаемость это вряд ли повлияет.