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

0 Members and 46 Guests are viewing this topic.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: [Alpha/Beta Testing]
« Reply #585 on: March 25, 2019, 07:37:19 PM »
Я какбы тоже обдумывал смысл этого препроцессора все эти дни. Вроде вполне понял как это работает (по крайней мере я в это верю  ;D). И пришел к выводу, что вот это:
хоть сокрытия, хоть шифрования
Просто не работает, чтото не получилось, и Джонни исправит... надеемся.

Вот это
хоть доработки и введения собственных конструкций и инструкций.
Уже итак есть - CALL или CALLARR.

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



 А сейчас хотелось бы поговорить о пользовательских функциях, необязательно написанных на кликермане, можно написать в сторонних языках. И эта возможность у нес есть. Все упирается в типы данных.
 Кликерман имеет что - строки, числа, массивы. Впринципе этого вполне хватает 99% случаев. Передать в ДЛЛ мы можем числа и массивы, УРА, этого хватит на все 100% случаев. Передав массив, в длл мы его переделаем под то что нам требуется, и будем работать с теми типами которые нам нужны именно там.
Остается один ОГРОМНЫЙ недостаток. ДЛЛ возвращает лишь одно число в 4 байта  :( и всё...И хоть ты тресни.  >:(
Есть второй недостаток, это то, что CALL  это не функция.

Но ведь #preprocessor "filename" возвращает PWideChar, это куча информации (незнаю даже, есть ли в нем ограничение). Почему бы не сделать и в CALL/CALLARR возврат хотябы массива чисел, бОльшего то и не надо   :'( из этого массива в кликермане также можно сделать то что нужно.

Это было по [Alpha/Beta Testing]


Далее хотел по предложению в следующих версиях:

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

Предложение

Добавить две функции:
. выгрузка графического буфера (области) в массив
. загрузка массива в графический буфер (область)

В массиве никаких координат, просто цвета.

Для чего? Имея CALLARR и выгрузку графического буфера в массив , мы уже сможем быстро обработать/анализировать  большие части графики как нам захочется. А когда CALL будет возвращать массив, то и загрузка массива в графический буфер в  тему.

 ::) Пока это все мои ХОТЕЛКИ. + все уже существующее в кликермане = цены ему не будет ;D




« Last Edit: March 25, 2019, 07:43:55 PM by dramster »

ya12

  • Активный участник
  • ***
  • Posts: 165
    • View Profile
Re: [Alpha/Beta Testing]
« Reply #586 on: March 25, 2019, 08:57:49 PM »
Хотеть так хотеть. Нужна выгрузка графического буфера (области) в двумерный массив. Ну и конечно же доделать CALL.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: [Alpha/Beta Testing]
« Reply #587 on: March 25, 2019, 09:01:35 PM »
Хотеть так хотеть. Нужна выгрузка графического буфера (области) в двумерный массив. Ну и конечно же доделать CALL.
Зачем двумерный?  :-\
 Просто перенести из памяти поочередно цвета в массив, этого достаточно.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: [Alpha/Beta Testing]
« Reply #588 on: March 26, 2019, 09:48:54 AM »
И пришел к выводу, что вот это:
хоть сокрытия, хоть шифрования
Просто не работает, чтото не получилось, и Джонни исправит... надеемся.

Я в принципе так и подумал, что по замыслу, если прописываешь в скрипте:
Code: (clickermann) [Select]
#preprocessor "comas.dll"
halt
То при остановке скрипта, в нем только эти строки и должны оставаться, а все, что dll в него добавляла, должно оставаться где-то внутри кликера и не отображаться в скрипте.
« Last Edit: March 26, 2019, 09:50:52 AM by Hito »
Я не ду... Потому и не бу...

ya12

  • Активный участник
  • ***
  • Posts: 165
    • View Profile
Re: [Alpha/Beta Testing]
« Reply #589 on: March 26, 2019, 11:16:13 AM »
Что бы искать в определенной строке, ну и операции с матрицами делать удобней.
Я бы еще и от поддержки разных типов данных не отказался, но это фантастика.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: [Alpha/Beta Testing]
« Reply #590 on: March 26, 2019, 12:00:28 PM »
Что бы искать в определенной строке, ну и операции с матрицами делать удобней.
Этож двойное увеличение сохроняемой информации,. Нахера? Нам же потом еще работать с этим всем.
И в файлах, и в той же памяти кликера, никакой двумерности, просто идут цвета поочереди. И никто не жалуется. Номер элемента массива - вот тебе и координата.
Главное заранее знать разрешение. Или ты чтото другое, не координаты, хотел писать внагрузку пиксельному массиву?
« Last Edit: March 26, 2019, 12:07:22 PM by dramster »

ya12

  • Активный участник
  • ***
  • Posts: 165
    • View Profile
Re: [Alpha/Beta Testing]
« Reply #591 on: March 26, 2019, 12:17:58 PM »
Двумерные массивы сами по себе хороши. С другой стороны можно обработку многомерных массивов и в dll делать (когда будет удобный выход).

ps Расчеты в компьютерной графике под 2-3х мерные массивы заточены.
« Last Edit: March 26, 2019, 12:21:37 PM by ya12 »

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: [Alpha/Beta Testing]
« Reply #592 on: March 29, 2019, 01:12:20 AM »
+ Теперь все процедуры, возвращающие массив, очищают его перед заполнением

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

Johnny

  • Создатель
  • Герой форума
  • *
  • Posts: 593
    • View Profile
Re: [Alpha/Beta Testing]
« Reply #593 on: March 31, 2019, 09:33:24 AM »
+ Теперь все процедуры, возвращающие массив, очищают его перед заполнением

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

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

и да, про препроцессор и правда недоработочка... исправили
« Last Edit: March 31, 2019, 10:20:01 AM by Johnny »

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: [Alpha/Beta Testing]
« Reply #594 on: March 31, 2019, 10:45:04 PM »
и да, про препроцессор и правда недоработочка... исправили
Здесь нет смайла с фейерверками... ;D
А... Как бы вопрос... А где качать исправленную версию...? Там же?
« Last Edit: March 31, 2019, 11:34:29 PM by Hito »
Я не ду... Потому и не бу...

Johnny

  • Создатель
  • Герой форума
  • *
  • Posts: 593
    • View Profile
Re: [Alpha/Beta Testing]
« Reply #595 on: April 03, 2019, 07:06:22 PM »
Patch 4.14.002b

https://yadi.sk/d/7CYIVwReKaelpA

Исправлен ехе файл, справка
Добавлена процедура arrconcat

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: [Alpha/Beta Testing]
« Reply #596 on: April 03, 2019, 09:07:28 PM »
Вот сейчас я туплю страшно и чего-то не понимаю, или препроцессор как-то не так опять работает...?
и да, про препроцессор и правда недоработочка... исправили

Patch 4.14.002b

https://yadi.sk/d/7CYIVwReKaelpA

Исправлен ехе файл, справка
Добавлена процедура arrconcat

На сколько я понял, в 4.14.002b препроцессор исправлен? Одно точно - он стал работать по-другому с примером в папке "PrepSample". Теперь, при открытии редактора, после отработки скрипта, скрипт такой же, какой и было до запуска, но...

Код делфи:
Code: (clickermann) [Select]
// Основное тело функции, идет на экспорт, вызывается из кликера
function execute( pText: PWideChar): PWideChar; export; stdcall;
var
 strbuf: String;
 wc_res: PWideChar;
begin
  // Пишем сразу готовый код
   strbuf :=  '#preprocessor "comas.dll"' + #13#10 +
    'LOGSHOW (1, 100, 100 )'+ #13#10 +
    'print("Тестовый текст")'+ #13#10 +
    'halt' ;

  // ShowMessage(strbuf);    //можно глянуть наш код
   wc_res := PWideChar(strbuf);

   result := wc_res;
end;

Код кликермана:

Code: (clickermann) [Select]
#preprocessor "comas.dll"
halt

Вот это все намутит не возможно. Стоит состряпать свою длл и заменить ею ту, что находится в примере и кликер просто не даст применить скрипт...
Я не ду... Потому и не бу...

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: [Alpha/Beta Testing]
« Reply #597 on: April 03, 2019, 09:20:52 PM »
 ??? Да не, я проверил, работает отлично.

Весь код делфи:
Code: (clickermann) [Select]
library PrepSample;

uses
  Vcl.Dialogs,
  SysUtils;

//------------------------------------------------------------------------------
// Основное тело функции, идет на экспорт, вызывается из кликера
function execute( pText: PWideChar): PWideChar; export; stdcall;
var
 strbuf: String;
 wc_res: PWideChar;
begin
  // Пишем сразу готовый код
   strbuf :=  '#preprocessor "comas.dll"' + #13#10 +
    'LOGSHOW (1, 100, 100 )'+ #13#10 +
    'print("Тестовый текст")'+ #13#10 +
    'halt' ;

  // ShowMessage(strbuf);    //можно глянуть наш код
   wc_res := PWideChar(strbuf);

   result := wc_res;
end;
//------------------------------------------------------------------------------

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

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

Код кликера:
Code: (clickermann) [Select]
#preprocessor "test.dll"
halt

Скомпилированная  "test.dll" рядом с сохраненным cms

Результат:


И как я не пытался, код в редакторе так и не увидел   :)


Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: [Alpha/Beta Testing]
« Reply #598 on: April 03, 2019, 09:23:34 PM »
Етит... Я "exports execute;" забыл прописать...
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: [Alpha/Beta Testing]
« Reply #599 on: April 06, 2019, 12:39:24 PM »
Весь код делфи:
Code: (clickermann) [Select]
library PrepSample;

uses
  Vcl.Dialogs,
  SysUtils;

//------------------------------------------------------------------------------
// Основное тело функции, идет на экспорт, вызывается из кликера
function execute( pText: PWideChar): PWideChar; export; stdcall;
var
 strbuf: String;
 wc_res: PWideChar;
begin
  // Пишем сразу готовый код
   strbuf :=  '#preprocessor "comas.dll"' + #13#10 +
    'LOGSHOW (1, 100, 100 )'+ #13#10 +
    'print("Тестовый текст")'+ #13#10 +
    'halt' ;

  // ShowMessage(strbuf);    //можно глянуть наш код
   wc_res := PWideChar(strbuf);

   result := wc_res;
end;
//------------------------------------------------------------------------------

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

begin
  // тело пусто
end.
Я правильно понимаю? Строка
Code: (clickermann) [Select]
'#preprocessor "comas.dll"' + #13#10 +лишняя? Ведь она уже есть в начальном скрипте кликера и, благодаря ей, кликер и вызывает код из длл...
Я не ду... Потому и не бу...