Автокликер 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)
Еще рекомендую дочитать про вызов функций в новой версии ;)
На мой взгляд проще иметь просто один подключаемый файл с функциями. Чем вагон файлов. На читаемость это вряд ли повлияет.