Author Topic: [Alpha/Beta Testing] Тестируем сырые обновления (ссылки в первом посте)  (Read 305616 times)

0 Members and 7 Guests are viewing this topic.

Hito

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

АНТИКЛАН

  • Активный участник
  • ***
  • Posts: 111
    • View Profile
Re: [Alpha/Beta Testing]
« Reply #661 on: October 30, 2019, 06:10:20 PM »
Всех с Днем Программиста!
И в честь нашего праздника...

Patch 4.14.003b

https://yadi.sk/d/hPssEg8K76M9RQ

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



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

Viktor77

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

Oraven

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

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

Code: [Select]
left =100
top =100


Viktor77

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

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

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

Dimava

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

Code: (javascript) [Select]
s = `

sub(ar, $i, $j)
$ret = $arr[$i+10*$j+11]
end_sub

ar(1, 2)

$v1 = ar(1, ar(2, sin(3))))

$v2 = sin(ar(2, sin(3)))

$v3 = ar(ar(1, 2), ar(3, 4))

`;


a = s.split('\n');
b = [];

localvars = new Map();
subname = ''
subnames = new Set();

// todo: make both 'SUB' and 'sub' support
a = a.map(s=>{
if (s.startsWith('sub(')) {

subname = s.match(/\(\s*(\w+)/)[1];
subnames.add(subname);

localvars = new Map();
localvars.set('$ret', '$_' + subname + '_ret');

return s.replace(/\$\w+/g, s=>{
localvars.set(s, '$_' + subname + '_' + localvars.size);
return localvars.get(s);
}
);
}

if (s.startsWith('end_sub')) {
localvars = new Map();
return s;
}

return s.replace(/\$\w+/g, s=>{
return localvars.get(s) || s;
}
);
}
)

a2 = [];
tempn = 0;
for (let s of a) {
if (s.match(/^\s*(sub|for|while|do|if)\s*\(/)) {
a2.push(s);
continue;
}

let ws = s.match(/^\s*/)[0];

// todo: make "(" string support
let temps = []
for (let i = 0; i < 10; i++) {
s = s.replace(/(\w+)\([^()]*\)/, (s, fname) => {
let tempname = '$_temp_' + (++tempn)
let o = {type: 'call', s, fname, n: tempn, tempname};
o.id = temps.push(o);
return tempname;
})
}
let inlines = new Map();
for (let o of temps) {
for (let i = 0; i < 10; i++) {
o.s = o.s.replace(/\$_temp_\w+/, s => inlines.get(s) || s)
}
if (subnames.has(o.fname)) {
a2.push(ws + o.s);
a2.push(ws + o.tempname + ' = $_' + o.fname + '_ret');
} else {
inlines.set(o.tempname, o.s)
}
}
for (let i = 0; i < 10; i++) {
s = s.replace(/\$_temp_\w+/, s => inlines.get(s) || s)
}
a2.push(s);


}

s = a2.join('\n')

console.log('%o', s);


Из
Code: (clickermann) [Select]
sub(ar, $i, $j)
$ret = $arr[$i+10*$j+11]
end_sub

ar(1, 2)

$v1 = ar(1, ar(2, sin(3))))

$v2 = sin(ar(2, sin(3)))

$v3 = ar(ar(1, 2), ar(3, 4))
генерирует
Code: (clickermann) [Select]
sub(ar, $_ar_1, $_ar_2)
$_ar_ret = $arr[$_ar_1+10*$_ar_2+11]
end_sub

ar(1, 2)
$_temp_1 = $_ar_ret
$_temp_1

ar(2, sin(3))
$_temp_3 = $_ar_ret
ar(1, $_temp_3)
$_temp_4 = $_ar_ret
$v1 = $_temp_4)

ar(2, sin(3))
$_temp_6 = $_ar_ret
$v2 = sin($_temp_6)

ar(1, 2)
$_temp_8 = $_ar_ret
ar(3, 4)
$_temp_9 = $_ar_ret
ar($_temp_8, $_temp_9)
$_temp_10 = $_ar_ret
$v3 = $_temp_10


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

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
А какая именно функция должна быть в длл?  Я так понимаю "ar", типа вот эта :
Code: (clickermann) [Select]
....
     $ret = $arr[$i+10*$j+11]
....
Но кроме двух параметров $i и $j у нас же еще есть некий массив $arr. В последней версии длл вроде принимает массивы, не пробовал использовать в длл пока. В таком случае нужно параметры $i и $j добавить в массив. Можно в начало, можно в конец.
 
из  справки:
Quote
Однако необходимо помнить, что массив должен содержать только целочисленные значения, иначе будет ошибка.

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

Вобщем, для начала, вот простенький пример твоей функции на делфи7, работает только с целочисленными.
Код делфи:
Code: (clickermann) [Select]
library test;

uses
  SysUtils;
//------------------------------------------------------------------------------
// Основное тело функции, идет на экспорт, вызывается из кликера
function execute( _mas: pInteger; _size: Integer): Integer; export; stdcall;
type
  pIntArr = array[0..0] of Integer;
var
  i, j : Integer;
begin
 // _mas  - указатель на начало массива параметров integer
 // _size - размер массива (число параметров)

   i := pIntArr(_mas^)[_size-2]; //наши два параметра
   j := pIntArr(_mas^)[_size-1];

 result := pIntArr(_mas^)[i + 10*j + 11]; // присваиваем возвращаемое значение

end;
//------------------------------------------------------------------------------

// список экспорта
exports execute;

begin
  // тело пусто
end.

Тестовый код, для проверки в кликере, версия 4.14.003 (x32):
Code: (clickermann) [Select]
FOR($a=0,$a<200)       //создаем рандомный массив со значениями от 0 до 9. 200 элементов
  ARRPUSH ($arr, rnd(0,9))
END_CYC


$i = 1
$j = 2

ARRPUSH ($arr, $i) //добавляем в конец наши параметры
ARRPUSH ($arr, $j)

print("результат расчитанный кликером = ", $arr[$i+10*$j+11])
 

callarr("test.dll", $arr)

print("результат расчитанный dll = ",$_return1)

halt

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



Во вложении "test.dll"
« Last Edit: January 08, 2020, 11:03:42 PM by dramster »

Dimava

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

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

Code: (clickermann) [Select]
#preprocessor "please_make_this_dll.dll"            #preprocessor "please_make_this_dll.dll"
                                                       
// пример                                           // пример
                                                   
// локальные переменные $x и $y - имена поменять    // локальные переменные $x и $y - имена поменять
sub(fn1, $x, $y)                                    sub(fn1, $_fn1_1, $_fn1_2)
   // возвращаемое значение - имя поменять             // возвращаемое значение - имя поменять
   $ret = $x * $x + $y * $y                            $_fn1_ret = $_fn1_1 * $_fn1_1 + $_fn1_2 * $_fn1_2
end_sub                                             end_sub
                                                   
for ($x = 0, $x < 5)                                for ($x = 0, $x < 5)
   for ($y = 0, $y < 5)                                for ($y = 0, $y < 5)
      // вызов функции - сохранить возвращаемое           // вызов функции - сохранить возвращаемое
      //     значение во временную переменную             //     значение во временную переменную
      $s = $s + fn1($x, $y)                               fn1($x, $y)
   end_cyc                                                $_temp_1 = $_fn1_ret
end_cyc                                                   $s = $s + $_temp_1
                                                       end_cyc
                                                    end_cyc

                                                   
// пример 2                                         // пример 2
                                                   
sub(fn2, $i)                                        sub(fn2, $_fn2_1)
   // возвращаемой значение - имя всегда $ret          // возвращаемой значение - имя всегда $_fn2_ret
   $ret = $i * ($i + 1)                                $_fn2_ret = $_fn2_1 * ($_fn2_1 + 1)
end_sub                                             end_sub
                                                   
// развёртка функций должна поддерживать            // развёртка функций должна поддерживать
// многократную вложенность                         // многократную вложенность
$v1 = fn2(1) + fn2(fn2(fn2(fn2(1))))                fn2(1)
                                                    $_temp_1 = $_fn2_ret
// встроенные функции не должны развёртываться      fn2(1)
$v2 = fn2(cos(sin(fn2(1))))                         $_temp_2 = $_fn2_ret
                                                    fn2($_temp_2)
                                                    $_temp_3 = $_fn2_ret
                                                    fn2($_temp_3)
                                                    $_temp_4 = $_fn2_ret
                                                    fn2($_temp_4)
                                                    $_temp_5 = $_fn2_ret
                                                    $v1 = $_temp_1 + $_temp_5
                                                   
                                                    // встроенные функции не должны развёртываться
                                                    fn2(1)
                                                    $_temp_6 = $_fn2_ret
                                                    fn2(cos(sin($_temp_6)))
                                                    $_temp_9 = $_fn2_ret
                                                    $v2 = $_temp_9
                                                   
« Last Edit: January 11, 2020, 02:50:21 PM by Dimava »

h31p

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

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

Code: [Select]
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

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

Code: [Select]
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

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Quote
А вот $_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

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

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


h31p

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Может всё таки десятка виновата?

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

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

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

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

lp85d

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
Clickermann_414003b.exe

Windows 10 PRO не срабатывает команда HTTPGet

errorlog.txt   08.04.2021 20:31:52 HTTPGet Error (https://ya.ru)

Code: (clickermann) [Select]
$str = httpget("https://ya.ru")
print($str)

и так вот как я решил проблему:
User agent с которого поступает запрос Mozilla/3.0 (compatible)
Соответственно если этого недостаточно то можно принимать запрос на своём сервере и перенаправлять его с заданным User agent

Code: (clickermann) [Select]
$str = httpget("http://1jf.ru/")
print($str)

« Last Edit: April 08, 2021, 10:00:26 PM by lp85d »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Windows 10 PRO не срабатывает команда HTTPGet

errorlog.txt   08.04.2021 20:31:52 HTTPGet Error (https://ya.ru)

Code: (clickermann) [Select]
$str = httpget("https://ya.ru")
print($str)

и так вот как я решил проблему:
User agent с которого поступает запрос Mozilla/3.0 (compatible)
Соответственно если этого недостаточно то можно принимать запрос на своём сервере и перенаправлять его с заданным User agent

Проблема в том, что https изначально не поддерживается. Для поддержки нужно скачать две dll-ки
http://crapware.aidf.org/forum/index.php?topic=356.msg26057#msg26057

Ты даже с темой угадал, ответ как раз здесь был  :)

А ну и несмотря на заявленную передачу дополнительных заголовков запроса, они не передаются. Я не смог добиться уже давно.
По идее передавать нужно так:
Code: (clickermann) [Select]
$URL = "https://ya.ru"
$UserAgent = "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0"
LOGWRITE (HTTPGET($URL, $UserAgent)

но User-Agent не передаётся.
Проверял на "http://httpbin.org/headers" или "http://httpbin.org/user-agent"
« Last Edit: April 09, 2021, 04:03:10 PM by Vint »