Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: 123 on September 23, 2014, 04:50:32 PM
-
В справке об этом сказано маловато. Как их туда правильно записать?
Константы играют ту же роль, что и переменные. За тем исключением, что константы нельзя изменить и их префикс "#".
Константы загружаются в программу при запуске из файла %Clickermann%/data/const.txt
-
Похоже ты первый кому потребовалось туда что то добавлять.
Если открыть файл все станет ясно
Например добавим в этот файл такую строчку
#NAME 12345
Типерь запустим вот такой скрипт
LOGWRITE (#NAME)
HALT
И в логе обнаружим "12345"
-
Надо же, ведь очень часто какие-то элементы управления находятся или появляются всегда на одном и том же месте. Чтобы не засорять их координатами напрямую или через переменные каждый скрипт и править все эти скрипты, если всё же придётся изменить координаты, наверно, лучше такое 1 раз в константы записать.
А при многократном повторении скрипта память значениями переменных постепенно заполняется, если нет UNDEFINE, или эта команда только чтобы переменной назначить другое значение после какого-то первого? Странно, что нет команды UNDEFINE(ваще все переменные этого скрипта), чтобы очистить их все сразу.
-
Конечно, просто заменяются. Ведь имя одно и под одним именем не могут быть несколько переменных. О памяти не беспокойся вообще в этом направлении, ты же не обрабатываешь массивы по десятку-сотне мегабайт... надеюсь :)
"при многократном повторении скрипта" - ??? при каждой остановке скрипта и так всё удаляется. Или ты про повторы? Так это один скрипт просто порядок команд изменён, как прыгнуть по GOTO.
Какие это постоянные элементы? Просто интересно.
Вон браузер обновился и привет, панели поехали.
Твой подход удобен если ты пишешь скрипты только для себя. А в универсальном вообще нет ни одной жёсткой координаты, все "плавающие", только смещения одинаковые.
Я даже в браузере не тыкаю кликами по интерфейсу. Как начал переходить всеми скриптами на клавиатурные команды и запуск с параметром, так столько проблем сразу перестали меня мучать.
-
Во флэш играх часто набор действующих клавиш - далеко не вся клавиатура, только левый клик мышью и никаких горячих клавиш для моментального вызова чего-то в обход менюшек. Дизайнерам иногда неймётся и через сроки порядка года могут очень менять интерфейс по внешнему виду и расположению элементов информирования и управления, или сам додумаешься, как улучшить алгоритм, тогда только ручная правка координат остаётся, а всё остальное время их трогать не надо.
-
Опять же, если скрипт только для тебя. Переходи на уровень выше, делай для всех и константы в таком понимании будут не нужны.
Та даже если и для себя. Вот ЗФ флешь игра, окно подстраивается под размер экрана (в ММ и ОК). Запустил скрипт не на стационаре, а на ноуте или вообще на работе и всё приехали. Экраны везде разные, всё потянулось, поплыло. Скрипт с жёсткими координатами сразу в мусор. Не говоря уже про режим FullScreen игры или при привязке к окну.
Всё это решается одним махом при изначальном создании под динамические координаты. Да, затраты сил чуть больше, но оно того стоит и большим скриптам просто обязательно.
-
Всетаки мыслишь не верно, значения переменных легко сохранять и читать например из INI файла. А константы придется только в ручную всегда прописывать, да еще они находятся не в папке со скриптом.
-
Туда стоит дописать какое нибудь
#PI 3.1415926536
-
Если при разных разрешениях размеры в пикселях нужных объектов и расстояния между ними будут в разы отличаться, как с этим бороться?
Просто я чайник и про INI файл пока знаю меньше, чем с константами - первый попавшийся способ запихнуть одинаковые для нескольких скриптов или их копий величины сразу во все и править также только в одном месте.
-
Можно устанавливать определенный размер окна
wndsize( wndfind("Блокнот"), 300, 300)
Вот пример чтения и записи INI
Создаешь в ручную или через такой скрипт файл конфигурации
INIWRITE("config.ini", "x1", "100", "Координаты")
INIWRITE("config.ini", "y1", "100", "Координаты")
INIWRITE("config.ini", "x2", "200", "Координаты")
INIWRITE("config.ini", "y2", "200", "Координаты")
INIWRITE("config.ini", "lclk_x", "300", "Клик")
INIWRITE("config.ini", "lclk_y", "450", "Клик")
Используешь чтение в твоем скрипте.
$x1 = INT(INIREAD("config.ini", "x1", "Координаты"))
$y1 = INT(INIREAD("config.ini", "y1", "Координаты"))
$x2 = INT(INIREAD("config.ini", "x2", "Координаты"))
$y2 = INT(INIREAD("config.ini", "y2", "Координаты"))
$lclk_x = INT(INIREAD("config.ini", "lclk_x", "Клик"))
$lclk_y = INT(INIREAD("config.ini", "lclk_y", "Клик"))
GETSCREEN
IF_PICTURE_IN ($x1,$y1, $x2,$y2, "file.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(100)
ELSE
LCLICK($lclk_x,$lclk_y)
END_IF
HALT
Обрати внимание, нужно обязательно использовать INT когда читаются цифры из текстовых файлов чтобы преобразовать строки в числа.