Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

10 889 Posts in 6 264 Topics- by 1 216 Members - Latest Member: santini862

12 July 2020, 18:59
  Show Posts
Pages: [1] 2 3
1  Russian talks / Готовые скрипты / Re: Дайсомёт (dice roll) on: 3 August 2009, 14:56
Эм... Грани - понятно, кол-во кубиков - понятно. Что такое сложность? о.О
2  Russian talks / Общие вопросы / Re: Свой ник в дерево панели задач on: 30 September 2008, 19:47
Как вариант: в Конфигурации серверов изменить имя сети, дописав туда ник)
После подключения берется реальное имя сети, а не то, что в настройках.
Возможно, в дерево панели задач сделать так что бы в строке имя сети приписывался твой ник?
На сколько мне известно, такая функция не предусмотрена.
3  Russian talks / Общие вопросы / Re: Создание файлов локализации on: 26 September 2008, 16:24
У меня получилось Smiley
При использовании Poedit, скачивать другие утилиты необязательно, т.к. в нем есть все необходимое. Ну разве что какой-нить словарик языка Smiley
Опишу работу немного подробнее, если кто-то захочет воспользоваться.

Poedit общается с нами на русском языке, интерфейс удобен, и вопросов не вызывает. Минимум, что нужно сделать для начала перевода: настроить парсер и создать проект.
Жмем Файл - Установки - Парсеры
Здесь или создаем новый или редактируем любой существующий (кроме Delphi), который скорее всего не будем использовать. Все они настроены идентично, нужно только добавить расширение *.kvs. Если Вы создали новый парсер либо уверены, что редактируемый не будете использовать, меняйте ему имя (типа KVS или KRIrc Script Smiley ), в пункте Список ключевых слов вместо -k%k вводите -ktr. Жмем везде ОК.
Теперь жмем Файл - Создать каталог
По желанию заполняем поля, и самое главное указываем обе кодировки (Кодировка и Кодировка исходного текста) utf-8.
В Пути прописываем путь к каталогу с файлами скрипта.
В Ключевые слова добавляем tr, если не меняли это в парсере, а если меняли, то эти настройки не вызовут никакого эффекта.

Удачи в переводе! Wink
4  Russian talks / Общие вопросы / Re: Динамическая иконка на панели инструментов on: 21 September 2008, 22:38
KVIrc не умеет менять иконки в существующих "действиях" и следовательно в панели инструментов.
Создавай несколько действий для каждого из своих условий, а затем удаляй и добавляй нужное на панель. Правда сортировки тоже нет, если динамических кнопок несколько, придется удалять и добавлять все при каждом использовании.
Еще можно попробовать создать "свою" панель задач с помощью классов toolbar и toolbutton. На такой можно хоть в пинбол кнопками играть, но выглядит она немного иначе.
5  Russian talks / Вопросы по основам KVS / Re: Как работают обработчики *NickLink* on: 21 September 2008, 22:06
Очень надеюсь, что светлая сторона осветит этот кошмар Smiley
Но я так и не понял: нафига при нажатии на ссылку ника в канале срабатывают разные обработчики? Т.е. если юзер есть в канале, то срабатывает OnChannelNickDefaultActionRequest, а если нету - OnNickLinkDefaultActionRequest. Почему бы не всегда использовать OnNickLinkDefaultActionRequest? Если нужно проверить наличие пользователя, то можно сделать это в самом обработчике. Из-за этого бардака я не могу настроить разные действия на нажатия в никлесте и самом канале.
6  Russian talks / Вопросы по основам KVS / Как работают обработчики *NickLink* on: 21 September 2008, 13:30
В квирке есть аж пять обработчиков срабатывающих на нажатия на ник:
OnChannelNickDefaultActionRequest - при двойном клине на ник (в ник-листе)
OnChannelNickPopupRequest - при нажатии правой кнопки на нике (в ник-листе)
OnChannelNickLinkClick - при одиночном нажатие на ник (ссылку в канале, появился в 3.2.5)
OnNickLinkDefaultActionRequest - при двойном клике на ник (ссылку в канале)
OnNickLinkPopupRequest - при нажатии правой кнопки на нике (ссылку в канале)
Дык вот если нажимать на ник в ник-листе, то срабатывают только первые два обработчика.
А при нажатии на ссылку в канале...
Если этот ник сейчас в канале, то срабатывают первые два как в ник-листе, а если юзер с канала свалил, то последние два. OnChannelNickLinkClick срабатывает всегда.
Внимание вопрос:
Это баг или фича? Smiley И если фича, то как определить в OnChannelNickDefaultActionRequest откуда он вызван из ник-листа или из ссылки?

Походу, все это большой и жестокий баг и писать нужно было туда... но пока давайте разберемся.

Действие по умолчанию в OnNickLinkDefaultActionRequest - запрос WHOIS. Какой еще хуиз, если юзера нету? Сейчас точно, не помню, но вроде старых версиях (3.2.4) обработчики OnNickLinkDefaultActionRequest и OnNickLinkPopupRequest срабатывали независимо от наличия пользователя на канале. В привате они же срабатывают при нажатии на свой ник. При нажатии на ник собеседника, никаких событий не происходит. А точно помню, что был хуиз на даблклик...
В описании OnChannelNickLinkClick сказано, что у него нет параметров, а их там аж три штуки как в OnNickLinkDefaultActionRequest.
7  Russian talks / Скриптинг / Re: скрипт автокик on: 19 September 2008, 05:27
2 YuS
Да, есть такая фигня. Вот так должно работать:
Code:
event(OnNickChange,kicker)
{
  foreach(%chan,$window.list(channel))
  {
    %chan = $chan.name(%chan);
    if ($isset(%Kicker{$my.network%chan}{$0}))
    {
      %Kicker{$my.network%chan}{$3} = %Kicker{$my.network%chan}{$0};
      %Kicker{$my.network%chan}{$0} = $nothing;
    }
  }
}
8  Russian talks / Скриптинг / Re: скрипт автокик on: 18 September 2008, 05:09
Таких скриптов в сети валом. Хотя мне так проще написать свой, чем что-то искать, а потом в нем разбираться Smiley
Вот сварганил для тебя скриптик со скуки, может еще кому пригодиться.
Кстати, я его совершенно не тестил, прогнал всего раз...
Code:
event(OnChannelMessage,kicker)
{
  if ((!$chan.ismehalfop()) || ($chan.ishalfop($0))) return;
 
  /* Settings */
  /* 0 - disable */
  %caps = 6; // (1 - MaxInt) На сколько больших букв может быть больше маленьких
  %maxRepeats = 2; // (1 - MaxInt) Сколько одинаковых сообщений можно послать подряд
  %floodMsg = 0; // (1 - MaxInt) Сколько сообщений можно послать
  %floodTime = 5000; // ms (1000 - maxInt) за это время
  %maxKicks = 2; // (0 - MaxInt) Скольк киков, а затем бан
  %myChans{"NetworkName1"} = $array("#chan1","#chan2");
  %myChans{"NetworkName2"} = $array("#chan1","#chan2","#chan3");
  /* %myChans{"NetworkNameN"} = $array("#chanN","#chanN+1"); # etc... */
  /* End of Settings */
 
  %chan = $chan.name();
 
  foreach (%myChan,%myChans{$my.network()})
  {
    if ($str.equal(%chan,%myChan))
    {
      %myChan = $str.append($my.network(),%myChan);
      unset %myChans;
      break;
    }
  }
  if ($isset(%myChans)) return;
 
  if (!$isset(%Kicker{%myChan}{$0}{"kicked"}))
    %Kicker{%myChan}{$0}{"kicked"} = 0;
  if (!$isset(%Kicker{%myChan}{$0}{"repeats"}))
    %Kicker{%myChan}{$0}{"repeats"} = 1;
  if (!$isset(%Kicker{%myChan}{$0}{"flood"}))
    %Kicker{%myChan}{$0}{"flood"} = 0;
 
  if (%caps)
  {
    %message = $unicode($3);
    foreach (%char,%message)
    {
      if ((%char >= 65) && (%char <= 90)) %caps--;
      if ((%char >= 97) && (%char <= 122)) %caps++;
      if ((%char >= 1040) && (%char <= 1071)) %caps--;
      if ((%char >= 1072) && (%char <= 1103)) %caps++;
    }
    if (%caps < 0)
    {
      %Kicker{%myChan}{$0}{"kicked"}++;
      if (%Kicker{%myChan}{$0}{"kicked"} > %maxKicks)
        kb $0 "Сделай глубокий вдох. Затем медленный выдох. А теперь выключи Caps Lock."
      else
        kick $0 "Не за чем так шуметь. Здесь люди тихие, спокойные.";
      return;
    }
  }
 
  if (%maxRepeats)
  {
    if ($str.equal(%Kicker{%myChan}{$0}{"lastmsg"},$3))
    {
      %Kicker{%myChan}{$0}{"repeats"}++;
      if (%Kicker{%myChan}{$0}{"repeats"} > %maxRepeats)
      {
        %Kicker{%myChan}{$0}{"kicked"}++;
        if (%Kicker{%myChan}{$0}{"kicked"} > %maxKicks)
          kb $0 "Заикание - страшная болезнь. Возвращайся как вылечишься."
        else
          kick $0 "Кажется кто-то начинает повторяться, повторяться...";
      }
      return;
    }
    %Kicker{%myChan}{$0}{"lastmsg"} = $3;
    %Kicker{%myChan}{$0}{"repeats"} = 0;
  }
 
  if (%floodMsg)
  {
    %Kicker{%myChan}{$0}{"flood"}++;
    timer -s ($unixtime,%floodTime,"\%Kicker{%myChan}{$0}{\"flood\"}--")
    {
      eval $0;
    }
    if (%Kicker{%myChan}{$0}{"flood"} > %floodMsg)
    {
      %Kicker{%myChan}{$0}{"kicked"}++;
      if (%Kicker{%myChan}{$0}{"kicked"} > %maxKicks)
        kb $0 "Прочь, нечисть!"
      else
        kick $0 "Чрезмерная болтливость до добра не доведет.";
      return;
    }
  }
}

event(OnNickChange,kicker)
{
  foreach(%chan,$window.list(channel))
  {
    %chan = $chan.name(%chan);
    if ($isset(%Kicker{$my.network%chan}{$0}))
    {
      %Kicker{$my.network%chan}{$3} = %Kicker{$my.network%chan}{$0};
      %Kicker{$my.network%chan}{$0} = $nothing;
    }
  }
}
Сначала устанавливаешь нужные переменные, если какой-то режим тебе не нужен, ставь 0.
"Антикапс" считает только буквы, другие символы игнорируются, не советую ставить значения меньше 3х, т.к. общей проверки на длину сообщения нет. Я выставил 6, чтобы можно было написать хотябы "ПРИВЕТ" Smiley
Повторы считаются с 1. Т.е. при значении 2, кик будет за 3е сообщение.
Антифлуд лучше не юзать Smiley
В %myChans устанавливаются имя сетей и каналов, их может быть любое количество.
Ах да... В самой первой строчке проверка, что ты оператор, а человек написавший сообщение им не является, если нужно кикать опов или не кикать войсов, то ее нужно откорректировать.
Вроде усё...
9  Russian talks / Сообщения об ошибках в программе / Функция $file.readLines on: 17 September 2008, 22:21
При попытке загрузить с помощью $file.readLines не весь файл, в получаемом массиве оказывается только одна строка.
Quote
3.4.1 - svn-2298 - 20080825 - Aug 26 2008 10:53:06
Windows 2003 - Version 5.2.3790
Примеры:
В aphorism.txt 88 строк текста.
Code:
%var = $file.readLines($file.localdir(misc/aphorism.txt),0,0,l);
Работает корректно Smiley В массиве %var 88 элементов (индексы 0-87) с фразами.
Code:
%var = $file.readLines($file.localdir(misc/aphorism.txt),0,10,l);
Загружает только 10ую строку. В массиве %var только один элемент с индексом 0 и текстом 10ой строки.
Code:
%var = $file.readLines($file.localdir(misc/aphorism.txt),10,5,l);
Загружает только 15ую строку. В массиве %var только один элемент с индексом 0 и текстом 15ой строки.
10  Russian talks / Общие вопросы / Re: Создание файлов локализации on: 17 September 2008, 21:26
Для начала, свой скрипт.
11  Russian talks / Общие вопросы / Создание файлов локализации on: 17 September 2008, 21:17
Здравствуйте!
Люди добрые, научите меня глупого создавать файлы локализации типа *.mo И хотелось бы делать это в "родной" ОС Windows. Из того, что написано в справке, я ничерта не понял Sad
12  Russian talks / Общие вопросы / Re: Последовательность поиска графики on: 17 September 2008, 21:07
удалил все файлы из $file.globaldir"//pics", предварительно скопировав их все в $file.localdir"//pics". Все работает.
Гениальное решение! Smiley Проделай теперь все наоборот, и (о чудо!) все будет работать Smiley
Квирк не только графику, он вообще все, что можно загружает сначала из директории пользователя. К этому относятся все файлы конфигурации, справки и даже dll-ки с so-шками Wink Вот если он чего-то не нашел у пользователя, тогда берет из глобального каталога, но если и там чего-то не окажется, он будет пытаться работать... Smiley

Кстати, я у себя некоторую графику подменил, причем в глобальной дериктории оставил стандартную (аля бэкап). Вот в аттаче перерисованные мною иконки пола, а то стандартные какие-то перекошенные.
13  Russian talks / Общие вопросы / Re: Отличие KVIrc 3.4.0 ‘Virgo’ от KVIrc 3.2.6 ‘Anomalies’ on: 17 September 2008, 20:53
А помоему квирк замечательно работает с русским языком. И любым другим языком тоже Wink
А отлаживать и вылизывать программу такого уровня можно не один год, а не то, что месяц. Не бывает программ без ошибок.
14  Russian talks / Скриптинг / Re: Дата в подсказке к сообщению on: 17 September 2008, 20:27
2 Skull
Я достаточно догадлив, чтобы почитать описание всех функций KVS, работающих со временем. В функции $date символ "m" обозначает месяц числом, а "M" - минуты с ведущим нулем. В timestapm: "mm" - минуты с ведущим нулем, "m" - минуты без ведущего нуля и т.д. Короче, ничего общего между ними нет Wink

2 Maximusya
Я ценю заботу о чистоте форума, однако похоже Вы не поняли вопрос. Я спрашивал как можно настроить метку времени так, чтобы в ней были всплывающие подсказки? Или, если это невозможно (как я полагаю), что можно предпринять, чтобы получить идентичную функциональность? Предложенный мною скрипт не решает поставленную задачу, и является (временным?) компромисом. Впрочем, сердцем чую, что все придется делать через скрипты, а то и исходник ковырять... Sad
15  Russian talks / Скриптинг / Дата в подсказке к сообщению on: 16 September 2008, 13:59
Доброго времени суток.
Стандартная метка времени предусматривает только часы, минуты и секунды. Но т.к. квирк у меня запущен почти постоянно, не всегда понятно от какого числа сообщение (особенно в привате)... Первое, что пришло в голову:
Code:
dd.MM |hh:mm:ss|
Удивительно, но это работает. Несколько экспериментов показали, что возможно еще много вариантов, а вот документации на эту тему я не нашел.
Однако мысль пошла дальше. Smiley Получившийся длинный timestamp выглядит не гармонично и не всегда востребован. Поэтому я подумал сделать короткую метку, а полную дату в подсказке...
Code:
$char(13)![!txt]dd/MM/yy hh:mm:ss$char(13)hh:mm$char(13)
Т.к. обработчики ($char(13) или $cr) не преобразуются, символ переноса строки воткнул напрямую. Но вместо ссылки получилась просто строка, символы перевода отобразились квадратиками.
Для эксперимента, затолкал эту конструкцию в префикс отображения ника, там все работает, но дата/время не преобразуются, функции типа $date() тоже не преобразовываются.
Дело странное. И метка и префикс выводятся в одной строке одной функцией. Может во время преобразования времени происходит какое-то доп. форматирование, убивающее формат ссылки, и которого на экране не видно? Можно ли это как-то обойти? Или над меткой не выполняются некоторые функция форматирования, которые и создают ссылку? Есть ли возможность их прикрутить?

Собственно вопрос: Есть ли метод вывода полной даты в подсказке к каждому сообщению? В идеале, настройки соответствующим образом метки времени.

Пока сделал так:
Code:
event(OnChannelMessage,megatimestamp)
{
echo -n -i=25 $k(14)$cr![!txt]$date("d/m/Y H:M:S")$cr|$date("H:M:S")|$cr$k $option(stringExtendedPrivmsgPrefix)$b$0$b$option(stringExtendedPrivmsgPostfix)$3
halt
}
event(OnQueryMessage,megatimestamp)
{
echo -n -i=26 $k(14)$cr![!txt]$date("d/m/Y H:M:S")$cr|$date("H:M:S")|$cr$k $option(stringExtendedPrivmsgPrefix)$b$0$b$option(stringExtendedPrivmsgPostfix)$3
halt
}

Вроде пашет... Undecided
Pages: [1] 2 3
Theme orange-lt created by panic