egghelp.org community Forum Index
[ egghelp.org home | forum home ]
egghelp.org community
Discussion of eggdrop bots, shell accounts and tcl scripts.
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

timebomb.tcl by doom

 
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Support & Releases
View previous topic :: View next topic  
Author Message
moff
Voice


Joined: 24 Jul 2008
Posts: 27

PostPosted: Tue Sep 16, 2008 11:44 am    Post subject: timebomb.tcl by doom Reply with quote

Hi guys

i added protectops to the timebomb script, but i need some more modification

i gave some users the +f flag so they can timebomb others in a chan, but they are using it too much Smile is there any possibility to add a function that every +f users can timebomb others a maximum of 10 bombs in an hour?

Code:

###############################################################################
# Name: Timebomb by ^DooM^
# Eggdrop Version: 1.6.x
# Original Author: jotham.read@gmail.com
#
# Changes made by Groofy on 19-10-2006
# added only <color> to defuse the bomb (with some help by rosc2112)
# changed time on bomb to random time
# some changes on the text (display)
#
# This is a small TCL script for Eggdrop. Timebomb is a game where one person
# asks the Eggdrop bot to plant a timebomb in another users pants. The target
# user then needs to diffuse the bomb by cutting the correct wire, or be
# kicked from the channel.
#
# To start the game a user must type:
# !timebomb <nickname> || !bomb <nickname>
# This will cause the target user to have a timebomb "stuffed in their pants"
# once this occurs the user will have a number of seconds to diffuse the bomb.
# Diffusing the bomb is done by typing:
# <colour> || !snip <colour>
#
# The wire colors you can choose from are displayed when the bomb is planted.
# This script will not allow bots (Users who are +b), or the bot running the
# script, to be timebombed.
#
# I know it sounds very silly but it is a rather fun game.
#
# Additional script features by ^DooM^:
# -------------------------------------
#
# ** = Can be turned off
#
# 1) If the person you !bomb guesses correctly you get booted out of the channel
# 2) Added an idle check to not allow users to be bombed if they are AFK. **
# 3) Made the bot blow itself up on occasion **
# 4) Made the bot kill a user if they try and evade the kick if the bot is opered up **
# 5) Stopped the wire count from choosing just 1 wire thats too easy.
# 6) Added a kick counter
# 7) Added random amusing counter messages
# 8) Added random placements of bomb
# 9) Added protection for "specified" nicks i.e. the owner and a non linked bot
# 10) If a user bombs himself and guesses correctly the user throws the bomb away
# 11) general bug fixes
#
#
###############################################################################

bind pub o|f timebomb doTimebomb
bind pub o|f !bomb doTimebomb
bind pub - !snip doCutWire
bind pub - blue doCutBlue
bind pub - green doCutGreen
bind pub - red doCutRed
bind pub - brown doCutBrown
bind pub - purple doCutPurple
bind pub - orange doCutOrange
bind pub - yellow doCutYellow
bind pub - cyan doCutCyan
bind pub - pink doCutPink
bind pub - grey doCutGrey
bind pub - black doCutBlack
bind pub - white doCutWhite
 

###############################################################################
# Configuration
#

## Set the minimum time the bomb can have in seconds
set gTimebombMinimumDuration 10

## Set the maximum time the bomb can have in seconds
set gTimebombMaximumDuration 50

## Set the colours you wish to use
set gWireChoices "Blue Green Red Brown Purple Orange Yellow Cyan Pink Grey Black White"

## Set the maximum number of wires that they can choose from to cut.
## has to be lower than the ammount of colours set above.
set gMaxWireCount 9

## Set this to your nick if you wish to be protected from being bombed
set gOwner "thisismason"

## Set this to the nick of another person or bot to protect if you havent linked the bots
set gBot "thisismandy"

## This is the file used to store the number of people blown up make sure you have read/write
## access on your shell
set gKickFile "KickCounter.log"

## Set this to 1 if you wish users who are away for X minutes to be exempt from being bombed
set gIdleOn 0

## Set the number of minutes you wish a person to be idle before they are exempt from being bombed
set gIdleTime 5

## I have coded into this script a 1 in 25 chance that the bot will blow itself up arming the bomb
## if it does it will kick itself out of the channel I thought this was highly amusing.
## Set this to 0 if you wish to disable this feature.
set gAllowBotKickSelf 0

## Set this to 1 if your bot is opered up all this feature does is /kill a nick if they try and evade
## a kick from the channel if your bot is not an oper then it will just message them 'Coward' :)
set gOperBot 1

###############################################################################
# Set random counter reasons. Add as many as you like.
#

set gCounterMessage {
{people have been blown up so far}
{corpses are lying in the morgue}
{people have paid with their lives}
{times that damn bomb has exploded}
{messy endings}
{body parts scatter the floor}
{people are no more}
{green bottles hanging on the wall}
{people have lost limbs}
{tombstones with the words 'I should of cut the other wire' engraved for eternity}
{people chose the wrong damn wire}
{people commited suicide to date}
{death certificates have been issued}
{people got blown to smithereens}
{people got 0wned}
{people are crap at this}
{peoples teeth decorate the ceiling}
{people should of ducked}
{people are burning in hell}
{people didn't dodge Sentinel's rocket}
{people got telefragged}
{people have been forsaken by their evil god}
{people have gone to that better place}
{people R.I.P.}
{people saw an intense white light as their skin melted away from their bones}
{people were vaporised}
{bombs were harmed during the making of this script}
{bombs exploded leaving holes everywhere}
{times we've scraped jam off the ceiling}
{bombs were detonated to date}
{weapons of mass destruction have been detonated so far}
{times this random message procedure has been called}
{three headed monkeys all laughed at your stupidity}
{graves have been dug so far}
{people wished they had taken the blue pill}
{times someone set you up the bomb}
{people had limbs blown off in the most excruciatingly painfull way}
{times fire and brimstone have scorched the earth}
{times the room has had to be repainted}
{people realised too late that they were colour blind}
}

###############################################################################
# Set random place to plant bomb. Add as many as you like.
#

set gPlaceBombMessage {
{Pants}
{Shoe}
{Hair}
{Bra}
{Y Fronts}
{Boxers}
{Mouth}
{Ass}
{Eye Socket}
{Nose}
{Wee Hole}
}

###############################################################################
# Internal Globals Do Not Touch Unless You Know What You Are Doing....
#

set gTheScriptVersion "1.2"
set gTimebombActive 0
set gTimerId 0
set gTimebombTarget ""
set gTimebombChannel "#this-is-mason"
set gCorrectWire ""
set gNumberNames "zero one two three four five six seven eight nine ten eleven twelve"
set gStarter ""
set gKickCounter 0

###############################################################################
# Script Starts Here
#
proc doCutBlue {nick uhost hand chan text} {
     #pass the parameters along to the doCutWire proc with 'blue' as the arg
     doCutWire $nick $uhost $hand $chan blue
}

proc doCutGreen {nick uhost hand chan text} {
     #pass the parameters along to the doCutWire proc with 'green' as the arg
     doCutWire $nick $uhost $hand $chan green
}

proc doCutRed {nick uhost hand chan text} {
     #pass the parameters along to the doCutWire proc with 'red' as the arg
     doCutWire $nick $uhost $hand $chan red
}

proc doCutBrown {nick uhost hand chan text} {
     #pass the parameters along to the doCutWire proc with 'brown' as the arg
     doCutWire $nick $uhost $hand $chan brown
}

proc doCutPurple {nick uhost hand chan text} {
     #pass the parameters along to the doCutWire proc with 'purple' as the arg
     doCutWire $nick $uhost $hand $chan purple
}

proc doCutOrange {nick uhost hand chan text} {
     #pass the parameters along to the doCutWire proc with 'orange' as the arg
     doCutWire $nick $uhost $hand $chan orange
}

proc doCutYellow {nick uhost hand chan text} {
     #pass the parameters along to the doCutWire proc with 'yellow' as the arg
     doCutWire $nick $uhost $hand $chan yellow
}

proc doCutCyan {nick uhost hand chan text} {
     #pass the parameters along to the doCutWire proc with 'cyan' as the arg
     doCutWire $nick $uhost $hand $chan cyan
}

proc doCutPink {nick uhost hand chan text} {
     #pass the parameters along to the doCutWire proc with 'pink' as the arg
     doCutWire $nick $uhost $hand $chan pink
}

proc doCutGrey {nick uhost hand chan text} {
     #pass the parameters along to the doCutWire proc with 'grey' as the arg
     doCutWire $nick $uhost $hand $chan grey
}

proc doCutBlack {nick uhost hand chan text} {
     #pass the parameters along to the doCutWire proc with 'black' as the arg
     doCutWire $nick $uhost $hand $chan black
}

proc doCutWhite {nick uhost hand chan text} {
     #pass the parameters along to the doCutWire proc with 'white' as the arg
     doCutWire $nick $uhost $hand $chan white
}

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

proc IRCKick {theNick theChannel theReason} {
global gKickCounter gKickFile gCounterMessage gOperBot
note "Kicking $theNick in $theChannel (Reason: $theReason)"
if { [onchan $theNick $theChannel] } {

#Open file and read the variable
if { [file exists $gKickFile] == 1 } {

set FileHandle [open $gKickFile "r"]
set TempString [read $FileHandle]
close $FileHandle
set lines [split $TempString "\n"]

set gKickCounter [lindex $lines 0]

} else {

# Set the kickcounter to 0 initially
set gKickCounter 0
}
set CounterMessage [lindex $gCounterMessage [rand [llength $gCounterMessage]]]
putserv "KICK $theChannel $theNick :$theReason. ($gKickCounter $CounterMessage)"
incr gKickCounter 1

# Write the variable to file (remember opening with 'w' mode truncates the file contents)
set FileHandle [open $gKickFile "w"]
puts $FileHandle $gKickCounter
close $FileHandle
return
} elseif { $gOperBot == 1 } {
putserv "KILL $theNick :$theReason"
return
} else {
putserv "NOTICE $theNick :Coward!!"
return
}
}


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 and [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 gPlaceBombMessage
if { $destroyTimer } {
killutimer $gTimerId
}
set gTimerId 0
set gTimebombActive 0
IRCKick $gTimebombTarget $gTimebombChannel $kickMessage
}

proc DiffuseTimebomb {wireCut} {
global gTimerId gTimebombActive gTimebombTarget gTimebombChannel gStarter gPlaceBombMessage
killutimer $gTimerId
set gTimerId 0
set gTimebombActive 0
set RearmDuration 2
IRCPrivMSG $gTimebombChannel "$gTimebombTarget has cut the $wireCut wire. This has defused the bomb!"

if { [string tolower $gTimebombTarget] == [string tolower $gStarter] } {
IRCPrivMSG $gTimebombChannel "$gTimebombTarget Throws the bomb away"
set gStarter ""
return
} else {
set PlaceBombMessage [lindex $gPlaceBombMessage [rand [llength $gPlaceBombMessage]]]
IRCPrivMSG $gTimebombChannel "$gTimebombTarget ReArmed the bomb at $RearmDuration Seconds and stuffed it into $gStarter's $PlaceBombMessage!"
IRCKick $gStarter $gTimebombChannel "Tick Tick *BOOM!*"
set gStarter ""
return
}
}

proc StartTimeBomb {theStarter theNick theChannel} {
global gTimebombActive gTimebombTarget gTimerId gTimebombChannel gNumberNames gCorrectWire
global gMaxWireCount gTimebombMinimumDuration gTimebombMaximumDuration gStarter gPlaceBombMessage
set PlaceBombMessage [lindex $gPlaceBombMessage [rand [llength $gPlaceBombMessage]]]
if { $gTimebombActive == 1 } {
note "Timebomb not started for $theStarter (Reason: timebomb already active)"
if { $theChannel != $gTimebombChannel } {
IRCPrivMSG $theChannel "I don't have a single bomb to spare. :-("
return
} else {
IRCAction $theChannel "points at the bulge in the back of $gTimebombTarget's $PlaceBombMessage."
}
} else {
set timerDuration [expr $gTimebombMinimumDuration + [expr int(rand() * ($gTimebombMaximumDuration - $gTimebombMinimumDuration))]]
set gStarter $theStarter
set gTimebombTarget $theNick
set gTimebombChannel $theChannel
set numberOfWires [expr 2 + int(rand() * ( $gMaxWireCount - 1 ))]
set listOfWires [SelectWires $numberOfWires]
set gCorrectWire [lindex $listOfWires [expr int( rand() * $numberOfWires )]]
set wireListAsEnglish [MakeEnglishList $listOfWires]
set wireCountAsEnglish [lindex $gNumberNames $numberOfWires]
IRCAction $theChannel "stuffs the bomb into $gTimebombTarget's $PlaceBombMessage. The display reads $timerDuration seconds."
if { $numberOfWires == 1 } {
IRCPrivMSG $theChannel "\002Bomb has been planted!!!\002 You have $timerDuration seconds to defuse the Bomb! \002$theNick\002 use 'colour' to cut the wire. Try to cut the correct wire. There is $wireCountAsEnglish wire. $wireListAsEnglish."
} else {
IRCPrivMSG $theChannel "\002Bomb has been planted!!!\002 You have $timerDuration seconds to defuse the Bomb! \002$theNick\002 use 'colour' to cut the wire. Try to cut the correct wire. There are $wireCountAsEnglish wires. $wireListAsEnglish."
}
set gTimebombActive 1
set gTimerId [utimer $timerDuration "DetonateTimebomb 0 {*BOOOOM* Fear. Go to die noob!}"]
}
}

###############################################################################
# Eggdrop command binds
#

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 "snip...*BOOOOOM!*"
}
}
}
}
}

proc doTimebomb {nick uhost hand chan arg} {

global botnick gStarter gOwner gBot gIdleTime gTimebombActive gAllowBotKickSelf gIdleOn gPlaceBombMessage
#set gStarter $nick
set theNick $nick
if { [lindex [split $arg] 0] != "" } {
set theNick [lindex [split $arg] 0]
}
if { ![onchan $theNick $chan] } {
putserv "PRIVMSG $chan :$theNick is not here maybe he has been blown up!"
return
}
if { $gAllowBotKickSelf == 1} {
if { $gTimebombActive == 0 } {
if { ![rand 25] } {
IRCKick $botnick $chan "Blew himself up Arming the bomb"
return
}
}
}
if { $gIdleOn == 1} {
if { [getchanidle $theNick $chan] > $gIdleTime && $theNick != $nick} {
putserv "PRIVMSG $chan :$theNick is Away. Choose another victim!"
return
}
}
if { [string tolower $theNick] == [string tolower $botnick] || [string tolower $theNick] == [string tolower $gOwner] || [string tolower $theNick] == [string tolower $gBot] } {
set theNick $nick
StartTimeBomb $theNick $theNick $chan
return
}
if { [validuser $theNick] == 1 } {
if { [matchattr $theNick "+b"] == 1 } {
set theNick $nick
IRCKick $theNick $chan "You should not attack the bots!"
return
}
}
StartTimeBomb $nick $theNick $chan
}

###############################################################################

note "timebomb $gTheScriptVersion: loaded";


hope anyone knows how to do it Smile

thanks
Back to top
View user's profile Send private message
demonoid
Voice


Joined: 19 Jan 2009
Posts: 2

PostPosted: Fri Jan 30, 2009 6:17 pm    Post subject: Reply with quote

Hi moff I have installed this script with eggdrop 1.6.19 but not works. I need set any values into: "Internal Globals Do Not Touch Unless You Know What You Are Doing" ?
Thanks you much moff
Back to top
View user's profile Send private message
Nor7on
Op


Joined: 03 Mar 2007
Posts: 185
Location: Spain - Barcelona

PostPosted: Sun Jan 24, 2010 4:41 pm    Post subject: Reply with quote

HI Doom!

this script game have a bug, never defuse the bomb.
cut cut cut and never defuse the bomb, all wire that your cut BOOOMB!

can fix it?
Back to top
View user's profile Send private message Visit poster's website Yahoo Messenger MSN Messenger
Display posts from previous:   
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Support & Releases All times are GMT - 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Forum hosting provided by Reverse.net

Powered by phpBB © 2001, 2005 phpBB Group
subGreen style by ktauber