Автор Тема: [Alpha/Beta Testing] Тестируем сырые обновления (ссылки в первом посте)  (Прочитано 136558 раз)

1 Пользователь и 1 Гость просматривают эту тему.

Hito

  • Герой форума
  • *****
  • Сообщений: 1076
    • Просмотр профиля
Ну, вот теперь сразу все ясно стало... ;D
Я не ду... Потому и не бу...

АНТИКЛАН

  • Активный участник
  • ***
  • Сообщений: 111
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #661 : Октябрь 30, 2019, 06:10:20 pm »
Всех с Днем Программиста!
И в честь нашего праздника...

Patch 4.14.003b

https://yadi.sk/d/hPssEg8K76M9RQ

Исправлено почти все, что тут накопано, что-то добавлено, обновлена справка. Ковыряйтесь на здоровье



Johnny спасибо! И тебя! :D

Viktor77

  • Активный участник
  • ***
  • Сообщений: 102
    • Просмотр профиля
Полная сборка Clickermann 4.14.003b
https://yadi.sk/d/zJPu59MW7-YROg
при открытии редактора, сворачивается в трей, и дальше никак в редактор не попасть

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3685
  • Котэ
    • Просмотр профиля
Полная сборка Clickermann 4.14.003b
https://yadi.sk/d/zJPu59MW7-YROg
при открытии редактора, сворачивается в трей, и дальше никак в редактор не попасть

Вероятно редактор появляется за экраном. Хотя, в той сборке что я выложил, такого быть не должно.
Я специально в файле \data\config_editor.ini указал координаты окна 100 100. Именно там должно появляться окно.

left =100
top =100


Viktor77

  • Активный участник
  • ***
  • Сообщений: 102
    • Просмотр профиля
Полная сборка Clickermann 4.14.003b
https://yadi.sk/d/zJPu59MW7-YROg
при открытии редактора, сворачивается в трей, и дальше никак в редактор не попасть

Вероятно редактор появляется за экраном. Хотя, в той сборке что я выложил, такого быть не должно.
Я специально в файле \data\config_editor.ini указал координаты окна 100 100. Именно там должно появляться окно.

left =100
top =100
каким то образом авто заменяется файл  \data\config_editor.ini , и не открывается редактор. приходится из архива каждый раз его доставать. такая ситуация происходит при сворачивании кликера в трей.

Dimava

  • Зашел в гости
  • *
  • Сообщений: 3
    • Просмотр профиля
С помощью препроцессора вполне возможно сделать хоть и немного кривые, но функции.
С локальными переменными и возвращаемыми значениями.

Код: Javascript
  1. s = `
  2.  
  3. sub(ar, $i, $j)
  4. $ret = $arr[$i+10*$j+11]
  5. end_sub
  6.  
  7. ar(1, 2)
  8.  
  9. $v1 = ar(1, ar(2, sin(3))))
  10.  
  11. $v2 = sin(ar(2, sin(3)))
  12.  
  13. $v3 = ar(ar(1, 2), ar(3, 4))
  14.  
  15. `;
  16.  
  17.  
  18. a = s.split('\n');
  19. b = [];
  20.  
  21. localvars = new Map();
  22. subname = ''
  23. subnames = new Set();
  24.  
  25. // todo: make both 'SUB' and 'sub' support
  26. a = a.map(s=>{
  27. if (s.startsWith('sub(')) {
  28.  
  29. subname = s.match(/\(\s*(\w+)/)[1];
  30. subnames.add(subname);
  31.  
  32. localvars = new Map();
  33. localvars.set('$ret', '$_' + subname + '_ret');
  34.  
  35. return s.replace(/\$\w+/g, s=>{
  36. localvars.set(s, '$_' + subname + '_' + localvars.size);
  37. return localvars.get(s);
  38. }
  39. );
  40. }
  41.  
  42. if (s.startsWith('end_sub')) {
  43. localvars = new Map();
  44. return s;
  45. }
  46.  
  47. return s.replace(/\$\w+/g, s=>{
  48. return localvars.get(s) || s;
  49. }
  50. );
  51. }
  52. )
  53.  
  54. a2 = [];
  55. tempn = 0;
  56. for (let s of a) {
  57. if (s.match(/^\s*(sub|for|while|do|if)\s*\(/)) {
  58. a2.push(s);
  59. continue;
  60. }
  61.  
  62. let ws = s.match(/^\s*/)[0];
  63.  
  64. // todo: make "(" string support
  65. let temps = []
  66. for (let i = 0; i < 10; i++) {
  67. s = s.replace(/(\w+)\([^()]*\)/, (s, fname) => {
  68. let tempname = '$_temp_' + (++tempn)
  69. let o = {type: 'call', s, fname, n: tempn, tempname};
  70. o.id = temps.push(o);
  71. return tempname;
  72. })
  73. }
  74. let inlines = new Map();
  75. for (let o of temps) {
  76. for (let i = 0; i < 10; i++) {
  77. o.s = o.s.replace(/\$_temp_\w+/, s => inlines.get(s) || s)
  78. }
  79. if (subnames.has(o.fname)) {
  80. a2.push(ws + o.s);
  81. a2.push(ws + o.tempname + ' = $_' + o.fname + '_ret');
  82. } else {
  83. inlines.set(o.tempname, o.s)
  84. }
  85. }
  86. for (let i = 0; i < 10; i++) {
  87. s = s.replace(/\$_temp_\w+/, s => inlines.get(s) || s)
  88. }
  89. a2.push(s);
  90.  
  91.  
  92. }
  93.  
  94. s = a2.join('\n')
  95.  
  96. console.log('%o', s);
  97.  
  98.  

Из
Код: Clickermann
  1. sub(ar, $i, $j)
  2. $ret = $arr[$i+10*$j+11]
  3. end_sub
  4.  
  5. ar(1, 2)
  6.  
  7. $v1 = ar(1, ar(2, sin(3))))
  8.  
  9. $v2 = sin(ar(2, sin(3)))
  10.  
  11. $v3 = ar(ar(1, 2), ar(3, 4))
  12.  
генерирует
Код: Clickermann
  1. sub(ar, $_ar_1, $_ar_2)
  2. $_ar_ret = $arr[$_ar_1+10*$_ar_2+11]
  3. end_sub
  4.  
  5. ar(1, 2)
  6. $_temp_1 = $_ar_ret
  7. $_temp_1
  8.  
  9. ar(2, sin(3))
  10. $_temp_3 = $_ar_ret
  11. ar(1, $_temp_3)
  12. $_temp_4 = $_ar_ret
  13. $v1 = $_temp_4)
  14.  
  15. ar(2, sin(3))
  16. $_temp_6 = $_ar_ret
  17. $v2 = sin($_temp_6)
  18.  
  19. ar(1, 2)
  20. $_temp_8 = $_ar_ret
  21. ar(3, 4)
  22. $_temp_9 = $_ar_ret
  23. ar($_temp_8, $_temp_9)
  24. $_temp_10 = $_ar_ret
  25. $v3 = $_temp_10
  26.  


Если кто может перевести в dll (сам на подходящих языках плохо пишу), пожалуйста скомпилируйте.
« Последнее редактирование: Январь 06, 2020, 05:49:57 pm от Dimava »

dramster

  • Герой форума
  • *****
  • Сообщений: 1093
    • Просмотр профиля
А какая именно функция должна быть в длл?  Я так понимаю "ar", типа вот эта :
Код: Clickermann
  1. ....
  2.     $ret = $arr[$i+10*$j+11]
  3. ....
  4.  
Но кроме двух параметров $i и $j у нас же еще есть некий массив $arr. В последней версии длл вроде принимает массивы, не пробовал использовать в длл пока. В таком случае нужно параметры $i и $j добавить в массив. Можно в начало, можно в конец.
 
из  справки:
Цитировать
Однако необходимо помнить, что массив должен содержать только целочисленные значения, иначе будет ошибка.

А у тебя sin(3) = 0.052 = 0
Если нужно именно так как ты написал, то можно и дробные пересылать в длл, но перед этим их нужно перевести целочисленные http://crapware.aidf.org/forum/index.php?topic=5212.0 , ну  или както попроще.

Вобщем, для начала, вот простенький пример твоей функции на делфи7, работает только с целочисленными.
Код делфи:
Код: Clickermann
  1. library test;
  2.  
  3. uses
  4.  SysUtils;
  5. //------------------------------------------------------------------------------
  6. // Основное тело функции, идет на экспорт, вызывается из кликера
  7. function execute( _mas: pInteger; _size: Integer): Integer; export; stdcall;
  8. type
  9.  pIntArr = array[0..0] of Integer;
  10. var
  11.  i, j : Integer;
  12. begin
  13. // _mas  - указатель на начало массива параметров integer
  14. // _size - размер массива (число параметров)
  15.  
  16.   i := pIntArr(_mas^)[_size-2]; //наши два параметра
  17.   j := pIntArr(_mas^)[_size-1];
  18.  
  19. result := pIntArr(_mas^)[i + 10*j + 11]; // присваиваем возвращаемое значение
  20.  
  21. end;
  22. //------------------------------------------------------------------------------
  23.  
  24. // список экспорта
  25. exports execute;
  26.  
  27. begin
  28.  // тело пусто
  29. end.

Тестовый код, для проверки в кликере, версия 4.14.003 (x32):
Код: Clickermann
  1. FOR($a=0,$a<200)       //создаем рандомный массив со значениями от 0 до 9. 200 элементов
  2.  ARRPUSH ($arr, rnd(0,9))
  3. END_CYC
  4.  
  5.  
  6. $i = 1
  7. $j = 2
  8.  
  9. ARRPUSH ($arr, $i) //добавляем в конец наши параметры
  10. ARRPUSH ($arr, $j)
  11.  
  12. print("результат расчитанный кликером = ", $arr[$i+10*$j+11])
  13.  
  14.  
  15. callarr("test.dll", $arr)
  16.  
  17. print("результат расчитанный dll = ",$_return1)
  18.  
  19. halt

Результаты расчетов кликера и длл совпадают.



Во вложении "test.dll"
« Последнее редактирование: Январь 08, 2020, 11:03:42 pm от dramster »

Dimava

  • Зашел в гости
  • *
  • Сообщений: 3
    • Просмотр профиля
Вот тот мой препроцессор (работает только в браузере): https://output.jsbin.com/rafaqey ( код - https://jsbin.com/rafaqey/edit?js,output )

А вот что оно делает (там этот же пример)

Код: Clickermann
  1. #preprocessor "please_make_this_dll.dll"            #preprocessor "please_make_this_dll.dll"
  2.  
  3. // пример                                           // пример
  4.  
  5. // локальные переменные $x и $y - имена поменять    // локальные переменные $x и $y - имена поменять
  6. sub(fn1, $x, $y)                                    sub(fn1, $_fn1_1, $_fn1_2)
  7.   // возвращаемое значение - имя поменять             // возвращаемое значение - имя поменять
  8.   $ret = $x * $x + $y * $y                            $_fn1_ret = $_fn1_1 * $_fn1_1 + $_fn1_2 * $_fn1_2
  9. end_sub                                             end_sub
  10.  
  11. for ($x = 0, $x < 5)                                for ($x = 0, $x < 5)
  12.   for ($y = 0, $y < 5)                                for ($y = 0, $y < 5)
  13.      // вызов функции - сохранить возвращаемое           // вызов функции - сохранить возвращаемое
  14.      //     значение во временную переменную             //     значение во временную переменную
  15.      $s = $s + fn1($x, $y)                               fn1($x, $y)
  16.   end_cyc                                                $_temp_1 = $_fn1_ret
  17. end_cyc                                                   $s = $s + $_temp_1
  18.                                                       end_cyc
  19.                                                    end_cyc
  20.  
  21.  
  22. // пример 2                                         // пример 2
  23.  
  24. sub(fn2, $i)                                        sub(fn2, $_fn2_1)
  25.   // возвращаемой значение - имя всегда $ret          // возвращаемой значение - имя всегда $_fn2_ret
  26.   $ret = $i * ($i + 1)                                $_fn2_ret = $_fn2_1 * ($_fn2_1 + 1)
  27. end_sub                                             end_sub
  28.  
  29. // развёртка функций должна поддерживать            // развёртка функций должна поддерживать
  30. // многократную вложенность                         // многократную вложенность
  31. $v1 = fn2(1) + fn2(fn2(fn2(fn2(1))))                fn2(1)
  32.                                                    $_temp_1 = $_fn2_ret
  33. // встроенные функции не должны развёртываться      fn2(1)
  34. $v2 = fn2(cos(sin(fn2(1))))                         $_temp_2 = $_fn2_ret
  35.                                                    fn2($_temp_2)
  36.                                                    $_temp_3 = $_fn2_ret
  37.                                                    fn2($_temp_3)
  38.                                                    $_temp_4 = $_fn2_ret
  39.                                                    fn2($_temp_4)
  40.                                                    $_temp_5 = $_fn2_ret
  41.                                                    $v1 = $_temp_1 + $_temp_5
  42.  
  43.                                                    // встроенные функции не должны развёртываться
  44.                                                    fn2(1)
  45.                                                    $_temp_6 = $_fn2_ret
  46.                                                    fn2(cos(sin($_temp_6)))
  47.                                                    $_temp_9 = $_fn2_ret
  48.                                                    $v2 = $_temp_9
  49.  
  50.  
« Последнее редактирование: Январь 11, 2020, 02:50:21 pm от Dimava »

h31p

  • Зашел в гости
  • *
  • Сообщений: 16
    • Просмотр профиля
Win7 x64 SP1, 4.14.03 (пробовал так же .02, от .01 нашёл только анонс с чейнджлистом, но не нашёл самих файлов) при запуске сразу пишет в errorlog.txt:

01.02.2021 01:56:56 Access violation at address 0063C4FE in module 'Clickermann.exe'. Read of address 00000000
и затем после открытия редактора - циклически:

01.02.2021 01:57:03 Access violation at address 00000000. Read of address 00000000
01.02.2021 01:57:03 Access violation at address 00000000. Read of address 00000000
01.02.2021 01:57:03 Access violation at address 00000000. Read of address 00000000
01.02.2021 01:57:03 Access violation at address 00000000. Read of address 00000000
01.02.2021 01:57:04 Access violation at address 00000000. Read of address 00000000
01.02.2021 01:57:04 Access violation at address 00000000. Read of address 00000000

при этом нельзя передвинуть окно редактора и нельзя передвинуть открытое окно лога - они "прыгают" назад туда, где изначально появились. после попытки запустить скрипт - пропадает кнопка запуска, в логе снова access violation уже с ненулевыми оффсетами, скрипт не запускается. это у меня что-то? 4.13.х из того же места работают без эксцессов.

а чё, собственно, полез в бету: Clickermann любой версии, включая последнюю релизную 4.13, выдаёт неверный unix timestamp в $_time_t, а именно - смещает его соответственно установленному в системе часовому поясу. так быть не должно, поскольку это число - абсолютный отсчёт секунд от.. ну вы в курсе, и в любой момент в любой точке мира одинаков.
в последней 4.14, судя по тому что поиск по форуму "$_time_t" никаких подобных комплейнов не нашёл - наверное, так же, проверить, вот, не удалось.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3613
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • Просмотр профиля
Win7 x64 SP1, 4.14.03 (пробовал так же .02, от .01 нашёл только анонс с чейнджлистом, но не нашёл самих файлов) при запуске сразу пишет в errorlog.txt:

01.02.2021 01:56:56 Access violation at address 0063C4FE in module 'Clickermann.exe'. Read of address 00000000

Я это ловил ещё на 4.13
http://crapware.aidf.org/forum/index.php?topic=4295.msg29320#msg29320

Потом она пропала и больше я её не видел, соответственно не разбирался.
Предполагаю, мог быть виноват каспер, но это не точно. Винда 10 точно не причина, т.к. тогда на работе стояла XP.


А вот $_time_t очень давно я проверял, всё было нормально. Сейчас проверил. Все и 4.14 и 4.13 и 4.11 и 4.8 и 4.6 (пропускал версии чтоб быстрее найти) выдают это вот сдвинутое на таймзону. Вот здесь не скажу кто виноват. Но давно, когда проверял ещё на XP было всё нормально, думаю версия была 4.8 и 4.11


h31p

  • Зашел в гости
  • *
  • Сообщений: 16
    • Просмотр профиля
Цитировать
А вот $_time_t очень давно я проверял, всё было нормально. Сейчас проверил. Все и 4.14 и 4.13 и 4.11 и 4.8 и 4.6 (пропускал версии чтоб быстрее найти) выдают это вот сдвинутое на таймзону. Вот здесь не скажу кто виноват. Но давно, когда проверял ещё на XP было всё нормально, думаю версия была 4.8 и 4.11

да вот и мне кажется (но это неточно), что 2-3 года назад я опирался в скрипте на абсолютное значение $_time_t, чтоб определённые фрагменты отрабатывали только в рамках установленного отрезка времени, и всё работало как надо. с той поры не изменилось ничего - тот же ноут, та же винда, даже та же версия clickermann, изменился почему-то только сам $_time_t  :o

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3613
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • Просмотр профиля
Может всё таки десятка виновата? Она же пережила много обновлений включая глобальные.
Вот, я уже давал ссылку на статью, где обсуждается их изменение с временем
http://crapware.aidf.org/forum/index.php?topic=5437.msg35928#msg35928

Может и с Unix временем есть несколько функций. Одна учитывает таймзону, другая нет. Или это параметры одной функции.
« Последнее редактирование: Февраль 02, 2021, 05:23:03 pm от Vint »


h31p

  • Зашел в гости
  • *
  • Сообщений: 16
    • Просмотр профиля
Может всё таки десятка виновата?

у меня семёрка, и апдейты были выключены раньше чем кликерманн впервые на ней появился.
разве что оно использует какие-то дот-неты и иже с ними, которые ставятся отдельно и в принципе вероятность их обновления есть - я точно уже не вспомню.

если мне не изменяет память и $_time_t я раньше ↑↑ юзал без эксцессов - то это было на этом же бинаре, который сейчас, я его 100 лет не менял со времён какой-то нормально работающей беты 4.13, даже не релиза ещё.
больше похоже на костыль в функции (который, кстати, может быть в том на чём он написан, а не в самом кликере), высчитывающей unix ts, который раньше срабатывал, а теперь больше нет.

Цитировать
Может и с Unix временем есть несколько функций. Одна учитывает таймзону, другая нет. Или это параметры одной функции.

unix время и tz - это взаимоисключающие параграфы, не думаю что есть такая функция, ибо она бессмысленна.

Mind War

  • Зашел в гости
  • *
  • Сообщений: 4
    • Просмотр профиля
А где полный архив скачать?
В последнем доступном к скачке - только .exe'шник и хелп, а без файлов настроек и прочего сопутствующего - кликер ловит глюки и не работает(тест - банально wndfindarr не подсвечивает, и не обрабатывает никак. Памагити

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3613
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • Просмотр профиля
Так там только экзешник со справкой и новые. Кидаешь в версию 4.13.14 финальную с заменой и фсьоо.
Можешь даже имя дать другое и будут две версии в одной папке.