Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: 123 on September 23, 2014, 04:50:32 PM

Title: Константы в файле
Post by: 123 on September 23, 2014, 04:50:32 PM
В справке об этом сказано маловато. Как их туда правильно записать?

Quote
Константы играют ту же роль, что и переменные. За тем исключением, что константы нельзя изменить и их префикс "#".
Константы загружаются в программу при запуске из файла %Clickermann%/data/const.txt
Title: Re: Константы в файле
Post by: Oraven on September 23, 2014, 05:37:33 PM
Похоже ты первый кому потребовалось туда что то добавлять.
Если открыть файл все станет ясно

Например добавим в этот файл такую строчку
Code: (clickermann) [Select]
#NAME 12345
Типерь запустим вот такой скрипт
Code: (clickermann) [Select]
LOGWRITE (#NAME)
HALT

И в логе обнаружим "12345"

Title: Re: Константы в файле
Post by: 123 on September 25, 2014, 09:53:06 AM
Надо же, ведь очень часто какие-то элементы управления находятся или появляются всегда на одном и том же месте. Чтобы не засорять их координатами напрямую или через переменные каждый скрипт и править все эти скрипты, если всё же придётся изменить координаты, наверно, лучше такое 1 раз в константы записать.
А при многократном повторении скрипта память значениями переменных постепенно заполняется, если нет UNDEFINE, или эта команда только чтобы переменной назначить другое значение после какого-то первого? Странно, что нет команды UNDEFINE(ваще все переменные этого скрипта), чтобы очистить их все сразу.
Title: Re: Константы в файле
Post by: Vint on September 25, 2014, 10:13:07 AM
Конечно, просто заменяются. Ведь имя одно и под одним именем не могут быть несколько переменных. О памяти не беспокойся вообще в этом направлении, ты же не обрабатываешь массивы по десятку-сотне мегабайт... надеюсь :)

"при многократном повторении скрипта" - ??? при каждой остановке скрипта и так всё удаляется. Или ты про повторы? Так это один скрипт просто порядок команд изменён, как прыгнуть по GOTO.

Какие это постоянные элементы? Просто интересно.
Вон браузер обновился и привет, панели поехали.
Твой подход удобен если ты пишешь скрипты только для себя. А в универсальном вообще нет ни одной жёсткой координаты, все "плавающие", только смещения одинаковые.
Я даже в браузере не тыкаю кликами по интерфейсу. Как начал переходить всеми скриптами на клавиатурные команды и запуск с параметром, так столько проблем сразу перестали меня мучать.
Title: Re: Константы в файле
Post by: 123 on September 25, 2014, 12:18:33 PM
Во флэш играх часто набор действующих клавиш - далеко не вся клавиатура, только левый клик мышью и никаких горячих клавиш для моментального вызова чего-то в обход менюшек. Дизайнерам иногда неймётся и через сроки порядка года могут очень менять интерфейс по внешнему виду и расположению элементов информирования и управления, или сам додумаешься, как улучшить алгоритм, тогда только ручная правка координат остаётся, а всё остальное время их трогать не надо.
Title: Re: Константы в файле
Post by: Vint on September 25, 2014, 12:33:59 PM
Опять же, если скрипт только для тебя. Переходи на уровень выше, делай для всех и константы в таком понимании будут не нужны.
Та даже если и для себя. Вот ЗФ флешь игра, окно подстраивается под размер экрана (в ММ и ОК). Запустил скрипт не на стационаре, а на ноуте или вообще на работе и всё приехали. Экраны везде разные, всё потянулось, поплыло. Скрипт с жёсткими координатами сразу в мусор. Не говоря уже про режим FullScreen игры или при привязке к окну.
Всё это решается одним махом при изначальном создании под динамические координаты. Да, затраты сил чуть больше, но оно того стоит и большим скриптам просто обязательно.
Title: Re: Константы в файле
Post by: Oraven on September 25, 2014, 12:37:10 PM
Всетаки мыслишь не верно, значения переменных легко сохранять и читать например из INI файла. А константы придется только в ручную всегда прописывать, да еще они находятся не в папке со скриптом.
Title: Re: Константы в файле
Post by: Vint on September 25, 2014, 12:52:45 PM
Туда стоит дописать какое нибудь
#PI  3.1415926536
Title: Re: Константы в файле
Post by: 123 on September 25, 2014, 12:57:41 PM
Если при разных разрешениях размеры в пикселях нужных объектов и расстояния между ними будут в разы отличаться, как с этим бороться?

Просто я чайник и про INI файл пока знаю меньше, чем с константами - первый попавшийся способ запихнуть одинаковые для нескольких скриптов или их копий величины сразу во все и править также только в одном месте.
Title: Re: Константы в файле
Post by: Oraven on September 25, 2014, 01:29:55 PM
Можно устанавливать определенный размер окна
Code: (clickermann) [Select]
wndsize( wndfind("Блокнот"), 300, 300)

Вот пример чтения и записи INI
Создаешь в ручную или через такой скрипт файл конфигурации
Code: (clickermann) [Select]
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", "Клик")

Используешь чтение в твоем скрипте.
Code: (clickermann) [Select]
$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 когда читаются цифры из текстовых файлов чтобы преобразовать строки в числа.