IRC.WindNet
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.

скрипт !дуэль

Перейти вниз

скрипт !дуэль  Empty скрипт !дуэль

Сообщение автор NoName Пн Мар 21, 2011 2:15 pm

#####################################################################################
#
# eggdrop.70region.ru - помощь по eggdrop/windrop/tcl в Томске.
#
# Скрипт для проведения дуэлей на канале Smile
#
# Команды:
# !duel - вызвать на дуэль
#
# Установка:
# - положить скрипт в директрорию бота scripts
# - в eggdrop.conf прописать source scripts/duel.tcl
# - в директории scripts создать директорию duel
# - rehash боту
#
# Отключить\включить на канале: .chanset #chan +\-nopubduel
#
# 1.0 [21-03-2008] - первая версия
# 1.1 [22-03-2008] - добавлена возможность уведомления входящих о прошедщей дуэли
# 1.2 [13-04-2008] - исправлены меленькие недочеты
# 1.3 [15-04-2008] - теперь информация о прошедших дуэлях пишется для каждого канала в свой файл (Спасибо PeoneEr`y за идеюWink
#
# duel.tcl by djes@RusNet
#
#####################################################################################
namespace eval duel {}
setudef flag nopubduel
foreach p [array names duel *] { catch {unset duel($p) } }
###---------###
#| Настройки |#
###---------###

#Префикс команд
set duel(pref) "!"
#Список команд
set duel(cmd) "ду дуэль стреляться"
#Через сколько секунд можно снова дуэлитсья
set duel(timers) 180
#Оповещать входящих о последних результатах дуэли? (1-да; 0-нет)
set duel(greet) 1
#Директория где хранить последних дуэлянтов
set duel(file_dir) "scripts/duel/"

###-------------------------------------------###
#| Ниже не чего не меняйте, если не знаете TCL |#
###-------------------------------------------###

set duel(last) 0
set duel(go) 0
set duel(name) "duel.tcl"
set duel(ver) "1.3"
set duel(autors) "djes@RusNet "

foreach bind [split $duel(cmd) " "] {
bind pub - "$duel(pref)$bind" ::duel::1
}

bind pubm - * ::duel::2
bind join - "*" ::duel::3

proc ::duel::1 { nick host hand chan text } {
global duel botnick
if {[channel get $chan nopubduel]} {
putserv "notice $nick :Шэриф запретил дуэли на канале $chan"
return
}
if { $text == "" } {
putserv "privmsg $chan :$nick, выбирите второго дуэлянта"
return
}
if { $text == $nick } {
putserv "privmsg $chan :$nick, Дурак что ли?"
return
}
if { $text == $botnick } {
putserv "privmsg $chan :$nick, ты так не шути"
return
}
if { [expr [unixtime] - $duel(last)] < $duel(timers) } {
putserv "notice $nick :Еще не все трупы убрали после прошлой дуэли.. подожди [expr $duel(timers) - ([unixtime] - $duel(last))] сек."
return
} else {
set duel(last) [unixtime]
}
set duel(zadira) $nick
set duel(jertva) [lindex $text 0]
if {![onchan $duel(jertva) $chan]} {
putserv "privmsg $chan :$nick, не вижу ника $duel(jertva) на канале $chan..."
} else {
putserv "privmsg $chan :$duel(jertva), тебя вызывает на дуэль $duel(zadira). Принимаешь вызов? (1-да, 2-нет)"
set duel(go) 1
}
}

proc ::duel::2 { nick host hand chan text } {
global duel
if { $duel(go) == 1 && $nick == $duel(jertva) } {
} else {
return
}
if { $text == 1 } {
putserv "privmsg $chan :$duel(jertva), ты принял вызов.."
putserv "privmsg $chan :\00304Начинается дуэль! \002Дуэлятны к оружию!\002\003"
set kto [rand 12]
if { $kto >= 7 } {
putserv "kick $chan $duel(jertva) :\00304Ты промахнулся.. $duel(zadira) был точнее!\003"
putserv "privmsg $chan :$duel(zadira),\00304 поздравляю!\003 Ты выиграл дуэль!"
set duel(win) $duel(zadira)
set duel(looz) $duel(jertva)
}
if { $kto <= 6 } {
putserv "kick $chan $duel(zadira) :\00304Ты промахнулся.. $duel(jertva) был точнее!\003"
putserv "privmsg $chan :$duel(jertva),\00304 поздравляю!\003 Ты выиграл дуэль!"
set duel(win) $duel(jertva)
set duel(looz) $duel(zadira)
}
set duel(go) 0
set file [open $duel(file_dir)$chan.duel w+]
puts $file $duel(win)
puts $file $duel(looz)
close $file
return
}
if { $text == 2 } {
putserv "privmsg $chan :$duel(jertva), трус.."
set duel(go) 0
return
}

}

proc ::duel::3 { nick host hand chan } {
global duel
if {[channel get $chan nopubduel]} {;return}
if { $duel(greet) == 1 && [llength $duel(file_dir)$chan.duel] > -1 } {
set file [open $duel(file_dir)$chan.duel r]
set data [read $file]
close $file
set lines [split $data \n]
set win [lindex $lines 0]
set looz [lindex $lines 1]
putserv "notice $nick :\00305В последней дуэле на канале \00312$chan\00305 победу праздновал \00303$win\00305 одержавший победу над \00303$looz\00305. Если хочешь оспорить звание лучшего дуэлятна юзай \00304!дуэль ник\003"
} else {
return
}
}

putlog "$duel(name) v$duel(ver) by $duel(autors) -Loaded-"

NoName
Help Operator
Help Operator

Сообщения : 23
Дата регистрации : 2011-03-20
Возраст : 29
Откуда : из ада

Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения