[spoiler]
Макросы, сабы, инклуды - это конечно здорово. Но первым делом надо бы было поинтересоваться - "Меняют ли переменные (из этих длинных строк) свои значения по ходу выполнения скрипта?". Нам же этого не сказали.
И если не меняют, то просто загнать вычисления типа "$x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch)" в переменные, после того, как они в последний раз получат свои значения. Для этого можно выбрать удобное место в скрипте.
// Строка для примера:
// if ((pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat)=4144959)
$x = $x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch) // вычисления в переменную
IF(PXL($x, $y_vert_chat) = 4144959) // ...
Ничего нового, просто хочу заострить на этом ваше внимание, т.к. похоже этот важный момент незаслуженно упущен, поэтому можно напрасно полезть в дебри из макросов буквально на ровном месте.
Нужно хоть название темы прочесть, а желательно всю ветку сообщений, прежде чем флудить в теме заострением внимания на ненужных и не интересных автору темы моментах.
[/spoiler]
Автор темы как раз и спрашивает - можно ли описать в скрипте функции, вызов которых можно было бы делать в коде, например вместо выражений условий IF(). Для того, чтобы вместо длинной строки вычислений, в коде были бы короткие вызовы функций.
По факту ему не нужны сами эти функции, а нужны результаты работы этих функций, то есть то, что они возвращают. Это должно было бы сделать код менее громоздким и более читабельным. Иными словами - требуется вместо длинных строк однотипных вычислений, вставлять в код короткие результаты этих вычислений, это в идеале.
Если представить, что все эти вычисления производятся в сценарии у автора всего ОДИН РАЗ (например при запуске скрипта вычисляются координаты плавающих окон, или каких-то опорных пикселей), то повторять эти вычисления, как минимум глупо. И даже если бы были такие функции, то размножать их в коде, вместо того чтобы использовать уже известный результат их работы, было бы не верно. Так или иначе функции вернули бы результаты своей работы в переменные. Так почему не убрать все обертки и сразу не поместить эти результаты в переменные?
Я специально оговорился, выделив в своем прошлом ответе условие, при котором такой подход сработает.kiril, ты первым должен был уточнить этот момент, так как первым начал "помогать" автору темы, начав с этого...
К сожалению, это бред, от полного непонимания того, что вы пытаетесь использовать.
попробуйте другие способы, автозамену кода например,
или #define Заменяет один текст на другой,
или #include Вставляет в это место содержимое текстового файла из папки проекта. Это позволяет "прятать" объемный код, повышая таким образом читаемость скрипта.
Да и ни каких особых мучений при написании кода который вам понятен и работоспособность которого можете проверить, быть не должно.
Так что задачу не понял как раз ты, а не я. И вместо того, чтобы понять, начал бездумно помогать автору темы
размножать его вычисления в коде, предварительно переписав их макросами. Жесть же?
Пойми, я не оспариваю решения предложенные до меня, там всё верно. Я предлагаю другое,
самое очевидное решение, которое
ВОЗМОЖНО было проигнорировано потому, что никто не уточнил детали задачи.