EpicNet.Ru - Форум IRC Чата

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » EpicNet.Ru - Форум IRC Чата » HELP SCRIPTS - Помощь по mIRC скриптам » Save channels list to INI file via WRITEINI


Save channels list to INI file via WRITEINI

Сообщений 1 страница 3 из 3

1

I want to write and save the channels list to a file INI using the WRITEINI command.

Here is my code:

Код:
raw 322:*:{ set %canales $2 }  
raw 323:*:{ writeini c:\i\mirc\report.rts %canales | halt }

I DONT know what am I doing wrong?

2

1241,351 написал(а):

I want to write and save the channels list to a file INI using the WRITEINI command.
I DONT know what am I doing wrong?

Если вы хотите при помощи команды "/WRITEINI" записывать в файл INI все каналы, которые присутствуют в списке каналов, то вы делаете это не правильно.

[indent=0.8,0.5]
Ошибка 1:
Правильный синтаксис команды: /writeini [-n] <inifile> <section> <item> <value>

[-n] - Заставляет mIRC производить запись в файл INI, даже если он больше 64k (Для mIRC 7+ ключ устарел).
<inifile> - Имя файла, в который будет производиться запись.
<section> - Название секции.
<item> - Название элемента секции.
<value> - Данные для хранения в элементе секции.

Все эти параметры должны быть указаны в обязательном порядке. Подробнее здесь: https://en.wikichip.org/wiki/mirc/commands/writeini

Пример записи в файле:

[indent=0.8,0.5] [section]
[indent=0.8,0.5] item=value


Ошибка 2:
Необработанное событие под номером "raw 323" перехватывает только одну строку, отправляемую сервером с сообщением, которое извещает о завершении чтения списка каналов. Поэтому в таком виде ваша запись будет произведена только 1 раз с самым последним перехваченным названием канала. Чтобы правильно записывать каждую новую полученную строку от сервера из списка каналов, вам нужно использовать событие под номером "raw 322".

Подробнее здесь: https://en.wikichip.org/wiki/mirc/raw_events


Кроме того из вашего вопроса и примера не совсем понятно как вы именно хотите производить запись списка каналов. Для этого есть несколько способов:

[indent=0.8,0.5] 1. Записывать все каналы в виде элементов одной единственной секции.
[indent=0.8,0.5] 2. Записывать каждый канал в отдельную секцию со своими элементами.

[indent=0.8,0.5]
Вы можете попробовать использовать один из нескольких вариантов скрипта с разными способами записи файла.

1. Для записи с созданием множества элементов в виде названий каналов в одну единственную секцию "ChannelsList":

Код:
raw 321:*:{
  set -u25 %chanlist start
  if (%chanlist == start) {
    set -u25 %chanfile C:\i\mirc\chanlist.ini
    if ($exists(%chanfile)) .remove %chanfile
    .echo -st $+([,$numeric,]) Start of reading for channels list. | haltdef
  }
}
raw 322:*: if (%chanlist == start) { .writeini %chanfile ChannelsList $2 $3- }
raw 323:*: if (%chanlist == start) { unset %chanlist %chanfile | .echo -st $+([,$numeric,]) End of reading for channels list. | haltdef }

2. Для записи с созданием множества секций в виде названий каналов со своими отдельными элементами и их значениями:

Код:
raw 321:*:{
  set -u25 %chanlist start
  if (%chanlist == start) {
    set -u25 %chanfile C:\i\mirc\chanlist.ini
    if ($exists(%chanfile)) .remove %chanfile
    .echo -st $+([,$numeric,]) Start of reading for channels list. | haltdef
  }
}
raw 322:*:{
  if (%chanlist == start) {
    var %chan $2 | var %users $3 | if ([+ !isin $4) var %topic $4-
    else { var %modes $+($gettok($4-,1,93),]) | var %topic $gettok($4-,2-,93) }
    if (%users) .writeini %chanfile %chan users %users | else .writeini %chanfile %chan - -
    if (%modes) .writeini %chanfile %chan modes %modes
    if (%topic) .writeini %chanfile %chan topic %topic
  }
}
raw 323:*: if (%chanlist == start) { unset %chanlist %chanfile | .echo -st $+([,$numeric,]) End of reading for channels list. | haltdef }

Для проверки наберите команду "/list".

[indent=0.8,0.5]
Если у вас ещё остались вопросы по этой теме, то пожалуйста оставьте их здесь.

Отредактировано Epic (13.10.2021 13:00)

Подпись автора

[html]<style>img {vertical-align:middle;}.hnet{color:#FFFFFF;}.hstar{color:#DE0000;}.htext{font-family:Verdana;font-size:13px;color:#6E1E00;}.heading{font-family:Verdana;font-size:13px;font-weight:bold;background-color:#4897E7;}.stitle{font-family:Verdana;font-size:12px;}.dot{color:#808000;}.desc{color:#ADADAD;}a .curl{font-family:Verdana;font-size:13px;color:#3A92CD;}</style><table><tr><td width="20px" height="20px"><img src="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://forum.epicnet.ru/viewtopic.php?id=234"><span class="heading"> <span class="hstar">★</span> <span class="hnet">EpicNet.Ru</span> <span class="hstar">★</span> </span><span class="htext"> - IRC Чат © 2008</span></a></td></tr><tr><td></td><td><div class="stitle"><span class="dot">•</span> <span class="desc">Вход через вебгейт:</span> <a href="http://irc.epicnet.ru"><span class="curl">http://irc.epicnet.ru</span></a><br><span class="dot">•</span> <span class="desc">Сервер:</span> irc.epicnet.ru <span class="desc">Порты:</span> 6667, 6668 (ssl)<br><div></td></tr></table>[/html]

3

thnx so much


Вы здесь » EpicNet.Ru - Форум IRC Чата » HELP SCRIPTS - Помощь по mIRC скриптам » Save channels list to INI file via WRITEINI