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

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

i0

  • Оплот сообщества
  • ****
  • Сообщений: 353
  • CMann 4.13.014 final, ie, presto, win7 x86, x64
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #315 : Июнь 29, 2017, 08:36:35 pm »
v4.13 b3 х86
первый getscreen не видит второй монитор
последующие getscreen – видят

Cleoss

  • Активный участник
  • ***
  • Сообщений: 260
  • Автоматизируй это!
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #316 : Август 09, 2017, 06:33:46 pm »
Здравствуйте!
Запущено два Клмна, оба 4.13.б3 х64, но из разных папок. В одном из них открываю скрипт через встроенный редактор, изменяю его, сохраняю и жму "Применить", после это жму кнопку закрытия редактора. После этого выскакивает окошко с вопросом "Применить изменения?" и тремя кнопками (yes, no, cancel). Если жму йес, то ничего не происходит, просто это окно исчезает, а сам редактор не закрывается. При повторной попытке происходит то же самое, а если всё-таки нажать ноу в диалоге, то естественно скрипт не применяется (хоть и сохраняется). Чяднт? это нормально ли? и что делать, чтоб применить изменения? Пробовал перезапускать скрипты, но ситуация повторяется.

ПС. Есть подозрения, на то что эт из-за того, что в одном файле подключён скрипт через инклуд.
ППС. Переписал все функции без инклуда и закомментил сам инклуд, и действительно -- редактор аки чудо закрылсо, но вот сам скрипт почему-то не заработал, хотя вчера ещё всё было норм. Щас буду посмореть.
Это и в других версиях так. Если есть инклюд, а файла самого ещё нет. Или если дикие ошибки в коде.
Окау, Винт, спасиб! Я уже понял, что эт норм)) Файл инклюдов есть и используется уже в других проектов, а вот здесь лагануло.  Использовал в файле с #include строчку    rc(int($vr1/10)+3,int($vr2/10)+9), которая передавала в инклуд координаты клика через int, может rclick не понимает, когда в него передают координаты с использованием других функций, хотя странно это, вроде было норм.
Кстати, цитирование сломанное ещё не исправлено в SimpleMachines-движке, хотя в прошлом сентября, когда я пришёл сюда на форум, всё работало хорошо.

Также периодически происходит лаг, когда только что открытый скрипт не появляется в списке недавно открывавшихся скриптов, и причём он не появляется там и после повторном переоткрытия через диалоговое окно. Странно ещё и то, что эти MostRecentlyUsed-списки файлов разные для редактора и для основной формы кликера, видимо они хранятся в разных ключах реестра или в разных параметрах.
« Последнее редактирование: Август 09, 2017, 07:14:05 pm от Cleoss »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3806
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #317 : Август 09, 2017, 06:38:12 pm »
Это и в других версиях так. Если есть инклюд, а файла самого ещё нет.
Или если дикие ошибки в коде.


Johnny

  • Создатель
  • Герой форума
  • *
  • Сообщений: 593
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #318 : Август 31, 2017, 08:15:51 pm »
Clickermann 4.13.004b x32

http://rgho.st/8zP5kcmFG

Кароч я типа не умер, хотя за последний год знатно сменил как образ жизни так и сферу интересов. Но все же, иногда удается урвать минутку чтоб пару раз шлифануть свой алмаз.
Вобщем очередная версия бета теста, которая уже скорее ближе к релизу. С актуальной справкой и множественными исправлениями о которых написано в истории.
Версия для 64 подъедет чуть позже (на самом деле просто пока не нашел инструмент чтоб запаковать 64 битный экзешник чтоб школяры не скрывали редакторы и не занимались прочей херней, кто знает такой - можете подсказать)
Среди значимых доработок - наконец более менее поддержка расширенных рабочих столов как слева так и справа. Кто то там настоятельно просил. Ну и так, по мелочи.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3685
  • Котэ
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #319 : Сентябрь 01, 2017, 08:47:06 am »
Стоит добавить системную переменную возвращающую HWND кликера, типо $_my_hwnd

Баг с запятой все еще присутствует.
Код: Clickermann
  1. SUB(test, $text)
  2.   print($text)
  3. END_SUB
  4.  
  5. test("Раз,Два")
  6.  
  7. halt

И недоработки в справке.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3806
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #320 : Сентябрь 01, 2017, 10:12:00 am »
И ещё системную переменную с текущей версией кликера.

А не появилась возможность получать сообщения для окна кликера?

WRITEMEM и чтение требует адрес в виде строки, можно это обойти? Чтоб можно было задавать адрес 10 ричным числом. Или минимум быстрые функции перевода в HEX и обратно.


dramster

  • Герой форума
  • *****
  • Сообщений: 1131
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #321 : Сентябрь 01, 2017, 03:59:53 pm »
WRITEMEM и чтение требует адрес в виде строки, можно это обойти? Чтоб можно было задавать адрес 10 ричным числом. Или минимум быстрые функции перевода в HEX и обратно.

читаю справку - "Адрес представлен строкой шестнадцатеричного числа" . смотрю пример - "$var = readmem(2080, 0x0006F2B7)" . и где тут строка адреса  :-\ ? .

а теперь пару тестов. нахожу в памяти кликера (к примеру) любое число, беру адрес этого значения. пишу такой код.
Код: Clickermann
  1. print(readmem(3736, 0x00020F00))
  2. print(readmem(3736, 134912))
  3. print(readmem(3736, 0x00020F00+20-20))
  4. halt

и, о чудо, все отлично работает  :D. справка немного вводит в заблуждение.



ого, HGETPID (hwnd) , здорово  :D . работает .
Код: Clickermann
  1. print(readmem(HGETPID(WNDFIND ("редактор")), 0x00020F00))
но, HGETPID в редакторе не подсвечивается. и в справке пример по данной функции немного не по теме.

« Последнее редактирование: Сентябрь 01, 2017, 04:11:29 pm от dramster »

Johnny

  • Создатель
  • Герой форума
  • *
  • Сообщений: 593
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #322 : Сентябрь 01, 2017, 05:57:22 pm »
в справке возможны косяки эт да. скидывайте поправим.

Цитировать
А не появилась возможность получать сообщения для окна кликера?

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

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3806
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #323 : Сентябрь 01, 2017, 05:57:43 pm »
читаю справку - "Адрес представлен строкой шестнадцатеричного числа" . смотрю пример - "$var = readmem(2080, 0x0006F2B7)" . и где тут строка адреса  :-\ ? .
Мммм. Я когда писал с телефона ещё новую версию не смотрел. Это был вопрос по старой версии где такое не прокатывало.


Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3806
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #324 : Сентябрь 01, 2017, 06:10:39 pm »
появилась. getmessage()
так же возможно еще добавим пару штук для господ крутых программистов, способных создавать свои DLL, но это не точно
Да, да уже увидел 2222. Получается сообщение хранится в какой-то переменной, а при вызове getmessage() получаем её данные.
Или сообщение должно прийти именно в этот момент?
Если первое, то после вызова getmessage() данные удаляются?
При повторном вызове getmessage() (без прихода нового сообщения) выдаст старые данные или что? Как сбросить?

Пример:
Мы подпрягли стороннюю программу что-то делать и нужно ждать от неё ответ о завершении и после получить результаты.
Вызвали...
в цикле  getmessage() пока не придёт нужное значение.
А если после этого нужно второй раз так сделать? Ведь getmessage() вернёт сразу старое значение о завершении.
Даже если приложение сразу будет слать неправильное сообщение для "затирки" и при повторном вызове мы не можем сразу в цикле проверять getmessage(), вдруг она не успела затереть.

P.S. придумал, именно для этого случая, получать ответ только по запросу SETMESSAGE. Чтоб мы не ждали ответ не зная когда, а конкретно шлём запрос "готово?" и приходит ответ. Но опять же нужно в начале слать себе же лишний SETMESSAGE для "перезатирки".
Не удобняк. Нужно чтоб в момент забирания getmessage() старое сообщение удалялось само. Правда мы теряем на этом одно значение iParam, wParam равные 0,0. Но мы и так его уже потеряли когда нам совсем ничего не приходит.
« Последнее редактирование: Сентябрь 01, 2017, 06:21:29 pm от Vint »


Johnny

  • Создатель
  • Герой форума
  • *
  • Сообщений: 593
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #325 : Сентябрь 01, 2017, 07:48:39 pm »
Или сообщение должно прийти именно в этот момент?
Если первое, то после вызова getmessage() данные удаляются?
При повторном вызове getmessage() (без прихода нового сообщения) выдаст старые данные или что? Как сбросить?
конечно НЕ в этот момент, его не поймать. просто запоминаетс последнее сообщение и в момент вызова функции эти данные извлекаются.
и нет, не "сбрасывается". тут есть ньюанс (тобой отмеченный впрочем). даже сообщение с нулями - сообщение. более того, тот же Bluestack пока ему не пришлешь WM_NULL корректо не обработает нажатие в себя в режиме работы через postmessage(). это так, пример из жизни.
поэтому здесь ответственность ложится скорее на стороннюю программу. в конце концов есть целых два параметра!

Цитировать
Не удобняк. Нужно чтоб в момент забирания getmessage() старое сообщение удалялось само.
и в результате там оказывались нули, которые так то тоже сообщение, только с нулями?
для таких (и перечисленных) случаев можно скриптом хранить значения параметров с предыдущего шага и сравнивать с текущим. и соответственно ждать когда он иначнкт отличаться.

не знаю что удобнее. для начала неплохо бы дойти до реальных скриптов и программ посылающих сообщения.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3806
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #326 : Сентябрь 02, 2017, 12:07:19 am »
Короче, нужен механизм для определения что сообщения небыло. Т.к. у нас реализация getmessage спицифическая. Функция реагирующая на сообщения сидит внутри интерпритатора и по get отдает сохраненные данные. Но если ничего совсем не приходило она все равно дает начальные значения по умолчанию 0,0.
Есть выход. В функции getmessage() возвращать 3 параметра iParam, wParam, flagnew. Третий флаг 0/1. Флаг имеет 1 если сообщение пришло но еще не забиралось. Как забираем по getmessage после сразу сбрасывает флаг в 0. И повторный getmessage вернет уже старые параметры и 0.
Можно последний параметр сделать необязательным.

И почему 2222? Понятно что для запоминания, но ведь для пользовательских выделен другой диапазон.


Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3806
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #327 : Сентябрь 02, 2017, 12:13:56 am »
Почему это удобней переложить на внутренности функции... Во первых чтоб каждый раз не городить одну конструкцию, даже в подпрограмме. А главное, для разных потоков. Вот где начнутся грабли если следить извне. Будем попадать в промежуточные моменты, когда забрал, а флаг еще не поменял. Внутри функции решит этот вопрос сразу.


Johnny

  • Создатель
  • Герой форума
  • *
  • Сообщений: 593
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #328 : Сентябрь 02, 2017, 08:15:03 am »
да, с необязательным параметром флагом идея мне по нраву. и не надо отказываться от нулей, и можно обойти острые углы вроде вызова функции еще до сообщения

почему 2222? да бог его знает. у нас же еще тестирование. а какое номер хотелось бы? чтоб он смотрелся красиво как в десятичном так и в хексе?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3685
  • Котэ
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #329 : Сентябрь 02, 2017, 06:46:10 pm »
Команды-Шаблоны и keywords.txt дополнены новыми функциями.