Motto Erweiterung für Radiomoderator

Tappi112

Active Member
#1
Wir nutzen ein recht gutes Script für das Radio.
Nun bin ich angesprochen worden, das man auch ein Motto mit angeben könnte.

Jetzt möchte ich ungern das Radioscript bearbeiten, sondern einfach ein schlichtes neues Script schreiben.

Also folgendes, wenn ein Moderator auf Sendung geht setzt er sich als DJ/Moderator ... das Topic wird im Chat geändert und er kann Wünsche empfangen....

So weit so gut, nun soll er aber noch die Möglichkeit haben, sein Motto z.B. Rock angeben zu können.

!setmotto Rock

Wenn dann ein Hörer im Chat !motto eingibt soll dann ein Ausgabetext kommen z.B. der Moderator hat für seine Sendung das Motto Rock gewählt ....

Nur wie mach ich das nun?

Ich könnte zwar mit der Variable %genre arbeiten im Radioscript, nur weiß ich jetzt schon, das kaum einer dann daran denken wird, dies in seinem Sendeprogramm entsperchend anzugeben. Außerdem, wie schon gesagt möchte ich da ungern etwas umändern... weil es gerade sehr gut funktioniert.

Darum sollte das ganze mit einem Befehl angegeben werden (setmotto)

Vielen Dank schon mal im vorraus
 

Tappi112

Active Member
#3
Geholfen hat mir nur, das ich diese Befehle irgendwie in das Script einbringen muss, aber wie, das weiß ich leider nicht. Habe auch nicht wirklich etwas weiter helfendes ergooglen können :(
Der Link führt auch nur zur Seite Eggheads, aber ohne Inhalt (Errormeldung)

Ich habe mir aber einige Scripte angeschaut und das was ich weiß was eventuell vorhanden sein muss, schon mal zusammen gefasst .... aber ob es richtig ist weiß ich nicht



# Channel für Befehle (mehrere mit leerzeilen trennen)
set text:channels "#retter-team"

# Befehle setzen
bind pub -|- !motto text:motto


puts "text"
gets stdin text

set text [gets stdin]





proc achan {cchan} {

set activechans "#retter-radio #retter-team"

if {[string length $activechans] > 0} {
if {[string first [string tolower $cchan] $activechans] < 0} {
return no_achan
}
}
}


bind pub - !Motto motto

proc motto {nick uhost hand chan arg} {
if {([achan $chan] != "no_achan")} {
if {[onchan $arg $chan]} {
putserv "PRIVMSG $chan :\001ACTION Hallo $arg der sendende Moderator $dj hat $text als sein Motto gesetzt\001"
}
if {($arg == "") || ([llength $arg] < 1)} {
putserv "PRIVMSG $chan :\001ACTION Hallo $nick der sendende Moderator $dj hat $text als sein Motto gesetzt\001"
}
return 0
}
}


Ich bin wirklich für jede Hilfe dankbar
 
#4
http://www.eggheads.org/support/egghtml/1.6.15/tcl-commands.html

Wäre auch richtig :D.

Code:
set radioIntern "#retter-team"
setudef str motto

bind pub -|- "!motto" pub:motto

proc pub:motto {nick uhost handle chan txt} {
    if { $chan == $::radioIntern } {
        channel set $chan motto $txt
        return
    }
    set motto [channel get $::radioIntern motto]
    
    puthelp "PRIVMSG $chan :Das Motto der Sendung lautet $motto"
}
So in der Richtung würde ich es machen.
Keine Ahnung ob es funktioniert :D habe es gerade nur schnell gefrickelt.
 

Tappi112

Active Member
#5
Habe es mal getestet es funktioniert :) Super
Jetzt muss ich es nur irgendwie hinbekommen, das wenn kein Moderator sendet, eine andere Meldung kommt ... hmmm
Naja irgendwie werd ich da eine Lösung für finden, wichtig ist das es schon mal geht :)
Danke für deine Hilfe Toushirou :)
 
#6
Habe es mal getestet es funktioniert :) Super
Jetzt muss ich es nur irgendwie hinbekommen, das wenn kein Moderator sendet, eine andere Meldung kommt ... hmmm
Naja irgendwie werd ich da eine Lösung für finden, wichtig ist das es schon mal geht :)
Ich weiß ja nicht wie eures Script aufgebaut ist.
Wenn der Moderator, sobald er fertig ist, irgendwie die Playlist setzt, kann man da ja noch ein bind drauf setzen oder direkt im Radioscript abändern.

NP.
 

Tappi112

Active Member
#7
Angeschaut hatte ich es mir schon, aber um ehrlich zu sein trau ich mich da nicht ran, vor allem wüßte ich auch nicht wo an welcher Stelle ich es reinsetzen müsste. Je mehr ich mich mit TCL befasse, je besser verstehe ich es auch, aber direkt im Radioscript jetzt etwas abändern bzw. einfügen, das ist mir doch etwas zu tief .....

Aber ich könnte das Script ja mal per Mail schicken?

Was ich aber schon gemacht habe, ist die Textmeldung abgeändert. So bald sich jemand zu Dj gesetzt hat bekommt er eine Meldung. Das gleiche auch wenn er sich wieder entfernt also !unsetdj eingibt.
 
#8
Code:
setudef str motto
set radioIntern "#retter-team"

bind pub -|- "!motto" pub:motto

proc pub:motto {nick uhost handle chan} {
    if { $chan == $::radioIntern } {
        if { $txt != "" } {
            channel set $chan motto $txt
        } else {
            puthelp "NOTICE $nick :$::lastbind <txt>"
        }
        return
    }

    set motto [channel get $::radioIntern motto]
    if {$motto != ""} {
        puthelp "PRIVMSG $chan :Das Motto der Sendung lautet $motto"
    }
}
Wenn Du nun in deinem Radioscript in der Proc von "unsetdj"
Code:
channel set $::radioIntern motto ""
einfügst :p sollte nix mehr kommen.
 

Tappi112

Active Member
#9
Danke dir .....

Habs mal geändert aber nun kommt garkein Motto mehr .... ob der Dj gesetzt ist oder nicht hmm

Habe testweise mal nur die motto.tcl geändert ohne

channel set $::radioIntern motto "" den Code noch in die sc.tcl zu setzen, bleibt aber gleich ....

Habs erstmal wieder Rückgängig gemacht
 
#10
Code:
setudef str motto
set radioIntern "#retter-team"

bind pub -|- "!motto" pub:motto

proc pub:motto {nick uhost handle chan} {
    if { $chan == $::radioIntern } {
        if { $txt != "" } {
            channel set $chan motto $txt
        } else {
            puthelp "NOTICE $nick :$::lastbind <txt>"
        }
        return
    }

    set motto [channel get $::radioIntern motto]
    if {$motto != "0"} {
        puthelp "PRIVMSG $chan :Das Motto der Sendung lautet $motto"
    }
}
Code:
channel set $::radioIntern motto "0"
sollte nun eigentlich gehen
 
#11
Habs getestet ist genauso wie gestern, hat nichts nichts geändert.

Ich setze mal die sc.tcl hier rein wenn es geht

Code:
package require http
namespace eval sc {
    variable vars
    variable sets
    variable triggers
    variable texts
    variable offadv 0
    source scripts/sc.cfg
    proc init {} {
        set start [clock clicks]
        set sc::offadv 0
        bind time - "* * * * *" sc::check
        bind nick - * sc::nick
        foreach x [array names sc::triggers] {
            if {$sc::sets(pub) == 1} {
                bind pub [expr {($x == "kick") || ($x == "setdj") || ($x == "unsetdj") ? "$sc::vars(flag)" : "-"}] $sc::vars(trigger)$sc::triggers($x) "sc::pub $x"
            }
            if {$sc::sets(msg) == 1} {
                bind msg [expr {($x == "kick") || ($x == "setdj") || ($x == "unsetdj") ? "$sc::vars(flag)" : "-"}] $sc::vars(trigger)$sc::triggers($x) "sc::msg $x"
            }
        }
        if {$sc::sets(adv) == 1} {
            timer $sc::sets(advtime) "sc::post privmsg none all {$sc::texts(adv)}"
        }
        putlog "sc.tcl v2.1 by LoReZ successfully initialized in [expr {([clock clicks]-$start)/1000.0}]ms"        
    }
    proc pub {text nick uhost hand chan arg} {
        if {([lsearch -exact [string tolower $sc::vars(chans)] [string tolower $chan]] != -1) || ($sc::vars(chans) == "")} {
            sc::cmd $text $nick $chan $arg
        }
    }
    proc msg {text nick uhost hand arg} {
        sc::cmd $text $nick none $arg
    }
    proc nick {nick uhost hand chan newnick} {
        set tmp [open $sc::vars(file) r]
        gets $tmp streamdata
        gets $tmp songdata
        gets $tmp djdata
        close $tmp
        if {$nick == [lindex $djdata 0]} {
            set tmp [open $sc::vars(file) w+]
            puts $tmp $streamdata
            puts $tmp $songdata
            puts $tmp "$newnick [expr {([lindex $djdata 1] == $nick) ? $newnick : [lindex $djdata 1]}] [lrange $djdata 2 end]"
            close $tmp
            if {([lindex $djdata 1] == $nick) && ($sc::sets(djtopchg) == 1)} {
                #sc::post topic none all "$sc::texts(djtopic)"
            }
        }            
    }
    proc cmd {text nick chan arg} {
        set args [split $arg]
        if {[file exists $sc::vars(file)] != 1} {
            sc::check * * * * *
        }
        set tmp [open $sc::vars(file) r]
        gets $tmp streamdata
        gets $tmp songdata
        gets $tmp djdata
        close $tmp
        switch -exact $text {
            help {
                set sc::offadv 1
                putquick "privmsg $nick :Available Commands:"
                foreach x [array names sc::triggers] {
                    if {$x != "help"} {
                        if {(([matchattr [nick2hand $nick $chan] +$sc::vars(flag) $chan] != 1) && ($x != "kick") && ($x != "setdj") && ($x != "unsetdj")) || ([matchattr [nick2hand $nick $chan] +$sc::vars(flag) $chan] == 1)} {
                            set sc::offadv 1
                            putquick "privmsg $nick :$sc::vars(trigger)[expr {($x == "setdj") ? "$sc::triggers($x) <djname> <showname>" : [expr {(($x == "wish") || ($x == "greet")) ? "$sc::triggers($x) <$x>" : "$sc::triggers($x)"}]}]"  
                        }
                    }
                }
                set sc::offadv 1
                putquick "privmsg $nick :End of Commands"
            }
            kick {
                if {$chan ne $sc::vars(intern) || (![isop $nick $chan] && ![ishalfop $nick $chan])} {return}
                putquick "privmsg $nick :Source successfully kicked"
                if {[lindex $streamdata 15] == 1} {
                    set sock [socket $sc::vars(ip) $sc::vars(port)]
                    puts $sock "GET /admin.cgi?mode=kicksrc HTTP/1.1"
                    puts $sock "User-Agent:Mozilla"
                    puts $sock "Host: $sc::vars(ip)"
                    puts $sock "Authorization: Basic $sc::vars(adpass)"
                    puts $sock ""
                    flush $sock
                }
            }
            setdj {
                if {$chan ne $sc::vars(intern) || (![isop $nick $chan] && ![ishalfop $nick $chan])} {return}
                putquick "PRIVMSG $nick :Du bist jetzt der DJ vom Retter-Radio, um ein Motto zu setzen gib im internen ein z.B. !motto Rock"
                if {[lindex $streamdata 15] == 1} {
                    set tmp [open $sc::vars(file) w+]
                    puts $tmp $streamdata
                    puts $tmp $songdata
                    puts $tmp 
[list $nick [expr {([lindex $args 0] == "") ? $nick : [lindex $args 0]}] [lrange $args 1 end]]
                    close $tmp
                    if {$sc::sets(anndj) == 1} {
                        sc::post privmsg none all "$sc::texts(djchg)"
                    }
                    if {$sc::sets(djtopchg) == 1} {
                        sc::post topic none all "$sc::texts(djtopic)"
                    }
                }
            }
            unsetdj {
                if {$chan ne $sc::vars(intern) || (![isop $nick $chan] && ![ishalfop $nick $chan])} {return}
                putquick "PRIVMSG $chan :Du bist nicht mehr der DJ vom Retter-Radio bitte setze noch !motto Plattenkiste"
                if {[lindex $streamdata 15] == 1} {
                    set tmp [open $sc::vars(file) w+]
                              
                    puts $tmp $streamdata
                    puts $tmp $songdata
                    puts $tmp "none none none"
                    close $tmp
                    if {$sc::sets(anndj) == 1} {
                        sc::post privmsg none all "$sc::texts(djchg)"
                    }
                    if {$sc::sets(djtopchg) == 1} {
                        sc::post topic none all "$sc::texts(ontopic)"
                    }
                }
            }
            default {
                if {($text != "wish") && ($text != "greet")} {
                    sc::post privmsg $nick $chan "$sc::texts($text)"
                } else {
                    if {[lindex $streamdata 15] == 1} {
                        if {($arg == "{}")} {
                        putquick "privmsg $nick :Nothing specified"
                        } else {
                            if {([lindex $djdata 1] == "none") || (${::wishgreet:on} == 0)} {
                                putquick "PRIVMSG $chan :Momentan werden keine Wünsche akzeptiert."
                            } else {
                                array set translatemap "wish Wunsch greet Gruß"
                                putquick "privmsg [expr {($sc::sets(wishgreet) == 1) ? $sc::vars(intern) : [lindex $djdata 0]}] :$translatemap($text) von $nick: $arg"
                                # putquick "privmsg $nick :[string totitle $text] sent to [expr {($sc::sets(wishgreet) == 1) ? $sc::vars(intern) : [lindex $djdata 0]}]"                                    
                                puthelp "NOTICE $nick :Dein $translatemap($text) wurde an den Moderator weitergeleitet. Bitte habe Verständnis dafür das es dauern kann bis das gespielt wird!"
                            }
                        }
                    } else {
                        sc::post privmsg $nick none "$sc::texts(offcmd)"
                    }
                }
            }
        }
        putlog "sc.tcl v2.1 $nick used $sc::vars(trigger)$sc::triggers($text)"
    }           
    proc check {min hour day month year} {
        set start [clock clicks]
        if {[file exists $sc::vars(file)] == 1} {
            set tmp [open $sc::vars(file) r]
            gets $tmp olddata
            gets $tmp songdata
            gets $tmp djdata
            close $tmp
        } else {
            set olddata "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
            set djdata "none none none"
        }
        http::config -useragent "Mozilla 5.0"
        set con [http::geturl http://$sc::vars(ip):$sc::vars(port)/admin.cgi?pass=$sc::vars(pass)&mode=viewxml&page=0 -timeout 10000]
        set urldata [http::data $con]
        http::cleanup $con 
        foreach {y z} {21 ! 22 \" 23 # 24 \$ 25 % 26 + 27 ' 28 \( 29 \) 2A * 2B + 2C , 2E . 2F / 3A : 3B \; 3C < 3D = 3E > 3F ? 40 @ 5B \[ 5C \\ 5D \] 5F _ 60 ` C0 À C1 Á C2 Â C3 Ã C4 Ä C5 Å C6 Æ C7 Ç C8 È C9 É CA Ê CB Ë CC Ì CD Í CE Î CF Ï D1 Ñ D2 Ò D3 Ó D4 Ô D5 Õ D6 Ö D9 Ù DA Ú DB Û DC Ü DD Ý DF ß E0 à E1 á E2 â E3 ã E4 ä E5 å E6 æ E7 ç E8 è E9 é EA ê EB ë EC ì ED í EE î EF ï F0 ð F1 ñ F2 ò F3 ó F4 ô F5 õ F6 ö F9 ù FA ú FB û FC ü FD ý FE þ FF ÿ} {
            regsub -all "&#x$y;" $urldata "$z" urldata 
        }
        regsub -all ".*<SHOUTCASTSERVER>" $urldata "" data1
        regsub -all "<WEBDATA>.*" $data1 "" data1
        regsub -all ".*<SONGHISTORY>" $urldata "\{" data2
        regsub -all "</SONGHISTORY>.*" $data2 " \}" data2
        set x 0
        foreach y {CURRENTLISTENERS PEAKLISTENERS MAXLISTENERS REPORTEDLISTENERS AVERAGETIME SERVERGENRE SERVERURL SERVERTITLE SONGTITLE SONGURL IRC ICQ AIM WEBHITS STREAMHITS STREAMSTATUS BITRATE CONTENT VERSION SONG PLAYEDAT TITLE} {
            if {$x < 19} {
                regsub -all ".*<$y>" $data1 "" data10
                regsub -all "</$y>.*" $data10 "" data10
                lappend streamdata [expr {(($data10 == "0") || ($data10 == "")) && ([string match -nocase *listeners "$y"] != 1) && ([string match -nocase *hits "$y"] != 1) && ([string match -nocase *time "$y"] != 1) ? "N/A" : $data10}]
            }
            if {$x > 18} {
                regsub -all "<$y>" $data2 "\{" data2
                regsub -all "</$y>" $data2 "\} " data2
            }
            incr x
        }
        set tmp [open $sc::vars(file) w+]
        puts $tmp $streamdata
        puts $tmp $data2
        puts $tmp $djdata
        close $tmp
        if {[lindex $olddata 15] != [lindex $streamdata 15]} {
            if { ($sc::sets(ann) == 1)} {
                set sc::offadv [expr {([lindex $streamdata 15] == 1) ? 0 : 1}]
                sc::post privmsg none all "[expr {([lindex $streamdata 15] == 1) ? $sc::texts(on) : $sc::texts(off)}]"
            }
            if {$sc::sets(topchg) == 1} {
                set sc::offadv [expr {([lindex $streamdata 15] == 1) ? 0 : 1}]
                sc::post topic none all "[expr {([lindex $streamdata 15] == 1) ? $sc::texts(ontopic) : $sc::texts(offtopic)}]"
            }
        }
        foreach {x y z} {8 anntrack songchg 0 annlist listchg 1 annpeak peakchg 16 annbitrate bitratechg} {
            if {([lindex $olddata $x] != [lindex $streamdata $x]) && ($sc::sets($y) == 1)} {
                sc::post privmsg all all "$sc::texts($z)"
            }
        }
        putlog "sc.tcl v2.1 received information from $sc::vars(ip):$sc::vars(port) in [expr {([clock clicks]-$start)/1000.0}]ms"
    }              
    proc post {mode nick chan text} {
        set tmp [open $sc::vars(file) r]
        gets $tmp streamdata
        gets $tmp songdata
        gets $tmp djdata
        close $tmp
        if {([lindex $streamdata 15] == 1) || ($sc::offadv == 1)} {
            foreach x [lindex $songdata 0] {
                append lastsongs "[lindex $x 1] :: "
            }
            lappend streamdata $sc::vars(ip) $sc::vars(port) $sc::vars(desc) ":: $lastsongs" [expr {(([lindex $djdata 0] == "none") || ([lindex $djdata 0] == "{}") || ([lindex $djdata 0] == "")) ? "No DJ" : [lindex $djdata 0]}] [expr {(([lindex $djdata 1] == "none") || ([lindex $djdata 1] == "{}") || ([lindex $djdata 1] == "")) ? "No DJ" : [lindex $djdata 1]}] [expr {(([lindex $djdata 2] == "none") || ([lindex $djdata 2] == "{}") || ([lindex $djdata 2] == "")) ? "No Show" : [lrange $djdata 2 end]}] [expr {([lindex $streamdata 15] == 1) ? "online" : "offline"}]
            set x 0
            foreach y {listeners peak max unique avgtime genre url title song songurl irc icq aim webhits streamhits streamstatus bitrate content version ip port desc lastsongs djnick dj showname status} {
                regsub -all "%$y" $text "[lindex $streamdata $x]" text
                incr x
            }
            if {$mode == "topic"} {
                foreach chans [channels] {
                    if {$sc::vars(chans) == ""} {
                        if {$sc::sets(qtopic) == 1} {
                            putquick "privmsg TheQBot@CServe.quakenet.org :SETTOPIC $chans $text"
                        } else {
                            putquick "$mode $chans :$text"
                        }
                    } else {
                        if {([lsearch -exact [string tolower $sc::vars(chans)] [string tolower $chans]] != -1)} {
                            if {$sc::sets(qtopic) == 1} {
                                putquick "privmsg TheQBot@CServe.quakenet.org :SETTOPIC $chans $text"
                            } else {
                                putquick "$mode $chans :$text"
                            }
                        }                
                    }
                }
            } else {
                if {($sc::sets(reply) != 1) || ($chan == "none")} {
                    putquick "$mode $nick :$text"
                }
                if {$chan ne "none"} {
                        putquick "$mode $chan :$text"
                } elseif {(($sc::sets(reply) == 1) && ($chan != "none")) || ($chan == "all")} {
                    foreach chans [channels] {
                        if {$sc::vars(chans) == ""} {
                            putquick "$mode $chans :$text"
                        } else {
                            if {([lsearch -exact [string tolower $sc::vars(chans)] [string tolower $chans]] != -1)} {
                                putquick "$mode $chans :$text"
                            }
                        }
                    }
                }
            }
        } else {
            putquick "$mode [expr {((($sc::sets(reply) != 1) || ($chan == "none")) && ($chan != "all")) ? $nick : $chan}] :$sc::texts(offcmd)"
        }
        set sc::offadv 0
    }

    proc streaminfo {id} {
        set tmp [open $sc::vars(file) r]
        gets $tmp streamdata
        gets $tmp songdata
        gets $tmp djdata
        close $tmp
        lindex $streamdata [lsearch -exact -nocase {listeners peak max unique avgtime genre url title song songurl irc icq aim webhits streamhits streamstatus bitrate content version ip port desc lastsongs djnick dj showname status} $id]
    }

    sc::init
}

Vielleicht kann man ja das mit dem Motto auch komplett in das sc.tcl einbauen? Momentan ist es ja als seperate TCL Datei auf dem Server bzw. im Eggdrop drin.
 
#12
könnte man, aber geht ja auch seperat :p.
unten ist der relevante teil.


Code:
            unsetdj {
                if {$chan ne $sc::vars(intern) || (![isop $nick $chan] && ![ishalfop $nick $chan])} {return}
                putquick "PRIVMSG $chan :Du bist nicht mehr der DJ vom Retter-Radio bitte setze noch !motto Plattenkiste"
                channel set $::radioIntern motto "Plattenkiste"
                if {[lindex $streamdata 15] == 1} {
                    set tmp [open $sc::vars(file) w+]
                              
                    puts $tmp $streamdata
                    puts $tmp $songdata
                    puts $tmp "none none none"
                    close $tmp
                    if {$sc::sets(anndj) == 1} {
                        sc::post privmsg none all "$sc::texts(djchg)"
                    }
                    if {$sc::sets(djtopchg) == 1} {
                        sc::post topic none all "$sc::texts(ontopic)"
                    }
                }
            }
 
#13
Moin moin Toushirou

also entweder mache ich etwas falsch, oder aber es geht nicht ....

Habe es genauso abkopiert und eingefügt gehabt.

Mit diesem hier funktioniert es:

Code:
set radioIntern "#retter-team"
setudef str motto

bind pub -|- "!motto" pub:motto

proc pub:motto {nick uhost handle chan txt} {
    if { $chan == $::radioIntern } {
        channel set $chan motto $txt
        return
    }
    set motto [channel get $::radioIntern motto]
    
    puthelp "PRIVMSG $chan :Das Motto der Sendung lautet $motto"
}
Nur das halt auch wenn kein Moderator sendet, eine Meldung kommt wenn man !motto eingibt.

Nehme ich die anderen Codes, dann geht garnichts .... egal ob !setdj gesetzt oder nicht ....

Ich mein wenn kein dj gesetzt ist, wenn dann beim Befehl !motto nichts kommt, das ist nicht schlimm, es muss da ja keine Meldung kommen.
Eine Meldung sollte halt nur kommen, wenn jemand auf Sendung ist und ein Motto gesetzt hat.

............... setmotto .. unsetmotto kann man das nicht auch so machen?
Sprich das !motto nur funktioniert, wenn jemand ein Motto gesetzt hat wie mit dem setdj ?

Fragen über fragen .... auf jeden Fall finde ich es toll, das du dir die Zeit nimmst und dir das angeschaut hast und mir sowas auf die schnelle geschrieben hast

Ich hau mich jetzt erstmal ins Bett und wünsche dir (euch) schon mal ein schönes Wochenende.
Werde heute Abend denke ich wieder reinschauen. Und vielleicht fällt mir ja noch eine andere Idee ein oder so ... wie gesagt das Problem ist, das ich mich damit kaum auskenne. Ideen haben ist ja alles schön und gut, nur muss es ja auch umgesetzt werden.

Edit: Ich glaub ich weiß wieso es nicht ging, ich habe da gerade etwas gesehen *g* aber jetzt habe ich keine Lust mehr das noch mal zu testen, ich geh jetzt erst ins Bett und teste es heut Abend bzw. heute Nachmittag noch mal .... dann achte ich aber auch darauf das ich die "0" entsprechend ändere ;)
 
#14
Sorry für Doppelpost, also es hat mir doch keine Ruhe gelassen und habe es doch noch mal getestet.

Also ich habe deinen Code mit dem channel set $::radioIntern motto "Plattenkiste" genommen, da dort Plattenkiste steht, habe dies entsprechend in dem motto.tcl auch so angegeben, wie oben schon gesagt steht da ja "0"

Aber auch daran lag es nicht, es geht einfach nicht ....

Der erste Code geht, nur bei der Eingabe !motto immer eine Meldung ....

Nehme ich die bearbeiteten Codes, dann passiert garnichts .... oder ich bin echt zu doof :mauer:
 

lano

Well-Known Member
c-b Experte
#15
Hmmm... :D

Ma ne Frage, ich kapier es nicht so ganz.. warum baust du das nicht in dein Hauptscript ein, nur weil du dich nicht traust ?
Im Grunde ist doch schon in der sc.cfg erklärt wie man einen Befehl hinzu fügt
### You can remove Commands by deleting or commenting a Trigger and a Text for the Command ###
### You can also add Commands by setting up a Trigger and a Text for the Command. E.g.: ###
# Homepage Trigger
# set sc::triggers(hp) "hp"
# Text when someone uses the Homepage Trigger
# set sc::texts(hp) "Homepage: www.myradio.com"
Da kannste dann ja mit deinem Motto spielen.

In der Funktion "unsetdj"
unsetdj {
putquick "privmsg $nick :DJ unset"
if {[lindex $streamdata 15] == 1} {
set tmp [open $sc::vars(file) w+]
puts $tmp $streamdata
puts $tmp $songdata
puts $tmp "none none none"
close $tmp
if {$sc::sets(anndj) == 1} {
sc::post privmsg none all "$sc::texts(djchg)"
}
if {$sc::sets(djtopchg) == 1} {
sc::post topic none all "$sc::texts(ontopic)"
}
}
}
Kannste doch einfach ne variable auf null setzten, in der funktion Motto kannste prüfen wie die Variable gesetzt ist und dann je nach dem das DJ Motto ausgeben oder ein Standard, im Grunde genau so wie in unsetdj.

zb
set sc::sets(stdMotto) 0
Ich würde dann in setmotto die Variable auf ein ziehn und in unsetdj auf 0

Hab ich was vergessen ?
 
#16
Jetzt bin ich komplett verwirrt :confused:

Für jemanden der sich damit auskennt ist es ja simpel und einfach, aber für jemanden der sich damit nicht auskennt es aber versuchen möchte, klingt das nach einer Monatsaufgabe.
Also heißt es kommende Nacht testen und testen und testen

Danke dir aber erstmal für deine Antwort

Nun in der sc.cfg die ich habe, steht nichts erklärt wie man einen Befehl hinzufügt, aber ist ja auch egal. Tatsache ist nur, das die Sache für mich zu tief geht, ich kann zwar das eine oder andere bearbeiten, aber die Sache mit dem Motto ist mir einfach zu hoch ....

Aber ich versuche einfach mal was, teste es dann und wenn es nicht geht, setz ich alles hier rein und hoffe das mir dann jemand weiter hilft *g*

Manchmal sieht man den Wald vor lauter Bäumen nicht.

Also ich habe jetzt in den sc.cfg folgendes mit eingetragen:

Einmal für die Ausgabe an die Hörer ect.

# Motto Trigger
# set sc::triggers(motto) "motto"
# Text when someone uses the Motto Trigger
# set sc::texts(motto) "Das Motto der Sendung lautet: $motto"


Und dann die Trigger um das Motto zu setzen bzw. ein und aus zu schalten ....

# Motto AN Trigger
# set sc::triggers(man) "man"

# Motto AUS Trigger
# set sc::triggers(maus) "maus"

(maus) weil es einfacher ist alös mottoaus zu schreiben lach .... ist ja beliebig.

Ok so, nun schau ich mal wegen dem sc.tcl .... werde es dann auch hier reinsetzen bevor ich es teste, bevor der Eggdrop den Abflug macht .... weil ich glaub es geht gleich schon jemand auf Sedung.

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

Ich komm damit nicht klar. ..... :(

Code:
man(setmotto) {
                if {$chan ne $sc::vars(intern) || (![isop $nick $chan] && ![ishalfop $nick $chan])} {return}
                putquick "PRIVMSG $nick :Du hast das Motto erfolgreich geändert in $motto"
                if {[lindex $streamdata 15] == 1} {
                    set tmp [open $sc::vars(file) w+]
                    puts $tmp $streamdata
                    puts $tmp $songdata
                    puts $tmp 
[list $nick [expr {([lindex $args 0] == "") ? $nick : [lindex $args 0]}] [lrange $args 1 end]]
                    close $tmp
                    if {$set sc::sets(stdMotto) 1} {
                        sc::post privmsg none all "$sc::texts(djchg)"
                    }
                }
            }


maus(unsetmotto) {
                if {$chan ne $sc::vars(intern) || (![isop $nick $chan] && ![ishalfop $nick $chan])} {return}
                putquick "PRIVMSG $chan :Das Motto wurde erfolgreich zurück gesetzt"
                if {[lindex $streamdata 15] == 1} {
                    set tmp [open $sc::vars(file) w+]        
                    puts $tmp $streamdata
                    puts $tmp $songdata
                    puts $tmp "none none none"
                    close $tmp
                    if {$set sc::sets(stdMotto) 0} {
                        sc::post privmsg none all "$sc::texts(djchg)"
                    }
                }
            }
 
Zuletzt bearbeitet:
#17
ich habe dir mal die stelle mit "°°" gekenzeichnet die ich geändert habe
Code:
package require http
namespace eval sc {
    variable vars
    variable sets
    variable triggers
    variable texts
    variable offadv 0
    source scripts/sc.cfg
    proc init {} {
        set start [clock clicks]
        set sc::offadv 0
        bind time - "* * * * *" sc::check
        bind nick - * sc::nick
        foreach x [array names sc::triggers] {
            if {$sc::sets(pub) == 1} {
                bind pub [expr {($x == "kick") || ($x == "setdj") || ($x == "unsetdj") ? "$sc::vars(flag)" : "-"}] $sc::vars(trigger)$sc::triggers($x) "sc::pub $x"
            }
            if {$sc::sets(msg) == 1} {
                bind msg [expr {($x == "kick") || ($x == "setdj") || ($x == "unsetdj") ? "$sc::vars(flag)" : "-"}] $sc::vars(trigger)$sc::triggers($x) "sc::msg $x"
            }
        }
        if {$sc::sets(adv) == 1} {
            timer $sc::sets(advtime) "sc::post privmsg none all {$sc::texts(adv)}"
        }
        putlog "sc.tcl v2.1 by LoReZ successfully initialized in [expr {([clock clicks]-$start)/1000.0}]ms"        
    }
    proc pub {text nick uhost hand chan arg} {
        if {([lsearch -exact [string tolower $sc::vars(chans)] [string tolower $chan]] != -1) || ($sc::vars(chans) == "")} {
            sc::cmd $text $nick $chan $arg
        }
    }
    proc msg {text nick uhost hand arg} {
        sc::cmd $text $nick none $arg
    }
    proc nick {nick uhost hand chan newnick} {
        set tmp [open $sc::vars(file) r]
        gets $tmp streamdata
        gets $tmp songdata
        gets $tmp djdata
        close $tmp
        if {$nick == [lindex $djdata 0]} {
            set tmp [open $sc::vars(file) w+]
            puts $tmp $streamdata
            puts $tmp $songdata
            puts $tmp "$newnick [expr {([lindex $djdata 1] == $nick) ? $newnick : [lindex $djdata 1]}] [lrange $djdata 2 end]"
            close $tmp
            if {([lindex $djdata 1] == $nick) && ($sc::sets(djtopchg) == 1)} {
                #sc::post topic none all "$sc::texts(djtopic)"
            }
        }            
    }
    proc cmd {text nick chan arg} {
        set args [split $arg]
        if {[file exists $sc::vars(file)] != 1} {
            sc::check * * * * *
        }
        set tmp [open $sc::vars(file) r]
        gets $tmp streamdata
        gets $tmp songdata
        gets $tmp djdata
        close $tmp
        switch -exact $text {
            help {
                set sc::offadv 1
                putquick "privmsg $nick :Available Commands:"
                foreach x [array names sc::triggers] {
                    if {$x != "help"} {
                        if {(([matchattr [nick2hand $nick $chan] +$sc::vars(flag) $chan] != 1) && ($x != "kick") && ($x != "setdj") && ($x != "unsetdj")) || ([matchattr [nick2hand $nick $chan] +$sc::vars(flag) $chan] == 1)} {
                            set sc::offadv 1
                            putquick "privmsg $nick :$sc::vars(trigger)[expr {($x == "setdj") ? "$sc::triggers($x) <djname> <showname>" : [expr {(($x == "wish") || ($x == "greet")) ? "$sc::triggers($x) <$x>" : "$sc::triggers($x)"}]}]"  
                        }
                    }
                }
                set sc::offadv 1
                putquick "privmsg $nick :End of Commands"
            }
            kick {
                if {$chan ne $sc::vars(intern) || (![isop $nick $chan] && ![ishalfop $nick $chan])} {return}
                putquick "privmsg $nick :Source successfully kicked"
                if {[lindex $streamdata 15] == 1} {
                    set sock [socket $sc::vars(ip) $sc::vars(port)]
                    puts $sock "GET /admin.cgi?mode=kicksrc HTTP/1.1"
                    puts $sock "User-Agent:Mozilla"
                    puts $sock "Host: $sc::vars(ip)"
                    puts $sock "Authorization: Basic $sc::vars(adpass)"
                    puts $sock ""
                    flush $sock
                }
            }
            setdj {
                if {$chan ne $sc::vars(intern) || (![isop $nick $chan] && ![ishalfop $nick $chan])} {return}
                putquick "PRIVMSG $nick :Du bist jetzt der DJ vom Retter-Radio, um ein Motto zu setzen gib im internen ein z.B. !motto Rock"
                if {[lindex $streamdata 15] == 1} {
                    set tmp [open $sc::vars(file) w+]
                    puts $tmp $streamdata
                    puts $tmp $songdata
                    puts $tmp 

[list $nick [expr {([lindex $args 0] == "") ? $nick : [lindex $args 0]}] [lrange $args 1 end]]
                    close $tmp
                    if {$sc::sets(anndj) == 1} {
                        sc::post privmsg none all "$sc::texts(djchg)"
                    }
                    if {$sc::sets(djtopchg) == 1} {
                        sc::post topic none all "$sc::texts(djtopic)"
                    }
                }
            }
            unsetdj {
                if {$chan ne $sc::vars(intern) || (![isop $nick $chan] && ![ishalfop $nick $chan])} {return}
                putquick "PRIVMSG $chan :Du bist nicht mehr der DJ vom Retter-Radio bitte setze noch !motto Plattenkiste"
                °°channel set $::radioIntern "Plattenkiste"
                if {[lindex $streamdata 15] == 1} {
                    set tmp [open $sc::vars(file) w+]
                              
                    puts $tmp $streamdata
                    puts $tmp $songdata
                    puts $tmp "none none none"
                    close $tmp
                    if {$sc::sets(anndj) == 1} {
                        sc::post privmsg none all "$sc::texts(djchg)"
                    }
                    if {$sc::sets(djtopchg) == 1} {
                        sc::post topic none all "$sc::texts(ontopic)"
                    }
                }
            }
            default {
                if {($text != "wish") && ($text != "greet")} {
                    sc::post privmsg $nick $chan "$sc::texts($text)"
                } else {
                    if {[lindex $streamdata 15] == 1} {
                        if {($arg == "{}")} {
                        putquick "privmsg $nick :Nothing specified"
                        } else {
                            if {([lindex $djdata 1] == "none") || (${::wishgreet:on} == 0)} {
                                putquick "PRIVMSG $chan :Momentan werden keine Wünsche akzeptiert."
                            } else {
                                array set translatemap "wish Wunsch greet Gruß"
                                putquick "privmsg [expr {($sc::sets(wishgreet) == 1) ? $sc::vars(intern) : [lindex $djdata 0]}] :$translatemap($text) von $nick: $arg"
                                # putquick "privmsg $nick :[string totitle $text] sent to [expr {($sc::sets(wishgreet) == 1) ? $sc::vars(intern) : [lindex $djdata 0]}]"                                    
                                puthelp "NOTICE $nick :Dein $translatemap($text) wurde an den Moderator weitergeleitet. Bitte habe Verständnis dafür das es dauern kann bis das gespielt wird!"
                            }
                        }
                    } else {
                        sc::post privmsg $nick none "$sc::texts(offcmd)"
                    }
                }
            }
        }
        putlog "sc.tcl v2.1 $nick used $sc::vars(trigger)$sc::triggers($text)"
    }           
    proc check {min hour day month year} {
        set start [clock clicks]
        if {[file exists $sc::vars(file)] == 1} {
            set tmp [open $sc::vars(file) r]
            gets $tmp olddata
            gets $tmp songdata
            gets $tmp djdata
            close $tmp
        } else {
            set olddata "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
            set djdata "none none none"
        }
        http::config -useragent "Mozilla 5.0"
        set con [http::geturl http://$sc::vars(ip):$sc::vars(port)/admin.cgi?pass=$sc::vars(pass)&mode=viewxml&page=0 -timeout 10000]
        set urldata [http::data $con]
        http::cleanup $con 
        foreach {y z} {21 ! 22 \" 23 # 24 \$ 25 % 26 + 27 ' 28 \( 29 \) 2A * 2B + 2C , 2E . 2F / 3A : 3B \; 3C < 3D = 3E > 3F ? 40 @ 5B \[ 5C \\ 5D \] 5F _ 60 ` C0 À C1 Á C2 Â C3 Ã C4 Ä C5 Å C6 Æ C7 Ç C8 È C9 É CA Ê CB Ë CC Ì CD Í CE Î CF Ï D1 Ñ D2 Ò D3 Ó D4 Ô D5 Õ D6 Ö D9 Ù DA Ú DB Û DC Ü DD Ý DF ß E0 à E1 á E2 â E3 ã E4 ä E5 å E6 æ E7 ç E8 è E9 é EA ê EB ë EC ì ED í EE î EF ï F0 ð F1 ñ F2 ò F3 ó F4 ô F5 õ F6 ö F9 ù FA ú FB û FC ü FD ý FE þ FF ÿ} {
            regsub -all "&#x$y;" $urldata "$z" urldata 
        }
        regsub -all ".*<SHOUTCASTSERVER>" $urldata "" data1
        regsub -all "<WEBDATA>.*" $data1 "" data1
        regsub -all ".*<SONGHISTORY>" $urldata "\{" data2
        regsub -all "</SONGHISTORY>.*" $data2 " \}" data2
        set x 0
        foreach y {CURRENTLISTENERS PEAKLISTENERS MAXLISTENERS REPORTEDLISTENERS AVERAGETIME SERVERGENRE SERVERURL SERVERTITLE SONGTITLE SONGURL IRC ICQ AIM WEBHITS STREAMHITS STREAMSTATUS BITRATE CONTENT VERSION SONG PLAYEDAT TITLE} {
            if {$x < 19} {
                regsub -all ".*<$y>" $data1 "" data10
                regsub -all "</$y>.*" $data10 "" data10
                lappend streamdata [expr {(($data10 == "0") || ($data10 == "")) && ([string match -nocase *listeners "$y"] != 1) && ([string match -nocase *hits "$y"] != 1) && ([string match -nocase *time "$y"] != 1) ? "N/A" : $data10}]
            }
            if {$x > 18} {
                regsub -all "<$y>" $data2 "\{" data2
                regsub -all "</$y>" $data2 "\} " data2
            }
            incr x
        }
        set tmp [open $sc::vars(file) w+]
        puts $tmp $streamdata
        puts $tmp $data2
        puts $tmp $djdata
        close $tmp
        if {[lindex $olddata 15] != [lindex $streamdata 15]} {
            if { ($sc::sets(ann) == 1)} {
                set sc::offadv [expr {([lindex $streamdata 15] == 1) ? 0 : 1}]
                sc::post privmsg none all "[expr {([lindex $streamdata 15] == 1) ? $sc::texts(on) : $sc::texts(off)}]"
            }
            if {$sc::sets(topchg) == 1} {
                set sc::offadv [expr {([lindex $streamdata 15] == 1) ? 0 : 1}]
                sc::post topic none all "[expr {([lindex $streamdata 15] == 1) ? $sc::texts(ontopic) : $sc::texts(offtopic)}]"
            }
        }
        foreach {x y z} {8 anntrack songchg 0 annlist listchg 1 annpeak peakchg 16 annbitrate bitratechg} {
            if {([lindex $olddata $x] != [lindex $streamdata $x]) && ($sc::sets($y) == 1)} {
                sc::post privmsg all all "$sc::texts($z)"
            }
        }
        putlog "sc.tcl v2.1 received information from $sc::vars(ip):$sc::vars(port) in [expr {([clock clicks]-$start)/1000.0}]ms"
    }              
    proc post {mode nick chan text} {
        set tmp [open $sc::vars(file) r]
        gets $tmp streamdata
        gets $tmp songdata
        gets $tmp djdata
        close $tmp
        if {([lindex $streamdata 15] == 1) || ($sc::offadv == 1)} {
            foreach x [lindex $songdata 0] {
                append lastsongs "[lindex $x 1] :: "
            }
            lappend streamdata $sc::vars(ip) $sc::vars(port) $sc::vars(desc) ":: $lastsongs" [expr {(([lindex $djdata 0] == "none") || ([lindex $djdata 0] == "{}") || ([lindex $djdata 0] == "")) ? "No DJ" : [lindex $djdata 0]}] [expr {(([lindex $djdata 1] == "none") || ([lindex $djdata 1] == "{}") || ([lindex $djdata 1] == "")) ? "No DJ" : [lindex $djdata 1]}] [expr {(([lindex $djdata 2] == "none") || ([lindex $djdata 2] == "{}") || ([lindex $djdata 2] == "")) ? "No Show" : [lrange $djdata 2 end]}] [expr {([lindex $streamdata 15] == 1) ? "online" : "offline"}]
            set x 0
            foreach y {listeners peak max unique avgtime genre url title song songurl irc icq aim webhits streamhits streamstatus bitrate content version ip port desc lastsongs djnick dj showname status} {
                regsub -all "%$y" $text "[lindex $streamdata $x]" text
                incr x
            }
            if {$mode == "topic"} {
                foreach chans [channels] {
                    if {$sc::vars(chans) == ""} {
                        if {$sc::sets(qtopic) == 1} {
                            putquick "privmsg TheQBot@CServe.quakenet.org :SETTOPIC $chans $text"
                        } else {
                            putquick "$mode $chans :$text"
                        }
                    } else {
                        if {([lsearch -exact [string tolower $sc::vars(chans)] [string tolower $chans]] != -1)} {
                            if {$sc::sets(qtopic) == 1} {
                                putquick "privmsg TheQBot@CServe.quakenet.org :SETTOPIC $chans $text"
                            } else {
                                putquick "$mode $chans :$text"
                            }
                        }                
                    }
                }
            } else {
                if {($sc::sets(reply) != 1) || ($chan == "none")} {
                    putquick "$mode $nick :$text"
                }
                if {$chan ne "none"} {
                        putquick "$mode $chan :$text"
                } elseif {(($sc::sets(reply) == 1) && ($chan != "none")) || ($chan == "all")} {
                    foreach chans [channels] {
                        if {$sc::vars(chans) == ""} {
                            putquick "$mode $chans :$text"
                        } else {
                            if {([lsearch -exact [string tolower $sc::vars(chans)] [string tolower $chans]] != -1)} {
                                putquick "$mode $chans :$text"
                            }
                        }
                    }
                }
            }
        } else {
            putquick "$mode [expr {((($sc::sets(reply) != 1) || ($chan == "none")) && ($chan != "all")) ? $nick : $chan}] :$sc::texts(offcmd)"
        }
        set sc::offadv 0
    }

    proc streaminfo {id} {
        set tmp [open $sc::vars(file) r]
        gets $tmp streamdata
        gets $tmp songdata
        gets $tmp djdata
        close $tmp
        lindex $streamdata [lsearch -exact -nocase {listeners peak max unique avgtime genre url title song songurl irc icq aim webhits streamhits streamstatus bitrate content version ip port desc lastsongs djnick dj showname status} $id]
    }

    sc::init
}
Code:
setudef str motto
set radioIntern "#retter-team"

bind pub -|- "!motto" pub:motto

proc pub:motto {nick uhost handle chan} {
    if { $chan == $::radioIntern } {
        if { $txt != "" } {
            channel set $chan motto $txt
        } else {
            puthelp "NOTICE $nick :$::lastbind <txt>"
        }
        return
    }

    
    puthelp "PRIVMSG $chan :Das Motto der Sendung lautet [channel get $::radioIntern motto]"
  
}

Ich würde das mit dem motto als seperate tcl legen und einfach vor der sc.tcl laden dann gibt es auch keine probleme.

so wie ich das in der sc.config verstanden habe geht es bei den binds darüber einfach nur darum einfachen text anzuzeigen.
 
#18
Hallo,
danke dir :)
ich habe es gerade getestet aber muss leider sagen, das es nicht geht, habe aber mal die Fehlermeldungen aus der Partyline kopiert

Also wenn kein dj gesetzt ist (setdj)

erscheint wenn man im chat !motto eingibt folgende Fehlermeldung in der Partyline

Code:
Tcl error [pub:motto]: wrong # args: should be "pub:motto nick uhost handle chan"
Damit könnt ich aber leben, weil wenn kein dj gesetzt ist, muss ja nicht unbedingt eine Meldung erscheinen.

nach dem ich dann den dj gesetzt hatte, kam aber die selbe Fehlermeldung

Code:
|11/03/13| • 15:00:20 <RetterBote> [15:00:20] Tcl error [pub:motto]: wrong # args: should be "pub:motto nick uhost handle chan"
Und nach bzw. bei der eingabe !unsetdj kam dann folgende:

Code:
|11/03/13| • 15:00:29 <RetterBote> [15:00:29] Tcl error [sc:pub unsetdj]: illegal channel option: Plattenkiste
Vielleicht kannst du mit den Meldungen ja was anfangen? Ich leider nicht, außer das in der sc.tcl er den hinzugefügten Eintrag nicht mag .... aber wieso?


Edit:
Ok also, im ersten Script stand proc pub:motto {nick uhost handle chan txt} drin diesmal war es ohne txt, also dachte ich mir, schreib das txt einfach mal dazu und teste es noch mal ;-)

Und siehe da ..... es geht, aber .... wenn man unsetdj eingibt dann kommt:

Code:
Tcl error [sc::pub unsetdj]: illegal channel option: Plattenkiste
Außerdem erscheint im Chat das gesetzte Motto ....

Code:
|11/03/13| • 15:16:39 <*Tappi|Hg> !motto
|11/03/13| • 15:16:41 <%RetterBote> Das Motto der Sendung lautet Plattenkiste
|11/03/13| • 15:16:46 <*Tappi|Hg> :)
|11/03/13| • 15:16:54 * RetterBote changes topic to '.. Willkommen im Chat von retter-radio.de :: T-Shirts Infos: www.retter-radio.de/radioforum/thread.php?threadid=2242 :: Stream: http://retter-radio.de:8000/listen.pls :: Sendeplan: http://www.retter-radio.de/sendeplan.php :: Aktuell auf Sendung: Tappi|Hg ..'
|11/03/13| • 15:17:05 <*Tappi|Hg> !motto
|11/03/13| • 15:17:05 <%RetterBote> Das Motto der Sendung lautet Test
|11/03/13| • 15:17:14 <*Tappi|Hg> !motto
|11/03/13| • 15:17:15 <%RetterBote> Das Motto der Sendung lautet Test
|11/03/13| • 15:17:18 <*Tappi|Hg> :(
Ha und mir ist aufgefallen, das beim unsetdj das Topic nicht mehr geändert wird .... beim unsetdj wird im Topic Aktuell auf Sendung: die Plattenkiste gesetzt

Habe es wieder rückgängig gemacht, nun wird das Topic auch wieder geändert.
 
Zuletzt bearbeitet:
#19
Natürlich muss da txt rein :D flüchtigkeit lässt grüßen.

"channel set $::radioIntern "Plattenkiste" muss durch "channel set $::radioIntern m "Plattenkiste" ersetzt werden (ohne anführungszeichen)
 
Oben