Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Cleoss

Pages: [1] 2
1
Привет, у нас в Танках Онлайн сейчас наблюдаются массовые лаги из-за нечищенного кеша, а разработчики почему-то уже много месяцев не шевелятся. В общем, делал эту прогу я для себя ещё несколько месяцев назад, и ситуация не исправляется, видимо инструмент нужный. Так вот тогда же, когда я написал программку, заодно почистил и кеш вместе с системным диском C, и о чудо, мой урон тогда перестал пропадать, я сам не верил этому, до этого момента бывали такие битвы, в которых урон прилетал нулевой, а стало норм. Не знаю, как будет у вас, в кеше ли у вас проблема или оборудовании, в интернете. В общем, выкладываю тему с чистилкой в паблик, юзайте, отписывайтесь.


Прежде, чем запустишь и начнёшь использовать этот чистильщик кеша для Танков Онлайн, хочу пару слов о нём рассказать. Эта программа сама по себе без интерфейса (не имеет окна), поэтому если запустил её и ничего не увидел — не значит, что она не работает. У программы отображается иконка в трее (в системном лотке внизу справа, рядом с часами), при клике на иконку можно открыть меню, из которого программу можно закрыть. Если иконка появилась, значит, программа запустилась. При наведении курсора мыши на иконку программы над той всплывает информация о текущей папке танкового кеша и об используемых хоткеях (комбинациях кнопок на клавиатуре), с помощью которых можно почистить кеш или открыть папку с ним. Настройки программы хранятся в ini-файле, который находится в архиве с программой. После извлечения из архива ини-файлик настроек можно редактировать по своему вкусу (там можно установить другие хоткеи вместо используемых по умолчанию). Формат указания хоткеев приведён в самом конфигурационном ини-файле. Перед использованием программы нужно извлечь всё содержимое архива в одну папку, сам архив извлечь просто, поскольку это обычный зип-файл, сделать извлечение можно и с помощью встроенных средств Виндовс 10. Программа не требует админских привилегий и по идее должна работать и под учётной записью гостя, на предмет блокировки Каспером или другим антивирусом программа не тестировалась, равно как и с гостевыми правами доступа, если всё же не работает — можно попробовать запустить чистильщик из-под админа, у меня все программы в системе запускаются под админом и поэтому действуют безотказно, у вас мне не известно, запустится или нет и с какими ограничениями — нужно тестировать, отпишитесь если всё нормально удаляет.

Для начала работы с программой (после распаковки архива) необходимо запустить её, и когда программа запустится (её значёк будет помещён в трей), можно нажать комбинацию клавиш для запуска очистки (стандартно, если не указано другое в настройках, то нужно нажать Ctrl-Shift-F7, все клавиши жмутся одновременно). Сразу после нажатия клиент игры будет закрыт и начнётся очистка папки, по завершении которой клиент с игрой будет запущен снова. Файлик конфигурации править нужно до запуска программы, настройки из него читаются один раз при включении чистилки. Пути к папке и к клиенту в настройках, скорее всего, не нужно редактировать, если у вас только не старая Винда (ХР и ниже). У меня по умолчанию хоткей установлен слишком длинный ("^+{F7}" из целых трёх клавиш), потому что у меня в системе многие хоткеи заняты, ты же можешь назначить очистке более простой хоткей, например просто одноклавишный "{F7}" (если он не занят у тебя какой-то программой), его будет проще нажимать. Если же хоткей занят и не действует, укажи в настройках другой свободный. После распаковки программой можно сразу начинать пользоваться, она не требует установки и её можно копировать вместе с папкой на флешку или на другие компьютеры. Программа в автозагрузку не прописывается, поэтому после перезагрузки компьютера программу нужно запускать снова. Можно добавить ярлык на программу в папку автозагрузки (Win-R, C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup), чтобы программа каждый раз вместе с запуском системы открывалась сама. Программа не жрёт ресурсы процессора, поэтому работает без проблем в фоне даже на 2-ядерном слабом системнике или ноуте. Единственная нагрузка происходит в момент нажатия хоткея (когда начинает очищаться папка) и при наведении мышью на трей, также маловероятно, что сама программа будет вам мешать, поскольку никаких окошек у проги не выскакивает. Поскольку папка с кешем не маленькая и содержит много мелких файлов (ориентировочный размер: 200 МБ — 1+ ГБ), удаление всей папки может занять много секунд (зависит от силы компьютера и его загруженности), обычно пары секунд хватает. Очистка происходит только после нажатия клавиатурной комбинации, всё остальное время программка ничего не делает и ждёт вашей команды.

Посторонние папки и файлы программа не удаляет, а удаляется только та папка, которая указана в настройках и все файлы в ней. Менять в настройках эту папку вам навряд ли нужно, всё работает сразу из коробки. Если вдруг случилось так, что у вас на компе нестандартные настройки, допустим клиент игры установлен в другую папку или не на системный диск С, на этот случай и предусмотрено указание путей в настройках, в противном же случае всё должно заработать и так. Чтобы убедиться, что программа не только запустилась (есть значёк в лотке иконок, где есть уже запущенные проги), но и функционирует как надо, можно в первый раз открыть папку с кешем после очистки — желательно открывать не саму папку C:\Users\%username%\AppData\Roaming\tankionline\Cache\, а папку tankionline, которая на уровень выше папки с кешем, чтоб случайно Проводник не заблокировал читаемую папку на запись (для этого папку лучше не открывать ДО очистки, иначе может потребоваться перезагрузка), то есть в саму папку с кешем лучше не входить, а посмотреть в её свойствах занимаемый на диске размер и количество файлов в ней. Программу можно остановить из контекстного меню в трее (тогда иконка начинает моргать красным), чтобы возобновить прогу, снимите галочку в меню на пункте "Script paused". Возможно, штампану для прожки пару обнов позже (чистка общего кеша, проверки, таймер, настройки). Также обращаю внимание, что у тех, кому давал старую версию программы, некоторые новые пункты настроек в ини не работают, сам ини обновлён, добавлена объяснялка — перекачайте весь дистр.

Пишите в теме форума, помогла ли программа, всё ли работает как ожидается. Если что-то идёт не так, указывайте в комментариях версию Винды и номер билда, разрядность системы и пути к папкам. Чистим кэш в танках быстро, одним нажатием, и кайфуем!


App download link:
Скачать программу: http://gg.gg/txCacheCleaner | mirror
Эту ссылку можно кидать друзьям в личку внутри Танков Онлайн:
Code: [Select]
http*://*gg.*gg/*tankiCacheCleaner (все лишние * нужно удалить, pls delete asterisks)
+++


Hey! Before u can use this cache cleaning tool for TankiOnline I wanna give u a little description. This app has no GUI (so u won't see its win), it has a tray icon only. If you can see its tray icon then that means the app is running and is ready to use. If you point a mouse cursor to the tray zone you can see a path to the Tanki cache folder and applied hotkeys which you can use to delete the cache directory and to show the cache containing folder. Those hotkeys can be adjusted from the .ini file u can get out from the archieve, all files from it should be kept in the same folder. The format for hotkeys is given inside this .ini cofig file (default value is Ctrl-Shift-F7 for cleaning). All the settings are read whilst app start, so u should edit your config before u run it. The application shouldn't be elevated upto admin right, but  I haven't tested it neither with guest privileges, nor with avir. The program ain't written to the Startup section, so if u reboot your computer you also need to relaunch the app, or u can make a shortcut to it in ur Startup folder. It doesn't drain your CPU until u want to do a cleaning of a cache. The cleaning is only made when you press the hotkey. After u do it, the program closes the game client window and starts a clearing process that can have duration of few seconds (depends on your machine), then the client is openning again. If u don't use an old Windows system (XP or below) u shouldn't specify the pathes to cache and client, u can just set a more easy and short hotkey. The only folder (with files in it) is deleted during the cache cleaning is one that's set in .ini configs. On the first run u can test if the app acts properly and deletes files completely, u can use a folder opening hotkey for that aim. If you experience any troubles with it you can feel free to comment or submit a report below (then tell me Win ver, build, architechture, pathes). The app needs no install, is portable and standalone, can be placed on usb stick or copied to another comp. You can pause execution from tray context menu (tray icon becomes flashing with red) and then click un'Pause script' (uncheck) to restore it.

Code: [Select]
Global $ini='tankiCacheCleaner.ini', $g='General'
Global $d = IniRead($ini,$g,'FolderPath','C:\Users\%username%\AppData\Roaming\tankionline\Cache\')
;~ ini=IniRead($ini,$g,$|'',$'')
$d = StringReplace($d,'%username%',@UserName)
Global $hk = IniRead($ini,$g,'ClearingHotKey','^+{f7}')
HotKeySet($hk,'dlt')
TraySetToolTip(@ScriptName&@CRLF&$d&@CRLF&$hk)

Func dlt()
ProcessClose('Tanki Online.exe')
Sleep(1*1000)
;~ Global $hk = IniRead($ini,$g,'ClearingHotKey','^+{f7}')
;~ Global $d = IniRead($ini,$g,'FolderPath','C:\Users\%username%\AppData\Roaming\tankionline\Cache\')
;~ Global $d='C:\Users\%username%\AppData\Roaming\tankionline\'
;~ Global $d='C:\Users\%username%\AppData\Roaming\tankionline\111'
;~ Global $d='C:\Users\%username%\AppData\Roaming\tankionline\111\'
;~ Global $d='C:\Users\'&@UserName&'\AppData\Roaming\tankionline\111\'
;~ Global $d='C:\Users\'&@UserName&'\AppData\Roaming\tankionline\Cache\'
;~ Global $d='C:\Users\%username%\AppData\Roaming\tankionline\Cache\'
;~ $d = StringReplace($d,'%username%',@UserName)
;~ DirCreate($d)
FileDelete($d)
EndFunc

While 1
Sleep(1*1000)
WEnd

2
Неу! На 49-ый день работы компа КЛМН версии 4.13 b3, вместо того, чтобы однократно записать строчку в лог, стал раздувать файл до многих МБ (начиная с момента, когда он должен был однократно залогить строку, ошибка случилась ещё не дойдя до лбщеизвестной проблемы переполнения 32-битного числа после 49,7 дней работы Виндовс). На момент написания скрипта ещё не знал про функцию GetTickCount64(), благодаря чему и выловился баг. Отсюда возникает вопрос: какова максимальная величина переменной int в 64-разрядной версии Кликерманна, не 232-1 ли?

Code: [Select]
#autorun
#logfile "TixLog.txt"
while (1)
   $c=$_ms/1000/3600/24
   print($_date_y,".",$_date_m,".",$_date_d,"   Days on: ",$c)
   wait(86400)
end_cyc


Code: (clickermann) [Select]
#autorun
#logfile "TixLog.txt"
while (1)
   $c=$_ms/1000/3600/24
   print($_date_y,".",$_date_m,".",$_date_d,"   Days on: ",$c)
   wait(86400)
end_cyc



ПС. На компе последней версии 4.14 нету (или какая там сейчас есть), а на сайте почему-то ссылка на какую-то подверсию 4.13, в общем не стал искать на форуме самую свежую версию и протестил в той, что есть.

ППС. [spoiler] уже не работает?

3
Привет!

Все старожили тут уже наверняка уже юзают такое, хотя мож кто и не пользуется выводом в хтмыл, на всякий пожарный выкладываю. 

Что позволяет библиотека HTML5.js?
  • Задавая всего с десяток параметров в Кликерманне, можно настроить под себя удобный графический вывод в HTML-файл, не отказывая себе и в возможности использовать сценарии JavaScript. Разумеется, каждый раз вводить все параметры не обязательно: можно настроить их один раз и затем использовать шаблон, периодически меняя под свои нужды пару-тройку папаметров.
  • Можно делать всё то же, что и в формах отправки сообщения на форумах, в соцсетях, мессенджерах: использовать теги, напоминающие bb-codes или markdown, позволяющие форматировать выводимые сообщения -- делать заголовки, выделять жирным шрифтов или курсивом, менять цвет текста/ его размер/ используемый шрифт, делать выравнивание, добавлять картинки, запускать видео, и всё прочее, что вы видели в современном браузере.
  • На ВиндовсХР скрипт не тестировался, но предполагаю, что должен работать, возможно придётся внести мелкие правки в исходник, ввиду старого ИЕ в составе хрюши.
  • Используем хтмл-код прямо внутри скриптов Кликерманн! И всё это в перемешку с обычным текстом, джаваскриптом и стилями css3, причём никто не заставляет вас использовать это в обязательном порядке: если вы не понимаете html, можно писать просто обычным текстом и скрипт будет выводить это в настраиваемом окошке браузера!
  • Используйте расширенные юникод-символы (более 120 тысяч символов, из них 80 процентов иероглифов), а в Хроме это также и цветные эмоджи/ смайлы (около 1000 шт.)
  • Назначайте на ходу стили уже присвоенным классам элементов и управляйте джаваскрипт-сценариями через id и библиотеку jQuery
  • При необходимости подключайте свои произвольные джавскриптовые библиотеки и фреймворки (наподобе Angular.JS, к примеру для создания одностраничных SPA-приложений), многие из них отлично подходят для визуализации в браузере (Three.js, Vue.js и многие др.) и просмотра картинок без обновления страницы
  • Не забывайте и про мощные встроенные во все современные браузеры технологии визуализации, такие как HTML5Canvas, WebGL, SVG, на которых можно хорошо рисовать векторную графику/ фигуры/сцены и которые поддерживают скриптование прямо из вашего джаваскрипта! Встраивать в них можно и растр, и видео.
  • ДжаваСкрипт покорил и серверное ПО (помним Node.js, сервера от Нетскейпа и Мелкософта на js)), и десктопы (та же нода, Phantom.js, NPM)
  • Можете единожды настроить шаблон для использования этой библиотечки, скопировать его себе куда-то и затем уже сразу юзать готовый образец из сохранёнки, чтобы не изобретать каждый раз по велосипеду
  • Если вы используете старую ОСь вроде WinXP, то наверняка оченб многие символы из диапазона UTF у вас не отобразятся (BabelMap и PopChar вам в помощь)
  • В языке JS есть свои инструкции для вызова диалоговых окон с вопросами к пользователю, а в её подлибе джейКвери всё ещё веселее
  • Кроме возможностей JavaScript/ECMA, у нас есть новый DOM и обширный репертуар html 5-ого: веб-сокеты для дуплекс-связи, воркеры-потоки, StorageAPI, новые муьтимедиа-теги <video> и <audio> для воспроизведения прямо в браузере без поддержки каких-либо плагинов! Спасибочки whattg, прощай трайдент
  • А если вы ещё поднимите и локальный веб-сервер, то вам не хватает только своего пакетного менеджера с SOAP-блекджеком и балансером нагрузки
  • Кликерманном можно динамически менять не только хтмл, но и сами сценарии, поскольку это по сути тоже обычные текстовые файлы (что можно сказать и о подключаемых таблицах стилей). Графику также можно хранить в странице inline-ово, используя для этого base64-кодирование с соответствующим mime-типом

Состав пакета библиотеки (спойлер я не нашёл на форуме, будем так писать -- прямым текстом)
  • assemb1d.hta -- пример получающегося файла
  • html5js.cms -- собственно, сама библиотека, выводящая по умолчанию HTA-файл с удобным, миниатюрным заголовком, без лишних кнопок, меню и статусбаров
  • jquery-3.3.1.min.js -- свежайшая версия JavaScript-библиотеки, ускоряюшая ввод js-кода в 2 раза. Здесь запакована minified-версия под десктоп (30 кб), но желающие могут скачать и под мобайл на офсайте (архив тот весит 8 мб со всеми сублибами/ тестами -___-)
  • clmn31.ico -- иконка КЛМН (которая в hta под Trident-движком не отображается). Но если вам больше по душе Блинк от ГуглХрома, то тема вполне пригодится

Итак, внешний вид функции/ инклуда/ параметров модуля таков:
Quote
html5js (html, title, hdr, file, posX, posY, sizeX, sizeY, bgcolor, fontcolor, ext, clmn-param, script, css3, jQueryLib

При написании в вашем сценарии это может выглядеть как-то так:
html5js("&gt;<br>Check it, bro<hr><b>CLMN</b> screens <i>in example</i>", "MyProject", "Results", "assembld", 10, 10, 390, 490, "#FFFFCC","navy", "a", 0, "alert('Clickermann rules!');// confirm('Agreed?');// " ,"" ,0)
или в укороченном виде так:
Code: [Select]
html5js("MyHTML-text", "MyProject", "Results", "assembld", 400, 200, 390, 490, "#ffc","black", "a", 0, ";// ", "", 0)
Пробежимся по значениям параметров:
html, title, hdr, file, posX, posY, sizeX, sizeY, bgcolor, fontcolor, ext, clmn-param, script, css3, jQueryLib
==Параметр ==Тип переменной ==Возможные значения ==Комментарий
htmlstringtext, html, js, cssВводите сюда любой текст, который затем будет отображаться на выведенной скриптом веб-страничке. Можно использовать html-разметку
titlestringtextЗаголовок вашей будущей странички (самая верхняя строка окна)
headerstringtextЗаголовок первого уровня (крупными буквами) внутри странички
filenamestringtextЖелаемое название файла веб-приложения
Position X-axispositive numberint, зависит от разрешения монитора и желаемого месторасположения окнаПозиция окна веб-страницы на экране (зазор слева, расстояние в пикселях от левого края монитора). Задаётся джава-скриптом и в браузерах с отключенными скриптами не работает
Position Y-axispos. num--"-- (то же самое)Позиция окна веб-приложения на экране (зазор сверху, расстояние в пикселях от верхнего края монитора)
Size X-axispos. num--"-- (зависит от желаемого размера окна)Размер окна по горизонтали (ширина в пикселях)
Size Y-axispos. num--"--Размер окна по горизонтали (ширина в пикселях)
BackgroundColor#RRGGBB #rgb htmlEntityнапр., #000000, #FFFFFF, 160 словесных названий цветов (вроде red, green, yellow, black, white, magenta, blue, lightskyblue и т. д.)Цвет фона страницы, задаётся через внутренние css-стили, также можно использовать и внешний CSS-файл clmn.css
FontColorRGB (тот же тип)--"--Цвет шрифта для основного абзаца с текстом. Для вставки новых абзацев пишите <br>
ExtensionstringАнглийские "m" (htMl) или "a" (for web-Application)Укажите предпочитаемый формат приложения: веб-страница Хрома или приложение с движком от ИЕ (файл .hta)
Clickermann parametersint0 или 1Бонусная опция для юзеров Кликерманна 4.14+, при включённой опции (для этого ставим 1) в тело веб-страницы выводятся параметры, передаваемые .cms-скрипту, допустим через сценарий в .bat- файле: "C:\your\path\to\Clickermann.exe" "C:\path2\urScript.cms" anyParameters of your choice. В данном случае на странице внизу будет выведено: "anyParameters of your choice"
JS scriptstringJS codeРазмещайте свой джаваскрипт-код в этом параметре, а сами js-инструкции вместо знака ";" разделяйте с помощью трёх знаков: ";//" (после них можно вставлять пробел для лучшей читабельности кода)
CSS stylesheetstringCSS codeТут может быть ваша реклама css-таблица стилей в inline-формате (понятно, что как в параметре джаваскиптовой всавки кода, так и здесь абзацы по нормам Кликермана не допускаются внутри параметра, также нужно заменить все двойные кавычки " на одинарные ', в т. ч. не забывайте делать это, если вставляете длинный код из других источников, иначе сценарий не загрузится)
jQuery libraryint0 или 1Включаем либу джейКвери (ставим в параметре функции единичку) и юзаем быстрые селекторы DOM-модели, аякс/CORS, мощные и гибкие визуальные эффекты для своей веб-странички (перетаскивание, выделение, изменение размеров выбранных объектов налету, сортировка, диалоговые окна, календари, слайдеры, аккордеон/ вкладки на одной странице, обработчики событий, проверка форм, установка флажков и считывание значений установленных пунктов радио-переключателей и т. п.)

Здесь сам код подключаемой библиотеки:
Для любителей изучать исходники:
Code: (clickermann) [Select]
// 19.02.2019
// Cleoss
//#name "html5js"
sub(js, $jstring)
   while (strpos($jstring, ";//")>0)
      $divdr = strpos($jstring, ";//")
      $newstr=strcut($jstring, 1, $divdr)
      tfWrite($htafilename, $newstr)
      $jstring=strcut($jstring, $divdr+3, strlen($jstring)-$divdr)
   end_cyc
   $divdr = strpos($jstring, ";//")
   $newstr=strcut($jstring, 1, $divdr)
   tfWrite($htafilename, $jstring)
end_sub


// html, title, hdr, file, pos+size, bgcolor+ fontcolor, ext, paramOut, script, css, jQuery
// "html", "title", "hdr", "file", 10, 10, 390, 490, "#FFFFCC", "navy", "a", 0, "alert('Clickermann rules!');//", "", 0
// "&gt;<br>Check it, bro<hr><b>CLMN</b> screens <i>in example</i>", "MyProject", "Results", "assembld", 10, 10, 390, 490, "#FFFFCC", "navy", "a", 0, "alert('Clickermann rules!');// confirm('Agreed?');// ", "", 0
// Call the function in this way:
//html5js("&gt;<br>Check it, bro<hr><b>CLMN</b> screens <i>in example</i>","MyProject","Results","assembld",10, 10, 390, 490, "#FFFFCC","navy", "a", 0, "alert('Clickermann rules!');// confirm('Agreed?');// ","",0)

sub(html5js,$ht5html,$ht5title,$ht5hdr,$ht5file,$ht5posX,$ht5posY,$ht5sizeX,$ht5sizeY,$ht5bgcolor,$ht5fontcolor,$ht5ext,$ht5par,$ht5script,$ht5css3,$ht5jQueryLib)
//   $htmTitle = " Project "
//   $header1 ="Results"
//   $htmTxt = "&gt;<br>Check it, bro<hr><b>CLMN</b> screens: <img src='http://crapware.aidf.org/images/editor.png' alt='clmn' height='300' />"
//   $bgcolor ="#FFFFCC" // RGB formats: #ffaacc or #fac or red (second, shortened format is not for IE with its HTA file)
//   $fontcolor ="navy"
//   $htFiletype ="a" // A - application, M - markable HTML
//   $htFiletype=$ht5ext
//   $filename="assembld"
//   $filename=$ht5file
   $wtf = 0.1 // wait some secs
   
   if($ht5file="")
      $ht5file="assembld"
   end_if
   if(($ht5ext="a")|($ht5ext="m"))
      //
   else
      $ht5ext="a"
   end_if
   $htafilename=strconcat($ht5file, ".ht",$ht5ext)
   TFCLEAR ($htafilename)
   //logclear
   
   tfWrite($htafilename, "<!DOCTYPE html><html><head><link rel='shortcut icon' href='clmn31.ico' /><title>")
   wait($wtf)
   if($ht5title="")
      tfWrite($htafilename, "&#x1F191; Clickermann APP &#x1F4A9; (",$htafilename,")")
   else
      tfWrite($htafilename, strconcat("&#x1F191; ",$ht5title, " - Clickermann APP &#x1F4A9; (",$htafilename,")"))
   end_if
   wait($wtf)
   $parTx=""
   if($ht5par=1)
      STRSEPARATE ($_param_str, ";", $pararr)
      $parTx=$pararr[2]
   end_if
   if($ht5jQueryLib=1)
    $jQLnk="<script type='text/javascript' src='jquery-3.3.1.min.js'></script>"
else
    $jQLnk=""
end_if
   tfWrite($htafilename, strconcat("</title><meta http-equiv='Content-Type' content='text/html; charset=UTF-8' /><meta charset='utf-8'><script type='text/javascript' src='clmn.js'></script>",$jQLnk,"<link rel='stylesheet' href='clmn.css' type='text/css'><style>.smpl {background-color: #ffe; color: #930; }",$ht5css3,"</style><!--  --><!-- &mdash; &#9762; <br /> <html lang='en'>  --></head><body bgcolor='", $ht5bgcolor, "' id='bd'><font color='", $ht5fontcolor, "'><h1 id='hdr'>", $ht5hdr, "</h1><p id='prgrf'>", $ht5html, "</p></font><textarea id='ta' class='smpl'>Simple sample!</textarea><div id='clmnparam'>",$parTx,"</div><script>"))
   wait($wtf)
   $jscmd=strconcat("",$ht5script)
   if(($ht5sizeX>0)|($ht5sizeY>0))
      $jscmd=strconcat($jscmd, "resizeTo(",$ht5sizeX,", ",$ht5sizeY,");// ")
   end_if
   if(($ht5posX>0)|($ht5posY>0))
      $jscmd=strconcat($jscmd, "moveTo(",$ht5posX,", ",$ht5posY,");// ")
   end_if
   js($jscmd)
   wait($wtf)
   tfWrite($htafilename, "</script></body></html>")
   wait($wtf)
   
   execute($htafilename)
   //halt
end_sub



И для любителей копировать:
Code: [Select]
// 19.02.2019
// Cleoss
//#name "html5js"
sub(js, $jstring)
   while (strpos($jstring, ";//")>0)
      $divdr = strpos($jstring, ";//")
      $newstr=strcut($jstring, 1, $divdr)
      tfWrite($htafilename, $newstr)
      $jstring=strcut($jstring, $divdr+3, strlen($jstring)-$divdr)
   end_cyc
   $divdr = strpos($jstring, ";//")
   $newstr=strcut($jstring, 1, $divdr)
   tfWrite($htafilename, $jstring)
end_sub


// html, title, hdr, file, pos+size, bgcolor+ fontcolor, ext, paramOut, script, css, jQuery
// "html", "title", "hdr", "file", 10, 10, 390, 490, "#FFFFCC", "navy", "a", 0, "alert('Clickermann rules!');//", "", 0
// "&gt;<br>Check it, bro<hr><b>CLMN</b> screens <i>in example</i>", "MyProject", "Results", "assembld", 10, 10, 390, 490, "#FFFFCC", "navy", "a", 0, "alert('Clickermann rules!');// confirm('Agreed?');// ", "", 0
// Call the function in this way:
//html5js("&gt;<br>Check it, bro<hr><b>CLMN</b> screens <i>in example</i>","MyProject","Results","assembld",10, 10, 390, 490, "#FFFFCC","navy", "a", 0, "alert('Clickermann rules!');// confirm('Agreed?');// ","",0)

sub(html5js,$ht5html,$ht5title,$ht5hdr,$ht5file,$ht5posX,$ht5posY,$ht5sizeX,$ht5sizeY,$ht5bgcolor,$ht5fontcolor,$ht5ext,$ht5par,$ht5script,$ht5css3,$ht5jQueryLib)
//   $htmTitle = " Project "
//   $header1 ="Results"
//   $htmTxt = "&gt;<br>Check it, bro<hr><b>CLMN</b> screens: <img src='http://crapware.aidf.org/images/editor.png' alt='clmn' height='300' />"
//   $bgcolor ="#FFFFCC" // RGB formats: #ffaacc or #fac or red (second, shortened format is not for IE with its HTA file)
//   $fontcolor ="navy"
//   $htFiletype ="a" // A - application, M - markable HTML
//   $htFiletype=$ht5ext
//   $filename="assembld"
//   $filename=$ht5file
   $wtf = 0.1 // wait some secs
   
   if($ht5file="")
      $ht5file="assembld"
   end_if
   if(($ht5ext="a")|($ht5ext="m"))
      //
   else
      $ht5ext="a"
   end_if
   $htafilename=strconcat($ht5file, ".ht",$ht5ext)
   TFCLEAR ($htafilename)
   //logclear
   
   tfWrite($htafilename, "<!DOCTYPE html><html><head><link rel='shortcut icon' href='clmn31.ico' /><title>")
   wait($wtf)
   if($ht5title="")
      tfWrite($htafilename, "&#x1F191; Clickermann APP &#x1F4A9; (",$htafilename,")")
   else
      tfWrite($htafilename, strconcat("&#x1F191; ",$ht5title, " - Clickermann APP &#x1F4A9; (",$htafilename,")"))
   end_if
   wait($wtf)
   $parTx=""
   if($ht5par=1)
      STRSEPARATE ($_param_str, ";", $pararr)
      $parTx=$pararr[2]
   end_if
   if($ht5jQueryLib=1)
    $jQLnk="<script type='text/javascript' src='jquery-3.3.1.min.js'></script>"
else
    $jQLnk=""
end_if
   tfWrite($htafilename, strconcat("</title><meta http-equiv='Content-Type' content='text/html; charset=UTF-8' /><meta charset='utf-8'><script type='text/javascript' src='clmn.js'></script>",$jQLnk,"<link rel='stylesheet' href='clmn.css' type='text/css'><style>.smpl {background-color: #ffe; color: #930; }",$ht5css3,"</style><!--  --><!-- &mdash; &#9762; <br /> <html lang='en'>  --></head><body bgcolor='", $ht5bgcolor, "' id='bd'><font color='", $ht5fontcolor, "'><h1 id='hdr'>", $ht5hdr, "</h1><p id='prgrf'>", $ht5html, "</p></font><textarea id='ta' class='smpl'>Simple sample!</textarea><div id='clmnparam'>",$parTx,"</div><script>"))
   wait($wtf)
   $jscmd=strconcat("",$ht5script)
   if(($ht5sizeX>0)|($ht5sizeY>0))
      $jscmd=strconcat($jscmd, "resizeTo(",$ht5sizeX,", ",$ht5sizeY,");// ")
   end_if
   if(($ht5posX>0)|($ht5posY>0))
      $jscmd=strconcat($jscmd, "moveTo(",$ht5posX,", ",$ht5posY,");// ")
   end_if
   js($jscmd)
   wait($wtf)
   tfWrite($htafilename, "</script></body></html>")
   wait($wtf)
   
   execute($htafilename)
   //halt
end_sub



Краткий экскурс в теги хтмл:
<b>bold</b> <i>italics</i> <u>underline</u> <s>strikeout</s> <blink>мигание (deprec.)</blink>
<center>центрирование (deprecated)</center> <font size='24'>Размер</font> <font color='red'>Цвет</font>
<img src='https://www.google.ru/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png' />Картинка
<img src='http://gg.gg/clmn-png' height='100' alt='Картинка с заданной высотой'>
<a href='https;//ya.ru/' name='метка'>Ссылка на Яndex</> <a href='#метка'>Гиперссылка на заголовок в текущей веб-странице</a> <></>
<h1>Заголовок 1-ого уровня</h1> <h5>Заголовок 5-ого уровня</h5>
Горизонтальная horizRuler <hr />
<marquee>Бегущая строка (упразднена в документации W3C)</marquee>
Абзац без обтекания текста <br clear='all'>
Обычный абзац <br>
Юникод-символы: &#x1F602; (hex), &#128514; (dec), entities: &reg; &Ntilde; &sect;
<script type='text/javascript' src='джава-скрипт-файл.js'>Инструкции; джаваскрипта(); </script>
А также <form>, <input>, <button>, <select>, <div>, <table>, etc.

4
Версия кликера 4,13,007 -- скрипт никак не хочет единожды выполнять условие на строке 85 и многожды штампует в свой чат строку "First!", пытаясь сравнить число с числом.

Code: (clickermann) [Select]
// 31-Dec-2017 nd: arrDedup
#name "CMS-files' Varz"
logclear
logshow(1,1,1)
//#logfile "_MyVarz.txt"

$pathx="E:\port\PortableApps\~~clickermann_last\Clickermann4.13b3\projects\"
//if(strcut2($pathx,strlen($pathx-1),strlen($pathx))="\")
//   print("1")
//else
//   $pathx=strconcat($pathx,"\")
//end_if
//print($pathx)
//getfilelist($cmsz,"*.cms")
getfilelist($cmsz,strconcat($pathx,"*.cms"))

//for($i=0,$i<arrsize($cmsz))
//   print($cmsz[$i])
//end_cyc
print("Totally: ",arrsize($cmsz)," scripts")

//for($j=0,$j<arrsize($cmsz))
for($j=0,$j<arrsize($cmsz))
   print("Processing file # ",$j," of ",1+arrsize($cmsz),", ",$cmsz[$j])
   waitms(700)
   TFReadArr(strconcat($pathx,$cmsz[$j]),$linez)
   define($vars,0)
   for($k=0,$k<arrsize($linez))
      $dollar=strpos($linez[$k],"$")
      if($dollar=0)
      else
         //inc($vars)
         $symz=strconcat(",=<> -+*/()!:\.",char(34)) // $[]
         for($l=0,$l<strlen($symz))
            $sym=strcut($symz,$l+1,1)
            //print($sym)
            $cutlim=strpos(strcut2($linez[$k],$dollar+1,strlen($linez[$k])),$sym)
            if($cutlim>0)
               //else
               arrpush($min,$cutlim)
               //print("    ",$cutlim)
            end_if
           
         end_cyc
         //arrsort($min)
         $minml=$min[0] ///////////////// Array sorting
         for($m=0,$m<arrsize($min))
            if($minml>$min[$m])
               $minml=$min[$m]
            end_if
         end_cyc
         //$linez[$k]=strcut2($linez[$k],$dollar,$min[0])
         //print("Min= ",$min[0])
         //print("      Min= ",$minml)
         //print($dollar," ",$min[0])
         //$myvar=strcut($linez[$k],$dollar,$min[0]-1)
         $myvar=strcut($linez[$k],$dollar+1,$minml-1)
         undefine($min)
         //print("  ",strcut($linez[$k],$dollar,strlen($linez[$k])))
         if(strlen($myvar)>1)
            //print("  ",$myvar) ///////////////////////////////// Varz output
            inc($vars)
            arrpush($curvarz,$myvar)
         end_if
         
      end_if
     
     
   end_cyc
   undefine($linez)
   
   /////// Array deduplication
   
   print("CurrVarz= ",arrsize($curvarz))
   for($n=0,$n<arrsize($curvarz))
     
      $curr=arrpop($curvarz)
      //$currunix=0
     
      //////////////////////////////////////////////////////////////// err
      //      if(arrsize($uniqz)=0)
      //         $uniqz[0]=$curr
      //         print("First!")
      //      end_if
      if(arrsize($uniqz)>0)
         print("Not else!")
      else
         $uniqz[0]=$curr
         print("First!")
      end_if
      for($o=0,$o<arrsize($uniqz))
         if($curr = $uniqz[$o])
            //print("1")
         else
            arrpush($uniqz,$curr)
            //inc($currunix)
         end_if
      end_cyc
      //print($currunix)
      print("UniqVarz= ",arrsize($uniqz))
      undefine($uniqz)
     
     
      //$curvarz[$n]
     
   end_cyc
   //print("Unix= ",arrsize($uniqz))
   
   
end_cyc
print($vars," varz from ",arrsize($cmsz)," scripts")

halt

5
Привет, енотег Джо!

В одном моём скрипте есть такие строки:
Code: (clickermann) [Select]
$dt=strconcat($_date_d,".",$_date_m,".",$_date_y)
//$dte=$_date_str
$dte=inputbox("Plz input a date below! (dd.mm.yyyy) ",$dt,60)
//wait(1)
if($dte=0)
   $dte=strconcat($_date_d,".",$_date_m,".",$_date_y)
end_if
Причём что интересно, что в текущей версии кликера .007 условие ложно срабатывает? хотя не должно, поскольку величина после ввода в инпутбокс явно не равна 0, а условие всё равно срабатывает и тем самым портит дальнейшую логику скрипта (меняет дату с введённой на текущую). Придётся закомментить блок и остаться без альтернативной версии кода для кликеров без поддержки переменной $_date_str. Ещё интересно, по чьей же вине это? По вине инпута или ифа? Или получается, парсер кликера заранее предобрабатывает переменные скрипта без учёта изменений в инпуте?

И да, вчера новёхонькая версия преподнесла ещё сёрпрайз, надо б забагтречить его в новой теме но лень. Долго ли, коротко ли  набирал скрипт, набирал, отошёл. Вернулся, запустил скрипт заново. И вдруг.. Он не запускается, нету даже звука запуска. Думаю перезапуститься, сохраняюсь (!!!) и закрываю редактор, выскакивает бесконечное предложение сохранить работу (но не сохраняет -- знакомая схема). Попа чувствует неладное, но молчит. Запускаю кликер снова, открываю скрипт, над которым работал, а он пустой, ноль байт. А теперь внимание вопрос: КУДА девался бекап?

ЗЫ. Порыскал по всем подпапкам кликера (надеялся, работа не насмарку), бекапа не нашёл, а раньше был же. Щас версия 007.

6
Прива, чатлане!

Желаю нашему форуму в грядущем году роста аудитории, интересных идей и успешных их реализаций!!!
А Джону Енотовичу -- не менее продуктивного года работы, полную норку добычи и прочих енотских радостей =)



Вот хотел к празднику выкатить скриптец, способный самостоятельно определять день недели на основе текущей/вводимой даты (первый алгоритм отсюда). Уже прописал переменные, записал исходные данные в массивы (по крайней мере, намеревался), дохожу до того места, где пора уже считывать данные..  Ан нет, функция ГетУер захлёбывается, когда подсовываешь ей кавычки:


Подскажите кто-нибудь секрет, как вы организовываете доступ к виртуальным переменным/массивам, которые нужно задать не явно, не напрямую, а к примеру скопом по шаблону. Схожий трабл у меня возникает временами и с другими строковыми функциями (на месте кавычек -- нераспознанные символы). Кстати, впервые сегодня создаю скрипт в 4.13.007 (после перехода с .003).

Собсна, большая часть написана, осталась пара шагов до завершения, и.. вот такой казус)
[spoiler=PerpetualCalendar.cms]
Code: (clickermann) [Select]
// 29.12.2017
#name "Montana"
//nd: DelPoMod,concatArrayFunc,matrixTranspond,varPrn-EdCtx,
logshow(1)
logclear

$dte=$_date_str
if($dte=0)
   $dte=strconcat($_date_d,".",$_date_m,".",$_date_y)
end_if
$dt=strconcat($_date_d,".",$_date_m,".",$_date_y)
//$_time_str
$divdr=strcut(strfilter($_date_str,"0123456789",0),1,1)
//$divdr2=strcut(strfilter($_date_str,"0123456789",0),2,1)
//print("  ",$_date_str,"  ",strlen($_date_str)," ",$divdr," ",$dt)
strseparate($dte,$divdr,$fecha)
//print($fecha[2])
//jfmamjjasond
$jan="1,2,3,4,6,7,1,2,4,5,6,7,2,3,4,5,7,1,2,3,5,6,7,1,3,4,5,6"
$feb="4,5,6,7,2,3,4,5,7,1,2,3,5,6,7,1,3,4,5,6,1,2,3,4,6,7,1,2"
$mar="4,5,6,1,2,3,4,6,7,1,2,4,5,6,7,2,3,4,5,7,1,2,3,5,6,7,1,3"
$avr="7,1,2,4,5,6,7,2,3,4,5,7,1,2,3,5,6,7,1,3,4,5,6,1,2,3,4,6"
$may="2,3,4,6,7,1,2,4,5,6,7,2,3,4,5,7,1,2,3,5,6,7,1,3,4,5,6,1"
$nio="5,6,7,2,3,4,5,7,1,2,3,5,6,7,1,3,4,5,6,1,2,3,4,6,7,1,2,4"
$lio="7,1,2,4,5,6,7,2,3,4,5,7,1,2,3,5,6,7,1,3,4,5,6,1,2,3,4,6"
$aug="3,4,5,7,1,2,3,5,6,7,1,3,4,5,6,1,2,3,4,6,7,1,2,4,5,6,7,2"
$sep="6,7,1,3,4,5,6,1,2,3,4,6,7,1,2,4,5,6,7,2,3,4,5,7,1,2,3,5"
$oct="1,2,3,5,6,7,1,3,4,5,6,1,2,3,4,6,7,1,2,4,5,6,7,2,3,4,5,7"
$nov="4,5,6,1,2,3,4,6,7,1,2,4,5,6,7,2,3,4,5,7,1,2,3,5,6,7,1,3"
$dec="6,7,1,3,4,5,6,1,2,3,4,6,7,1,2,4,5,6,7,2,3,4,5,7,1,2,3,5"
$mes="jan,feb,mar,avr,may,nio,lio,aug,sep,oct,nov,dec"

//strcut(strfilter(strconcat("$",$meses[$mth]),",",0),$wk,1)
strseparate($mes, ",", $meses)
for($mth=0,$mth<12)
   $mName=$meses[$mth]
   for($wk=0,$wk<28)
      SETVAR (strconcat("$m",$mth+1,"[",$wk,"]"), strcut(strfilter(strconcat("$",$meses[$mth]),",",0),$wk,1))
   end_cyc
end_cyc
//strseparate($jan, ",", $m1)


if(strlen($fecha[2])=2)
   $yr=$fecha[2]+2000
else
   if(strlen($fecha[2])=4)
      if(($fecha[2]>1900)&($fecha[2]<2097))
         $yr=$fecha[2]
      else
         print("Year is out of bounds! (1901-2096) ")
         halt
      end_if
   else
      print("Year must have 2 or 4 digits!")
      halt
   end_if
end_if
$monthy=$fecha[1]
$dy=$fecha[0]

$rest=$yr-1900
$quantor=int($rest/28)
$shift=$rest-(28*$quantor)
print("Rest=",$rest," K=",$quantor," Shift=",$shift)
$row=strconcat("$m",$monthy,"[",$shift-1,"]")
$delta=getvar("$row")
//print(getvar("m12[4]"))
$tmpvar=getvar("$m12[4]")
print(" Tmp=",$tmpvar)
print(" m12[4]=",$m12[4])
print(" Row=",strconcat("m",$monthy,"[",$shift-1,"]")," / ",$row," Delta=",$delta)



halt

 и подстановка в функции SetVar/GetVar с кавычками
[/spoiler]

7
Дратути, автоматизаторы всех стран и народов!
Ps. Сорян, похоже, промахнулся, когда создавал тему,
ей место явно не в разделе "Предложения".


Сделал следующий инклуд:
[spoiler=funk.cms]
Code: (clickermann) [Select]
// 24-Dec-2017
//#name "Funky include"
//#include "funk.cms"
//funk("scriptfilename")

sub(funk,$funkyname)
   TFReadArr(strconcat($funkyname,".cms"),$fvnkyarrow)
   print("ArrSz= ",arrsize($fvnkyarrow)," lines")
   //print($fvnkyarrow[9])
   //print($fvnkyarrow[1])
   
   $cntr=0
   for($ii=0,$ii<arrsize($fvnkyarrow))
      //      while(strcut($fvnkyarrow[$ii],1,1)=" ")
      //         if($fvnkyarrow[$ii]!"")
      //            $fvnkyarrow[$ii]=STRREPLACE($fvnkyarrow[$ii]," ","")
      //         end_if
      //      end_cyc
      $spaced=1
      while($spaced=1)
         if($fvnkyarrow[$ii]!"")
            if(strcut($fvnkyarrow[$ii],1,1)=" ")
               $fvnkyarrow[$ii]=STRREPLACE($fvnkyarrow[$ii]," ","")
            else
               $spaced=0
            end_if
         else
            $spaced=0
         end_cyc
      end_cyc
      print($cntr," ",$fvnkyarrow[$ii])
      inc($cntr)
   end_cyc
end_sub


//halt
[/spoiler]

Нажимаю Сохранить и Применить, пытаюсь закрыть редактор со скриптом, но кликер не даёт (пишет классическое "Хотите применить изменения?", у меня так: Would you like to apply changes?). Понимаю, что это ошибка моей логики в скрипте, но почему-то не могу найти, в какой точке. Причём до проверки на наличие пробелов изменённая версия этого инклуда нормально работала, а тут вроде всё правильно, а результата не даёт, да и файлы с подключённым данным инклудом не запускается. Может, проверка if($fvnkyarrow[$ii]!"") не имеет смысла? Но тогда перестаёт в логе выводить пустые строки (которые конечно не пустые, а содержат знаки абзаца).

ЗЫ. В курсе про трабл с кавычками, сам юзаю 4.13.б3 и постоянно с этим парюсь.

8
Прива! Собсна ниже скрипт, который чтобы создать подпись на сайте и вложиться в отведённый лимит символов, подсчитывает их количество. Для этого он выделяет все символы в текущем активном окне\ поле ввода, копирует их всех в буфер обмена, считает, сколько их суммарно, и результат выводит системным сообщением в трее. Гипотетически ещё можно прикрутить проверку, не вылез ли юзер за границы отведённое квоты букв в подписи. Изи скрипт, и работает полсекунды:

Code: (clickermann) [Select]
//keydown(#ctrl)
//keypress(#a)
//keyup(#ctrl)
keydown(#ctrl)
keypress(#home)
keyup(#ctrl)
+
keydown(#ctrl)
keydown(#shift)
keypress(#end)
keyup(#shift)
keyup(#ctrl)

keydown(#ctrl)
keypress(#insert)
keyup(#ctrl)
$clp=fromclip()
$buflen=strlen($clp)
hintpopup($buflen,"CLMN Buffer lenght: ")
halt

Форкаем!

9
Ку всем!

Захотелось потестить вывод в заголовок окна вместа вывода в лог, заюзал известную мне отныне фичу кликера, при которой срабатывают несколько директив #name из основного файла и из инклудов. Но вот незадача, что при линейном использовании этой директивы внутри одного скрипта несколько раз в течение скрипта не только не работает вывод в хедер главного окна Кликерманна, но даже и весь скрипт не запускается.

Вопрос в следующем:
Ну а кто ж я тогда, если не тестер?))

Вот листинг теста:
Code: (clickermann) [Select]
// 20.08.2017
#include "nir.cms"
#name "grafo"

PXLREPLACE(10,20, 30, 40, -1, 255)
#name "pxl replaced"
wait(1)

screenshotfix(0,0, 50,50, "H:\dlz\op\clickermann_last\Clickermann4.13b3\projects\grafo.bmp")
#name "screen fixed"
wait(1)


execute("mspaint.exe", "H:\dlz\op\clickermann_last\Clickermann4.13b3\projects\grafo.bmp")
#name "paint executed"
wait(1)

wndsetinfo(wndfind("grafo.bmp - Paint"), 0, 0, 200, 200)
#name "mspaint moved"
wait(1)
#name "grafo"

halt

P. S. Я уже даж догадуюсь, как реализовать этот баг, тьфу!.. фичу правильно, только руки не доходят.


10
Да-да, у нас сёдня ураза байран по поводу того, что у меня заработали инклуды как надо, и на радостях решил вот сделать подборочку звуковых файлов, спёртых из самой же папки Медиа на компе с десяткой. Выбрал для вас самые на мой взгляд лучшие из того, что имелось, переименовал их по форме и запаковал в архив, а в подпапке там есть ещё 20 лучших самых коротких отобранных звуков-альтернатив, если вдруг моя подборка не попрёт. Так что для установки сборки звуков, распаковываем архив в \data\sound\ внутри папки самого кликера и заменяем имеющиеся звуковые файлы. Ах да, исходный набор весит 400 кб, а этот 1200, т. ч. еси кому принципиален маленький размер и портативность папки, то не качаем!
Остальным уелкам ниже.

Windows10 sound scheme:  [DOWNLOAD LINK BELOW]Sound.rar 7mb, 20 files .WAV

11
Немножко порылся по функциям из тутора, встретил несколько изюминок при работе с массивами:

  • Количество строк функция TFCount возвращает неверно, а именно если последняя строка пустая, то она не считается, то есть в обычном пустом файле с нуля символами TFCount=0, а сразу как только добавляешь первый символ TFCount=1. Но этот недостаток с успехом компенсируется логикой функции TFWrite, которая хоть и добавляет в конец без спроса одну пустую строку (при отсутствии таковой), но зато не тупит в разных вариациях и действует как надо, так что минус на минус будет плюс.
  • Неожиданно ARRPOP извлекает элементы не из начала, а с конца массива. Yooooooooooooooooo! Почему так? как извлекать с начала? и как исправить порядок в массиве, отсортированном задом наперёд?! Так же неожиданно TFWriteArr не инвертирует порядок, так что с её помощью исправить ситуацию не получится.
  • Я так часто работаю с функцией фор, что при переборе элементов массива решил впихнуть в конец этого фора inc($i), что разумеется было лишним ввиду автоматической инкрементации переменной.
  • Захотелось поиграться изменением элементов массива в цикле на ходу. Накропал это:
    [spoiler=По идее, нумеровщик строк]
Code: (clickermann) [Select]
define($init) // одноразовый логклир
if ($init=0)
   logclear
   inc($init)
end_if

$numstr=TFCount("test.ini") // кол-во строк
print($numstr)

TFReadArr("test.ini", $arr )
$arse=arrSize($arr)
for($j, $j < $arse)
   $newel=strconcat($j+1," ",arrpop($arr))
   arrpush($arr, $newel)
   print( $arr[$j] )
end_cyc

TFWriteArr("stet.ini", $arr )

halt
    [/spoiler]

    Но вот интерпретатор мой так не думает и радует меня разными ошибками. Из исходного тестового файла с тремя заполненными строками в лог он выводит только две, при этом вторую портит (печатая вместо неё собачку), а результирующий файл пишет только одну портаченную строку вместо трёх. [/li]
  • Мож ещё ништяков надыбаю) Вот кстать на форуме спойлер сломался, не прячет инфу в себя, или мож я натупил с тегами бб гдет. Хотя не, скорее всего, это просто таков спойлер внутри списка.

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

[spoiler]
Code: (clickermann) [Select]
TFReadArr("..\data\test.ini", $arr )
$arse=arrSize($arr)
for($j, $j < $arse)
   $currt=arrpop($arr)
$newel=strconcat($j+1," ",$currt)
   arrpush($arr, $newel)
print( $arr[$j] )
end_cyc

Вход:
Code: [Select]
a111
b222
cd
Выход:
Code: [Select]
21:55:00 3
21:55:00 a111
21:55:00 b222
21:55:00 3 2 1 cd



И таблица в спойлере не работает, упс.
[/spoiler]

Плохой с меня изменяльщик массива, забью на этот ридэррей.   :)

12
    В наш век программы не редко учатся самостоятельно, без учителя, благо для этого уже накоплено достаточно bigdata. Нейросети всё чаще удивляют нас своими скиллами и производимыми ивентами. Решил кинуть тут пару интересных линков с разбивкой на тематические категории, надеюсь когда-нить за меня это сможет БЫСТРО делать бот.  :P  Кликаем и читаем:


[spoiler=Орлята учатся летать/ прыгать/ ездить и перемещаться]
[/spoiler]

[spoiler=Боты взаимодействуют с человеком, миром и друг с дружкой]
[/spoiler]

[spoiler=Они пытаются заменить людей и помочь человечеству]
[/spoiler]

[spoiler=Учись с нами, учись как мы, учись лучше нас11]
[/spoiler]

[spoiler=Компьютер познаёт этот мир]
[/spoiler]

[spoiler=Ни много, ни мало -- алгоритмы меняют наше будущее, делая его другим заново!]
Восстание машин: роботы лишат людей работы и приведут к краху экономики[/li]
[li]Город роботов.РФ[/li]
[/list]
[/spoiler]

[spoiler=Умный ассистент, опора и надежда]
[/spoiler]

[spoiler=]
[/spoiler]


Вот такие пирожки  8)

13
Выделю этот проект в отельную тему, а по мере допиливания скрипта выложу сюда скрипт. По ссылке выше есть скрипт, который пока что реагирует только на нажатия модификаторов с кнопкой А (тестовый образец, со временем вставлю остальные буквы/ знаки). Также скрипт пока не умеет выдавать коды отдельно нажатых модификаторов (без нажатия букв), и пока что не знаю, как это решить. Буим посмореть, надо ввести регистры нажатых модификаторов и возможно тогда будет выдавать нажатые без букв модификаторы.

14
Привет всем!
Вот набросал пример скрипта, из которого можно при помощи горячей клавиши сделать перезагрузку всего кликера без лишних заморочек, для этого нам понадобятся два батника и nircmd, размещённый в системной папке win32 (что он собственно всегда и предлагает сделать с собой при его запуске без параметров). Зачем может понадобиться перезапускать кликер, это отдельная тема, но в данном листинге у нас будет меняться в качестве примера один параметр самого Кликерманна (fontsize, размер шрифта редактора), для вступления в силу новых настроек которого и потребуется включить кликер заново, разумеется полуавтоматически -- от вас потребуется только нажать хоткей.

Итак, вот сам скрипт:
[spoiler=setReload.cms]
Code: (clickermann) [Select]
#autorun
#name "setzArun"
logclear

define($init) // пример одноразовой функции
if ($init=0)
   $stri = INIREAD("..\data\config_editor.ini", "font_size", "global") // default fontsize is 10
   print($stri)
   inc($init)
end_if

if (iskeydown(#ctrl)=1)
   if (iskeydown(#b)=1)
      //WNDBUMP(wndfind("Editor - ")) // у меня не пашет этоо
      execute("activate.bat")
      waitms(500)
   end_if
   if (iskeydown(#r)=1)
      execute("setz.bat")
      halt(1)
   end_if
   if (iskeydown(#d)=1)
      $str = inputbox("Plz input fontsize: ", "10", 60)
      INIwrite("..\data\config_editor.ini", "font_size", $str, "global") // абсолютный путь не работает
      waitms(500)
   end_if
end_if
waitms(1)
[/spoiler]

У скрипта есть три хоткея:
Ctrl-B -- разворачивает кликер и ставит фокус ввода на него
Ctrl-R -- перегружает кликер и тем самым обновляет настройки
Ctrl-D -- запрашивает желаемый размер шрифта во встроенном редакторе кода

Теперича идут два батч-файла:
[spoiler=setz.bat]
Code: [Select]
echo off
cls
nircmd win close ititle "Clickermann - setzArun"
nircmd wait 7000
"H:\dlz\op\clickermann_last\Clickermann4.13b3\projects\setReload.cms"
nircmd wait 2000
nircmd win min ititle "C:\Windows\system32\cmd.exe"
exit
[/spoiler]
В данном батче надо прописать полный путь к перезапускаемому скрипту и возможно задать свои задержки.

Вот и второй бэтч:
[spoiler=activate.bat]
Code: [Select]
echo off
cls
nircmd win activate ititle "Clickermann - setzArun"
:: nircmd win focus ititle "Clickermann - setzArun"
nircmd win close ititle "C:\Windows\system32\cmd.exe"
exit
[/spoiler]
Он помогает нам дать фокус на кликер и развернуть его вместо встроенной кликеровской функции wndbump, которая к примеру у меня работает как-то вяло. Надо заметить, что перезапуск кликера со включённым скриптом, который слушает ваши хоткеи, становится возможным длагодаря включению в наш макрос директивы #autorun. Надо признаться, это первый мой эксперимент с автозапуском кликера и для меня было сюрпризом, что кликер запускается свёрнутым  и что я не могу при работающем скрипте зайти в редактор, чтоб посмотреть обновление параметра. Поначалу Кликерманн ваще выдал мне пасхалочку с эпичным каментом, незакрываемым окном без кнопки со странным алертбоксом:

Порядком доставляли и выскакивающие напостой поверх кликера чёрные окна командной строки батчей.  ::)
После перезагрузки кликера, которая длится около десяти секунд, можно сразу же тормознуть выполнение скрипта, зайти в редактор для ознакомления с обновившимся размером шрифта и сразу же снова запустить скрипт, теперь он сможет работать прямо в редакторе и реагировать тут на нажатие хоткеев. Ещё открытым остаётся вопрос, как интерпретировать полученные сведения из ветки data\config.ini\[hotkey], задним умом я понимаю, что это сумма нескольких 10- или 16-ричных кейкодов в каком-то порядке, но вот что как конкретно, я пока не догоняю. Надд поэксприментить буит.

Это наш ответ этимъ вашим шлемберлинам!)

15
Добрый вечер!

Может быть, подобная тема уже была, но сегодня подредактировал свой набор констант, добавив в него сокращения для использовавшихся ранее подстановок (например, #backspace) для кодов клавиш, новые алиасы для букв русского/украинского алфавитов и клавиш, набираемых с зажатым шифтом. Файлик констант надо класть в data\const.txt. Его можно скачать во вложении либо скопировать из спойлера.

Делал изначально для себя комментарии ко всем псевдонимам кейкодов, но увы ClickerMann не стал нормально запускаться с ними, пришлось удалить все каменты с пояснениями.

Вот содержимое самого файла:
[spoiler=data/const.txt]
Code: [Select]
// Файл констант Clickermann

// --- Логика ---

#TRUE   1
#FALSE  0

#NULL  -1
#NIL   -1


// --- Клавиатура ---

#F1   112
#F2   113
#F3   114
#F4   115
#F5   116
#F6   117
#F7   118
#F8   119
#F9   120
#F10  121
#F11  122
#F12  123

#TAB        9
#BACKSPACE  8
#CTRL      17
#ALT       18
#SHIFT     16
#ENTER     13
#ESC       27
#SPACE     32
#CAPSLOCK  20

#PAGEUP    33
#PAGEDOWN  34
#END       35
#HOME      36
#INSERT    45
#DELETE    46

#LEFT   37
#RIGHT  39
#UP     38
#DOWN   40
 
#SCROLLLOCK  145
#PRINTSCREEN 154
#NUMLOCK     144

#0  48
#1  49
#2  50
#3  51
#4  52
#5  53
#6  54
#7  55
#8  56
#9  57

#A  65
#B  66
#C  67
#D  68
#E  69
#F  70
#G  71
#H  72
#I  73
#J  74
#K  75
#L  76
#M  77
#N  78
#O  79
#P  80
#Q  81
#R  82
#S  83
#T  84
#U  85
#V  86
#W  87
#X  88
#Y  89
#Z  90

#WIN   91
#LWIN  91
#RWIN  92

// --- Расширенный набор ---

#PAUSE 19
#BREAK 19
#NP0 96
#NP1 97
#NP2 98
#NP3 99
#NP4 100
#NP5 101
#NP6 102
#NP7 103
#NP8 104
#NP9 105
#MULT 106
#ADD 107
#SUB 109
#DIV 111
#DOT 110
#EQUAL 187
#COMMA 188
#DASH 189
#MINUS 189
#HYPHEN 189
#TIRE 189
#PERIOD 190
#SLASH 191
#GRAVE 192
#OBRACK 219
#CBRACK 221
#BACKSLASH 220
#QUOTE 222
#SEMICOLON 186
#APPS 93
//#LCLICK 1
//#RCLICK 2
//#MCLICK 4
#META 157
#CMD 157
//#COL 58
//#CFLEX 160
// #

// --- Мои аббревиатуры ---

#TB  9
#BS  8
#CT  17
#AL  18
#SH  16
#NT  13
#SC  27
#SPC 32
#CL  20
#ESCAPE  27

#PU     33
#PD     34
#ND     35
#HM     36
#INS    45
#NS     45
#DEL    46
#DL     46
#DLT    46
#DT     46

#LFT 37
#LF  37
#RT  39
#DN  40
 
#SL          145
#PRNSCR      154
#PRTSC       154
#PSN         154
#PS          154
#PRINT       154
#PSCREEN     154
#SCREEN      154
#NLOCK       144
#NL          144
#NUM         144
#NUMpad      144

#WN 91

// --- Символы с шифтом ---

#CPAR    48
#EXCLAM  49
#AT      50
#SHARP   51
#DOL     52
#PER     53
#CFLEX   54
#AMP     55
#AST     56
#OPAR    57

#COLON 186
#LT 188
#GT 190
#QUEST 191
#QUOTES 222
#NUMBER      50
#MINUS 189
#UNDER 189
#PLUS 187
#OCURL 219
#CCURL 221
#PIPE 220
#TILDE 192


// --- Русский алфавит, кроме букв ёхъжэбю ---

#AA  70
#VE  68
#GE  85
#DE  76
#YE  84
#ZE  80
#II  66
#IJ  81
#KA  82
#EL  75
#EM  86
#EN  89
#OO  74
#PE  71
#ER  72
#EC  67
#TE  78
#YY  69
#EF  65
#TS  87
#CH  88
#SC  73
#SZ  79
#YI  83
#MZ  77
#YA  90
// --- FDULTP BQRKVYJGHC NEAWXIOS MZ ---
// --- плюс буквы с шифтом: ё хъ жэ бю ---
#YO 192
#HA 219
#TZ 221
#ZH 186
#EE 222
#BE 188
#YU 190

// --- Украинские недостающие буквы: ---
// --- Ґґ, Єє, Іі та Її. ---

#GG 192
#GH 220
#IE 222
#IY  83
#YI 221
[/spoiler]

А вот как выглядел сам кликер с оставленными комментариями в конце строк этого файла констант:

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

Pages: [1] 2