[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » IRC » mIRC скриптинг » Написание диалоговых окон в mIRC
Написание диалоговых окон в mIRC
[StingeR]Дата: Воскресенье, 22 Февраль 09, 01:06:59 | Сообщение # 1
Почетный флудер
Группа: Главные Администраторы
Сообщений: 775
Статус: Offline

Написание диалоговых окон в mIRC

С появлением новой версии mIRC, 5.5 появилась новая возможность - диалоговые окна, диалоги. Это было то, что требуется для написания скриптов более высокого уровня, для тех, кто до сих пор пытался использовать графические окна для создания более дружественного интерфейса с пользователем. Для нормального восприятия этой статьи неплохо было бы знать основы написания скриптов. Не рекомендуется для новичков в этом деле. Следующие разделы написания скриптов для mIRC неплохо было бы знать для нормального изучения этой статьи.

Использование переменныхидентификаторов (variablesidentifiers)
Знание алиасов (aliases)
Базовые знания скриптов (remote)

Для работы всего, что приведено в примерах требуется наличие mIRC 5.51, но не менее, т.к. со времён 5.5 были некоторые добавления, касающиеся диалогов. И вообще, хорошо писать скрипты используя последнюю версию mIRC, которая всегда доступна на http://www.mirc.com/get.html. Для тех, кто все ещё интересуется, что же это за такие диалоговые окна - продолжаете читать и вставлять примеры в редакторе mIRC. Вы получите ясную картину и понятие, что же это за такое. Ну хватит предыстории, приступим к скриптописательству. В этой статье я вас не буду учить писать диалоговые окна так как их можно с легкостью сделать при помощи программы дстудио, но в этой статье я вам покажу как заставить диалог функционировать(к примеру выполнять какую нибудь команду при нажатии на кнопочку). Ниже осмотрим События, некоторые команды и идентификаторы для работы с диалоговыми окнами.

Примечание ID пишется после элемента управления(к примеру: edit "",1,..... здесь ид=1, button "button",112,... здесь ид=112)

The On Dialog event

Если пользователь изменил значение элемента управления в окне (щелкнул кнопку, ввел текст) вызывается обработчик события.

on 1:dialog:name:event:id: {
echo $dname $devent $did
}

Где name – имя окна, id – идентификатор элемента управления, event может быть:

init перед открытием окна значения элементов управления могут быть проинициализированы. id =0.
close закрытие окна.
edit изменен тест в редакторе или состояние combo box.
sclick одиночный клик на list/combo box, поставлена или снята отметка на radio/check или нажата кнопка.
dclick двойной клик на list/combo box.
menu выбран элемент меню.
scroll позиция элемента scroll изменена.

Также вы можете определять mouse events:

mouse перемещение мыши
sclick левая кнопка нажата
uclick левая кнопка отжата
dclick двойной клик
rclick клик на правой кнопке
drop drop click

Идентификатор $mouse определяет текущую позицию окна.

Команда /did

Команда /did служит для изменения значений элементов управления окна (например, изменить текст в окне редактора, установить фокус на кнопку, удалить строчку из listbox).

/did -ftebvhnmcukradiogj name id [n] [text | filename]

-f установить фокус на элемент управления [id]
-t установить кнопку по умолчанию
-e разрешить элемент управления [id]
-b запретить элемент управления [id]
-v сделать видимым элемент управления [id]
-h спрятать элемент управления [id]
-n разрешить элемент editbox
-m запретить элемент editbox
-c отметить checkbox/radiobutton, строку list/combo
-u снять отметку checkbox/radiobutton, со строки list/combo
-k не изменять существующих отметок в listbox (работает вместе с –cu)
-r очистить текст в элементе управления [id]
-a добавить текст к концу строки
-d удалить N-ую строку
-i вставить N-ую строку
-o перезаписать N-ую строку
-g установить новую иконку/изображение в icon control
/did -g name id [n] filename -z сбросить ширину горизонтального scrollbar в элементе listbox
-j сбросить изменения в элементе editbox

Где name - это идентификатор диалогового окна, id - это номер элемента.
Если вы хотите изменить значения сразу нескольких элементов, укажите несколько номеров [id] разделенных запятой, например: /did -b name 2,12,14,16 и т.д.
Вы можете выбрать часть текста в элементе editbox, начиная с позиции N, используя команду /did -c name id [n] [start [end]].
Вы можете отметить 3state в элементе checkbox как неопределенную используя сразу два ключа -cu.
Чтобы получить доступ к редактированию элемента combobox используйте N = 0.
Чтобы изменить длину элемента scrollbar используйте команду /did -z name id [min max].

Идентификатор $did()

Вы можете получить значения и состояния элементов управления, используя идентификатор $did().

$did(name,id)
$did(name,id,N)

Если используется в обработчике события окна, name не указывается.

Свойства идентификаторы $did():

text возвращает строку или N-ую строку
$did(id) - то же самое, что и $did(id).text len возвращает длину строки или длину N-ой строки
lines возвращает количество строк
sel возвращает номер N-ой отмеченной линии
если N == 0, возвращает количество отмеченных линий seltext возвращает выделенный текст в элементе editbox или первый выделенный item в элементе listbox
selstart возвращает первый выделенный символ в строке элемента editbox
selend возвращает последний выделенный символ в строке элемента editbox
edited возвращает $true текст в элементе editbox был изменен
state возвращает 0 = выключено, 1 = включено, и 2 = не определено
next возвращает id следующего элемента управления (tab key order)
prev возвращает id предыдущего элемента управления (tab key order)
visible возвращает $true если элемент виден, в противном случае $false
enabled возвращает $true если элемент разрешен, в противном случае $false

Чтобы получить доступ к редактированию элемента combobox используйте N = 0.

Идентификатор $didwm(name,id,wildtext,N)

Возвращает номер строки которая содержит wildtext, начиная поиск со строки N. Параметр N не обязателен.

Идентификатор $didreg(name,id,regex,N)

Возвращает номер строки содержащей regex, начиная поиск со строки N. Параметр N не обязателен.

Идентификатор $didtok(name,id,C)

Возвращает список токенов в элементах list/combo/edit box.

Чтобы добавить список токенов в элементы list/combo/edit box, используйте команду /didtok name id C text.

Теперь давайте рассмотрим несколько примеров:

Code
alias enterpass dialog -m Enterpass Enterpass
dialog Enterpass {
title "Введите ваш пароль"
size -1 -1 300 60
edit "",1,20 10 260 20, pass
button "&OK",2,21 30 129 17, ok
button "&Cancel",3,150 30 130 17, cancel
}  
on *:DIALOG:Enterpass:sclick:2: {
msg nickserv identify $did(1) }

В этом скрипте при нажатии /enterpass откроется диалоговое окно в котором надо ввести пароль и нажать ок, при нажатии ок скрипт посылает запрос идентификации NickServ'у.

Code
alias proverka dialog -m proverka proverka
dialog proverka {
title "Проверка"
size -1 -1 300 60
edit "",1,20 10 260 20
button "&OK",9,21 30 129 17, ok
button "&Cancel",3,150 30 130 17, cancel
}  
on *:DIALOG:proverka:sclick:9: {
echo -a proverka proshla uspeshno vi vveli v okno vvoda: $+ $did(1) }

Этот скрипт анологичен прошлому результат увидите сами

Code
dialog test {
   title "test"
   size -1 -1 141 67
   option dbu
   list 1, 4 12 50 50, size
   button "add", 2, 81 24 37 12
   edit "", 3, 64 13 71 10
}
on *:DIALOG:test:sclick:2: {
did -a test 1 $did(3) }

наберите /dialog -m test test и наберите в правом окне ввода любое слово после чего нажмите add и этот текст появится в списке(слева)



"Не популярность ирц падает а народ тупеет. большинство просто дебилы и дауны даже ебоаську не могут настроить. а там всё просто как для дебилов. а мирку настроить не могут даже большинство тех кто в ирц тусуются. юзают ебоскрипты от криворуких для ламеров. см. челябу. там все на переделанных мирках сидят. классической миркой пользуются уже единицы из-за того что её надо настраивать.
про другие ирц клиенты вобще молчу.
скайп и майл агент вобще говно для даунов. там даже кнопки разноцветные чтоб на уровне животного инстинкта могли реагировать что красную нажимать надо с опаской а зелёную жмакать можна многа." (с) E}|{uk

 
[StingeR]Дата: Вторник, 10 Март 09, 00:42:53 | Сообщение # 2
Почетный флудер
Группа: Главные Администраторы
Сообщений: 775
Статус: Offline

Диалоговые окна (Dialogs)
Автор: Ceta

Перевод: Basilisk
Дата: 11/10/1999

URL:http://irc-scripts.com/articles/view.php3?id=9

С появлением новой версии mIRC, 5.5 появилась новая возможность - диалоговые окна, диалоги.

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

Для нормального восприятия этой статьи неплохо было бы знать основы написания скриптов. Не рекомендуется для новичков в этом деле. Следующие разделы написания скриптов для mIRC неплохо было бы знать для нормального изучения этой статьи.
Использование переменныхидентификаторов (variablesidentifiers)
Знание алиасов (aliases)
Базовые знания скриптов (remote)

Для работы всего, что приведено в примерах требуется наличие mIRC 5.51, но не менее, т.к. со времён 5.5 были некоторые добавления, касающиеся диалогов. И вообще, хорошо писать скрипты используя последнюю версию mIRC, которая всегда доступна на http://www.mirc.com/get.html.

Для тех, кто все ещё интересуется, что же это за такие диалоговые окна - продолжаете читать и вставлять примеры в редакторе mIRC. Вы получите ясную картину и понятие, что же это за такое.

Ну хватит предыстории, приступим к скриптописательству. Начнём это с простейшего диалогового окна "введите пароль".

Это будет диалоговое окно, которое появляется и запрашивает у человека пароль, который затем хранится в переменной. Вставьте всё это в mIRC редакторе в раздел remote:

alias enterpass dialog -m Enterpass Enterpass
dialog Enterpass {
title "Введите ваш пароль"
size -1 -1 300 60
edit "",1,20 10 260 20, pass
button "&OK",2,21 30 129 17, ok
button "&Cancel",3,150 30 130 17, cancel
}

Ну графический интерфейс для нашего диалогового окна завершён. Чтобы посмотреть на это творение просто наберите /enterpass в любом окне.

А сейчас нам предстоит разобраться, что же всё это значит.

В первой строке мы видим алиас. Алиас называется enterpass и делает немодальное диалоговое окно под названием Enterpass с таблицей, имеющей название Enterpass. Большинство диалоговых меню, которые делаются являются немодальными. Вообще немодальное диалоговое окно - такое окно, которое не возвращает никакого значения в вызывающий скрипт. Формат этого таков: /dialog -m [название] [таблица]

А сейчас нам надо создать таблицу диалогового окна. Всё это описано в файле справки от mIRC, но рассмотрим подробнее:

Первая часть - это заголовок (title) появляющийся вверху окна.

Далее нам надо задать размер окна (size), а используя -1 and -1 мы можем отцентрировать наше окно. Следующие 2 значения - это значение ширины и высоты окна.

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

Следующий элемент, который мы создаём - кнопка под названием &OK. Символ "&" в названии перед буквой "O", означает, что она будет подчёркнута и будет горячей клавишей, доступной в комбинации с Alt (т.е. нажатие Alt+O нажмёт кнопку). А "ok" в конце описания означает, что кнопка это кнопка типа "ОК".

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

Но как вы уже могли заметить, ввод пароля в окне не делает абсолютно ничего. Ведь нами диалог только нарисован. Сейчас пойдём дальше. Вставьте следующую строку в секцию remote:

on 1:DIALOG:Enterpass:sclick:2:{ set %password $did(Enterpass,1).text }

Что это значит? Всё просто. При одиночном нажатии на кнопку с идентификатором 2 (а ведь это кнопка OK), в переменную %password заносится текст, содержавшийся на этот момент времени в строке и идентификатором 1 (наш editbox)

Здесь используются как события в диалоговых окнах, так и идентификатор $did(). Рассмотрим по порядку.

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

on 1:DIALOG:Название:Событие:Идентификатор:{ Команды }

Название нашего диалога Enterpass. Событие, которое происходит - sclick (это означает одиночный щелчок мышью)

Допустимые события - init, edit, sclick, dclick.(Подробную информацию смотрите в справке. Там это всё детально описано)

Идентификатор элемента, который мы хотим использовать - 2. Это наша кнопка ОК. Поэтому как только пользователь нажимает кнопку, пароль сохраняется. При нажатии Cancel ничего не происходит.

Конечно, пароль ввести проще используя такую конструкцию:

alias enterpass set %password $?*="Enter your password"

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

Как разъяснялось выше, это пример немодального диалогового окна. Но есть ещё один тип диалоговых окон - модальные. Для скрипта, рассмотренного в качестве примера, наверное, лучше использовать именно модальное диалоговое окно.

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

edit "",1,20 10 260 20, pass, result

А теперь добавьте ещё одну строку в remote:

alias enterpass2 %password = $dialog(Enterpass,Enterpass)

Теперь вызов /enterpass2 нарисует нам такое же диалоговое окно, и всё, что было введено, сохранится в переменной %password.

Добавление слова "result" информирует скрипт о том, что информация должна быть сохранена, при выходе из скрипта. Нажатие Cancel в переменную %password занесёт "".

Модальные диалоговые окна гораздо более удобны для такого типа скриптов, потому что они используются для непосредственного ввода информации от пользователя. Но с другой стороны, немодальные диалоговые



"Не популярность ирц падает а народ тупеет. большинство просто дебилы и дауны даже ебоаську не могут настроить. а там всё просто как для дебилов. а мирку настроить не могут даже большинство тех кто в ирц тусуются. юзают ебоскрипты от криворуких для ламеров. см. челябу. там все на переделанных мирках сидят. классической миркой пользуются уже единицы из-за того что её надо настраивать.
про другие ирц клиенты вобще молчу.
скайп и майл агент вобще говно для даунов. там даже кнопки разноцветные чтоб на уровне животного инстинкта могли реагировать что красную нажимать надо с опаской а зелёную жмакать можна многа." (с) E}|{uk

 
_Dimon_Дата: Четверг, 31 Декабрь 09, 00:31:07 | Сообщение # 3
Заслуженый юЗверь
Группа: Администраторы
Сообщений: 80
Статус: Offline

Заебись respect
 
[HeHaBu}I{y_DoM_2]Дата: Понедельник, 20 Сентябрь 10, 14:37:29 | Сообщение # 4
Задрот
Группа: Проверенные
Сообщений: 148
Статус: Offline

Заебись

 
Форум » IRC » mIRC скриптинг » Написание диалоговых окон в mIRC
Страница 1 из 11
Поиск:

Copyright MyCorp © 2017Хостинг от uCoz