Скриптинг

deem

Administrator
Команда форума
#1
Видимо возникает необходиость в открытии этой темы "СКРИПТИНГ". Пока это первая серьезная тема, но я думаю по мере работы будут возникать новые :) .
Отныне все что касается написания собственных скриптов или же разбора чьих-то, уже существующих, следует обращаться к этому разделу.
Ждем вас ;)
 

deem

Administrator
Команда форума
#2
ответ

JOUS, по поводу твоего вопроса про такой вот скриптик: /F4 editbox -ap $snick(#,1) $+ ,
Итак, сразу хочу тебя огорчить, ты не сможешь получить тот результат который ожидал, это как наши желания не совпадают с нашими возможностями :) Обьясняю:
Для начала разберем тот скрипт про который ты спрашивал. Суть его в том что при нажатии клавиши F4 он в стоку ввода сам вписываеи ник который у тебя выделен в окне списка ников, иногда это конечно очень удобно, тем более для ников которые так сразу и не наберешь руками :). Из чего он состоит:
начнем с того что прописывется он в так называемых "алиасах".

/ - любой алиас начинается с этого префикса (как и команды в ирце).

F4 - указывает что выполнение команд идущих далее будет забито на клавишу F4.

editbox - собственно официальное название строки ввода (та хрень где ты привык писать что то типа "дарова народ!" ;)

-ap - ключи относящиеся к editbox'у где а-активное окно, а р-указывает что содержимое будет добавлено в текст.

$snick(#,1) - указатель на выделенный ник в списке всех ников канала.

$+ - переменная, указывающая что в текст необходимо добавить пробел, ну и там запятая в конце это понятно для чего.

В итоге, ты жмешь F4, а скрипт в ответ на это берет выделенный ник на активном канале, добавляет к нему пробел с запятой, и все это барахло кидает в строку ввода. Хотя, если быть еще точнее, он заменяет содержимое строки ввода. Именно заменяет а не добавляет. Разница есть. Для того чтобы он смог к введенным ранее символам ДОБАВИТЬ ник, ему нужно бы было как минимум знать что там было введено раньше, а сделать это ни как нельзя пока не произойдет какое либо событие. Естественно из-за ограниченности языка ближайшее перехватываемое событие это <on INPUT> т.е. реакция на ввод.

Например, вот такой скрипт:
on 1:INPUT:#:/query root Санек, я только что сказал на канале: " $1- "
его работа такова, что после того как ты что нить ввел в строку ввода (например "ПРИВЕТ!") и нажимаешь ENTER, тут же юзверю с ником root посылается приватное сообщение:
<Санек, я только что сказал на канале: ПРИВЕТ!>
(уважаемые, просьба не повторять такой пример в жизни, это вам боком выйдет :) )
привет Руту :p

Но нам то это не подходит, слишком поздно, мы ведь хотели добавить ник ДО того как нажмем ENTER, поэтому сделать что то в таком роде лично мне не представляется возможным. Конечно, встроенный язык скриптов очень удобен, и довольно гибок, но таких тонких вещей он делать не позволяет. Так что иногда приходится искать другие пути осуществления своих желаний. Главное не падать духом. ;)
P.S. Да Вань, хороший вопрос для открытия новой темы :rolleyes:
 

skif

Житель центра
#3
Я только начинаю изучать скриптинг, поэтомы если то что я пишу глупо плс не в отстой!!!Я уже давно думаю над тем как бы использовать ArmavirBot, и вот накорябал некий скриптик, совершенно не уверен что он правильный (скорее наоборот), так что укажите на ошибки, исправлюсь ;-). Скрипт такой:

@ ON KICKED:*:#:/ chanserv unban # |/chanserv deop #$nick |/join # |/chanserv op # $me |/timer $nick 1 60 |kick # $nick {и далее что-нить ругательное}

Как видно скрипт реагитует на кик, причем для его исполнения нужен статус опа, и естессно он не будет работать против чела в более высоким статусом. Для неособо знающих: если вас кто-нить попытался кикнуть то скирпт востанавливает вас на канале, а тому гаду шлет какую-нибудь мессагу (можно заменит киком, баном, etc)
 

GMX

schizophrenic
#4
Дайте мне плз ссылочку на доку, где можно почитать про числовые raw значения(если не жалко, конечно )
 

GMX

schizophrenic
#6
2 skif

Исходное сообщение от skif

@ ON KICKED:*:#:/ chanserv unban # |/chanserv deop #$nick |/join # |/chanserv op # $me | >>>>>/timer $nick 1 60<<<<<{ЗДЕСЬ НЕПРАВИЛЬНО} |kick # $nick {и далее что-нить ругательное}
Лучше сделать так:
on *:KICK:#: if ($knick == $me) && ($nick != $me) {if ($nick isop $chan) {chanserv deop # $nick} и тут остальное}

Насчет таймера я вообще не понял, что ты сделать хотел.... Вырежь его просто он там вообще не нужен, или напиши что-нить типа "/timer 20 1 /ctcp $nick echo Вот ты урод!"
:]
А дальше кик(хотя кикать не рекомендую)
 

GMX

schizophrenic
#7
2 JOUS

Если хошь, то мона вот такую хрень написать:
F4 /msg # $snick(#,1) $+ , $$?="Что сказать?"
................................................
Хотя это тоже страдалово....
 

GMX

schizophrenic
#8
Товарищи! Поактивнее плз на форуме :)) !!! (шЮтка)
У меня вопрос:
почему я не могу заменить стандартный version ответ?
В общем пишу ctcp *:ping(или time или еще чего):?: /halt --работает.
А если version, то все равно мирк посылает ответ.
В чем дело?
 

skif

Житель центра
#9
пасибки

Пасиба, твое сравнение кикнутого ника с моим по красивей будет %(
А у кого нить есть мануал по mIRC? а то познавать скриптинг по вороху разрозненных статей и нескольким примерам как-то несподручно :- Если есть киньте на мыло плс...
 

Horky

Гость города
#10
всем привет!
есть у меня большое желание вести такой лог, чтобы там отображались ip и все имена чатеров бывших под этим айпишником ну например
10.2.6.1 вася, коля(вышел ) петя......
10.2.6.2 галя клава леня(эвей).....
10.2.6.3.....
10.2.6.4......
и тд.....
в общем как то так)))
Скрипты я писать не умею поэтому у меня вопрос где можно надыбать подобный скрипт? знаю что у ботов такая штука реализована, мож кусок бота можно вырвать и написать подобный скрипт?
 

WuCH

Гость города
#11
привет всем рульная тема я скрипты неочень знаю но кое что умею...
вот например скрипт защиты от деопа:
on *:deop:#:{ if $opnick == $me && $nick != $me { .raw cs o # $me | kick # $nick deop off } }
всё пашет прекрасно... по крайней мере в дал нете...

а скрипт против бана не прёт никак, писал по образу и подобию защиты от кика (с) GMX:

on *:BAN:#: if ($bnick == $me) && ($nick != $me) { if ($nick isop $chan) { msg chanserv unban # } { ban # $nick } { kick # $nick пшол вон } }

1. чансерв не разбанивает нивкакую
2. кик бан идут до того как меня разбанит чансерв

изза этого получается облом. GMX если знаешь как этоо исправить помоги plz ..