Giriş

Orijinalini görmek için tıklayınız : Bomba Oyun TCL


No_FeaR
22 Mart 2015, 11:08
Eskiden Çok Aranan Bir Oyun TCL'siydi...

#
# Kullanılabilecek komutlar: !bomba nick - !kes renk
# Belirttiğiniz kanalda istediğiniz bir kullanıcının eline bombayı verebilirsiniz.
#

bind pub - !bomba doTimebomb
bind pub - !kes doCutWire

#
# Bombayı kesme süresi saniye cinsinden
# Maksimum 60 sn - Minimum 20 sn içerisinde kesmelidir.
#
set gTimebombMinimumDuration 20
set gTimebombMaximumDuration 60

#
# Kablo renkleri ve maksimum kablo sayısı
# Ekleme yapmak isterseniz lütfen boşluk bırakınız.
#
set gWireChoices "Kırmızı Turuncu Sarı Yeşil Mavi Siyah Beyaz Gri Kahverengi Pembe Bej Fuşya Krem Lila Bordo Lacivert Gümüş Turkuaz"
set gMaxWireCount 3

#
# Botun bomba özelliğinin aktif olması opsiyonu
# Bu bölümü değiştirmeyiniz.
#
set gTimebombActive 0
set gTimerId 0
set gTimebombTarget ""

#
# Botun çalışacağı kanalı belirtiyoruz.
# Eggdrop botunuzun yalnızca bir kanalda bomba özelliğini kullanabilirsiniz.
#
set gTimebombChannel "#Sohbet"
set gCorrectWire ""
set gNumberNames "sıfır bir iki üç dört beş altı yedi sekiz dokuz on onbir oniki"

#
# Buradan sonrasında dikkatli olmanız gerekli kick sebeplerini değiştirebilirsiniz.
# Kaydırma yaptığınızda botunuz düzgün çalışmayacaktır.
#

proc note {msg} {
putlog "% $msg"
}

proc IRCKick {theNick theChannel theReason} {
note "Kicking $theNick in $theChannel (Reason: $theReason)"
putserv "KICK $theChannel $theNick :$theReason"
}

proc IRCPrivMSG {theTarget messageString} {
putserv "PRIVMSG $theTarget :$messageString"
}

proc IRCAction {theTarget messageString} {
putserv "PRIVMSG $theTarget :\001ACTION $messageString\001"
}

proc MakeEnglishList {theList} {
set theListLength [llength $theList]
set returnString [lindex $theList 0]
for {set x 1} {$x < $theListLength} {incr x} {
if { $x == [expr $theListLength - 1] } {
set returnString "$returnString ve [lindex $theList $x]"
} else {
set returnString "$returnString, [lindex $theList $x]"
}
}
return $returnString
}

proc SelectWires {wireCount} {
global gWireChoices
set totalWireCount [llength $gWireChoices]
set selectedWires ""
for {set x 0} {$x < $wireCount} {incr x} {
set currentWire [lindex $gWireChoices [expr int( rand() * $totalWireCount )]]
if { [lsearch $selectedWires $currentWire] == -1 } {
lappend selectedWires $currentWire
} else {
set x [expr $x - 1]
}
}
return $selectedWires
}

proc DetonateTimebomb {destroyTimer kickMessage} {
global gTimebombTarget gTimerId gTimebombChannel gTimebombActive
if { $destroyTimer } {
killutimer $gTimerId
}
set gTimerId 0
set gTimebombActive 0
IRCKick $gTimebombTarget $gTimebombChannel $kickMessage
}

proc DiffuseTimebomb {wireCut} {
global gTimerId gTimebombActive gTimebombTarget gTimebombChannel
killutimer $gTimerId
set gTimerId 0
set gTimebombActive 0
IRCPrivMSG $gTimebombChannel "$gTimebombTarget $wireCut kabloyu kesti, bomba etkisiz hale getirildi."
}

proc StartTimeBomb {theStarter theNick theChannel} {
global gTimebombActive gTimebombTarget gTimerId gTimebombChannel gNumberNames gCorrectWire
global gMaxWireCount gTimebombMinimumDuration gTimebombMaximumDuration
if { $gTimebombActive == 1 } {
note "Bomba aktif olduğu için, yeni bir bomba kurulamadı!"
if { $theChannel != $gTimebombChannel } {
IRCPrivMSG $theChannel "Bomba özelliğini bir kanalda kullanabilirsiniz."
} else {
}
} else {
set timerDuration [expr $gTimebombMinimumDuration + [expr int(rand() * ($gTimebombMaximumDuration - $gTimebombMinimumDuration))]]
set gTimebombTarget $theNick
set gTimebombChannel $theChannel
set numberOfWires [expr 1 + int(rand() * ( $gMaxWireCount - 0 ))]
set listOfWires [SelectWires $numberOfWires]
set gCorrectWire [lindex $listOfWires [expr int( rand() * $numberOfWires )]]
set wireListAsEnglish [MakeEnglishList $listOfWires]
set wireCountAsEnglish [lindex $gNumberNames $numberOfWires]
IRCAction $theChannel "Bomba $gTimebombTarget nickinin elinde. $gTimebombTarget nickinin bombayı etkisiz hale getirebilmek için $timerDuration saniyesi var."
if { $numberOfWires == 1 } {
IRCPrivMSG $theChannel "Doğru kabloyu keserek, bombayı etkisiz hale getirin! Sadece $wireCountAsEnglish tane kablonuz var. Kesebileceğiniz kablo renkleri: $wireListAsEnglish."
} else {
IRCPrivMSG $theChannel "Doğru kabloyu keserek, bombayı etkisiz hale getirin! Sadece $wireCountAsEnglish tane kablonuz var. Kesebileceğiniz kablo renkleri: $wireListAsEnglish."
}
note "Saatli bomba $theStarter tarafından başlatıldı! $theNick nickinin bombayı $timerDuration saniyede etkisiz hale getirmesi gerekiyor."
set gTimebombActive 1
set gTimerId [utimer $timerDuration "DetonateTimebomb 0 {Süre bitti malesef bomba elinizde patladı. BOOOM!}"]
}
}

proc doCutWire {nick uhost hand chan arg} {
global gTimebombActive gCorrectWire gTimebombTarget
if { $gTimebombActive == 1 } {
if { [string tolower $nick] == [string tolower $gTimebombTarget] } {
if { [llength $arg] == 1 } {
if { [string tolower $arg] == [string tolower $gCorrectWire] } {
DiffuseTimebomb $gCorrectWire
} else {
DetonateTimebomb 1 "Malesef yanlış kabloyu kestiniz. BOOOOM!"
}
}
}
}
}

proc doTimebomb {nick uhost hand chan arg} {
global botnick
set theNick $nick
if { [llength $arg] == 1 } {
set theNick [lindex [split $arg] 0]
}
if { [string tolower $theNick] == [string tolower $botnick] } {
set theNick $nick
IRCKick $theNick $chan "Beni bombalayamazsınız!"
return
}
if { [validuser $theNick] == 1 } {
if { [matchattr $theNick "+b"] == 1 } {
set theNick $nick
IRCKick $theNick $chan "Beni banlayamazsınız!"
return
}
}
StartTimeBomb $nick $theNick $chan
}