Регистрация | Вход
[ Главная · Новые сообщения ]
  • Страница 1 из 1
  • 1
Форум » Основной раздел » Мастерская » Шаблон для скриптов
Шаблон для скриптов
Vladislav 04.05.12 09:59 #1
Данный шаблон очень прост и удобен:

template2 - имя скрипта.
10 - время в секундах для антифлуда.
1 - разрешить работу в привате, иначе 0.
команда command - список команд.
putserv "PRIVMSG $chan :ок." - код самой функции скрипта.

Цитата
####################################################
# WindropClan @ http://windrop.clan.su
# Автор:
# Версия: 1.0
# Описание:
# Команды:
####################################################

namespace eval template2 {

setudef flag no[namespace tail [namespace current]]

variable timer 10
variable pbind 1
variable clock 0

foreach bind {команда command} {bind pub - $::gprefix(1)$bind [namespace current]::pub; if {$pbind} {bind msg - $::gprefix(1)$bind [namespace current]::msg}}

proc msg {nick host hand text} {pub $nick $host $hand $nick $text; return}

proc pub {nick host hand chan text} {
variable timer; variable clock
if {$chan != $nick && [channel get $chan no[namespace tail [namespace current]]]} {return} else {set lastbind $::lastbind}
if {[expr [clock seconds]-$clock] < $timer} {putserv "[expr {$nick == $chan ? "PRIVMSG":"NOTICE"}] $nick :Команда недавно запрашивалась. Повтори попытку через [expr $timer-([clock seconds]-$clock)] сек."; return}; set clock [clock seconds]
putserv "PRIVMSG $chan :ок."
}

}


Если команда со значением, то добавим следующее перед самой функции скрипта:

Вырежем цвета:

Код
set text [string trim [string map { {}} [stripcodes cubr $text]]]


Если значение имеет лишь одно слово, например это ник, то оставим только первое слово:

Код
set text [lindex [split $text] 0]


Проверка на команду без значения:

Цитата
if {[string is space $text]} {putserv "[expr {$nick == $chan ? "PRIVMSG":"NOTICE"}] $nick :Формат: $lastbind <текст> - описание."; return}


Пример рабочих скриптов на этом шаблоне -> anagramizer.tcl devdb.tcl perevod.tcl dns.tcl
template2.tcl(1.1 Kb)
Vladislav 01.04.13 15:24 #2
Ещё один шаблон который подойдёт для маленьких процедур, чтобы не создавать их кучу можно объединить в одну. Работает в привате и на канале, понимает команды выделенные цветом, можно задать команду из нескольких слов или маску.

Цитата
####################################################
# WindropClan @ http://windrop.clan.su
# Автор:
# Версия: 1.0
# Описание:
# Команды:
####################################################

namespace eval template3 {

setudef flag no[namespace tail [namespace current]]

bind pubm - * [namespace current]::block

proc block {nick uhost hand chan text} {
if {$chan != $nick && [channel get $chan no[namespace tail [namespace current]]]} {return}
set text [string tolower [string trim [string map { {}} [stripcodes bcur $text]]]]

if {[string match "!text" $text] || [string match "!текст" $text]} {
putserv "privmsg $chan :текст"
return}

if {[string match "!time" $text] || [string match "!время" $text]} {
putserv "privmsg $chan :[strftime "%a %e %b %Y - %X"]"
return}

}

bind msgm - * [namespace current]::blockp
proc blockp {nick uhost hand text} {block $nick $uhost $hand $nick $text; return}

}


Пример блока для текста с разными вариантами ответов:

Цитата
if {[string match "*есть кто живой*" $text] || [string match "*есть живые*" $text]} {
set otvet {"надеюсь, что я живой." "тебе зачем?" "нет, здесь одни боты." "ты первый нах!"}
putserv "privmsg $chan :$nick, [lindex $otvet [rand [llength $otvet]]]"
return}


В string match в кавычках можно задать маску символом "*" и "?" если знак вопроса должен быть в тексте то указывается он так "\\?". Текст пишите в нижнем регистре так как весь текст который поступает в этот скрипт переводится в нижний регистр.
Форум » Основной раздел » Мастерская » Шаблон для скриптов
  • Страница 1 из 1
  • 1
Поиск: