This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

penalty shoot - elfmeter.tcl

Support & discussion of released scripts, and announcements of new releases.
Post Reply
l
langer_hans
Voice
Posts: 13
Joined: Thu Feb 19, 2015 2:18 pm

penalty shoot - elfmeter.tcl

Post by langer_hans »

hi,

i´m trying to run some scripts on my eggdrop. some work very well, but some dont.

for example:

Code: Select all

#  __                __      __    
# /\ \              /\ \  __/\ \   
# \ \ \         __  \ \ \/\ \ \ \  
#  \ \ \  __  /'__`\ \ \ \ \ \ \ \ 
#   \ \ \_\ \/\ \_\ \_\ \ \_/ \_\ \
#    \ \____/\ \__/ \_\\ `\___ ___/
#     \/___/  \/__/\/_/ '\/__//__/ 
#
# Elfmeter Script by LaW.
#
# | author:     LaW                             
# | version:    1.1                            
# | web:        www.myGeeX.de                   
# | irc:        #GeeX at Quakenet               
# | contact:    www.myGeeX.de/?page_id=17         
#                                                  
# +-------------+
# | r e a d m e |
# +-------------+
# 
# | upload this script via ftp and write:
# |     - 'source url/to/script/elfmeter.tcl'
# | into your eggdrop configuration.
# | After you have done this rehash or restart your eggdrop.
#
# +-------------------+
# | c h a n g e l o g |
# +-------------------+
#
# |     - (23.07.06) v1.0:   release
# |     - (29.07.06) v1.1:   little bug fix
#
# +-------------------+
# | c o p y r i g h t |
# +-------------------+
#
# Copyright (C) 2006  Laurids 'GeeX' W.
#
# 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; either version 2
# of the License, or (at your option) any later version.
#
# 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., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
#
# Don't change anything.
# Report bugs to #GeeX at Quakenet.

#  Penalty shoot out

  #  configuration

    #  variables

        set elfmeter(trigger) "\?"
        set elfmeter(author)  "Laurids 'GeeX' W. (#GeeX at Quakenet)"
        set elfmeter(version) "1.1"
        set elfmeter(flood)   "60"
        
    #   flags / strings
    
        setudef flag elfmeter
 
    #  bindings

        bind PUB  -|- $elfmeter(trigger)elfmeter  elfmeter:start
        bind PUB  -|- $elfmeter(trigger)ja        elfmeter:ja
        bind PUB  -|- $elfmeter(trigger)nein      elfmeter:nein
        bind NOTC -|- links                       elfmeter:links
        bind NOTC -|- mitte                       elfmeter:mitte
        bind NOTC -|- rechts                      elfmeter:rechts

    #  copyright

        putlog "Elfmeter Script version $elfmeter(version) scripted by $elfmeter(author)"

    #  source (again DO NOT change anything if you are not 100% sure)
    
        proc elfmeter:start { nick host hand chan arg } {
            global elfmeter
            if {![channel get $chan elfmeter]} {
                return
            } elseif {[info exists elfmeter(flood,$chan)] && [expr [unixtime] - $elfmeter(flood,$chan)] < $elfmeter(flood)} {
                return                
            } elseif {[info exists elfmeter(game,$chan)]} {
                putserv "NOTICE $nick :Error. Es läuft bereits ein Spiel."
                return
            } elseif {$arg == ""} {
                putserv "NOTICE $nick :Error. Benutze $elfmeter(trigger)elfmeter 'nick'."
                return
            } elseif {![onchan [lindex [split $arg] 0] $chan]} {
                putserv "NOTICE $nick :Error. [lindex [split $arg] 0] ist nicht im Channel anwesend."
                return
            } elseif {$nick == "[lindex [split $arg] 0]"} {
                putserv "NOTICE $nick :Error. Du kannst dich nicht selbst fordern."
                return
            } else {
                set elfmeter(winner,keeper) {
                    "Omg, was für eine Parade von :keeper:! Der Ball fliegt mit einem kräftigen Schuss aufs Tor zu, doch :keeper: ist zur Stelle."
                    "Wow, :keeper: scheint heute in Top-Form zu sein. Er boxt den Ball ins Seitenaus, nicht schlecht, bei so einem Schuss aufs \"Eckige\"!"
                    "Hmm, das war nichts! Mühelos hält :keeper: den Ball, was auch nicht schwer war bei so einem \"Kuller-Bällchen\"."
                    "Unglaublich! Solche Reflexe muss ein Torwart haben, dann kann bei einem Elfmeterschießen gar nichts passieren."
                }        
                set elfmeter(winner,shooter) {
                    "Boah, ein Mordsschuß von :shooter: auf den Kasten! Viel zu schnell für :keeper:."
                    "Oh, wie hat er den nur verwandelt? Einzigartiger Schuß von :shooter: auf das Gehäuse von :keeper:."
                    "Hammer, ein wahrer Goldjunge am Elfmeterpunkt! Eiskalt schiebt er den Ball ins Tor."
                    "Was kann man da noch sagen? Perfekt, einfach nur perfekt, wie :shooter: den Elfmeter verwandelt hat."
                }        
                set elfmeter(winner,keeper,aside) {
                    "Oh nein, wie konnte :shooter: so einen sicheren Elfmeter nur versemmeln? Glück für :keeper:!"
                    "Ein Gewaltschuß, aber leider ohne Erfolg für :shooter:, er haut das Ding an den Pfosten!."
                    "Hmm, :shooter: scheint es heute mit den Nerven zu haben. Er haut die Kirsche in die Zuschauermenge."
                    "Oh Gott, hier wollte :shooter: es zu genau machen. Er knallt das Leder an die Latte und :keeper: freut sich, sein Einsatz war nicht gefragt."
                }
                set elfmeter(points,keeper,$chan) 0
                set elfmeter(points,shooter,$chan) 0
                set elfmeter(game,$chan) 1
                set elfmeter(player1,$chan) $nick
                set elfmeter(player2,$chan) [lindex [split $arg] 0]
                set elfmeter(chan,$nick) $chan
                set elfmeter(chan,$elfmeter(player2,$chan)) $chan
                putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 $nick fordert [lindex [split $arg] 0] zu einem Elfmeterschießen heraus. Tippe $elfmeter(trigger)ja 'keeper/shooter' um die Forderung anzunehmen und deine Position zu wählen, oder $elfmeter(trigger)nein um die Forderung abzulehnen. \002\xBB\002"
                set elfmeter(timer,$chan) [utimer 30 [list elfmeter:timeout $chan]]
            }
        }
        
        proc elfmeter:ja { nick host hand chan arg } {
            global elfmeter
            if {![info exist elfmeter(game,$chan)] || $nick != $elfmeter(player2,$chan)} {
                return
            } else {
                set elfmeter(player2,$chan) $nick
                if {$arg == ""} {
                    putserv "NOTICE $nick :Error. Benutze $elfmeter(trigger)ja 'keeper/shooter' um deine Position zu wählen."
                    return
                } elseif {$arg == "keeper"} {
                    set elfmeter(keeper,$chan) $nick
                    set elfmeter(shooter,$chan) $elfmeter(player1,$chan)
                    putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 $nick ist der Torwart. Viel Glück beim Elfmeter halten. \002\xBB\002"
                } elseif {$arg == "shooter"} {
                    set elfmeter(shooter,$chan) $nick
                    set elfmeter(keeper,$chan) $elfmeter(player1,$chan)
                    putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 $nick ist der Schütze. Hoffentlich triffst du auch das Tor. \002\xBB\002"
                }
            }
            killutimer $elfmeter(timer,$chan)
            set elfmeter(chan,$elfmeter(keeper,$chan)) $chan
            elfmeter:game $chan
        }
        
        proc elfmeter:nein { nick host hand chan arg } {
            global elfmeter
            if {![info exist elfmeter(game,$chan)] || $nick != $elfmeter(player2,$chan)} {
                return
            } else {
                killutimer $elfmeter(timer,$chan)
                unset elfmeter(game,$chan)
                putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 $nick ist anscheinend kein Fußball Fan. Spiel abgebrochen. \002\xBB\002"
            }
        }
        
        proc elfmeter:timeout { chan } {
            global elfmeter
            unset elfmeter(game,$chan)
            putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 Es scheint, dass $elfmeter(player2,$chan) zur Zeit nicht hier ist. Spiel abgebrochen. \002\xBB\002"
        }
        
        proc elfmeter:game { chan } {
            global elfmeter botnick
            if {[expr $elfmeter(points,keeper,$chan) + $elfmeter(points,shooter,$chan)] == 0} {
                puthelp "NOTICE $elfmeter(shooter,$chan) :Wo willst du hinschießen? Wähle zwischen /notice $botnick 'links/mitte/rechts'." 
                puthelp "NOTICE $elfmeter(keeper,$chan) :Wo, meinst du, wird dein Gegner hinschießen? Wähle zwischen /notice $botnick 'links/mitte/rechts'."
            }
            set elfmeter(timer,shooter,$chan) [utimer 60 [list elfmeter:choose:timeout $elfmeter(shooter,$chan) $chan]]
            set elfmeter(timer,keeper,$chan) [utimer 60 [list elfmeter:choose:timeout $elfmeter(keeper,$chan) $chan]]
        }
        
        proc elfmeter:links { nick host hand arg dest } {
            global elfmeter
            set chan $elfmeter(chan,$nick)
            if {![info exists elfmeter(game,$chan)]} {
                return
            } elseif {$nick == $elfmeter(shooter,$chan)} {
                killutimer $elfmeter(timer,shooter,$chan)
                set elfmeter(choose,shooter,$chan) "links"
                if {![info exists elfmeter(choose,keeper,$chan)]} {
                    putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 $nick hat sich entschieden, wo er hinschießen will. Mach schon, $elfmeter(keeper,$chan)! Dir bleibt nicht mehr viel Zeit. \002\xBB\002"
                } else {
                    elfmeter:analysis $chan
                }
            } elseif {$nick == $elfmeter(keeper,$chan)} {
                set chan $elfmeter(chan,$elfmeter(keeper,$chan))
                killutimer $elfmeter(timer,keeper,$chan)
                set elfmeter(choose,keeper,$chan) "links"
                if {![info exists elfmeter(choose,shooter,$chan)]} {
                    putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 $nick hat sich für eine Seite entschieden. Hau rein, $elfmeter(shooter,$chan)! Wir wollen sehen, ob es die richtige war. \002\xBB\002"
                } else {
                    elfmeter:analysis $chan
                }
            }
        }
        
        proc elfmeter:mitte { nick host hand arg dest } {
            global elfmeter
            set chan $elfmeter(chan,$nick)
            if {![info exists elfmeter(game,$chan)]} {
                return
            } elseif {$nick == $elfmeter(shooter,$chan)} {
                killutimer $elfmeter(timer,shooter,$chan)
                set elfmeter(choose,shooter,$chan) "mitte"
                if {![info exists elfmeter(choose,keeper,$chan)]} {
                    putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 $nick hat sich entschieden, wo er hinschießen will. Mach schon, $elfmeter(keeper,$chan)! Dir bleibt nicht mehr viel Zeit. \002\xBB\002"
                } else {
                    elfmeter:analysis $chan
                }
            } elseif {$nick == $elfmeter(keeper,$chan)} {
                set chan $elfmeter(chan,$elfmeter(keeper,$chan))
                killutimer $elfmeter(timer,keeper,$chan)
                set elfmeter(choose,keeper,$chan) "mitte"
                if {![info exists elfmeter(choose,shooter,$chan)]} {
                    putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 $nick hat sich für eine Seite entschieden. Hau rein, $elfmeter(shooter,$chan)! Wir wollen sehen, ob es die richtige war. \002\xBB\002"
                } else {
                    elfmeter:analysis $chan
                }
            }
        }
        
        proc elfmeter:rechts { nick host hand arg dest } {
            global elfmeter
            set chan $elfmeter(chan,$nick)
            if {![info exists elfmeter(game,$chan)]} {
                return
            } elseif {$nick == $elfmeter(shooter,$chan)} {
                killutimer $elfmeter(timer,shooter,$chan)
                set elfmeter(choose,shooter,$chan) "rechts"
                if {![info exists elfmeter(choose,keeper,$chan)]} {
                    putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 $nick hat sich entschieden, wo er hinschießen will. Mach schon, $elfmeter(keeper,$chan)! Dir bleibt nicht mehr viel Zeit. \002\xBB\002"
                } else {
                    elfmeter:analysis $chan
                }
            } elseif {$nick == $elfmeter(keeper,$chan)} {
                set chan $elfmeter(chan,$elfmeter(keeper,$chan))
                killutimer $elfmeter(timer,keeper,$chan)
                set elfmeter(choose,keeper,$chan) "rechts"
                if {![info exists elfmeter(choose,shooter,$chan)]} {
                    putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 $nick hat sich für eine Seite entschieden. Hau rein, $elfmeter(shooter,$chan)! Wir wollen sehen, ob es die richtige war. \002\xBB\002"
                } else {
                    elfmeter:analysis $chan
                }
            }
        }
        
        proc elfmeter:choose:timeout { nick chan } {
            global elfmeter
            if {![info exists elfmeter(game,$chan)]} {
                return
            } else {
                putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 Sieht so aus, als wäre $nick verletzt und kann nicht weiter spielen. Spiel abgebrochen. \002\xBB\002"
                unset elfmeter(game,$chan)
                unset elfmeter(choose,shooter,$chan)
                unset elfmeter(choose,keeper,$chan)
            }
        }
        
        proc elfmeter:analysis { chan } {
            global elfmeter
            if {$elfmeter(choose,shooter,$chan) == $elfmeter(choose,keeper,$chan)} {
                regsub -all -- {:keeper:} $elfmeter(winner,keeper) $elfmeter(keeper,$chan) elfmeter(winner,keeper)
                putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 [lindex $elfmeter(winner,keeper) [rand [llength $elfmeter(winner,keeper)]]] (Beide haben sich für $elfmeter(choose,shooter,$chan) entschieden.) \002\xBB\002"
                incr elfmeter(points,keeper,$chan) 1
            } else {
                set elfmeter(shooter,aside) [expr {int(rand()*100) + 1}]
                if {$elfmeter(shooter,aside) >= 50} {
                    regsub -all -- {:shooter:} $elfmeter(winner,shooter) $elfmeter(shooter,$chan) elfmeter(winner,shooter)
                    regsub -all -- {:keeper:} $elfmeter(winner,shooter) $elfmeter(keeper,$chan) elfmeter(winner,shooter)
                    putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 [lindex $elfmeter(winner,shooter) [rand [llength $elfmeter(winner,shooter)]]] (Torwart hat sich für $elfmeter(choose,keeper,$chan) entschieden, Schütze jedoch für $elfmeter(choose,shooter,$chan).) \002\xBB\002"
                    incr elfmeter(points,shooter,$chan) 1
                } else {
                    regsub -all -- {:shooter:} $elfmeter(winner,keeper,aside) $elfmeter(shooter,$chan) elfmeter(winner,keeper,aside)
                    regsub -all -- {:keeper:} $elfmeter(winner,keeper,aside) $elfmeter(keeper,$chan) elfmeter(winner,keeper,aside)
                    putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 [lindex $elfmeter(winner,keeper,aside) [rand [llength $elfmeter(winner,keeper,aside)]]] \002\xBB\002"
                    incr elfmeter(points,keeper,$chan) 1
                }
            }
            if {[expr $elfmeter(points,shooter,$chan) + $elfmeter(points,keeper,$chan)] < 5} {
                set elfmeter(remain) [expr 5 - ($elfmeter(points,keeper,$chan) + $elfmeter(points,shooter,$chan))]
                if {$elfmeter(remain) > 1} {
                    putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 Zwischenstand: $elfmeter(shooter,$chan) $elfmeter(points,shooter,$chan):$elfmeter(points,keeper,$chan) $elfmeter(keeper,$chan). Es bleiben noch $elfmeter(remain) Elfmeter. Auf zur nächsten Runde. Entscheidet euch für eine Seite. \002\xBB\002"
                } else {
                    putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 Zwischenstand: $elfmeter(shooter,$chan) $elfmeter(points,shooter,$chan):$elfmeter(points,keeper,$chan) $elfmeter(keeper,$chan). Es bleibt noch $elfmeter(remain) Elfmeter. Auf zur letzten Runde. Entscheidet euch für eine Seite. \002\xBB\002"
                }
                unset elfmeter(choose,shooter,$chan)
                unset elfmeter(choose,keeper,$chan)
                elfmeter:game $chan
            } else {
                elfmeter:done $chan
            }
        }
        
        proc elfmeter:done { chan } {
            global elfmeter
            if {$elfmeter(points,shooter,$chan) > $elfmeter(points,keeper,$chan)} {
                set elfmeter(winner,$chan) $elfmeter(shooter,$chan)
            } else {
                set elfmeter(winner,$chan) $elfmeter(keeper,$chan)
            }
            unset elfmeter(game,$chan)
            unset elfmeter(choose,shooter,$chan)
            unset elfmeter(choose,keeper,$chan)
            putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 Nach einem spannenden Elfmeterschießen gewinnt $elfmeter(winner,$chan), herzlichen Glückwunsch. \002\xBB\002"
            putserv "PRIVMSG $chan :\002\xAB Elfmeter \xBB \xAB\002 Ergebnis nach 5 Runden: $elfmeter(shooter,$chan) $elfmeter(points,shooter,$chan):$elfmeter(points,keeper,$chan) $elfmeter(keeper,$chan). \002\xBB\002"
            set elfmeter(flood,$chan) [unixtime]
        }
i dont know why it isnt working.
nothing happens if i type ?elfmeter


i did this:

Code: Select all

# | upload this script via ftp and write:
# |     - 'source url/to/script/elfmeter.tcl'
# | into your eggdrop configuration.
# | After you have done this rehash or restart your eggdrop.
thanks for help
w
willyw
Revered One
Posts: 1196
Joined: Thu Jan 15, 2009 12:55 am

Re: penalty shoot - elfmeter.tcl

Post by willyw »

langer_hans wrote:
...

setudef flag elfmeter


...

if {![channel get $chan elfmeter]} {
return

...

I have only had a very quick look at your post.

The things I quoted above indicate that the scripter created a way for the bot owner to enable/disable on a per channel basis.

To find out:
In the partyline, do:
.chaninfo #channel_name

and your bot will return its channel settings for that channel.
Look for a section named:
User defined channel flags

and find:
elfmeter

I suspect it will be:
-elfmeter

If so, do:
.chanset #channel_name +elfmeter
to change it.
You can check your work by doing:
.chaninfo #channel_name
again, and see that it is now + .

After making this change, test your script again, on #channel_name.

I hope this helps.
l
langer_hans
Voice
Posts: 13
Joined: Thu Feb 19, 2015 2:18 pm

Post by langer_hans »

THANKS!

i think it was a noobie question. i will note it that i have to activate it in the partyline :D

THANKS so much!
w
willyw
Revered One
Posts: 1196
Joined: Thu Jan 15, 2009 12:55 am

Post by willyw »

I take then that it is working all ok now?

p.s.
Usually the scripter makes a note in the instructions telling the bot owner to use .chanset, etc.
It seems that this one simply forgot.
l
langer_hans
Voice
Posts: 13
Joined: Thu Feb 19, 2015 2:18 pm

Post by langer_hans »

i downloaded so much scripts, some of them worked without to do anything, some got an !on/off switch directly.

and some with .chanset - and they got no note :)
Post Reply