| View previous topic :: View next topic |
| Author |
Message |
PoHuIsT Voice
Joined: 22 Oct 2007 Posts: 23
|
Posted: Thu Oct 25, 2007 7:47 am Post subject: |
|
|
now i got this error
| Code: |
[12:45] can't read "date": no such variable
while executing
"clock scan $date"
(procedure "getdate" line 2)
invoked from within
"getdate time"
(procedure "myage" line 6)
invoked from within
"myage"
invoked from within
"putlog "\002egg\002-\002fu\002 \002$eggfu\002 loaded! (age: [myage], sex: $sex)
""
(file "scripts/egg-fu_2.0.2.tcl" line 940) |
now my tcl locks like this
| Code: |
#eggdrop1.6 +/-
# ___
# .-----..-----..-----. __ .' _|.--.--.
# | -__|| _ || _ ||__|| ._|| | |
# |_____||___ ||___ | |__| |_____|
# |_____||_____|
# version 2.0.2
#
#
# Copyright (C) 2002, ch3mical
# CitizenK@mad.scientist.com
# irc.secsup.org (EFnet)
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Version Information (Major Additions and Bug Fixes!) can be found in the
# Version.txt included in the package.
#
# Feature explanations, instructions, and HELP can be found in
# How-to.txt included in the package.
#
##########################################################################
# If you use the following code in any form partial or modifed, at least #
# give the programmer who did this much hard work his deserved credit! #
##########################################################################
#
# Greetz:
# Tigrrr, psynapse, dilvie, yo momma, mickrip, poke, #trax
# one_, sunrpc, ^PLAID^, Tenebrous, Byte, KottoN, raz0rchiq, Law
# tekneeks, vortek, peeps on the west side, ziricon, and everyone else
#
# Thanks to:
# brainiac for being the beta-test monkey
#
# email your suggestions/questions/comments/bitches to:
# CitizenK@mad.scientist.com
#
##########################################################################
#@##### SETUP THE SCRIPT #######
# Please change the details below
# To work in all channels leave this blank
set workingchans ""
# List any other bots you want to be ignored
set otherbots "dark-bot infobot soundbot"
# Location of your word file
set wordfile "brain.txt"
# [0/1] Set this to 0 to turn off misdirection-learning (not recommended)
set mdirect 1
# This is the character that will PRECEED all !trigger commands (if
# enabled), set this to "-no-" to make triggers work without it
set it "!"
# [0/1] Require a !trigger command for learning?
set lrntrig 0
set ltrigger "set"
# [0/1] Require a !trigger command for questions?
# It's ok to set both triggers the same
set asktrig 0
set atrigger "ask"
# [hjmnoptx] Require which modes to use learn?
# Set to "-" to allow anyone to teach egg-fu
set req(ln) "-|-"
# [hjmnoptx] Require which modes to use ask?
# Set to "-" to allow anyone to ask
set req(ak) "-"
# [hjmnoptx] Require which modes to use <ctcp> or <notice>
# Set to "-" to allow all (not recommended)
set req(cn) "o|o"
# Set the subject range here, this refers to how much of the sentence
# egg-fu will process, (default=4)
set range 4
### DONE ###
# These fields can be modifed if you wish!
# !Q=question !A=answer !U=who asked
# above items are replaced by the script with proper values
proc randy {} {
set apb {
{I heard that !Q is !A}
{Did you know that !Q is !A?}
{!Q is !A}
{I'm sure !Q is !A}
{!U: someone said that !Q is !A}
{!Q might be !A}
{Didn't you say !Q is !A?}
{Could it be !Q is !A?}
{I guess !Q is !A}
{Hmmm. I think !Q is !A}
{Well, !Q is !A}
{!U, !Q is probably !A}
{I bet !Q is !A}
{Isn't !Q !A?}
{!U: !Q is !A}
{Do you think !Q is !A?}
}
return [lindex $apb [rand [llength $apb]]]
}
# add/change these to personalize your bot!
proc randn {} {
set apb {
{I don't know, !U.}
{I'm not sure what !Q is.}
{No idea, !U.}
{Why don't you enlighten me, !U?}
{Can't sleep clowns will eat me!}
{I've got no idea, !U...}
{Yo momma knows about !Q!}
{!U: don't ask me, I don't know.}
{I don't know what !Q is, !U.}
{Well maybe you should tell me, !U?}
}
return [lindex $apb [rand [llength $apb]]]
}
# add/change these to personalize your bot!
proc anyanimal {} {
set randanimal {
{goat}
{llama}
{lemming}
{gerbil}
{penguin}
{dung beetle}
{billy goat}
{grizzly bear}
{ostrich}
{drunken transient}
{donkey}
{sea monkey}
{buffalo}
{dog}
{monkey}
{freaky little hamster}
{monkey faced eel}
{iguana}
{hippo}
{bull}
{cow}
{duck}
{zebra}
{giraffe}
}
return [lindex $randanimal [rand [llength $randanimal]]]
}
# add/change these to personalize your bot!
proc anycolor {} {
set apb {
{red}
{yellow}
{orange}
{green}
{blue}
{brown}
{pink}
{purple}
{magenta}
{black}
{white}
}
return [lindex $apb [rand [llength $apb]]]
}
# add/change these to personalize your bot!
# these are NOUNS
proc anyitem {} {
set apb {
{screw driver}
{fire hose}
{corndog}
{wrench}
{excrement}
{pig cheese}
{barbie doll}
{bleeding pimple}
{trout}
{headless corpse}
{cattle prod}
{blowup sheep}
{dirty diaper}
{dried cum stain}
{portable cheese grater}
{bottle of prozac}
{flying detachable penis}
{condom}
{severed head}
{UNIX manual}
}
return [lindex $apb [rand [llength $apb]]]
}
# add/change these to personalize your bot!
# these are ADJECTIVES
proc anyadj {} {
set apb {
{stupid}
{silly}
{ugly}
{smelly}
{hairy}
{sticky}
{used}
{green}
{pink}
{purple}
{abused}
{torn}
{broken}
{squashed}
{crusty}
{thin}
{fat}
{old}
{slick}
{slippery}
{spicy}
{spiked}
{blown up}
}
return [lindex [concat [concat $apb]] [rand [llength $apb]]]
}
# add/change these to personalize your bot!
proc anyday {} {
set randday {
{Monday}
{Tuesday}
{Wednesday}
{Thursday}
{Friday}
{Saturday}
{Sunday}
{some day}
{any day}
{tomorrow}
{yesterday}
}
return [lindex $randday [rand [llength $randday]]]
}
# add/change these to personalize your bot!
proc anymonth {} {
set randmonth {
{January}
{February}
{March}
{April}
{May}
{June}
{July}
{August}
{September}
{October}
{November}
{December}
}
return [lindex $randmonth [rand [llength $randmonth]]]
}
#####################################################
### Don't need to touch the stuff below this line ###
#$###################################################
bind pubm $req(ak) * askquestion
bind pubm $req(ln) "* is *" learnit
bind pubm $req(ln) "* isn't *" learnit
#bind pubm $req(ln) "* it's *" learnit
#bind pubm $req(ln) "* are *" learnit
bind pubm - "* =~ *" alterit
bind pubm - "*--" karma_action
bind pubm - "*++" karma_action
bind pub o|o thaw thawit
bind pub m|m lock lockit
bind pub o|o freeze freezeit
bind pub m|m unlock unlockit
bind pub o|o forget forgetit
bind pub -|- karma karma_info
#bind dcc o|o "freeze" dcc_freezeit
#bind dcc o|o "forget" dcc_forgetit
set eggfu "2.0.2"
set floodcount 0
proc low {i} {return [string tolower $i]}
proc bit {} {global it;if {$it=="-no-"} {return ""} {return $it}}
proc botsnick {} {global botnick;return $botnick}
proc isfrozen {arg} {
set i 0
set text [getword $arg]
set apos [lsearch -exact $text "=>"]
set text [lrange $text [expr $apos + 1] e]
if {[lindex $text 0] == "!"} {set i 1}
if {[lindex $text 0] == "~"} {set i 1}
return $i
}
proc isinop {arg} {
set i 0
if {$arg=="<reply>"} {set i 1}
if {$arg=="<action>"} {set i 1}
if {$arg=="<ctcp>"} {set i 1}
if {$arg=="<notice>"} {set i 1}
return $i
}
proc alterit {nick host hand chan text} {
global botsnick
regsub -all "[botsnick], " $text "" text
regsub -all " s/" $text " " text
regsub -all "/" $text " / " text
set fseperator [lsearch -exact $text "=~"]
set seperator [lsearch -exact $text "/"]
set alterstring [lrange $text 0 [expr $fseperator -1]]
set alterwhat [lrange $text 2 [expr $seperator -1]]
set alterwith [lrange $text [expr $seperator +1] e]
regsub -all " /" $alterwith "" alterwith
set question [lrange [getword $alterstring] 1 e]
set searchforwhat [lsearch -exact $question $alterwhat]
if {[isfrozen $alterstring]} {
putnotc $nick "'$alterstring' has been frozen."
} elseif {$question == ""} {
putnotc $nick "No variable set!"
} elseif {$searchforwhat == "-1"} {
putnotc $nick "'$alterwhat' not in '$alterstring'!"
} {
regsub -all $alterwhat $question $alterwith result
delword $alterstring
addword $alterstring $result
putlog "!egg-fu! Alter: '$question' is now: $result"
putnotc $nick "'$alterstring' is altered."
}
}
proc freezeit {nick host hand chan text} {
global botsnick
regsub -all "[botsnick], " $text "" text
set wpos [lsearch -exact $text "freeze"]
set what [lrange $text [expr $wpos + 1] e]
set text [getword $what]
set apos [lsearch -exact $text "=>"]
set text [lrange $text [expr $apos + 1] e]
if {[isfrozen $what]} {
putnotc $nick "'$what' has already been frozen."
} elseif {$what != ""} {
putlog "!egg-fu! Freezing '$what'"
delword $what
addword $what "! $text"
putnotc $nick "'$what' is now frozen."
} {putnotc $nick "Freeze what?"}
}
proc thawit {nick host hand chan text} {
set wpos [lsearch -exact $text "thaw"]
set what [lrange $text [expr $wpos + 1] e]
set text [getword $what]
set apos [lsearch -exact $text "=>"]
set text [lrange $text [expr $apos + 1] e]
if {![isfrozen $what]} {
putnotc $nick "'$what' isn't frozen."
} elseif {$what != ""} {
putlog "!egg-fu! Thawing '$what'"
delword $what
addword $what [lrange $text 1 e]
putnotc $nick "'$what' is now unfrozen."
} {putnotc $nick "Thaw what?"}
}
proc lockit {nick host hand chan text} {
global botsnick
regsub -all "[botsnick], " $text "" text
set wpos [lsearch -exact $text "lock"]
set what [lrange $text [expr $wpos + 1] e]
if {[isfrozen $what]} {
putnotc $nick "'$what' has been frozen."
} elseif {$what != ""} {
putlog "!egg-fu! Locking '$what'"
delword $what
addword $what "~"
putnotc $nick "'$what' is now locked."
} {putnotc $nick "Lock what?"}
}
proc unlockit {nick host hand chan text} {
global botsnick
regsub -all "[botsnick], " $text "" text
set wpos [lsearch -exact $text "unlock"]
set what [lrange $text [expr $wpos + 1] e]
set text [lindex [getword $what] e]
if {$text == "~" && $what != ""} {
delword $what
putlog "!egg-fu! Unlocked '$what'"
putnotc $nick "'$what' is now unlocked."
} {putnotc $nick "Unlock what?"}
}
proc forgetit {nick host hand chan text} {
global botsnick
set wpos [lsearch -exact $text "forget"]
set what [lrange $text [expr $wpos + 1] e]
set text [lrange [getword $what] 1 e]
if {[isfrozen $what]} {
putnotc $nick "'$what' has been frozen."
} elseif {$text == ""} {
putnotc $nick "'$what' not found."
} elseif {$what != "" && [llength $what] < 3} {
delword $what
putnotc $nick "'$what' forgotten."
} {putnotc $nick "Forget what?"}
}
proc karma_info {nick host hand chan text} {
global botsnick
set karma_action [lindex $text 0]
regsub -all "\\\?" $text "" text
set karma [lindex $text 1]
if {$karma == "me"} { set karma $nick }
if {$karma == ""} {
putnotc $nick "You have not entered a karma option (karma for/set/reset)"
} elseif {$karma_action == "for"} {
set answer [lrange [getword "<karma> $karma"] 1 e]
if {$answer == "" || $answer == "0"} {
putchan $chan "$karma has neutral karma"
} {
putchan $chan "$karma has karma of $answer"
}
} elseif {$karma_action == "set"} {
set karma_setas [lindex $text 2]
if {$karma == $nick} {
putnotc $nick "Please don't karma yourself."
} elseif {$karma_setas != ""} {
putlog "!egg-fu! Karma: $karma been changed to $karma_setas"
delword "<karma> $karma"
addword "<karma> $karma" $karma_setas
putchan $chan "$karma has now been set to $karma_setas"
} {
putnotc $nick "You have not entered a set value! (karma set <karma> <new value>)"
}
} elseif {$karma_action == "reset"} {
if {$karma == $nick} {
putnotc $nick "Please don't karma yourself."
} else {
delword "<karma> $karma"
addword "<karma> $karma" ""
putchan $chan "$karma has been reset"
}
}
}
proc karma_action {nick host hand chan text} {
global botsnick
regsub -all "\\\+\\\+" $text " \+\+" text
regsub -all "\\\-\\\-" $text " \-\-" text
set karma [lindex $text 0]
set question [lrange [getword "<karma> $karma"] 1 e]
if {$karma == "me"} {set karma $nick}
if {$question == ""} {
addword "<karma> $karma" 1
putlog "!egg-fu! Karma: $karma set to 1"
} elseif {[low $karma] == [low $nick]} {
putnotc $nick "You cannot give yourself karma."
} else {
if {[lsearch -exact $text "\+\+"] == -1} {
incr question -1
} {
incr question 1
}
delword "<karma> $karma"
addword "<karma> $karma" $question
putlog "!egg-fu! Karma: $karma set to $question"
}
}
proc addword {keyword answer} {
global botsnick wordfile mdirect
# let's learn from others
if {$mdirect} {
set fword [lindex $keyword 0]
# putlog "!egg-fu! mDirect check: $fword"
if {[string match *:* $fword]} {
if {[llength $keyword]>1} {set keyword [lrange $keyword 1 e]
} {regsub -all ":" $keyword "" keyword}
# putlog "!egg-fu! Cauterized: $fword"
}
}
# fix the 'mysterious disappearances' bug
set feeler [lrange [getword $keyword] 1 e]
if {$keyword != $feeler && ![isfrozen $keyword]} {
set puts "$keyword => $answer"
regsub -all "\\{" $puts "" puts
regsub -all "\\}" $puts "" puts
set fh [open $wordfile a]
puts $fh $puts
close $fh
putlog "!egg-fu! Learn: $keyword => $answer"
}
}
proc getword {keyword} {
global botsnick wordfile
set foundone 0
set returnit {}
set fh [open $wordfile r]
while {![eof $fh]} {
set stdin [string trim [gets $fh]]
if {[eof $fh]} {break}
set breaker [lsearch -exact $stdin "=>"]
set getkey [low [lrange $stdin 0 [expr $breaker - 1]]]
set getresult [low [lrange $stdin [expr $breaker + 1] e]]
if {[string match -nocase "* $getkey *" "@ $keyword @"] || [string match -nocase "* $keyword *" "@ $getkey @"]} {
set returnit $stdin;set foundone 1
if {[rand 4]==1} {break}
}
}
close $fh
if {$foundone!=0} {return [string trim $returnit]}
}
proc delword {keyword} {
global botsnick wordfile
set fh [open $wordfile r]
set return {}
set del 0
while {![eof $fh]} {
set stdin [string trim [gets $fh]]
set breaker [lsearch -exact $stdin "=>"]
set getkey [low [lrange $stdin 0 [expr $breaker - 1]]]
if {[eof $fh]} {break}
if {![string match -nocase "* $keyword *" " $getkey "]} {
lappend return $stdin
} {incr del 1}
}
close $fh;
set fh [open $wordfile w]
foreach a $return {puts $fh $a}
close $fh
return $del
}
proc anynick {chan} {
global botsnick
set apb [botsnick]
while {$apb == [botsnick]} {
if {$apb != [botsnick]} {break}
set apb [lindex [split [chanlist "$chan"]] [rand [llength [split [chanlist "$chan"]]]]]
}
return $apb
}
proc anyrandq {text} {
regsub -all "\\| " $text "\t" text
set randq [lindex [split $text \t] [rand [llength [split $text \t]]]]
return $randq
}
proc randomize {q n c} {
set israndom [lsearch -exact $q "|"]
if {$israndom!=-1} {set q [anyrandq $q]}
# i plan on adding other $options in the future
regsub -all \\\$date $q [ctime [unixtime]] q
regsub -all \\\$month $q [anymonth] q
regsub -all \\\$day $q [anyday] q
regsub -all \\\$animal $q [anyanimal] q
regsub -all \\\$nick $q [anynick $c] q
# new as of 1.9
regsub -all \\\$item $q [anyitem] q
regsub -all \\\$adj $q [anyadj] q
# new as of 2.0
regsub -all \\\$birthday $q [happybday] q
regsub -all \\\$age $q [myage] q
regsub -all \\\$sex $q [mysex] q
# regsub -all \\\{ $q "" q
# regsub -all \\\} $q "" q
return [string trim $q]
}
proc mysex {} {
set bc [open birth_certificate.egg r]
set sex [gets $bc]
set sex [gets $bc]
close $bc;return $sex
}
proc myage {} {
set bc [open birth_certificate.egg r]
set bdate [gets $bc]
close $bc
set ztime [unoctal [mconv [getdate time]]]
set btime [unoctal [mconv [lindex $bdate 1]]]
set bdate [lindex $bdate 0]
set today [getdate date]
set month [unoctal [lindex [split $today /] 0]]
set bmonth [unoctal [lindex [split $bdate /] 0]]
set zyear [getdate year]
set byear [lindex [split $bdate /] 2]
#putlog "$ztime $btime $bdate $today $month $bmonth $zyear $byear"
if {$today==$bdate} {
return [lconv [expr $ztime - $btime]]
} elseif {$month==$bmonth} {
return "[expr [unoctal [lindex [split $today /] 1]] - [unoctal [lindex [split $bdate /] 1]]] days"
} elseif {$zyear==$byear} {
return "[expr $month - $bmonth] months"
} else {
return "[expr $zyear - $byear] years"
}
}
proc lconv {mins} {
set i 0;set n $mins;set hour 0
while {$i<$n} {
incr i
if {$i>$n} {break}
if {$mins>59} {incr mins -60;incr hour}
}
set mins [unoctal $mins]
set hour [unoctal $hour]
#1440=24
if {$mins!=0} {return "$hour hrs, $mins min"
} {return "$hour hrs"}
}
proc mconv {args} {return [expr [lindex [split $args :] 1] + ([unoctal [lindex [split $args :] 0]] * 60)]}
proc getdate {arg} {
set system [split [clock format [clock scan $date] -format "%m/%d/%Y@%H:%M"] @]
set date [split [lindex $system 0] /]
set time [lindex $system 1]
set month [lindex $date 0]
set day [lindex $date 1]
set year [lindex $date 2]
set date [join $date /]
if {$arg=="date"} {return $date}
if {$arg=="time"} {return $time}
if {$arg=="month"} {return $month}
if {$arg=="day"} {return $day}
if {$arg=="year"} {return $year}
}
proc unoctal {args} {
set args [split $args {}]
set n [llength $args]
set i 0
while {$i<$n} {
if {[string match 0 [lindex $args 0]]} {regsub -all "0 " $args "" args}
incr i;set n [llength $args]
if {$i>$n} {break}
}
return [join $args {}]
}
proc happybday {} {
set bc [open birth_certificate.egg r]
set bdate [lindex [gets $bc] 0];close $bc
set bdiff [myage]
# !B is for born (birthdate), !D is for difference (age)
set bday {
{I was born on !B. I'm only !D old}
{My birthday is !B}
{My birthday is !B}
{I'm only !D old!}
{}
}
regsub -all "!B" $bday $bdate bday
regsub -all "!D" $bday $bdiff bday
return [lindex $bday [rand [llength $bday]]]
}
proc learnit {nick host hand chan text} {
global botsnick lrntrig ltrigger otherbots req
regsub -all "\\\"" $text "'" text
# death to leet hax0rz!
# regsub -all "\\\\n|\\\\a|\\\\b|\\\\f|\\\\r|\\\\t|\\\\v" $text "" text
regsub -all "\007|\015|\022|\026|\028|\030" $text "" text
regsub -all "\\\\" $text "\\\\\\\\" text
# regsub -all "\\\[" $text "\\\\\\\[" text
# regsub -all "\\\]" $text "\\\\\\\]" text
# regsub -nocase "'s " $text " is " text
regsub -nocase " let is " $text " lets " text
regsub -nocase " isn't " $text " is not " text
set text [fixgrammar $text]
set start [low [lindex $text 0]]
set ignorewords {[botsnick] who what ok}
if {($lrntrig) && [lindex $text 0]!="[bit]$ltrigger"} {
set do_nothing 1
} elseif {![string match *$nick* $otherbots]} {
# lets not forget about stripping! wooohoooo
if {$lrntrig} {
regsub -all -nocase "[bit]$ltrigger " $text "" text
}
set original {}
set type [lsearch -exact [low $text] "is"]
if {$type!="-1"} {set type "is"} {set type "are"}
set whom [lsearch -exact $text "$type"]
set getword [getword [lrange $text 0 [expr $whom -1]]]
if {$getword!=""} {
set breaker [lsearch -exact $getword "=>"]
set keyword [lrange $getword 0 [expr $breaker - 1]]
set original [lrange $getword [expr $breaker + 1] e]
} else {
set keyword [lrange $text 0 [expr $whom -1]]
}
set response [lrange $text [expr $whom + 1] e]
if {![isinop [lindex $response 0]]} {
set ll [lindex [split [lindex $response e] {}] e]
while {$ll=="."} {
set response "[lrange $response 0 end-1] [join [lrange [split [lindex $response e] {}] 0 end-1] {}]"
set response [string trim $response]
set ll [lindex [split [lindex $response e] {}] e]
}
} {
if {![matchattr $hand $req(cn)]} {
putnotc $nick "Sorry, you don't have access to do that."
return 0
}
}
set also [lindex $text [expr $whom + 1]]
# replace a few things
regsub -all -nocase " my " $response " $nick's " response
regsub -all -nocase " i am " $response " $nick is " response
regsub -all -nocase "[botsnick] is " $response "I am " response
regsub -all -nocase " [botsnick]'s " $response " my " response
regsub -all -nocase "[botsnick], " $text "" text
if {[string match *$start* $ignorewords]} {set text [lrange $text 1 e]}
if {[string match -nocase no, $start] && ![isfrozen $keyword]} {delword $keyword}
if {$original != "" && ![isfrozen $keyword]} {
delword $keyword
set response "$original | $response"
set original {}
}
if {($original == "" && ![isfrozen $keyword]) && ([string length $keyword] >= 3 && [string length $keyword] <= 100)} {
# if {$start == "no,"} {putchan $chan "Ok $nick"}
addword $keyword $response
}
}
}
proc fixgrammar {text} {
# If you can think of any other common things that need to be converted
# PLEASE tell me!! :)
set text "@ $text @"
regsub -all -nocase " i " $text " I " text
regsub -all -nocase " i'm " $text " I'm " text
regsub -all -nocase " i'd " $text " I'd " text
regsub -all -nocase " i've " $text " I've " text
regsub -all -nocase " i'll " $text " I'll " text
regsub -all -nocase " u " $text " you " text
regsub -all -nocase " r " $text " are " text
regsub -all -nocase " ur " $text " your " text
regsub -all -nocase " yer" $text " your" text
regsub -all -nocase " fav " $text " favorite " text
regsub -all -nocase " fav. " $text " favorite " text
regsub -all -nocase " bish " $text " bitch " text
regsub -all -nocase " whut " $text " what " text
regsub -all -nocase " werd " $text " word " text
regsub -all -nocase " werk " $text " work " text
regsub -all -nocase " prolly " $text " probably " text
regsub -all -nocase " better then " $text " better than " text
return [string trim [lrange $text 1 [expr [llength $text] - 2]]]
}
proc askquestion {nick host hand chan text} {
global botnick botsnick wordfile floodcount workingchans eggfu
global asktrig atrigger randmy randmn otherbots range
set botsnick [low $botnick]
set lownick [low $nick]
if {($asktrig && [lindex $text 0]!="[bit]$atrigger") || [string match -nocase *$nick* $otherbots]} {
set do_nothing 1
} elseif {(([lsearch -exact [low $workingchans] [low $chan]] != -1) || ($workingchans == "")) && [string length $text] != 1} {
# dont forget to snip the !cmd
if {$asktrig == 1 && [lindex $text 0] == $atrigger} {regsub -all "$atrigger " $text "" text}
regsub -all "\\\"" $text "'" text
regsub -all "\\\!" $text "" text
regsub -all "\\\?" $text "" text
set ll [lindex [split [lindex $text e] {}] e]
while {$ll=="."} {
set text "[lrange $text 0 end-1] [join [lrange [split [lindex $text e] {}] 0 end-1] {}]"
set text [string trim $text]
set ll [lindex [split [lindex $text e] {}] e]
}
set text [string trim $text]
set q(start) [lindex $text 0]
set q(end) [lrange $text [expr [llength $text] - $range] e]
set q(long) $text
#if {$getquestion == "me?"} {set q(end) $nick}
#regsub -all "me?" $q(end) "$nick" q(end)
regsub -all "\007|\015|\022|\026|\028|\030" $q(start) "" q(start)
set getword [getword $q(end)]
set breaker [lsearch -exact $getword "=>"]
set keyword [lrange $getword 0 [expr $breaker - 1]]
if {[isfrozen $keyword]} {incr breaker}
set q(ans) [lrange $getword [expr $breaker + 1] e]
if {[isfrozen $q(ans)]} {set q(ans) [lrange $q(ans) 2 e]}
if {$q(long)=="egg-fu"} {set q(ans) "<action> is running \002egg-fu $eggfu\002, by ch3mical"}
#if {$q(ans)=="" && $q(end)!=$q(long)} {set q(ans) $q(end)}
set q(ans) [randomize $q(ans) $nick $chan]
regsub -all "\\\$question" $q(ans) "$text" q(ans)
regsub -all "\\\$keyword" $q(ans) "$q(long)" q(ans)
regsub -all "\\{" $keyword "" keyword
regsub -all "\\}" $keyword "" keyword
regsub -all "\\{" $q(ans) "" q(ans)
regsub -all "\\}" $q(ans) "" q(ans)
set sendto $chan
if {$q(start) == "tell"} {
set whom [lsearch -exact $text "tell"]
set target [lindex $text [expr $whom + 1]]
if {$target!=""} {
set sendto $target
regsub -all "\\\$who" $q(ans) $target q(ans)
}
} {regsub -all "\\\$who" $q(ans) $nick q(ans)}
if {$q(ans)!="" && $q(ans)!="~"} {
set getstart [lindex $q(ans) 0]
set getrest [lrange $q(ans) 1 e]
if {$getstart == "<reply>"} {
putserv "PRIVMSG $sendto :$getrest"
if {$sendto!=$nick && $sendto!=$chan} {putnotc $nick "Told $sendto \"$getrest\""}
} elseif {$getstart == "<ctcp>"} {putserv "PRIVMSG $nick :\001$getrest\001"
} elseif {$getstart == "<notice>"} {putnotc $sendto "$getrest"
} elseif {$getstart == "<action>"} {putserv "PRIVMSG $sendto :\001ACTION $getrest\001"
} {
regsub -all "!Q" [randy] $keyword randmy
regsub -all "!A" $randmy $q(ans) randmy
regsub -all "!U" $randmy $nick randmy
putserv "PRIVMSG $sendto :$randmy"
}
} elseif {[string match -nocase [botsnick]* $q(start)] && $q(end) != ""} {
if {[lindex $q(end) 0]==$q(start)} {set q(end) [lrange $q(end) 1 e]}
regsub -all "\\?" $q(end) "" q(end)
regsub -all "!Q" [randn] $q(end) randmn
regsub -all "!A" $randmn $q(ans) randmn
regsub -all "!U" $randmn $nick randmn
putserv "PRIVMSG $sendto :$randmn"
}
}
return 0
}
if {![file exists birth_certificate.egg]} {
set coin [rand 10]
if {$coin>=5} {set sex boy} {set sex girl}
putlog "\002IT'S A [string toupper $sex]!!\002"
putlog "\002Congratulations!\002 You are now the proud parent of an \002egg-fu\002 bot!"
set bdate [clock format [clock seconds] -format "%m/%d/%Y@%H:%M"]
putlog "I was born on \002$bdate\002"
set bc [open birth_certificate.egg w]
puts $bc $bdate
puts $bc $sex;close $bc
if {![file exists $wordfile]} {
putlog "Creating Brain...";set wf [open $wordfile w]
} {set wf [open $wordfile a+]}
puts $wf "born => <reply> \$birthday"
puts $wf "birthday => <reply> \$birthday"
puts $wf "how old are you => <reply> I'm \$age old | <action> is \$age old"
puts $wf "boy or girl => <reply> I'm a \$sex! | <action> is a \$sex"
puts $wf "asl => <reply> \$age/\$sex/earth!"
puts $wf "how => ~"
puts $wf "who => ~"
puts $wf "why => ~"
puts $wf "what => ~"
puts $wf "when => ~"
puts $wf "where => ~"
puts $wf "wtf => ~"
close $wf
}
set bc [open birth_certificate.egg r]
set sex [gets $bc];set sex [gets $bc];close $bc
putlog "\002egg\002-\002fu\002 \002$eggfu\002 loaded! (age: [myage], sex: $sex)"
|
after i put this
| Code: |
set date [split [lindex $system 0] /]
|
|
|
| Back to top |
|
 |
PoHuIsT Voice
Joined: 22 Oct 2007 Posts: 23
|
Posted: Thu Oct 25, 2007 7:48 am Post subject: |
|
|
maybe i put samthing from ????? reput it and give me full skript code ty |
|
| Back to top |
|
 |
nml375 Revered One
Joined: 04 Aug 2006 Posts: 2857
|
Posted: Thu Oct 25, 2007 7:51 am Post subject: |
|
|
Use the first suggestion by speechles, the one using "clock seconds" rather than "clock scan $date"...
That one is correct... _________________ NML_375, idling at #eggdrop@IrcNET |
|
| Back to top |
|
 |
PoHuIsT Voice
Joined: 22 Oct 2007 Posts: 23
|
Posted: Thu Oct 25, 2007 7:54 am Post subject: |
|
|
dozent work
| Code: |
while executing
"lindex $date 0"
(procedure "getdate" line 4)
invoked from within
"getdate time"
(procedure "myage" line 6)
invoked from within
"myage"
invoked from within
"putlog "\002egg\002-\002fu\002 \002$eggfu\002 loaded! (age: [myage], sex: $sex)
""
(file "scripts/egg-fu_2.0.2.tcl" line 940)
invoked from within
"source scripts/egg-fu_2.0.2.tcl" |
| Code: |
#eggdrop1.6 +/-
# ___
# .-----..-----..-----. __ .' _|.--.--.
# | -__|| _ || _ ||__|| ._|| | |
# |_____||___ ||___ | |__| |_____|
# |_____||_____|
# version 2.0.2
#
#
# Copyright (C) 2002, ch3mical
# CitizenK@mad.scientist.com
# irc.secsup.org (EFnet)
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Version Information (Major Additions and Bug Fixes!) can be found in the
# Version.txt included in the package.
#
# Feature explanations, instructions, and HELP can be found in
# How-to.txt included in the package.
#
##########################################################################
# If you use the following code in any form partial or modifed, at least #
# give the programmer who did this much hard work his deserved credit! #
##########################################################################
#
# Greetz:
# Tigrrr, psynapse, dilvie, yo momma, mickrip, poke, #trax
# one_, sunrpc, ^PLAID^, Tenebrous, Byte, KottoN, raz0rchiq, Law
# tekneeks, vortek, peeps on the west side, ziricon, and everyone else
#
# Thanks to:
# brainiac for being the beta-test monkey
#
# email your suggestions/questions/comments/bitches to:
# CitizenK@mad.scientist.com
#
##########################################################################
#@##### SETUP THE SCRIPT #######
# Please change the details below
# To work in all channels leave this blank
set workingchans ""
# List any other bots you want to be ignored
set otherbots "dark-bot infobot soundbot"
# Location of your word file
set wordfile "brain.txt"
# [0/1] Set this to 0 to turn off misdirection-learning (not recommended)
set mdirect 1
# This is the character that will PRECEED all !trigger commands (if
# enabled), set this to "-no-" to make triggers work without it
set it "!"
# [0/1] Require a !trigger command for learning?
set lrntrig 0
set ltrigger "set"
# [0/1] Require a !trigger command for questions?
# It's ok to set both triggers the same
set asktrig 0
set atrigger "ask"
# [hjmnoptx] Require which modes to use learn?
# Set to "-" to allow anyone to teach egg-fu
set req(ln) "-|-"
# [hjmnoptx] Require which modes to use ask?
# Set to "-" to allow anyone to ask
set req(ak) "-"
# [hjmnoptx] Require which modes to use <ctcp> or <notice>
# Set to "-" to allow all (not recommended)
set req(cn) "o|o"
# Set the subject range here, this refers to how much of the sentence
# egg-fu will process, (default=4)
set range 4
### DONE ###
# These fields can be modifed if you wish!
# !Q=question !A=answer !U=who asked
# above items are replaced by the script with proper values
proc randy {} {
set apb {
{I heard that !Q is !A}
{Did you know that !Q is !A?}
{!Q is !A}
{I'm sure !Q is !A}
{!U: someone said that !Q is !A}
{!Q might be !A}
{Didn't you say !Q is !A?}
{Could it be !Q is !A?}
{I guess !Q is !A}
{Hmmm. I think !Q is !A}
{Well, !Q is !A}
{!U, !Q is probably !A}
{I bet !Q is !A}
{Isn't !Q !A?}
{!U: !Q is !A}
{Do you think !Q is !A?}
}
return [lindex $apb [rand [llength $apb]]]
}
# add/change these to personalize your bot!
proc randn {} {
set apb {
{I don't know, !U.}
{I'm not sure what !Q is.}
{No idea, !U.}
{Why don't you enlighten me, !U?}
{Can't sleep clowns will eat me!}
{I've got no idea, !U...}
{Yo momma knows about !Q!}
{!U: don't ask me, I don't know.}
{I don't know what !Q is, !U.}
{Well maybe you should tell me, !U?}
}
return [lindex $apb [rand [llength $apb]]]
}
# add/change these to personalize your bot!
proc anyanimal {} {
set randanimal {
{goat}
{llama}
{lemming}
{gerbil}
{penguin}
{dung beetle}
{billy goat}
{grizzly bear}
{ostrich}
{drunken transient}
{donkey}
{sea monkey}
{buffalo}
{dog}
{monkey}
{freaky little hamster}
{monkey faced eel}
{iguana}
{hippo}
{bull}
{cow}
{duck}
{zebra}
{giraffe}
}
return [lindex $randanimal [rand [llength $randanimal]]]
}
# add/change these to personalize your bot!
proc anycolor {} {
set apb {
{red}
{yellow}
{orange}
{green}
{blue}
{brown}
{pink}
{purple}
{magenta}
{black}
{white}
}
return [lindex $apb [rand [llength $apb]]]
}
# add/change these to personalize your bot!
# these are NOUNS
proc anyitem {} {
set apb {
{screw driver}
{fire hose}
{corndog}
{wrench}
{excrement}
{pig cheese}
{barbie doll}
{bleeding pimple}
{trout}
{headless corpse}
{cattle prod}
{blowup sheep}
{dirty diaper}
{dried cum stain}
{portable cheese grater}
{bottle of prozac}
{flying detachable penis}
{condom}
{severed head}
{UNIX manual}
}
return [lindex $apb [rand [llength $apb]]]
}
# add/change these to personalize your bot!
# these are ADJECTIVES
proc anyadj {} {
set apb {
{stupid}
{silly}
{ugly}
{smelly}
{hairy}
{sticky}
{used}
{green}
{pink}
{purple}
{abused}
{torn}
{broken}
{squashed}
{crusty}
{thin}
{fat}
{old}
{slick}
{slippery}
{spicy}
{spiked}
{blown up}
}
return [lindex [concat [concat $apb]] [rand [llength $apb]]]
}
# add/change these to personalize your bot!
proc anyday {} {
set randday {
{Monday}
{Tuesday}
{Wednesday}
{Thursday}
{Friday}
{Saturday}
{Sunday}
{some day}
{any day}
{tomorrow}
{yesterday}
}
return [lindex $randday [rand [llength $randday]]]
}
# add/change these to personalize your bot!
proc anymonth {} {
set randmonth {
{January}
{February}
{March}
{April}
{May}
{June}
{July}
{August}
{September}
{October}
{November}
{December}
}
return [lindex $randmonth [rand [llength $randmonth]]]
}
#####################################################
### Don't need to touch the stuff below this line ###
#$###################################################
bind pubm $req(ak) * askquestion
bind pubm $req(ln) "* is *" learnit
bind pubm $req(ln) "* isn't *" learnit
#bind pubm $req(ln) "* it's *" learnit
#bind pubm $req(ln) "* are *" learnit
bind pubm - "* =~ *" alterit
bind pubm - "*--" karma_action
bind pubm - "*++" karma_action
bind pub o|o thaw thawit
bind pub m|m lock lockit
bind pub o|o freeze freezeit
bind pub m|m unlock unlockit
bind pub o|o forget forgetit
bind pub -|- karma karma_info
#bind dcc o|o "freeze" dcc_freezeit
#bind dcc o|o "forget" dcc_forgetit
set eggfu "2.0.2"
set floodcount 0
proc low {i} {return [string tolower $i]}
proc bit {} {global it;if {$it=="-no-"} {return ""} {return $it}}
proc botsnick {} {global botnick;return $botnick}
proc isfrozen {arg} {
set i 0
set text [getword $arg]
set apos [lsearch -exact $text "=>"]
set text [lrange $text [expr $apos + 1] e]
if {[lindex $text 0] == "!"} {set i 1}
if {[lindex $text 0] == "~"} {set i 1}
return $i
}
proc isinop {arg} {
set i 0
if {$arg=="<reply>"} {set i 1}
if {$arg=="<action>"} {set i 1}
if {$arg=="<ctcp>"} {set i 1}
if {$arg=="<notice>"} {set i 1}
return $i
}
proc alterit {nick host hand chan text} {
global botsnick
regsub -all "[botsnick], " $text "" text
regsub -all " s/" $text " " text
regsub -all "/" $text " / " text
set fseperator [lsearch -exact $text "=~"]
set seperator [lsearch -exact $text "/"]
set alterstring [lrange $text 0 [expr $fseperator -1]]
set alterwhat [lrange $text 2 [expr $seperator -1]]
set alterwith [lrange $text [expr $seperator +1] e]
regsub -all " /" $alterwith "" alterwith
set question [lrange [getword $alterstring] 1 e]
set searchforwhat [lsearch -exact $question $alterwhat]
if {[isfrozen $alterstring]} {
putnotc $nick "'$alterstring' has been frozen."
} elseif {$question == ""} {
putnotc $nick "No variable set!"
} elseif {$searchforwhat == "-1"} {
putnotc $nick "'$alterwhat' not in '$alterstring'!"
} {
regsub -all $alterwhat $question $alterwith result
delword $alterstring
addword $alterstring $result
putlog "!egg-fu! Alter: '$question' is now: $result"
putnotc $nick "'$alterstring' is altered."
}
}
proc freezeit {nick host hand chan text} {
global botsnick
regsub -all "[botsnick], " $text "" text
set wpos [lsearch -exact $text "freeze"]
set what [lrange $text [expr $wpos + 1] e]
set text [getword $what]
set apos [lsearch -exact $text "=>"]
set text [lrange $text [expr $apos + 1] e]
if {[isfrozen $what]} {
putnotc $nick "'$what' has already been frozen."
} elseif {$what != ""} {
putlog "!egg-fu! Freezing '$what'"
delword $what
addword $what "! $text"
putnotc $nick "'$what' is now frozen."
} {putnotc $nick "Freeze what?"}
}
proc thawit {nick host hand chan text} {
set wpos [lsearch -exact $text "thaw"]
set what [lrange $text [expr $wpos + 1] e]
set text [getword $what]
set apos [lsearch -exact $text "=>"]
set text [lrange $text [expr $apos + 1] e]
if {![isfrozen $what]} {
putnotc $nick "'$what' isn't frozen."
} elseif {$what != ""} {
putlog "!egg-fu! Thawing '$what'"
delword $what
addword $what [lrange $text 1 e]
putnotc $nick "'$what' is now unfrozen."
} {putnotc $nick "Thaw what?"}
}
proc lockit {nick host hand chan text} {
global botsnick
regsub -all "[botsnick], " $text "" text
set wpos [lsearch -exact $text "lock"]
set what [lrange $text [expr $wpos + 1] e]
if {[isfrozen $what]} {
putnotc $nick "'$what' has been frozen."
} elseif {$what != ""} {
putlog "!egg-fu! Locking '$what'"
delword $what
addword $what "~"
putnotc $nick "'$what' is now locked."
} {putnotc $nick "Lock what?"}
}
proc unlockit {nick host hand chan text} {
global botsnick
regsub -all "[botsnick], " $text "" text
set wpos [lsearch -exact $text "unlock"]
set what [lrange $text [expr $wpos + 1] e]
set text [lindex [getword $what] e]
if {$text == "~" && $what != ""} {
delword $what
putlog "!egg-fu! Unlocked '$what'"
putnotc $nick "'$what' is now unlocked."
} {putnotc $nick "Unlock what?"}
}
proc forgetit {nick host hand chan text} {
global botsnick
set wpos [lsearch -exact $text "forget"]
set what [lrange $text [expr $wpos + 1] e]
set text [lrange [getword $what] 1 e]
if {[isfrozen $what]} {
putnotc $nick "'$what' has been frozen."
} elseif {$text == ""} {
putnotc $nick "'$what' not found."
} elseif {$what != "" && [llength $what] < 3} {
delword $what
putnotc $nick "'$what' forgotten."
} {putnotc $nick "Forget what?"}
}
proc karma_info {nick host hand chan text} {
global botsnick
set karma_action [lindex $text 0]
regsub -all "\\\?" $text "" text
set karma [lindex $text 1]
if {$karma == "me"} { set karma $nick }
if {$karma == ""} {
putnotc $nick "You have not entered a karma option (karma for/set/reset)"
} elseif {$karma_action == "for"} {
set answer [lrange [getword "<karma> $karma"] 1 e]
if {$answer == "" || $answer == "0"} {
putchan $chan "$karma has neutral karma"
} {
putchan $chan "$karma has karma of $answer"
}
} elseif {$karma_action == "set"} {
set karma_setas [lindex $text 2]
if {$karma == $nick} {
putnotc $nick "Please don't karma yourself."
} elseif {$karma_setas != ""} {
putlog "!egg-fu! Karma: $karma been changed to $karma_setas"
delword "<karma> $karma"
addword "<karma> $karma" $karma_setas
putchan $chan "$karma has now been set to $karma_setas"
} {
putnotc $nick "You have not entered a set value! (karma set <karma> <new value>)"
}
} elseif {$karma_action == "reset"} {
if {$karma == $nick} {
putnotc $nick "Please don't karma yourself."
} else {
delword "<karma> $karma"
addword "<karma> $karma" ""
putchan $chan "$karma has been reset"
}
}
}
proc karma_action {nick host hand chan text} {
global botsnick
regsub -all "\\\+\\\+" $text " \+\+" text
regsub -all "\\\-\\\-" $text " \-\-" text
set karma [lindex $text 0]
set question [lrange [getword "<karma> $karma"] 1 e]
if {$karma == "me"} {set karma $nick}
if {$question == ""} {
addword "<karma> $karma" 1
putlog "!egg-fu! Karma: $karma set to 1"
} elseif {[low $karma] == [low $nick]} {
putnotc $nick "You cannot give yourself karma."
} else {
if {[lsearch -exact $text "\+\+"] == -1} {
incr question -1
} {
incr question 1
}
delword "<karma> $karma"
addword "<karma> $karma" $question
putlog "!egg-fu! Karma: $karma set to $question"
}
}
proc addword {keyword answer} {
global botsnick wordfile mdirect
# let's learn from others
if {$mdirect} {
set fword [lindex $keyword 0]
# putlog "!egg-fu! mDirect check: $fword"
if {[string match *:* $fword]} {
if {[llength $keyword]>1} {set keyword [lrange $keyword 1 e]
} {regsub -all ":" $keyword "" keyword}
# putlog "!egg-fu! Cauterized: $fword"
}
}
# fix the 'mysterious disappearances' bug
set feeler [lrange [getword $keyword] 1 e]
if {$keyword != $feeler && ![isfrozen $keyword]} {
set puts "$keyword => $answer"
regsub -all "\\{" $puts "" puts
regsub -all "\\}" $puts "" puts
set fh [open $wordfile a]
puts $fh $puts
close $fh
putlog "!egg-fu! Learn: $keyword => $answer"
}
}
proc getword {keyword} {
global botsnick wordfile
set foundone 0
set returnit {}
set fh [open $wordfile r]
while {![eof $fh]} {
set stdin [string trim [gets $fh]]
if {[eof $fh]} {break}
set breaker [lsearch -exact $stdin "=>"]
set getkey [low [lrange $stdin 0 [expr $breaker - 1]]]
set getresult [low [lrange $stdin [expr $breaker + 1] e]]
if {[string match -nocase "* $getkey *" "@ $keyword @"] || [string match -nocase "* $keyword *" "@ $getkey @"]} {
set returnit $stdin;set foundone 1
if {[rand 4]==1} {break}
}
}
close $fh
if {$foundone!=0} {return [string trim $returnit]}
}
proc delword {keyword} {
global botsnick wordfile
set fh [open $wordfile r]
set return {}
set del 0
while {![eof $fh]} {
set stdin [string trim [gets $fh]]
set breaker [lsearch -exact $stdin "=>"]
set getkey [low [lrange $stdin 0 [expr $breaker - 1]]]
if {[eof $fh]} {break}
if {![string match -nocase "* $keyword *" " $getkey "]} {
lappend return $stdin
} {incr del 1}
}
close $fh;
set fh [open $wordfile w]
foreach a $return {puts $fh $a}
close $fh
return $del
}
proc anynick {chan} {
global botsnick
set apb [botsnick]
while {$apb == [botsnick]} {
if {$apb != [botsnick]} {break}
set apb [lindex [split [chanlist "$chan"]] [rand [llength [split [chanlist "$chan"]]]]]
}
return $apb
}
proc anyrandq {text} {
regsub -all "\\| " $text "\t" text
set randq [lindex [split $text \t] [rand [llength [split $text \t]]]]
return $randq
}
proc randomize {q n c} {
set israndom [lsearch -exact $q "|"]
if {$israndom!=-1} {set q [anyrandq $q]}
# i plan on adding other $options in the future
regsub -all \\\$date $q [ctime [unixtime]] q
regsub -all \\\$month $q [anymonth] q
regsub -all \\\$day $q [anyday] q
regsub -all \\\$animal $q [anyanimal] q
regsub -all \\\$nick $q [anynick $c] q
# new as of 1.9
regsub -all \\\$item $q [anyitem] q
regsub -all \\\$adj $q [anyadj] q
# new as of 2.0
regsub -all \\\$birthday $q [happybday] q
regsub -all \\\$age $q [myage] q
regsub -all \\\$sex $q [mysex] q
# regsub -all \\\{ $q "" q
# regsub -all \\\} $q "" q
return [string trim $q]
}
proc mysex {} {
set bc [open birth_certificate.egg r]
set sex [gets $bc]
set sex [gets $bc]
close $bc;return $sex
}
proc myage {} {
set bc [open birth_certificate.egg r]
set bdate [gets $bc]
close $bc
set ztime [unoctal [mconv [getdate time]]]
set btime [unoctal [mconv [lindex $bdate 1]]]
set bdate [lindex $bdate 0]
set today [getdate date]
set month [unoctal [lindex [split $today /] 0]]
set bmonth [unoctal [lindex [split $bdate /] 0]]
set zyear [getdate year]
set byear [lindex [split $bdate /] 2]
#putlog "$ztime $btime $bdate $today $month $bmonth $zyear $byear"
if {$today==$bdate} {
return [lconv [expr $ztime - $btime]]
} elseif {$month==$bmonth} {
return "[expr [unoctal [lindex [split $today /] 1]] - [unoctal [lindex [split $bdate /] 1]]] days"
} elseif {$zyear==$byear} {
return "[expr $month - $bmonth] months"
} else {
return "[expr $zyear - $byear] years"
}
}
proc lconv {mins} {
set i 0;set n $mins;set hour 0
while {$i<$n} {
incr i
if {$i>$n} {break}
if {$mins>59} {incr mins -60;incr hour}
}
set mins [unoctal $mins]
set hour [unoctal $hour]
#1440=24
if {$mins!=0} {return "$hour hrs, $mins min"
} {return "$hour hrs"}
}
proc mconv {args} {return [expr [lindex [split $args :] 1] + ([unoctal [lindex [split $args :] 0]] * 60)]}
proc getdate {arg} {
set system [split [clock format [clock seconds] -format "%m/%d/%Y@%H:%M"] @]
set time [lindex $system 1]
set month [lindex $date 0]
set day [lindex $date 1]
set year [lindex $date 2]
set date [join $date /]
if {$arg=="date"} {return $date}
if {$arg=="time"} {return $time}
if {$arg=="month"} {return $month}
if {$arg=="day"} {return $day}
if {$arg=="year"} {return $year}
}
proc unoctal {args} {
set args [split $args {}]
set n [llength $args]
set i 0
while {$i<$n} {
if {[string match 0 [lindex $args 0]]} {regsub -all "0 " $args "" args}
incr i;set n [llength $args]
if {$i>$n} {break}
}
return [join $args {}]
}
proc happybday {} {
set bc [open birth_certificate.egg r]
set bdate [lindex [gets $bc] 0];close $bc
set bdiff [myage]
# !B is for born (birthdate), !D is for difference (age)
set bday {
{I was born on !B. I'm only !D old}
{My birthday is !B}
{My birthday is !B}
{I'm only !D old!}
{}
}
regsub -all "!B" $bday $bdate bday
regsub -all "!D" $bday $bdiff bday
return [lindex $bday [rand [llength $bday]]]
}
proc learnit {nick host hand chan text} {
global botsnick lrntrig ltrigger otherbots req
regsub -all "\\\"" $text "'" text
# death to leet hax0rz!
# regsub -all "\\\\n|\\\\a|\\\\b|\\\\f|\\\\r|\\\\t|\\\\v" $text "" text
regsub -all "\007|\015|\022|\026|\028|\030" $text "" text
regsub -all "\\\\" $text "\\\\\\\\" text
# regsub -all "\\\[" $text "\\\\\\\[" text
# regsub -all "\\\]" $text "\\\\\\\]" text
# regsub -nocase "'s " $text " is " text
regsub -nocase " let is " $text " lets " text
regsub -nocase " isn't " $text " is not " text
set text [fixgrammar $text]
set start [low [lindex $text 0]]
set ignorewords {[botsnick] who what ok}
if {($lrntrig) && [lindex $text 0]!="[bit]$ltrigger"} {
set do_nothing 1
} elseif {![string match *$nick* $otherbots]} {
# lets not forget about stripping! wooohoooo
if {$lrntrig} {
regsub -all -nocase "[bit]$ltrigger " $text "" text
}
set original {}
set type [lsearch -exact [low $text] "is"]
if {$type!="-1"} {set type "is"} {set type "are"}
set whom [lsearch -exact $text "$type"]
set getword [getword [lrange $text 0 [expr $whom -1]]]
if {$getword!=""} {
set breaker [lsearch -exact $getword "=>"]
set keyword [lrange $getword 0 [expr $breaker - 1]]
set original [lrange $getword [expr $breaker + 1] e]
} else {
set keyword [lrange $text 0 [expr $whom -1]]
}
set response [lrange $text [expr $whom + 1] e]
if {![isinop [lindex $response 0]]} {
set ll [lindex [split [lindex $response e] {}] e]
while {$ll=="."} {
set response "[lrange $response 0 end-1] [join [lrange [split [lindex $response e] {}] 0 end-1] {}]"
set response [string trim $response]
set ll [lindex [split [lindex $response e] {}] e]
}
} {
if {![matchattr $hand $req(cn)]} {
putnotc $nick "Sorry, you don't have access to do that."
return 0
}
}
set also [lindex $text [expr $whom + 1]]
# replace a few things
regsub -all -nocase " my " $response " $nick's " response
regsub -all -nocase " i am " $response " $nick is " response
regsub -all -nocase "[botsnick] is " $response "I am " response
regsub -all -nocase " [botsnick]'s " $response " my " response
regsub -all -nocase "[botsnick], " $text "" text
if {[string match *$start* $ignorewords]} {set text [lrange $text 1 e]}
if {[string match -nocase no, $start] && ![isfrozen $keyword]} {delword $keyword}
if {$original != "" && ![isfrozen $keyword]} {
delword $keyword
set response "$original | $response"
set original {}
}
if {($original == "" && ![isfrozen $keyword]) && ([string length $keyword] >= 3 && [string length $keyword] <= 100)} {
# if {$start == "no,"} {putchan $chan "Ok $nick"}
addword $keyword $response
}
}
}
proc fixgrammar {text} {
# If you can think of any other common things that need to be converted
# PLEASE tell me!! :)
set text "@ $text @"
regsub -all -nocase " i " $text " I " text
regsub -all -nocase " i'm " $text " I'm " text
regsub -all -nocase " i'd " $text " I'd " text
regsub -all -nocase " i've " $text " I've " text
regsub -all -nocase " i'll " $text " I'll " text
regsub -all -nocase " u " $text " you " text
regsub -all -nocase " r " $text " are " text
regsub -all -nocase " ur " $text " your " text
regsub -all -nocase " yer" $text " your" text
regsub -all -nocase " fav " $text " favorite " text
regsub -all -nocase " fav. " $text " favorite " text
regsub -all -nocase " bish " $text " bitch " text
regsub -all -nocase " whut " $text " what " text
regsub -all -nocase " werd " $text " word " text
regsub -all -nocase " werk " $text " work " text
regsub -all -nocase " prolly " $text " probably " text
regsub -all -nocase " better then " $text " better than " text
return [string trim [lrange $text 1 [expr [llength $text] - 2]]]
}
proc askquestion {nick host hand chan text} {
global botnick botsnick wordfile floodcount workingchans eggfu
global asktrig atrigger randmy randmn otherbots range
set botsnick [low $botnick]
set lownick [low $nick]
if {($asktrig && [lindex $text 0]!="[bit]$atrigger") || [string match -nocase *$nick* $otherbots]} {
set do_nothing 1
} elseif {(([lsearch -exact [low $workingchans] [low $chan]] != -1) || ($workingchans == "")) && [string length $text] != 1} {
# dont forget to snip the !cmd
if {$asktrig == 1 && [lindex $text 0] == $atrigger} {regsub -all "$atrigger " $text "" text}
regsub -all "\\\"" $text "'" text
regsub -all "\\\!" $text "" text
regsub -all "\\\?" $text "" text
set ll [lindex [split [lindex $text e] {}] e]
while {$ll=="."} {
set text "[lrange $text 0 end-1] [join [lrange [split [lindex $text e] {}] 0 end-1] {}]"
set text [string trim $text]
set ll [lindex [split [lindex $text e] {}] e]
}
set text [string trim $text]
set q(start) [lindex $text 0]
set q(end) [lrange $text [expr [llength $text] - $range] e]
set q(long) $text
#if {$getquestion == "me?"} {set q(end) $nick}
#regsub -all "me?" $q(end) "$nick" q(end)
regsub -all "\007|\015|\022|\026|\028|\030" $q(start) "" q(start)
set getword [getword $q(end)]
set breaker [lsearch -exact $getword "=>"]
set keyword [lrange $getword 0 [expr $breaker - 1]]
if {[isfrozen $keyword]} {incr breaker}
set q(ans) [lrange $getword [expr $breaker + 1] e]
if {[isfrozen $q(ans)]} {set q(ans) [lrange $q(ans) 2 e]}
if {$q(long)=="egg-fu"} {set q(ans) "<action> is running \002egg-fu $eggfu\002, by ch3mical"}
#if {$q(ans)=="" && $q(end)!=$q(long)} {set q(ans) $q(end)}
set q(ans) [randomize $q(ans) $nick $chan]
regsub -all "\\\$question" $q(ans) "$text" q(ans)
regsub -all "\\\$keyword" $q(ans) "$q(long)" q(ans)
regsub -all "\\{" $keyword "" keyword
regsub -all "\\}" $keyword "" keyword
regsub -all "\\{" $q(ans) "" q(ans)
regsub -all "\\}" $q(ans) "" q(ans)
set sendto $chan
if {$q(start) == "tell"} {
set whom [lsearch -exact $text "tell"]
set target [lindex $text [expr $whom + 1]]
if {$target!=""} {
set sendto $target
regsub -all "\\\$who" $q(ans) $target q(ans)
}
} {regsub -all "\\\$who" $q(ans) $nick q(ans)}
if {$q(ans)!="" && $q(ans)!="~"} {
set getstart [lindex $q(ans) 0]
set getrest [lrange $q(ans) 1 e]
if {$getstart == "<reply>"} {
putserv "PRIVMSG $sendto :$getrest"
if {$sendto!=$nick && $sendto!=$chan} {putnotc $nick "Told $sendto \"$getrest\""}
} elseif {$getstart == "<ctcp>"} {putserv "PRIVMSG $nick :\001$getrest\001"
} elseif {$getstart == "<notice>"} {putnotc $sendto "$getrest"
} elseif {$getstart == "<action>"} {putserv "PRIVMSG $sendto :\001ACTION $getrest\001"
} {
regsub -all "!Q" [randy] $keyword randmy
regsub -all "!A" $randmy $q(ans) randmy
regsub -all "!U" $randmy $nick randmy
putserv "PRIVMSG $sendto :$randmy"
}
} elseif {[string match -nocase [botsnick]* $q(start)] && $q(end) != ""} {
if {[lindex $q(end) 0]==$q(start)} {set q(end) [lrange $q(end) 1 e]}
regsub -all "\\?" $q(end) "" q(end)
regsub -all "!Q" [randn] $q(end) randmn
regsub -all "!A" $randmn $q(ans) randmn
regsub -all "!U" $randmn $nick randmn
putserv "PRIVMSG $sendto :$randmn"
}
}
return 0
}
if {![file exists birth_certificate.egg]} {
set coin [rand 10]
if {$coin>=5} {set sex boy} {set sex girl}
putlog "\002IT'S A [string toupper $sex]!!\002"
putlog "\002Congratulations!\002 You are now the proud parent of an \002egg-fu\002 bot!"
set date [split [lindex $system 0] /]
set bdate [clock format [clock seconds] -format "%m/%d/%Y@%H:%M"]
putlog "I was born on \002$bdate\002"
set bc [open birth_certificate.egg w]
puts $bc $bdate
puts $bc $sex;close $bc
if {![file exists $wordfile]} {
putlog "Creating Brain...";set wf [open $wordfile w]
} {set wf [open $wordfile a+]}
puts $wf "born => <reply> \$birthday"
puts $wf "birthday => <reply> \$birthday"
puts $wf "how old are you => <reply> I'm \$age old | <action> is \$age old"
puts $wf "boy or girl => <reply> I'm a \$sex! | <action> is a \$sex"
puts $wf "asl => <reply> \$age/\$sex/earth!"
puts $wf "how => ~"
puts $wf "who => ~"
puts $wf "why => ~"
puts $wf "what => ~"
puts $wf "when => ~"
puts $wf "where => ~"
puts $wf "wtf => ~"
close $wf
}
set bc [open birth_certificate.egg r]
set sex [gets $bc];set sex [gets $bc];close $bc
putlog "\002egg\002-\002fu\002 \002$eggfu\002 loaded! (age: [myage], sex: $sex)"
|
|
|
| Back to top |
|
 |
nml375 Revered One
Joined: 04 Aug 2006 Posts: 2857
|
Posted: Thu Oct 25, 2007 8:01 am Post subject: |
|
|
First off, you did'nt post the whole error-message...
Secondly, once again you've screwed up while editing, removing the line I earlier told you to restore...
Speechles told you to (quote):
| speechles wrote: | change:
| Code: | | set system [split [concat [exec date +%m/%d/%Y@%H:%M]] @] |
to:
| Code: | | set system [split [clock format [clock seconds] -format "%m/%d/%Y@%H:%M"] @] |
|
Just don't touch anything else (in the original script). _________________ NML_375, idling at #eggdrop@IrcNET |
|
| Back to top |
|
 |
PoHuIsT Voice
Joined: 22 Oct 2007 Posts: 23
|
Posted: Thu Oct 25, 2007 8:06 am Post subject: |
|
|
ok i chenge that one line in original tcl now i have this error
| Code: |
[13:04] can't use non-numeric string as operand of "*"
while executing
"expr [lindex [split $args :] 1] + ([unoctal [lindex [split $args :] 0]] * 60)"
(procedure "mconv" line 1)
invoked from within
"mconv [lindex $bdate 1]"
(procedure "myage" line 7)
invoked from within
"myage"
invoked from within
"putlog "\002egg\002-\002fu\002 \002$eggfu\002 loaded! (age: [myage], sex: $sex)
""
(file "scripts/egg-fu_2.0.2.tcl" line 940) |
|
|
| Back to top |
|
 |
PoHuIsT Voice
Joined: 22 Oct 2007 Posts: 23
|
Posted: Thu Oct 25, 2007 8:23 am Post subject: |
|
|
so eny help ? |
|
| Back to top |
|
 |
nml375 Revered One
Joined: 04 Aug 2006 Posts: 2857
|
Posted: Thu Oct 25, 2007 8:24 am Post subject: |
|
|
Dunno what the author was smoking, however, he screwed up mconv aswell.
It uses "args" as argument variable, which has special meaning and screws things up. Also, he uses lindex on $bdate (first line of the birth_certificate.egg file), which is not a list. Most likely, he ment to split it using @.
My best guess at what the code should look like is something like this, although the code is too messy to tell wether there are any other, similar, flaws; or if this "fix" will cause issues elsewhere...
| Code: | | mconv {arg} {return [expr [lindex [split $arg :] 0] + [unoctal [lindex [split $arg :] 1]] * 60]} |
| Code: | proc myage {} {
...
set bdate [split [gets $bc] @]
... |
_________________ NML_375, idling at #eggdrop@IrcNET |
|
| Back to top |
|
 |
nml375 Revered One
Joined: 04 Aug 2006 Posts: 2857
|
Posted: Thu Oct 25, 2007 8:28 am Post subject: |
|
|
Btw, bumping and sending duplicate posts as PM is generally not appreciated. _________________ NML_375, idling at #eggdrop@IrcNET |
|
| Back to top |
|
 |
PoHuIsT Voice
Joined: 22 Oct 2007 Posts: 23
|
Posted: Thu Oct 25, 2007 8:31 am Post subject: |
|
|
| Code: |
[13:30] missing close-brace: possible unbalanced brace in comment
while executing
"proc myage {} {
set bdate [split [gets $bc] @]
proc getdate {arg} {
set system [split [clock format [clock seconds] -format "%m/%d/%Y@%H:%M"] @]
se..."
(file "scripts/egg-fu_2.0.2.tcl" line 664)
invoked from within
"source scripts/egg-fu_2.0.2.tcl" |
dont now that iz wrong O.o |
|
| Back to top |
|
 |
PoHuIsT Voice
Joined: 22 Oct 2007 Posts: 23
|
Posted: Thu Oct 25, 2007 8:32 am Post subject: |
|
|
| nml375 wrote: | | Btw, bumping and sending duplicate posts as PM is generally not appreciated. |
yes im sorry  |
|
| Back to top |
|
 |
nml375 Revered One
Joined: 04 Aug 2006 Posts: 2857
|
Posted: Thu Oct 25, 2007 8:36 am Post subject: |
|
|
As I was way too lazy to rewrite the whole myage-proc, I simply pointed out the single line that needed editing...
Three dots is used to indicate there's part of the code/quote/etc that was supressed to emphasize the selected part
Obviously, the rest of the proc should remain unedited. _________________ NML_375, idling at #eggdrop@IrcNET |
|
| Back to top |
|
 |
PoHuIsT Voice
Joined: 22 Oct 2007 Posts: 23
|
Posted: Thu Oct 25, 2007 8:37 am Post subject: |
|
|
hmmm i dont speek eng well i dont understood what you told now  |
|
| Back to top |
|
 |
PoHuIsT Voice
Joined: 22 Oct 2007 Posts: 23
|
Posted: Thu Oct 25, 2007 8:39 am Post subject: |
|
|
| plz wtite full code |
|
| Back to top |
|
 |
nml375 Revered One
Joined: 04 Aug 2006 Posts: 2857
|
Posted: Thu Oct 25, 2007 11:49 am Post subject: |
|
|
This script is pretty much littered with bugs and other issues. Posting full code would be pretty pointless unless I would take the effort of rewriting and correcting all those issues. Atleast for me, it would probably be easier to write something from scratch, as I'd first have to get myself into the mind of the original coder. And to be honest, I hav'nt got either the time or the motivation of doing either.
I'd bet your best chances of getting that script working, is to contact the author. _________________ NML_375, idling at #eggdrop@IrcNET |
|
| Back to top |
|
 |
|
|
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
|
|