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 

Hey, ^DooM^... Timebomb stuff?

 
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Requests
View previous topic :: View next topic  
Author Message
Batman
Voice


Joined: 18 Mar 2005
Posts: 2

PostPosted: Fri Mar 18, 2005 1:25 pm    Post subject: Hey, ^DooM^... Timebomb stuff? Reply with quote

^DooM^ wrote:
use this

Code:

if { [getchanidle $theNick $chan] > 5 && $theNick != $nick} {
      putserv "PRIVMSG $chan :$theNick is Away. Choose another victim!"
      return
}


Change number to however many minutes you require.

I too added a lot of stuff to the timebomb script for my Server including cant be bombed if idle for more than 5 minutes, a kick counter and random bomb messages.

Hope this helps.


Can I have those? And, if possible, is there a way to diffuse the bomb? I'm Batman on IRC, so I thought it'd be funny to have a special diffuse for me, specifically, and one for the person who used the timebomb command.

I also modified the original script and gave it the ability to /kill, if you'd like it. It's useful (and funny) if you have an O-line.


Last edited by Batman on Fri Mar 18, 2005 4:51 pm; edited 1 time in total
Back to top
View user's profile Send private message
^DooM^
Owner


Joined: 26 Aug 2003
Posts: 772
Location: IronForge

PostPosted: Fri Mar 18, 2005 4:09 pm    Post subject: Reply with quote

Here is my modified script.

Code:
###############################################################################
#  Name:                                        Timebomb by ^DooM^
#  Eggdrop Version:     1.6.x
#  Original Author:                             jotham.read@gmail.com
#
#  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:
#    !cutwire <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   -   !timebomb  doTimebomb
bind  pub   -   !bomb  doTimebomb
bind  pub   -   !cutwire   doCutWire
bind  pub   -   !snip      doCutWire

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

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

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

## 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 5

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

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

## 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 1

## 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 1

## 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 ""
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 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 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 \[4\002$RearmDuration\002\] 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 \[4\002$timerDuration\002\] seconds."
    if { $numberOfWires == 1 } {
      IRCPrivMSG $theChannel "Defuse the bomb by using '!cutwire colour' Try and cut the correct wire. There is $wireCountAsEnglish wire. It is $wireListAsEnglish."
    } else {
      IRCPrivMSG $theChannel "Defuse the bomb by using '!cutwire colour' Try and cut the correct wire. There are $wireCountAsEnglish wires. They are $wireListAsEnglish."
    }
    set gTimebombActive 1
    set gTimerId [utimer $timerDuration "DetonateTimebomb 0 {\002*BOOM!*\002}"]
  }
}

###############################################################################
# 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 "\002snip...*BOOM!*\002"
        }
      }
    }
  }
}

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";

_________________
The lifecycle of a noob is complex. Fledgling noobs gestate inside biometric pods. Once a budding noob has matured thru gestation they climb out of their pod, sit down at a PC, ask a bunch of questions that are clearly in the FAQ, The Noob is born
Back to top
View user's profile Send private message Visit poster's website
Batman
Voice


Joined: 18 Mar 2005
Posts: 2

PostPosted: Fri Mar 18, 2005 4:18 pm    Post subject: Reply with quote

Man, you own. Thanks!

I like the addition of "If I'm an IRCop, use /kill"... Nice touch. Wink

Do you happen to know how to !defuse? I'd like a command so the person who placed the bomb would be able to defuse it. Kinda like a safety precaution. Wink
Back to top
View user's profile Send private message
^DooM^
Owner


Joined: 26 Aug 2003
Posts: 772
Location: IronForge

PostPosted: Fri Mar 18, 2005 4:55 pm    Post subject: Reply with quote

Add this to the binds section of the script
Code:
bind  pub   -   !defuse      Defuse

and add this proc to the script.
Code:
proc Defuse {nick uhost hand chan} {
  global gTimerId gTimebombActive gTimebombTarget gTimebombChannel gStarter
  killutimer $gTimerId
  set gTimerId 0
  set gTimebombActive 0
 
  if { [string tolower $nick] == [string tolower $gStarter] } {
      IRCPrivMSG $gTimebombChannel "$nick defuses the bomb and throws the bomb away"
      set gStarter ""
      return
  }
}


I haven't tested this so let me know if it works or not Very Happy
_________________
The lifecycle of a noob is complex. Fledgling noobs gestate inside biometric pods. Once a budding noob has matured thru gestation they climb out of their pod, sit down at a PC, ask a bunch of questions that are clearly in the FAQ, The Noob is born
Back to top
View user's profile Send private message Visit poster's website
Sourge
Voice


Joined: 04 Jun 2006
Posts: 2

PostPosted: Wed Jun 28, 2006 12:25 pm    Post subject: Reply with quote

Is it possible to protect more than 1 person ? If i add some more seperated with ";" it only protects the first person. And is it possible to add an cooldown to evade !bomb spamming?
Back to top
View user's profile Send private message
nsrafk
Halfop


Joined: 11 May 2007
Posts: 73

PostPosted: Tue May 22, 2007 6:13 pm    Post subject: Reply with quote

I would really like an option to disable the script for like 2 mins or so. A cooldown would be awesome too. Like 5 triggers (!bomb <nick>) in 30 seconds would cooldown the script for X mins. Im running a huge channel, and its very often (almost anytime) when i enable the script, its impossible to stay in the chan because there's 100 people doing !bomb this and !bomb that.
So, i think it would be an awesome addition to this script.
Back to top
View user's profile Send private message
Stealth
Voice


Joined: 05 Jun 2007
Posts: 2

PostPosted: Sat Jun 09, 2007 10:34 am    Post subject: Reply with quote

sorry for bumping this thread, but ^DooM^, the !defuse is not working.
Code:
Tcl error [Defise]: wrong # args: should be "Defuse nick uhost hand chan"


And could you try to make something like nsrafk said.
some cooldown mode.
Back to top
View user's profile Send private message
Alchera
Revered One


Joined: 11 Aug 2003
Posts: 3344
Location: Ballarat Victoria, Australia

PostPosted: Sat Jun 09, 2007 9:30 pm    Post subject: Reply with quote

^DooM^'s last post was 2 years ago. I would think the indications are nsrafk & Stealth are out of luck.
_________________
Add [SOLVED] to the thread title if your issue has been.
Search | FAQ | RTM
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Requests 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