topic.tcl

Просьбы о написании новых скриптов или поиске уже существующих.

Модератор: Модераторы

topic.tcl

Сообщение НеоспоримыыЙ » 20 сен 2011 17:27

Здравствуйте! Имею такой скрипт.
TCL: [ Скачать ] [ Скрыть ]
# Автокоманда действия
bind time - "?10 * * * *" com4
bind time - "?0 * * * *" com4

# Процедура действия
proc com4 {min hour day month year} {
set com4rand [::egglib::readdata data/basa.txt]
putserv "topic #lineage :[lindex $com4rand [rand [llength $com4rand]]]"
}
bind pub - !строка com6
proc com6 { nick uhost hand chan text } {
if {$text == ""} {putserv "NOTICE $nick :Формат: !строка <текст>"; return}
set info [lindex $text]
set file [open data/basa.txt a+]
puts $file "$info"
close $file
puthelp "NOTICE $nick :Строка была успешно сохранена. Спасибо!"
}
 

Помогите доработать скрипт.
Работа со скриптом в привате, удаление строк из файла, установления таймера на смену, установление канала, добавления юзеров (если возможна), запрос идентификации у юзеров для работы со скриптом.
Заранее благодарен :)
Аватара пользователя
НеоспоримыыЙ
 
Сообщения: 39
Зарегистрирован: 16 фев 2011 13:29
Откуда: Якутск
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21

Re: topic.tcl

Сообщение tvrsh » 20 сен 2011 22:06

Для работы в привате надо добавить такой код:
TCL: [ Скачать ] [ Скрыть ]
bind msg - !строка com7
proc com7 { nick uhost hand text } {
if {$text == ""} {putserv "NOTICE $nick :Формат: !строка <текст>"; return}
set info [lindex $text]
set file [open data/basa.txt a+]
puts $file "$info"
close $file
puthelp "NOTICE $nick :Строка была успешно сохранена. Спасибо!"
}


Но это слишком просто, лучше сделать немного покрасивее. Чтобы не было одинаковых процедур сделаем так.
TCL: [ Скачать ] [ Скрыть ]
# Бидим паблик команду. Тут у нас процедура предварительной обработки.
bind pub - !строка pubbind
proc pubbind {nick uhost hand chan text} {
    # Тут можно добавить проверку на наличие флага на канале.
    stroka $nick $uhost $hand $text
}

# Бидим приватную команду.
bind msg - !строка msgbind
proc msgbind {nick uhost hand text} {
    stroka $nick $uhost $hand $text
}


Все аргументы после срабатывания обоих биндов передаются сначала в отдельные процедуры, а потом каждая из них передает их в общую процедуру, которая и работает с топиками.
TCL: [ Скачать ] [ Скрыть ]
proc stroka {nick uhost hand text} {
if {$text == ""} {
    putserv "NOTICE $nick :Формат: !строка <текст>"
    return 0
}
set info [lindex $text]
set file [open data/basa.txt a+]
puts $file "$info"
close $file
puthelp "NOTICE $nick :Строка была успешно сохранена. Спасибо!"
}


Удаление строк надо вырезать из моего скрипта которые раздает войсы в зависимости от тэга в нике. Установку таймера посмотри в любых подобных скриптах. Установку канала там же. Каких юзеров ты добавлять хочешь?

Короче, чем писать все это заново, проще взять уже готовый скрипт работающий с топиками. Не вижу смысла изобретать велосипед.
Но если тебе так хочется то пожалуйста, обращайся если будут вопросы.
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: topic.tcl

Сообщение НеоспоримыыЙ » 21 сен 2011 12:58

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

Добавлено спустя 4 минуты 43 секунды:
ну если взять из первого раза как ты показывал и все это объединить то думаю выходит так:
TCL: [ Скачать ] [ Скрыть ]
# Указываем канал.
set _chan "#канал"

# и начальный индекс топика. Это менять не надо.
set index 0

 bind time - "* * * * *" topic
proc topic {min hour day month year} {
global index _chan
     set fname "topic.txt"
     set fp [open $fname "r"]
     set data [read -nonewline $fp]
     close $fp
     # Считываем данные из файла и показываем индексный топик по счету.
     putserv "TOPIC $_chan :[lindex [split $data "\n"] $index]"
     # после чего увеличиваем индекс.
     incr index
}

# Бидим паблик команду. Тут у нас процедура предварительной обработки.
 bind pub - !строка pubbind
proc pubbind {nick uhost hand chan text} {
     # Тут можно добавить проверку на наличие флага на канале.
     stroka $nick $uhost $hand $text
}

# Бидим приватную команду.
 bind msg - !строка msgbind
proc msgbind {nick uhost hand text} {
     stroka $nick $uhost $hand $text
}
proc stroka {nick uhost hand text} {
if {$text == ""} {
     putserv "NOTICE $nick :Формат: !строка <текст>"
     return 0
}
set info [lindex $text]
set file [open data/basa.txt a+]
puts $file "$info"
close $file
 puthelp "NOTICE $nick :Строка была успешно сохранена. Спасибо!"
}

# Процедура удаления строк. Для удаления указывай точный текст строки.
 bind pub o|o !del del
proc del {nick uhost hand chan text} {
     set fname "yourfile.txt"
     set fp [open $fname "r"]
     set data [read -nonewline $fp]
     close $fp
     set index 0
     set nomer ""
     foreach line [split $data "\n"] {
         incr index
         if {$line == $text} {
             set nomer [expr $index - 1]
         }
     }

     if {$nomer != ""} {
         set data [lreplace [split $data "\n"] $nomer $nomer]
     } else {
         putserv "PRIVMSG $chan :$nick, строка $text не найдена в базе."
         return 0
     }

     set fp [open $fname "w"]
     puts $fp [join $data "\n"]
     close $fp

     putserv "PRIVMSG $chan :$nick, строка $text удалена."
}

Если где есть ошибки подправь пожалуйста и покажи где и какие были ошибки.
Аватара пользователя
НеоспоримыыЙ
 
Сообщения: 39
Зарегистрирован: 16 фев 2011 13:29
Откуда: Якутск
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21

Re: topic.tcl

Сообщение tvrsh » 21 сен 2011 20:02

Есть ошибки или нет тебе должно быть виднее. Работает все правильно? В патилайне ошибок нет?
А вместо авторизации лучше добавить флаги для тех, кому можно использовать команды.
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: topic.tcl

Сообщение tvrsh » 22 сен 2011 11:04

По поводу добавления юзеров можно в настройки добавить
set _nicks "nick1 nick2 nick3"

И в процедуры добавить такую конструкцию:
TCL: [ Скачать ] [ Скрыть ]
# Объявляем переменную разрешающую или запрещающую действие для ника. По умолчанию запрещает.
set allow 0

# Перебираем все ники из списка в настройках.
foreach _nick [split $_nicks] {
    # Если ник использовавшего команду соответствует нику из списка в настройках. То ставим переменную в 1.
    if {$_nick == $nick} {
        set allow 1  
    }
}

# А тут делаем проверку на значение этой переменной.
if {$allow == "0"} {
    # То есть, если мы перебрали весь список ников в настройках, и не обнаружили там ника, который использовал команду, то мы его посылаем и прерываем выполнение процедуры.
    putserv "NOTICE $nick :Вам запрещено работать с топиками канала."
    return 0
}


Можно еще проще сделать, в настройки добавить тот же список, но проверку делать иначе:
TCL: [ Скачать ] [ Скрыть ]
# Если в строке _nicks нет ника nick, то посылаем юзера.
if {![string match "*$nick*" $_nicks]} {
    putserv "NOTICE $nick :Вам запрещено работать с топиками канала."
    return 0
}


Таких вариантов можно еще несколько штук придумать. У всех есть свои минусы и плюсы.
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: topic.tcl

Сообщение НеоспоримыыЙ » 22 сен 2011 15:18

попробывал протестить скрипт который выложил выше и попросил проверить его на ошибки. Так вот скрипт работает, но команда !del не работает что-то, да и менять что-то не сменяет топики на канале.
Аватара пользователя
НеоспоримыыЙ
 
Сообщения: 39
Зарегистрирован: 16 фев 2011 13:29
Откуда: Якутск
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21

Re: topic.tcl

Сообщение tvrsh » 22 сен 2011 15:39

Зачем ты кого-то просил? Сам не можешь на своем боле это сделать?
Если не удаляет и не меняет топики значит скрипт не работает. В таких случаях обычно принято показывать лог ошибок из .set errorInfo
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: topic.tcl

Сообщение НеоспоримыыЙ » 22 сен 2011 16:10

дело в том что в Putty не подключается, у меня постоянно с этим проблема.
Аватара пользователя
НеоспоримыыЙ
 
Сообщения: 39
Зарегистрирован: 16 фев 2011 13:29
Откуда: Якутск
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21

Re: topic.tcl

Сообщение tvrsh » 22 сен 2011 17:14

Тогда о каком написании скрипта идет речь, если ты не можешь попасть в патилайн?
Пробуй DCC: /ctcp botnick chat
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi


Вернуться в Заявки на скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron