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

Основной раздел => Общие вопросы => Topic started by: gsukhado on September 19, 2017, 11:34:43 PM

Title: Формирование функций от переменных
Post by: gsukhado on September 19, 2017, 11:34:43 PM
День добрый.

Требуется задавать масштабируемые значения для переменных, т.е. чтобы координаты для формул прописывались не в явном виде, а как функция = ($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch)) от координаты $x_ishodnoe

Вручную везде по тексту вводить конструкции типа
ldown($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_gr+INT(($y_ishodnoe-$y_gr)*$y_peresch))

или
if ((pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat)=4144959)&(pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat+INT(4*$y_peresch))=12566527)&(pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat+INT(17*$y_peresch))=12566527)&(pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat+INT(48*$y_peresch))=16744319))

- просто замучаешься. Наверняка есть возможность задания подобных функций, чтобы можно было сокращать до примерно
ldown(функция($x_ishodnoe),функция($y_ishodnoe))
Но увы в описаниях не нашел. Если просто через обычную подпрограмму - то надо вводить какие-то дополнительные переменные чтобы вернуть рассчитанное значение... Явно я что-то в хэлпах не обнаружил? подскажите плз...
Title: Re: Формирование функций от переменных
Post by: gsukhado on September 19, 2017, 11:49:11 PM
Вот вроде нашел что-то похожее, правильным ли будет такое решение (сейчас не могу проверить на боевом алгоритме)?

Code: (clickermann) [Select]
sub(x_multi, $tmp_znach)
  $tmp_znach1=getvar($tmp_znach)
  setvar($tmp_znach, $x_gr+INT(($tmp_znach1-$x_gr)*$x_peresch)
end_sub

sub(y_multi, $tmp_znach)
  $tmp_znach1=getvar($tmp_znach)
  setvar($tmp_znach, $y_gr+INT(($tmp_znach1-$y_gr)*$y_peresch)
end_sub

// Основная программа

ldown(x_multi(253)),y_multi(133))

Title: Re: Формирование функций от переменных
Post by: gsukhado on September 20, 2017, 12:41:53 AM
Хорошо, если getvar / setvar совсем не к месту (да, я с таковыми ни разу еще не сталкивался), то и #include  абсолютно ни при чем - мне не надо прятать код, мне надо упростить код, когда почти в каждой строке я вынужден писать длинные выражения типа

if ((pxl($x_gr+INT((231-$x_gr)*$x_peresch),$y_vert_chat)=4144959)&(pxl($x_gr+INT((436-$x_gr)*$x_peresch),$y_vert_chat+INT(4*$y_peresch))=12566527)&(pxl($x_gr+INT((524-$x_gr)*$x_peresch),$y_vert_chat+INT(17*$y_peresch))=12566527)&(pxl($x_gr+INT((576-$x_gr)*$x_peresch),$y_vert_chat+INT(48*$y_peresch))=16744319))

я просто чисто технически где-то в скобках или знаках ошибусь.
И хочу его сократить до

if ((pxl(функция1(231),$y_vert_chat)=4144959)&(pxl(функция1(436),$y_vert_chat+функция2(4))=12566527)&(pxl(функция1(524),$y_vert_chat+функция2(17))=12566527)&(pxl(функция1(576)),$y_vert_chat+функция2(48))=16744319))
а сами "функция1" и "функция2" вынести например в подпрограмму или каким-то образом задать. Это обычные алгебраические функции.

Как это можно сделать?
Title: Re: Формирование функций от переменных
Post by: dramster on September 20, 2017, 02:01:55 AM

Требуется задавать масштабируемые значения для переменных, т.е. чтобы координаты для формул прописывались не в явном виде, а как функция = ($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch)) от координаты $x_ishodnoe

Но увы в описаниях не нашел. Если просто через обычную подпрограмму - то надо вводить какие-то дополнительные переменные чтобы вернуть рассчитанное значение... Явно я что-то в хэлпах не обнаружил? подскажите плз...

возможности написания собственных функций в км нет. были предложения добавить токую возможность, но увы...
http://crapware.aidf.org/forum/index.php?topic=2108.0

пробуй варианты что предложил kiril.

кстати, getvar и setvar когда добавили в функционал, я так до сих пор и не догнал зачем это нужно и где это применить   :D .

Title: Re: Формирование функций от переменных
Post by: dramster on September 20, 2017, 02:49:15 AM
Хорошо, если getvar / setvar совсем не к месту (да, я с таковыми ни разу еще не сталкивался), то и #include  абсолютно ни при чем - мне не надо прятать код, мне надо упростить код, когда почти в каждой строке я вынужден писать длинные выражения типа

if ((pxl($x_gr+INT((231-$x_gr)*$x_peresch),$y_vert_chat)=4144959)&(pxl($x_gr+INT((436-$x_gr)*$x_peresch),$y_vert_chat+INT(4*$y_peresch))=12566527)&(pxl($x_gr+INT((524-$x_gr)*$x_peresch),$y_vert_chat+INT(17*$y_peresch))=12566527)&(pxl($x_gr+INT((576-$x_gr)*$x_peresch),$y_vert_chat+INT(48*$y_peresch))=16744319))


Как это можно сделать?

вот пример для твоего примера через тот же sub, попробуй. хотя и твоя длиннющая строка if не такая уж и страшная.

Code: (clickermann) [Select]
sub(func_ifpix, $coord, $n_hz, $color)
   IF(pxl($x_gr+INT(($coord-$x_gr)*$x_peresch),$y_vert_chat+INT($n_hz*$y_peresch)) = $color)
      $ret = 1
   else
      $ret = 0
   END_IF
end_sub

func_ifpix(231,0, 4144959)
$func_1 = $ret

func_ifpix(436,4, 12566527)
$func_2 = $ret

func_ifpix(524,17, 12566527)
$func_3 = $ret

func_ifpix(576,48, 16744319)
$func_4 = $ret


if($func_1 & $func_2 & $func_3 & $func_4)
   //действо 
end_if

вот сокращенно как это работает:
Code: (clickermann) [Select]
sub(func_abc, $A, $B, $C)
   IF($A + $B = $C)
      $ret = 1
   else
      $ret = 0
   END_IF
end_sub

func_abc(1,1, 2)
$func_1 = $ret

func_abc(2,2, 4)
$func_2 = $ret

func_abc(3,3, 6)
$func_3 = $ret

func_abc(4,4, 8)
$func_4 = $ret


if($func_1 & $func_2 & $func_3 & $func_4)
   print("верно")
else
   print("не верно")
end_if

halt
Title: Re: Формирование функций от переменных
Post by: Vint on September 20, 2017, 08:33:55 AM
Можно поизвращаться и сделать замены  через #define.

(поделено на строки только для простоты восприятия на форуме!)

Code: (clickermann) [Select]
// было
IF(
    (pxl($x_gr+INT((231-$x_gr)*$x_peresch), $y_vert_chat)=4144959) &
    (pxl($x_gr+INT((436-$x_gr)*$x_peresch), $y_vert_chat + INT(4*$y_peresch))=12566527) &
    (pxl($x_gr+INT((524-$x_gr)*$x_peresch), $y_vert_chat + INT(17*$y_peresch))=12566527) &
    (pxl($x_gr+INT((576-$x_gr)*$x_peresch), $y_vert_chat + INT(48*$y_peresch))=16744319)
    )
END_IF
Code: (clickermann) [Select]
#define xgr(:$x_gr+INT((
#define )xgr:-$x_gr)*$x_peresch)

#define pery(:INT(
#define )pery:*$y_peresch)

// стало
IF(
    (pxl(xgr(231)xgr, $y_vert_chat)=4144959) &
    (pxl(xgr(436)xgr, $y_vert_chat + pery(4)pery:)=12566527) &
    (pxl(xgr(524)xgr, $y_vert_chat + pery(17)pery:)=12566527) &
    (pxl(xgr(576)xgr, $y_vert_chat + pery(48)pery:)=16744319)
    )
END_IF

но не везде это нужно. Не вижу большого смысла в какой-то замене INT(17*$y_peresch).
Если уж менять то сразу $y_vert_chat + INT(17*$y_peresch))
Code: (clickermann) [Select]
// стало 2
#define xgr(:$x_gr+INT((
#define )xgr:-$x_gr)*$x_peresch)

#define yverper(:$y_vert_chat + INT(
#define )yverper:*$y_peresch)

IF(
    (pxl(xgr(231)xgr, $y_vert_chat)=4144959) &
    (pxl(xgr(436)xgr, yverper(4)yverper)=12566527) &
    (pxl(xgr(524)xgr, yverper(17)yverper)=12566527) &
    (pxl(xgr(576)xgr, yverper(48)yverper)=16744319)
    )
END_IF
Title: Re: Формирование функций от переменных
Post by: Vint on September 20, 2017, 08:38:20 AM
Нужно менять график  :)
Title: Re: Формирование функций от переменных
Post by: gsukhado on September 20, 2017, 09:36:53 AM
Теперь с #define понял идею, спасибо!!! :)
Title: Re: Формирование функций от переменных
Post by: Vint on September 20, 2017, 02:53:27 PM
можно сразу отвечать фразой " Пишу ответ", а потом не спеша редактировать своё сообщение.  ;)
Почему я не додумался... Наверно, потому, что могу начать писать и не закончить  :D
Вспомним новое словечко "лайфхак" и занесем ответ туда.
Title: Re: Формирование функций от переменных
Post by: tmp~1 on September 23, 2017, 06:11:13 PM
Макросы, сабы, инклуды - это конечно здорово. Но первым делом надо бы было поинтересоваться - "Меняют ли переменные (из этих длинных строк) свои значения по ходу выполнения скрипта?". Нам же этого не сказали.
И если не меняют, то просто загнать вычисления типа "$x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch)" в переменные, после того, как они в последний раз получат свои значения. Для этого можно выбрать удобное место в скрипте.
Code: (clickermann) [Select]
// Строка для примера:
// 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) // ...

Ничего нового, просто хочу заострить на этом ваше внимание, т.к. похоже этот важный момент незаслуженно упущен, поэтому можно напрасно полезть в дебри из макросов буквально на ровном месте.
Title: Re: Формирование функций от переменных
Post by: tmp~1 on September 23, 2017, 10:57:58 PM
[spoiler]
Макросы, сабы, инклуды - это конечно здорово. Но первым делом надо бы было поинтересоваться - "Меняют ли переменные (из этих длинных строк) свои значения по ходу выполнения скрипта?". Нам же этого не сказали.
И если не меняют, то просто загнать вычисления типа "$x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch)" в переменные, после того, как они в последний раз получат свои значения. Для этого можно выбрать удобное место в скрипте.
Code: (clickermann) [Select]
// Строка для примера:
// 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 Вставляет в это место содержимое текстового файла из папки проекта. Это позволяет "прятать" объемный код, повышая таким образом читаемость скрипта.
Да и ни каких особых мучений при написании кода который вам понятен и работоспособность которого можете проверить, быть не должно.

Так что задачу не понял как раз ты, а не я. И вместо того, чтобы понять, начал бездумно помогать автору темы размножать его вычисления в коде, предварительно переписав их макросами. Жесть же? ;D
Пойми, я не оспариваю решения предложенные до меня, там всё верно. Я предлагаю другое, самое очевидное решение, которое ВОЗМОЖНО было проигнорировано потому, что никто не уточнил детали задачи.
Title: Re: Формирование функций от переменных
Post by: dramster on September 24, 2017, 02:24:25 AM
Макросы, сабы, инклуды - это конечно здорово. Но первым делом надо бы было поинтересоваться - "Меняют ли переменные (из этих длинных строк) свои значения по ходу выполнения скрипта?". Нам же этого не сказали.
И если не меняют, то просто загнать вычисления типа "$x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch)" в переменные, после того, как они в последний раз получат свои значения. Для этого можно выбрать удобное место в скрипте.
Code: (clickermann) [Select]
// Строка для примера:
// 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) // ...

Ничего нового, просто хочу заострить на этом ваше внимание, т.к. похоже этот важный момент незаслуженно упущен, поэтому можно напрасно полезть в дебри из макросов буквально на ровном месте.
а ведь ты прав, почему то до этого никто и не подумал об простейшем присваивании длинных вычислений в одну переменную  :( . выходные, не охота щяс делать как бы это выглядело. но всеже, скрипт был бы и понятен и сокращен без всяких там инклудов сабов и прочего.



если бы у меня такая ситуация возникла, то я бы конечно не заморачивался бы, оставил бы как есть, длинные строки вычисления и пох, лишь бы я понимал как это все работает.
Title: Re: Формирование функций от переменных
Post by: Vint on September 24, 2017, 02:00:13 PM
Если представить, что все эти вычисления производятся в сценарии у автора всего ОДИН РАЗ (например при запуске скрипта вычисляются координаты плавающих окон, или каких-то опорных пикселей), то повторять эти вычисления, как минимум глупо. И даже если бы были такие функции, то размножать их в коде, вместо того чтобы использовать уже известный результат их работы, было бы не верно. Так или иначе функции вернули бы результаты своей работы в переменные. Так почему не убрать все обертки и сразу не поместить эти результаты в переменные?
Я специально оговорился, выделив в своем прошлом ответе условие, при котором такой подход сработает.

kiril, ты первым должен был уточнить этот момент, так как первым начал "помогать" автору темы, начав с этого...
Я предлагаю другое, самое очевидное решение, которое ВОЗМОЖНО было проигнорировано потому, что никто не уточнил детали задачи.

Конечно об этом подумали в первую очередь. Но я проанализировав стиль которым описан вопрос предположил, что автор не клинический идиот и сам бы себе не добавлял ненужных вычислений. Будем верить в людей и описанный тобой вариант событий отметаем.
И будем надеяться, что не ошиблись  :).

Вопрос был есть ли функции и аналоги или нет. А начальный код, минимум как пример или частный случай.
И ответ дали: функций нет. Остальное как методы уменьшения видимого кода. Можно было и без них
Title: Re: Формирование функций от переменных
Post by: tmp~1 on September 24, 2017, 07:49:09 PM
...
Вопрос был есть ли функции и аналоги или нет. А начальный код, минимум как пример или частный случай.
И ответ дали: функций нет. Остальное как методы уменьшения видимого кода. Можно было и без них

Вот же вопрос... (я выделил фразы, которые считаю ключевыми в этом вопросе).
Хорошо, если getvar / setvar совсем не к месту (да, я с таковыми ни разу еще не сталкивался), то и #include  абсолютно ни при чем - мне не надо прятать код, мне надо упростить код, когда почти в каждой строке я вынужден писать длинные выражения типа

if ((pxl($x_gr+INT((231-$x_gr)*$x_peresch),$y_vert_chat)=4144959)&(pxl($x_gr+INT((436-$x_gr)*$x_peresch),$y_vert_chat+INT(4*$y_peresch))=12566527)&(pxl($x_gr+INT((524-$x_gr)*$x_peresch),$y_vert_chat+INT(17*$y_peresch))=12566527)&(pxl($x_gr+INT((576-$x_gr)*$x_peresch),$y_vert_chat+INT(48*$y_peresch))=16744319))

я просто чисто технически где-то в скобках или знаках ошибусь.
И хочу его сократить до

if ((pxl(функция1(231),$y_vert_chat)=4144959)&(pxl(функция1(436),$y_vert_chat+функция2(4))=12566527)&(pxl(функция1(524),$y_vert_chat+функция2(17))=12566527)&(pxl(функция1(576)),$y_vert_chat+функция2(48))=16744319))
а сами "функция1" и "функция2" вынести например в подпрограмму или каким-то образом задать. Это обычные алгебраические функции.

Как это можно сделать?

Вопрос предельно понятный, с примером строки которую нужно сократить. Даже не видя остального кода, первым решением должно быть - присвоить значения этих длинных выражений переменным (с короткими понятными именами). И в коде использовать вызов этих переменных, а не сами эти выражения.

Ну ладно вы ломанули по бездорожью, вы то пропрете, вы подкованы и не один мануал искурили. А представьте как новички читающие ваши варианты за вами в дебри полезут. Босые - до первой крапивы. С макросами ведь код проще не станет и макросы сам код не изменят. Значит надо править сам код, а не вуалировать его и не прятать.

Вообще странно, что я тут вам это объясняю. Все всё прекрасно поняли. Сами то используете в таких случаях переменные... А такие переменные, которые получают свои значения один раз за весь сценарий, есть почти в каждом коде. И не надо быть Вангой и "анализировать стиль которым описан вопрос", чтобы понять, что такие переменные в коде есть. В каждом коде всегда есть строка, в которой переменная получает свое значение в последний раз и потом работает как константа.
Title: Re: Формирование функций от переменных
Post by: Vint on September 24, 2017, 09:41:02 PM
Вот же вопрос... (я выделил фразы, которые считаю ключевыми в этом вопросе).
А почему ты взял не первый пост с оригинальным вопросом?
Требуется задавать масштабируемые значения для переменных, т.е. чтобы координаты для формул прописывались не в явном виде, а как функция =
...
- просто замучаешься. Наверняка есть возможность задания подобных функций, чтобы можно было сокращать до примерно
ldown(функция($x_ishodnoe),функция($y_ishodnoe))
Но увы в описаниях не нашел. Если просто через обычную подпрограмму - то надо вводить какие-то дополнительные переменные чтобы вернуть рассчитанное значение... Явно я что-то в хэлпах не обнаружил? подскажите плз...

И фраза: 'мне не надо прятать код' относится к предложению include. Ну не надо, так не надо.
Тот пересчет который в примерах одной переменной не заменишь, нужно столько переменных, сколько вариантов. И путаться уже начнет в этих переменных.
Не вопрос. Можно и так делать и эдак, что ему удобней.
Title: Re: Формирование функций от переменных
Post by: tmp~1 on September 24, 2017, 11:28:52 PM
Вот же вопрос... (я выделил фразы, которые считаю ключевыми в этом вопросе).
А почему ты взял не первый пост с оригинальным вопросом?

Ну хорошо, вернемся к оригинальному вопросу.  :) И попробуем ответить снова. Поехали..

День добрый.

Требуется задавать масштабируемые значения для переменных, т.е. чтобы координаты для формул прописывались не в явном виде, а как функция = ($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch)) от координаты $x_ishodnoe

Вручную везде по тексту вводить конструкции типа
ldown($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_gr+INT(($y_ishodnoe-$y_gr)*$y_peresch))

или
if ((pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat)=4144959)&(pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat+INT(4*$y_peresch))=12566527)&(pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat+INT(17*$y_peresch))=12566527)&(pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat+INT(48*$y_peresch))=16744319))

- просто замучаешься. Наверняка есть возможность задания подобных функций, чтобы можно было сокращать до примерно
ldown(функция($x_ishodnoe),функция($y_ishodnoe))
Но увы в описаниях не нашел. Если просто через обычную подпрограмму - то надо вводить какие-то дополнительные переменные чтобы вернуть рассчитанное значение... Явно я что-то в хэлпах не обнаружил? подскажите плз...

День добрый. :)
Уважаемый gsukhado, к сожалению, на данный момент, Clickermann не обладает подобным функционалом, а именно - создание пользовательских функций, ввиду их невостребованности целевой аудиторией.
Если Вам необходима консультация специалистов по оптимизации Вашего кода, то пожалуйста выложите Ваш код здесь, на форуме, в этой теме, вместе с подробным описанием того, что он должен делать. Как показывает практика, ЭТО ЛУЧШИЙ СПОСОБ для уменьшения размера исходного кода и исправления ошибок в алгоритме (обычно, код "худеет" в несколько раз(!)).
Если Вам такой вариант не подходит, то пожалуйста, обратите Ваше внимание на следующие рекомендации. Рассмотрим пример кода из Вашего сообщения...

(https://s8.hostingkartinok.com/uploads/images/2017/09/e24a0dc842b40e2f21e75b50751f7392.jpg) (https://hostingkartinok.com/show-image.php?id=e24a0dc842b40e2f21e75b50751f7392)

На изображении, для наглядности, строка разбита на несколько строк, и одинаковые куски кода выделены красным цветом.
Картинка наглядно показывает, что Ваш КОД НАПИСАН НЕ ВЕРНО. Так блин никто не делает!!! Так писать не правильно!!! Прётесь тут на... (тут вставляем отборную брань). Исправьте ОШИБКИ В НАПИСАНИИ Вашего код и проблемы с "сокращением" кода отпадут сами собой!!! (приветливо улыбаемся)

Рекомендуемый вариант оптимизации:
Code: (clickermann) [Select]
// Строка для примера:
// 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) // оптимизированная строка

Спасибо что Вы с нами! :)


Ну вот примерно так. :)
Title: Re: Формирование функций от переменных
Post by: Vint on September 25, 2017, 08:49:31 AM
Дружные, продолжительные аплодисменты.

А где автор, то?  ;D
Title: Re: Формирование функций от переменных
Post by: gsukhado on October 15, 2017, 02:04:46 PM
или #include Вставляет в это место содержимое текстового файла из папки проекта. Это позволяет "прятать" объемный код, повышая таким образом читаемость скрипта.
Для другой задачи попробовал. Добавил строку
#include "Сценарий_ФармШахт_ver8_multi.cms" 
(чтобы по окончании одного сценария запустился другой)
Но при запуске основного сценария - начинает выдавать ошибку "Ошибка при вызове функции POP()".
В хэлпах про использование #include не нашел. Как его использовать?
Title: Re: Формирование функций от переменных
Post by: Vint on October 15, 2017, 06:31:24 PM
Это не 'другой сценарий', это часть одного.
С соблюдением всех правил и ограничений.
С ошибкой нудно показывать код, оба файла или сколько их там инклюдится.
Title: Re: Формирование функций от переменных
Post by: gsukhado on October 15, 2017, 09:36:17 PM
Это не 'другой сценарий', это часть одного.
С соблюдением всех правил и ограничений.
Понял, спс
Title: Re: Формирование функций от переменных
Post by: gsukhado on October 15, 2017, 09:47:09 PM
Дружные, продолжительные аплодисменты.

А где автор, то?  ;D
О, я даже не заметил сразу что тут продолжение обсуждения было - уведомлений-то на почту или куда-либо вообще не приходит на этом форуме )))
Мою задачу идеально решил Vint вот здесь http://crapware.aidf.org/forum/index.php?topic=3536.msg23930#msg23930 с фактическим введением функции через #define

для tmp~1:
Варианты заданий новых переменных не подходят, т.к. нужны именно функции, и строки в скрипте получаются примерно такие
IF((pxl(xperesch(231)xperesch, yperesch(420)yperesch)=4144959)  и т.д.
Подобный пересчет нужен для того, чтобы найденные значения координат специальных точек на одном компьютере с конкретным разрешением экрана можно было применить на другом компьютере и другом разрешении экрана; причем за счет оконного режима тут нужна не простая пропорция а более хитрая зависимость
Title: Re: Формирование функций от переменных
Post by: gsukhado on October 15, 2017, 09:59:11 PM
День добрый. :)
Уважаемый gsukhado, к сожалению, на данный момент, Clickermann не обладает подобным функционалом, а именно - создание пользовательских функций, ввиду их невостребованности целевой аудиторией.
Если Вам необходима консультация специалистов по оптимизации Вашего кода, то пожалуйста выложите Ваш код здесь, на форуме, в этой теме, вместе с подробным описанием того, что он должен делать. Как показывает практика, ЭТО ЛУЧШИЙ СПОСОБ для уменьшения размера исходного кода и исправления ошибок в алгоритме (обычно, код "худеет" в несколько раз(!)).
Если Вам такой вариант не подходит, то пожалуйста, обратите Ваше внимание на следующие рекомендации. Рассмотрим пример кода из Вашего сообщения...

(https://s8.hostingkartinok.com/uploads/images/2017/09/e24a0dc842b40e2f21e75b50751f7392.jpg) (https://hostingkartinok.com/show-image.php?id=e24a0dc842b40e2f21e75b50751f7392)

На изображении, для наглядности, строка разбита на несколько строк, и одинаковые куски кода выделены красным цветом.
Картинка наглядно показывает, что Ваш КОД НАПИСАН НЕ ВЕРНО. Так блин никто не делает!!! Так писать не правильно!!! Прётесь тут на... (тут вставляем отборную брань). Исправьте ОШИБКИ В НАПИСАНИИ Вашего код и проблемы с "сокращением" кода отпадут сами собой!!! (приветливо улыбаемся)

Рекомендуемый вариант оптимизации:
Code: (clickermann) [Select]
// Строка для примера:
// 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) // оптимизированная строка

Спасибо что Вы с нами! :)


Ну вот примерно так. :)


Я конечно извиняюсь, но идеи оптимизации ни хрена не понял.
Вот пример выдержки из кода: прохожу по вертикали и ищу необходимые кнопки для последующего нажатия. Что мне даст введение новой переменной, да еще и выяснение цвета только в одной точке, тогда как уверенно нужную кнопку могу найти только совокупностью цветов в нескольких точках одновременно?

Code: (clickermann) [Select]
#define xmul(:$x_gr+INT((
#define )xmul:-$x_gr)*$x_peresch)
#define ymul(:$y_gr+INT((
#define )ymul:-$y_gr)*$y_peresch)
//...вырезано
   getscreen(0,0,xmul(440)xmul,ymul(820)ymul)
   colormode(6,0,0,xmul(440)xmul,ymul(820)ymul)
   waitms(700+rnd(0,100))
//...  вырезано
   undefine($mass_monety_new)
   $nalichie_monet_new=0
   for($y_vert_chat=ymul(123)ymul, $y_vert_chat<ymul(680-50)ymul, 1) // проход по всей вертикали
      if ((pxl(xmul(394)xmul,$y_vert_chat)=4144959)&(pxl(xmul(394)xmul,$y_vert_chat+INT(4*$y_peresch))=12566527)&(pxl(xmul(394)xmul,$y_vert_chat+INT(17*$y_peresch))=12566527)&(pxl(xmul(394)xmul,$y_vert_chat+INT(48*$y_peresch))=16744319)) // поиск активной кнопкИ "Мне Повезет"
         $arrsize_monet_fict=arrsize($mass_monety_new)   //блок проверки повторов
         if(ABS($mass_monety_new[$arrsize_monet_fict-1]-$y_vert_chat)>10)
            arrpush($mass_monety_new, $y_vert_chat)   // сформировали массив из только активных кнопок
         end_if
      end_if
   end_cyc

//...  вырезано


Title: Re: Формирование функций от переменных
Post by: gsukhado on October 15, 2017, 10:32:57 PM
О, ... - уведомлений-то на почту или куда-либо вообще не приходит на этом форуме )))
А ты нажал кнопку УВЕДОМЛЯТЬ в интересующей теме или для всех новых сообщений форума?
Или даже кнопку не видал, а с детства мечтал уведомляться, без подтверждения своего желания?
Реальный ящик укажи в личных настройках. :P
Адреса указываю реальные.
После ряда попыток подписаться на уведомления и что-то отсюда получить на почту ( http://crapware.aidf.org/forum/index.php?topic=3362.0 ) - плюнул на это дело...